1
0
mirror of https://github.com/fluencelabs/wasm-bindgen synced 2025-03-31 17:31:06 +00:00

Update to walrus 0.9.0

This commit updates the `walrus` dependency with recent upstream API
changes in `walrus` itself, namely updates to passive segements and how
memory data segments are handled
This commit is contained in:
Alex Crichton 2019-07-29 13:04:45 -07:00
parent 68a1519eaa
commit 0daa290129
8 changed files with 28 additions and 20 deletions
crates
anyref-xform
cli-support
cli
threads-xform
wasm-interpreter

@ -13,4 +13,4 @@ edition = '2018'
[dependencies] [dependencies]
failure = "0.1" failure = "0.1"
walrus = "0.8.0" walrus = "0.9.0"

@ -676,7 +676,7 @@ impl Transform<'_> {
// initialized correctly. // initialized correctly.
fn inject_initialization(&mut self, module: &mut Module) { fn inject_initialization(&mut self, module: &mut Module) {
let ty = module.types.add(&[], &[]); let ty = module.types.add(&[], &[]);
let import = module.add_import_func( let (import, _) = module.add_import_func(
"__wbindgen_placeholder__", "__wbindgen_placeholder__",
"__wbindgen_init_anyref_table", "__wbindgen_init_anyref_table",
ty, ty,

@ -18,9 +18,9 @@ log = "0.4"
rustc-demangle = "0.1.13" rustc-demangle = "0.1.13"
serde_json = "1.0" serde_json = "1.0"
tempfile = "3.0" tempfile = "3.0"
walrus = "0.8.0" walrus = "0.9.0"
wasm-bindgen-anyref-xform = { path = '../anyref-xform', version = '=0.2.48' } wasm-bindgen-anyref-xform = { path = '../anyref-xform', version = '=0.2.48' }
wasm-bindgen-shared = { path = "../shared", version = '=0.2.48' } wasm-bindgen-shared = { path = "../shared", version = '=0.2.48' }
wasm-bindgen-threads-xform = { path = '../threads-xform', version = '=0.2.48' } wasm-bindgen-threads-xform = { path = '../threads-xform', version = '=0.2.48' }
wasm-bindgen-wasm-interpreter = { path = "../wasm-interpreter", version = '=0.2.48' } wasm-bindgen-wasm-interpreter = { path = "../wasm-interpreter", version = '=0.2.48' }
wasm-webidl-bindings = "0.1.2" wasm-webidl-bindings = "0.2.0"

@ -152,13 +152,8 @@ impl WasmBindgenDescriptorsSection {
let ty = module.funcs.get(wbindgen_describe_closure).ty(); let ty = module.funcs.get(wbindgen_describe_closure).ty();
for (func, (call_instr, descriptor)) in func_to_descriptor { for (func, (call_instr, descriptor)) in func_to_descriptor {
let import_name = format!("__wbindgen_closure_wrapper{}", func.index()); let import_name = format!("__wbindgen_closure_wrapper{}", func.index());
let id = module.add_import_func("__wbindgen_placeholder__", &import_name, ty); let (id, import_id) =
let import_id = module module.add_import_func("__wbindgen_placeholder__", &import_name, ty);
.imports
.iter()
.find(|i| i.name == import_name)
.unwrap()
.id();
module.funcs.get_mut(id).name = Some(import_name); module.funcs.get_mut(id).name = Some(import_name);
let local = match &mut module.funcs.get_mut(func).kind { let local = match &mut module.funcs.get_mut(func).kind {

@ -24,7 +24,7 @@ rouille = { version = "3.0.0", default-features = false }
serde = { version = "1.0", features = ['derive'] } serde = { version = "1.0", features = ['derive'] }
serde_derive = "1.0" serde_derive = "1.0"
serde_json = "1.0" serde_json = "1.0"
walrus = "0.8.0" walrus = "0.9.0"
wasm-bindgen-cli-support = { path = "../cli-support", version = "=0.2.48" } wasm-bindgen-cli-support = { path = "../cli-support", version = "=0.2.48" }
wasm-bindgen-shared = { path = "../shared", version = "=0.2.48" } wasm-bindgen-shared = { path = "../shared", version = "=0.2.48" }

@ -13,4 +13,4 @@ edition = "2018"
[dependencies] [dependencies]
failure = "0.1" failure = "0.1"
walrus = "0.8.0" walrus = "0.9.0"

@ -101,7 +101,7 @@ impl Config {
let prev_max = mem.maximum.unwrap(); let prev_max = mem.maximum.unwrap();
assert!(mem.import.is_some()); assert!(mem.import.is_some());
mem.maximum = Some(cmp::max(self.maximum_memory / PAGE_SIZE, prev_max)); mem.maximum = Some(cmp::max(self.maximum_memory / PAGE_SIZE, prev_max));
assert!(mem.data.is_empty()); assert!(mem.data_segments.is_empty());
let init_memory = module let init_memory = module
.exports .exports
@ -146,11 +146,24 @@ fn switch_data_segments_to_passive(
) -> Result<Vec<PassiveSegment>, Error> { ) -> Result<Vec<PassiveSegment>, Error> {
let mut ret = Vec::new(); let mut ret = Vec::new();
let memory = module.memories.get_mut(memory); let memory = module.memories.get_mut(memory);
let data = mem::replace(&mut memory.data, Default::default()); for id in mem::replace(&mut memory.data_segments, Default::default()) {
for (offset, value) in data.into_iter() { let data = module.data.get_mut(id);
let len = value.len() as u32; let kind = match &data.kind {
let id = module.data.add(value); walrus::DataKind::Active(kind) => kind,
ret.push(PassiveSegment { id, offset, len }); walrus::DataKind::Passive => continue,
};
let offset = match kind.location {
walrus::ActiveDataLocation::Absolute(n) => {
walrus::InitExpr::Value(walrus::ir::Value::I32(n as i32))
}
walrus::ActiveDataLocation::Relative(global) => walrus::InitExpr::Global(global),
};
data.kind = walrus::DataKind::Passive;
ret.push(PassiveSegment {
id,
offset,
len: data.value.len() as u32,
});
} }
Ok(ret) Ok(ret)

@ -14,7 +14,7 @@ edition = '2018'
[dependencies] [dependencies]
failure = "0.1" failure = "0.1"
log = "0.4" log = "0.4"
walrus = "0.8.0" walrus = "0.9.0"
[dev-dependencies] [dev-dependencies]
tempfile = "3" tempfile = "3"