Update parity-wasm

Bring in some support for bulk-memory-operations instructions
This commit is contained in:
Alex Crichton 2018-10-16 13:53:17 -07:00
parent 995aefa87e
commit a4a2ec605d
7 changed files with 27 additions and 15 deletions

View File

@ -13,7 +13,7 @@ Shared support for the wasm-bindgen-cli package, an internal dependency
[dependencies]
base64 = "0.9"
failure = "0.1.2"
parity-wasm = "0.34"
parity-wasm = "0.35"
tempfile = "3.0"
wasm-bindgen-shared = { path = "../shared", version = '=0.2.25' }
wasm-bindgen-wasm-interpreter = { path = "../wasm-interpreter", version = '=0.2.25' }

View File

@ -153,8 +153,9 @@ impl ClosureDescriptors {
let to_remove = remove.get(&i).unwrap_or(&empty);
let mut current = Vec::new();
assert_eq!(entry.offset().code().len(), 2);
let mut offset = match entry.offset().code()[0] {
let offset = entry.offset().as_ref().unwrap();
assert_eq!(offset.code().len(), 2);
let mut offset = match offset.code()[0] {
Instruction::I32Const(x) => x,
_ => unreachable!(),
};
@ -172,7 +173,7 @@ impl ClosureDescriptors {
let members = mem::replace(&mut current, Vec::new());
let offset =
InitExpr::new(vec![Instruction::I32Const(offset), Instruction::End]);
let new_entry = ElementSegment::new(0, offset, members);
let new_entry = ElementSegment::new(0, Some(offset), members, false);
elements.entries_mut().push(new_entry);
}
offset = next_offset;
@ -180,7 +181,7 @@ impl ClosureDescriptors {
// Any remaining function table entries get pushed at the end.
if current.len() > 0 {
let offset = InitExpr::new(vec![Instruction::I32Const(offset), Instruction::End]);
let new_entry = ElementSegment::new(0, offset, current);
let new_entry = ElementSegment::new(0, Some(offset), current, false);
elements.entries_mut().push(new_entry);
}
}

View File

@ -18,7 +18,7 @@ docopt = "1.0"
env_logger = "0.5"
failure = "0.1.2"
log = "0.4"
parity-wasm = "0.34"
parity-wasm = "0.35"
rouille = { version = "2.1.0", default-features = false }
serde = "1.0"
serde_derive = "1.0"

View File

@ -11,6 +11,6 @@ Support for removing unused items from a wasm executable
"""
[dependencies]
parity-wasm = "0.34"
parity-wasm = "0.35"
log = "0.4"
rustc-demangle = "0.1.9"

View File

@ -417,16 +417,20 @@ impl<'a> LiveContext<'a> {
}
fn add_data_segment(&mut self, data: &DataSegment) {
self.add_memory(data.index());
self.add_init_expr(data.offset());
if let Some(offset) = data.offset() {
self.add_memory(data.index());
self.add_init_expr(offset);
}
}
fn add_element_segment(&mut self, seg: &ElementSegment) {
for member in seg.members() {
self.add_function(*member);
}
self.add_table(seg.index());
self.add_init_expr(seg.offset());
if let Some(offset) = seg.offset() {
self.add_table(seg.index());
self.add_init_expr(offset);
}
}
}
@ -673,7 +677,9 @@ impl<'a> RemapContext<'a> {
for m in s.members_mut() {
self.remap_function_idx(m);
}
self.remap_init_expr(s.offset_mut());
if let Some(offset) = s.offset_mut() {
self.remap_init_expr(offset);
}
}
fn remap_code_section(&self, s: &mut CodeSection) -> bool {
@ -725,7 +731,9 @@ impl<'a> RemapContext<'a> {
let mut i = segment.index();
self.remap_memory_idx(&mut i);
assert_eq!(segment.index(), i);
self.remap_init_expr(segment.offset_mut());
if let Some(offset) = segment.offset_mut() {
self.remap_init_expr(offset);
}
}
fn remap_type_idx(&self, i: &mut u32) {

View File

@ -11,7 +11,7 @@ Micro-interpreter optimized for wasm-bindgen's use case
"""
[dependencies]
parity-wasm = "0.34"
parity-wasm = "0.35"
[dev-dependencies]
tempfile = "3"

View File

@ -248,7 +248,10 @@ impl Interpreter {
.iter()
.enumerate()
.filter_map(|(i, entry)| {
let code = entry.offset().code();
let code = match entry.offset() {
Some(offset) => offset.code(),
None => return None,
};
if code.len() != 2 {
return None;
}