summaryrefslogtreecommitdiff
path: root/src/snapshot.rs
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-11-12 17:17:30 -0800
committerRyan Dahl <ry@tinyclouds.org>2018-12-03 13:44:21 -0800
commitf727214db0677ebc31e0988287c71c517a858193 (patch)
treec7fd194db0b0f68d10022eba2ff98f259a36643b /src/snapshot.rs
parent7d02971c2c88705afd019442965f228e0165c73b (diff)
Use include_bytes! instead of incbin.
This is the second attempt at this patch. The first version was reverted in 2ffd78daf9956a24098d1f959f21882e350e9d37 The problem, I suspect, was that the snapshot was represented as a source_set, which inserted a node into the dependency tree. include_bytes does properly insert the snapshot into rustc's depfile but the use of source_set confused gn. Now the that the deno executable has the create_deno_snapshot as a direct dependency, changes will be propagated.
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..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(),
+ }
}