diff options
Diffstat (limited to 'src/from_snapshot.cc')
-rw-r--r-- | src/from_snapshot.cc | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/from_snapshot.cc b/src/from_snapshot.cc index ac48e8a20..2575ec32f 100644 --- a/src/from_snapshot.cc +++ b/src/from_snapshot.cc @@ -10,11 +10,21 @@ #include "deno.h" #include "internal.h" +extern const char deno_snapshot_start asm("deno_snapshot_start"); +extern const char deno_snapshot_end asm("deno_snapshot_end"); #ifdef DENO_MOCK_RUNTIME -#include "snapshot_mock_runtime.cc" +asm(".data\n" + "deno_snapshot_start: .incbin \"gen/snapshot_mock_runtime.bin\"\n" + "deno_snapshot_end:\n" + ".globl deno_snapshot_start;\n" + ".globl deno_snapshot_end;"); #else -#include "snapshot_deno.cc" -#endif +asm(".data\n" + "deno_snapshot_start: .incbin \"gen/snapshot_deno.bin\"\n" + "deno_snapshot_end:\n" + ".globl deno_snapshot_start;\n" + ".globl deno_snapshot_end;"); +#endif // DENO_MOCK_RUNTIME namespace deno { @@ -42,7 +52,13 @@ Deno* NewFromSnapshot(void* data, deno_recv_cb cb) { params.array_buffer_allocator = v8::ArrayBuffer::Allocator::NewDefaultAllocator(); params.external_references = external_references; - params.snapshot_blob = StartupBlob_snapshot(); + + CHECK_NE(&deno_snapshot_start, nullptr); + int snapshot_len = + static_cast<int>(&deno_snapshot_end - &deno_snapshot_start); + static v8::StartupData snapshot = {&deno_snapshot_start, snapshot_len}; + params.snapshot_blob = &snapshot; + v8::Isolate* isolate = v8::Isolate::New(params); AddIsolate(d, isolate); |