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

View File

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

View File

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

View File

@ -18,9 +18,9 @@ log = "0.4"
rustc-demangle = "0.1.13"
serde_json = "1.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-shared = { path = "../shared", 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-webidl-bindings = "0.1.2"
wasm-webidl-bindings = "0.2.0"

View File

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

View File

@ -24,7 +24,7 @@ rouille = { version = "3.0.0", default-features = false }
serde = { version = "1.0", features = ['derive'] }
serde_derive = "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-shared = { path = "../shared", version = "=0.2.48" }

View File

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

View File

@ -101,7 +101,7 @@ impl Config {
let prev_max = mem.maximum.unwrap();
assert!(mem.import.is_some());
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
.exports
@ -146,11 +146,24 @@ fn switch_data_segments_to_passive(
) -> Result<Vec<PassiveSegment>, Error> {
let mut ret = Vec::new();
let memory = module.memories.get_mut(memory);
let data = mem::replace(&mut memory.data, Default::default());
for (offset, value) in data.into_iter() {
let len = value.len() as u32;
let id = module.data.add(value);
ret.push(PassiveSegment { id, offset, len });
for id in mem::replace(&mut memory.data_segments, Default::default()) {
let data = module.data.get_mut(id);
let kind = match &data.kind {
walrus::DataKind::Active(kind) => kind,
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)

View File

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