@@ -16,10 +16,16 @@ using v8::Locker;
1616using v8::SnapshotCreator;
1717using v8::StartupData;
1818
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+
1926std::string FormatBlob (v8::StartupData* blob,
2027 const std::vector<size_t >& isolate_data_indexes) {
2128 std::stringstream ss;
22- size_t isolate_data_indexes_size = isolate_data_indexes.size ();
2329
2430 ss << R"( #include <cstddef>
2531#include "node_main_instance.h"
@@ -29,47 +35,26 @@ std::string FormatBlob(v8::StartupData* blob,
2935
3036namespace node {
3137
32- static const uint8_t blob_data[] = {
38+ static const char blob_data[] = {
3339)" ;
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 );
4041 ss << R"( };
4142
4243static const int blob_size = )"
4344 << 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 };
4846)" ;
4947
50- ss << R"( v8::StartupData*
51- NodeMainInstance::GetEmbeddedSnapshotBlob() {
48+ ss << R"( v8::StartupData* NodeMainInstance::GetEmbeddedSnapshotBlob() {
5249 return &blob;
5350}
5451
55- static const size_t isolate_data_indexes_raw[] = {
52+ static const std::vector< size_t> isolate_data_indexes {
5653)" ;
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"( };
7056
71- const NodeMainInstance::IndexArray*
72- NodeMainInstance::GetIsolateDataIndexes() {
57+ const std::vector<size_t>* NodeMainInstance::GetIsolateDataIndexes() {
7358 return &isolate_data_indexes;
7459}
7560} // namespace node
0 commit comments