@@ -16,10 +16,16 @@ using v8::Locker;
16
16
using v8::SnapshotCreator;
17
17
using v8::StartupData;
18
18
19
+ template <typename T>
20
+ void WriteVector (std::stringstream* ss, const T* vec, size_t size) {
21
+ for (size_t i = 0 ; i < size; i++) {
22
+ *ss << std::to_string (vec[i]) << (i == size - 1 ? ' \n ' : ' ,' );
23
+ }
24
+ }
25
+
19
26
std::string FormatBlob (v8::StartupData* blob,
20
27
const std::vector<size_t >& isolate_data_indexes) {
21
28
std::stringstream ss;
22
- size_t isolate_data_indexes_size = isolate_data_indexes.size ();
23
29
24
30
ss << R"( #include <cstddef>
25
31
#include "node_main_instance.h"
@@ -29,47 +35,26 @@ std::string FormatBlob(v8::StartupData* blob,
29
35
30
36
namespace node {
31
37
32
- static const uint8_t blob_data[] = {
38
+ static const char blob_data[] = {
33
39
)" ;
34
-
35
- for (int i = 0 ; i < blob->raw_size ; i++) {
36
- uint8_t ch = blob->data [i];
37
- ss << std::to_string (ch) << ((i == blob->raw_size - 1 ) ? ' \n ' : ' ,' );
38
- }
39
-
40
+ WriteVector (&ss, blob->data , blob->raw_size );
40
41
ss << R"( };
41
42
42
43
static const int blob_size = )"
43
44
<< blob->raw_size << R"( ;
44
- static v8::StartupData blob = {
45
- reinterpret_cast<const char*>(blob_data),
46
- blob_size
47
- };
45
+ static v8::StartupData blob = { blob_data, blob_size };
48
46
)" ;
49
47
50
- ss << R"( v8::StartupData*
51
- NodeMainInstance::GetEmbeddedSnapshotBlob() {
48
+ ss << R"( v8::StartupData* NodeMainInstance::GetEmbeddedSnapshotBlob() {
52
49
return &blob;
53
50
}
54
51
55
- static const size_t isolate_data_indexes_raw[] = {
52
+ static const std::vector< size_t> isolate_data_indexes {
56
53
)" ;
57
- for (size_t i = 0 ; i < isolate_data_indexes_size; i++) {
58
- ss << std::to_string (isolate_data_indexes[i])
59
- << ((i == isolate_data_indexes_size - 1 ) ? ' \n ' : ' ,' );
60
- }
61
- ss << " };\n\n " ;
62
-
63
- ss << " static const size_t isolate_data_indexes_size = "
64
- << isolate_data_indexes_size << R"( ;
65
-
66
- NodeMainInstance::IndexArray isolate_data_indexes {
67
- isolate_data_indexes_raw,
68
- isolate_data_indexes_size
69
- };
54
+ WriteVector (&ss, isolate_data_indexes.data (), isolate_data_indexes.size ());
55
+ ss << R"( };
70
56
71
- const NodeMainInstance::IndexArray*
72
- NodeMainInstance::GetIsolateDataIndexes() {
57
+ const std::vector<size_t>* NodeMainInstance::GetIsolateDataIndexes() {
73
58
return &isolate_data_indexes;
74
59
}
75
60
} // namespace node
0 commit comments