diff options
| author | Ryan Dahl <ry@tinyclouds.org> | 2018-11-12 17:17:30 -0800 |
|---|---|---|
| committer | Ryan Dahl <ry@tinyclouds.org> | 2018-12-03 13:44:21 -0800 |
| commit | f727214db0677ebc31e0988287c71c517a858193 (patch) | |
| tree | c7fd194db0b0f68d10022eba2ff98f259a36643b /src/snapshot.rs | |
| parent | 7d02971c2c88705afd019442965f228e0165c73b (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.rs | 18 |
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(), + } } |
