mirror of
https://github.com/fluencelabs/wasmer
synced 2024-12-13 14:25:32 +00:00
Fix table element size
This commit is contained in:
parent
f3cbfc0e09
commit
998d7294f0
@ -391,7 +391,7 @@ impl<'environment> FuncEnvironmentTrait for FuncEnvironment<'environment> {
|
|||||||
base,
|
base,
|
||||||
offset: Offset32::new(table_data_offset + ptr_size as i32),
|
offset: Offset32::new(table_data_offset + ptr_size as i32),
|
||||||
global_type: self.pointer_type(),
|
global_type: self.pointer_type(),
|
||||||
readonly: true,
|
readonly: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Create table based on the data above
|
// Create table based on the data above
|
||||||
@ -399,7 +399,7 @@ impl<'environment> FuncEnvironmentTrait for FuncEnvironment<'environment> {
|
|||||||
base_gv,
|
base_gv,
|
||||||
min_size: Imm64::new(0),
|
min_size: Imm64::new(0),
|
||||||
bound_gv,
|
bound_gv,
|
||||||
element_size: Imm64::new(i64::from(self.pointer_bytes()) * 2),
|
element_size: Imm64::new(i64::from(self.pointer_bytes())),
|
||||||
index_type: I64,
|
index_type: I64,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -525,18 +525,22 @@ impl<'environment> FuncEnvironmentTrait for FuncEnvironment<'environment> {
|
|||||||
// The `callee` value is an index into a table of function pointers.
|
// The `callee` value is an index into a table of function pointers.
|
||||||
// Apparently, that table is stored at absolute address 0 in this dummy environment.
|
// Apparently, that table is stored at absolute address 0 in this dummy environment.
|
||||||
// TODO: Generate bounds checking code.
|
// TODO: Generate bounds checking code.
|
||||||
let ptr = self.pointer_type();
|
let ptr = native_pointer_type();
|
||||||
let callee_offset = if ptr == I32 {
|
let callee_offset = if ptr == I32 {
|
||||||
// pos.ins().imul_imm(callee, 4)
|
// pos.ins().imul_imm(callee, 4)
|
||||||
callee
|
callee
|
||||||
} else {
|
} else {
|
||||||
let ext = pos.ins().uextend(I64, callee);
|
let ext = pos.ins().uextend(ptr, callee);
|
||||||
ext
|
ext
|
||||||
// pos.ins().imul_imm(ext, 4)
|
// pos.ins().imul_imm(ext, 4)
|
||||||
};
|
};
|
||||||
|
// let entry_size = native_pointer_size() as i64 * 2;
|
||||||
|
// let callee_scaled = pos.ins().imul_imm(callee_offset, entry_size);
|
||||||
|
|
||||||
let entry_addr = pos
|
let entry_addr = pos
|
||||||
.ins()
|
.ins()
|
||||||
.table_addr(self.pointer_type(), table, callee_offset, 0);
|
.table_addr(ptr, table, callee_offset, 0);
|
||||||
|
|
||||||
let mut mflags = ir::MemFlags::new();
|
let mut mflags = ir::MemFlags::new();
|
||||||
mflags.set_notrap();
|
mflags.set_notrap();
|
||||||
mflags.set_aligned();
|
mflags.set_aligned();
|
||||||
|
Loading…
Reference in New Issue
Block a user