diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 2 | ||||
-rw-r--r-- | src/snapshot.cc | 18 | ||||
-rw-r--r-- | src/snapshot.rs | 18 |
3 files changed, 17 insertions, 21 deletions
diff --git a/src/main.rs b/src/main.rs index 7c6806d5d..1224d2af2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -97,7 +97,7 @@ fn main() { }); let state = Arc::new(isolate::IsolateState::new(flags, rest_argv)); - let snapshot = unsafe { snapshot::deno_snapshot.clone() }; + let snapshot = snapshot::deno_snapshot(); let mut isolate = isolate::Isolate::new(snapshot, state, ops::dispatch); tokio_util::init(|| { isolate diff --git a/src/snapshot.cc b/src/snapshot.cc deleted file mode 100644 index b0945d319..000000000 --- a/src/snapshot.cc +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the Deno authors. All rights reserved. MIT license. - -#include "deno.h" - -extern "C" { - -extern const char snapshot_start asm("snapshot_start"); -extern const char snapshot_end asm("snapshot_end"); -asm(".data\n" - "snapshot_start: .incbin \"gen/snapshot_deno.bin\"\n" - "snapshot_end:\n" - ".globl snapshot_start;\n" - ".globl snapshot_end;"); -extern const deno_buf deno_snapshot = { - nullptr, 0, reinterpret_cast<uint8_t*>(const_cast<char*>(&snapshot_start)), - static_cast<size_t>(&snapshot_end - &snapshot_start)}; - -} diff --git a/src/snapshot.rs b/src/snapshot.rs index 52c8df47d..4774ba43f 100644 --- a/src/snapshot.rs +++ b/src/snapshot.rs @@ -1,5 +1,19 @@ // Copyright 2018 the Deno authors. All rights reserved. MIT license. use libdeno::deno_buf; -extern "C" { - pub static deno_snapshot: deno_buf; +use std; + +pub fn deno_snapshot() -> deno_buf { + let data = + include_bytes!(concat!(env!("GN_OUT_DIR"), "/gen/snapshot_deno.bin")); + let ptr = data.as_ptr(); + // TODO The cast is not necessary here. deno_buf specifies mutable + // pointers when it doesn't necessarally need mutable. So maybe the deno_buf + // type should be broken into a mutable and non-mutable version? + let ptr_mut = ptr as *mut u8; + deno_buf { + alloc_ptr: std::ptr::null_mut(), + alloc_len: 0, + data_ptr: ptr_mut, + data_len: data.len(), + } } |