1 #include <cstdio> 2 #include <fstream> 3 #include <iostream> 4 #include <sstream> 5 #include <string> 6 #include <vector> 7 8 #include "libplatform/libplatform.h" 9 #include "node_internals.h" 10 #include "snapshot_builder.h" 11 #include "util-inl.h" 12 #include "v8.h" 13 14 #ifdef _WIN32 15 #include <windows.h> 16 wmain(int argc,wchar_t * argv[])17int wmain(int argc, wchar_t* argv[]) { 18 #else // UNIX 19 int main(int argc, char* argv[]) { 20 argv = uv_setup_args(argc, argv); 21 #endif // _WIN32 22 23 v8::V8::SetFlagsFromString("--random_seed=42"); 24 25 if (argc < 2) { 26 std::cerr << "Usage: " << argv[0] << " <path/to/output.cc>\n"; 27 return 1; 28 } 29 30 std::ofstream out; 31 out.open(argv[1], std::ios::out | std::ios::binary); 32 if (!out.is_open()) { 33 std::cerr << "Cannot open " << argv[1] << "\n"; 34 return 1; 35 } 36 37 int node_argc = 1; 38 char argv0[] = "node"; 39 char* node_argv[] = {argv0, nullptr}; 40 41 node::InitializationResult result = 42 node::InitializeOncePerProcess(node_argc, node_argv); 43 CHECK(!result.early_return); 44 CHECK_EQ(result.exit_code, 0); 45 46 { 47 std::string snapshot = 48 node::SnapshotBuilder::Generate(result.args, result.exec_args); 49 out << snapshot; 50 out.close(); 51 } 52 53 node::TearDownOncePerProcess(); 54 return 0; 55 } 56