summaryrefslogtreecommitdiff
path: root/src/snapshot.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/snapshot.rs')
-rw-r--r--src/snapshot.rs18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/snapshot.rs b/src/snapshot.rs
index 52c8df47d..fcb41f6c8 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 transmute 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 = unsafe { std::mem::transmute::<*const u8, *mut u8>(ptr) };
+ deno_buf {
+ alloc_ptr: std::ptr::null_mut(),
+ alloc_len: 0,
+ data_ptr: ptr_mut,
+ data_len: data.len(),
+ }
}