Skip to content

Commit 267666f

Browse files
committed
try to fix Wasm regressions
1 parent f8d69e4 commit 267666f

File tree

1 file changed

+53
-52
lines changed

1 file changed

+53
-52
lines changed

crates/wasmi/src/engine/executor.rs

Lines changed: 53 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -194,31 +194,32 @@ impl<'ctx, 'engine> Executor<'ctx, 'engine> {
194194
fn execute(mut self) -> Result<WasmOutcome, TrapCode> {
195195
use Instruction as Instr;
196196
loop {
197-
match *self.ip.get() {
198-
Instr::LocalGet { local_depth } => self.visit_local_get(local_depth),
199-
Instr::LocalSet { local_depth } => self.visit_local_set(local_depth),
200-
Instr::LocalTee { local_depth } => self.visit_local_tee(local_depth),
201-
Instr::Br(params) => self.visit_br(params),
202-
Instr::BrIfEqz(params) => self.visit_br_if_eqz(params),
203-
Instr::BrIfNez(params) => self.visit_br_if_nez(params),
204-
Instr::BrTable { len_targets } => self.visit_br_table(len_targets),
197+
let ip = self.ip;
198+
match ip.get() {
199+
Instr::LocalGet { local_depth } => self.visit_local_get(*local_depth),
200+
Instr::LocalSet { local_depth } => self.visit_local_set(*local_depth),
201+
Instr::LocalTee { local_depth } => self.visit_local_tee(*local_depth),
202+
Instr::Br(params) => self.visit_br(*params),
203+
Instr::BrIfEqz(params) => self.visit_br_if_eqz(*params),
204+
Instr::BrIfNez(params) => self.visit_br_if_nez(*params),
205+
Instr::BrTable { len_targets } => self.visit_br_table(*len_targets),
205206
Instr::Unreachable => self.visit_unreachable()?,
206-
Instr::ConsumeFuel { amount } => self.visit_consume_fuel(amount)?,
207+
Instr::ConsumeFuel { amount } => self.visit_consume_fuel(*amount)?,
207208
Instr::Return(drop_keep) => {
208-
if let ReturnOutcome::Host = self.visit_ret(drop_keep) {
209+
if let ReturnOutcome::Host = self.visit_ret(*drop_keep) {
209210
return Ok(WasmOutcome::Return);
210211
}
211212
}
212213
Instr::ReturnIfNez(drop_keep) => {
213-
if let ReturnOutcome::Host = self.visit_return_if_nez(drop_keep) {
214+
if let ReturnOutcome::Host = self.visit_return_if_nez(*drop_keep) {
214215
return Ok(WasmOutcome::Return);
215216
}
216217
}
217218
Instr::ReturnCall { drop_keep, func } => {
218219
if let CallOutcome::Call {
219220
host_func,
220221
instance,
221-
} = self.visit_return_call(drop_keep, func)?
222+
} = self.visit_return_call(*drop_keep, *func)?
222223
{
223224
return Ok(WasmOutcome::Call {
224225
host_func,
@@ -234,7 +235,7 @@ impl<'ctx, 'engine> Executor<'ctx, 'engine> {
234235
if let CallOutcome::Call {
235236
host_func,
236237
instance,
237-
} = self.visit_return_call_indirect(drop_keep, table, func_type)?
238+
} = self.visit_return_call_indirect(*drop_keep, *table, *func_type)?
238239
{
239240
return Ok(WasmOutcome::Call {
240241
host_func,
@@ -246,7 +247,7 @@ impl<'ctx, 'engine> Executor<'ctx, 'engine> {
246247
if let CallOutcome::Call {
247248
host_func,
248249
instance,
249-
} = self.visit_call(func)?
250+
} = self.visit_call(*func)?
250251
{
251252
return Ok(WasmOutcome::Call {
252253
host_func,
@@ -258,7 +259,7 @@ impl<'ctx, 'engine> Executor<'ctx, 'engine> {
258259
if let CallOutcome::Call {
259260
host_func,
260261
instance,
261-
} = self.visit_call_indirect(table, func_type)?
262+
} = self.visit_call_indirect(*table, *func_type)?
262263
{
263264
return Ok(WasmOutcome::Call {
264265
host_func,
@@ -268,47 +269,47 @@ impl<'ctx, 'engine> Executor<'ctx, 'engine> {
268269
}
269270
Instr::Drop => self.visit_drop(),
270271
Instr::Select => self.visit_select(),
271-
Instr::GlobalGet(global_idx) => self.visit_global_get(global_idx),
272-
Instr::GlobalSet(global_idx) => self.visit_global_set(global_idx),
273-
Instr::I32Load(offset) => self.visit_i32_load(offset)?,
274-
Instr::I64Load(offset) => self.visit_i64_load(offset)?,
275-
Instr::F32Load(offset) => self.visit_f32_load(offset)?,
276-
Instr::F64Load(offset) => self.visit_f64_load(offset)?,
277-
Instr::I32Load8S(offset) => self.visit_i32_load_i8_s(offset)?,
278-
Instr::I32Load8U(offset) => self.visit_i32_load_i8_u(offset)?,
279-
Instr::I32Load16S(offset) => self.visit_i32_load_i16_s(offset)?,
280-
Instr::I32Load16U(offset) => self.visit_i32_load_i16_u(offset)?,
281-
Instr::I64Load8S(offset) => self.visit_i64_load_i8_s(offset)?,
282-
Instr::I64Load8U(offset) => self.visit_i64_load_i8_u(offset)?,
283-
Instr::I64Load16S(offset) => self.visit_i64_load_i16_s(offset)?,
284-
Instr::I64Load16U(offset) => self.visit_i64_load_i16_u(offset)?,
285-
Instr::I64Load32S(offset) => self.visit_i64_load_i32_s(offset)?,
286-
Instr::I64Load32U(offset) => self.visit_i64_load_i32_u(offset)?,
287-
Instr::I32Store(offset) => self.visit_i32_store(offset)?,
288-
Instr::I64Store(offset) => self.visit_i64_store(offset)?,
289-
Instr::F32Store(offset) => self.visit_f32_store(offset)?,
290-
Instr::F64Store(offset) => self.visit_f64_store(offset)?,
291-
Instr::I32Store8(offset) => self.visit_i32_store_8(offset)?,
292-
Instr::I32Store16(offset) => self.visit_i32_store_16(offset)?,
293-
Instr::I64Store8(offset) => self.visit_i64_store_8(offset)?,
294-
Instr::I64Store16(offset) => self.visit_i64_store_16(offset)?,
295-
Instr::I64Store32(offset) => self.visit_i64_store_32(offset)?,
272+
Instr::GlobalGet(global_idx) => self.visit_global_get(*global_idx),
273+
Instr::GlobalSet(global_idx) => self.visit_global_set(*global_idx),
274+
Instr::I32Load(offset) => self.visit_i32_load(*offset)?,
275+
Instr::I64Load(offset) => self.visit_i64_load(*offset)?,
276+
Instr::F32Load(offset) => self.visit_f32_load(*offset)?,
277+
Instr::F64Load(offset) => self.visit_f64_load(*offset)?,
278+
Instr::I32Load8S(offset) => self.visit_i32_load_i8_s(*offset)?,
279+
Instr::I32Load8U(offset) => self.visit_i32_load_i8_u(*offset)?,
280+
Instr::I32Load16S(offset) => self.visit_i32_load_i16_s(*offset)?,
281+
Instr::I32Load16U(offset) => self.visit_i32_load_i16_u(*offset)?,
282+
Instr::I64Load8S(offset) => self.visit_i64_load_i8_s(*offset)?,
283+
Instr::I64Load8U(offset) => self.visit_i64_load_i8_u(*offset)?,
284+
Instr::I64Load16S(offset) => self.visit_i64_load_i16_s(*offset)?,
285+
Instr::I64Load16U(offset) => self.visit_i64_load_i16_u(*offset)?,
286+
Instr::I64Load32S(offset) => self.visit_i64_load_i32_s(*offset)?,
287+
Instr::I64Load32U(offset) => self.visit_i64_load_i32_u(*offset)?,
288+
Instr::I32Store(offset) => self.visit_i32_store(*offset)?,
289+
Instr::I64Store(offset) => self.visit_i64_store(*offset)?,
290+
Instr::F32Store(offset) => self.visit_f32_store(*offset)?,
291+
Instr::F64Store(offset) => self.visit_f64_store(*offset)?,
292+
Instr::I32Store8(offset) => self.visit_i32_store_8(*offset)?,
293+
Instr::I32Store16(offset) => self.visit_i32_store_16(*offset)?,
294+
Instr::I64Store8(offset) => self.visit_i64_store_8(*offset)?,
295+
Instr::I64Store16(offset) => self.visit_i64_store_16(*offset)?,
296+
Instr::I64Store32(offset) => self.visit_i64_store_32(*offset)?,
296297
Instr::MemorySize => self.visit_memory_size(),
297298
Instr::MemoryGrow => self.visit_memory_grow()?,
298299
Instr::MemoryFill => self.visit_memory_fill()?,
299300
Instr::MemoryCopy => self.visit_memory_copy()?,
300-
Instr::MemoryInit(segment) => self.visit_memory_init(segment)?,
301-
Instr::DataDrop(segment) => self.visit_data_drop(segment),
302-
Instr::TableSize { table } => self.visit_table_size(table),
303-
Instr::TableGrow { table } => self.visit_table_grow(table)?,
304-
Instr::TableFill { table } => self.visit_table_fill(table)?,
305-
Instr::TableGet { table } => self.visit_table_get(table)?,
306-
Instr::TableSet { table } => self.visit_table_set(table)?,
307-
Instr::TableCopy { dst, src } => self.visit_table_copy(dst, src)?,
308-
Instr::TableInit { table, elem } => self.visit_table_init(table, elem)?,
309-
Instr::ElemDrop(segment) => self.visit_element_drop(segment),
310-
Instr::RefFunc { func_index } => self.visit_ref_func(func_index),
311-
Instr::Const(bytes) => self.visit_const(bytes),
301+
Instr::MemoryInit(segment) => self.visit_memory_init(*segment)?,
302+
Instr::DataDrop(segment) => self.visit_data_drop(*segment),
303+
Instr::TableSize { table } => self.visit_table_size(*table),
304+
Instr::TableGrow { table } => self.visit_table_grow(*table)?,
305+
Instr::TableFill { table } => self.visit_table_fill(*table)?,
306+
Instr::TableGet { table } => self.visit_table_get(*table)?,
307+
Instr::TableSet { table } => self.visit_table_set(*table)?,
308+
Instr::TableCopy { dst, src } => self.visit_table_copy(*dst, *src)?,
309+
Instr::TableInit { table, elem } => self.visit_table_init(*table, *elem)?,
310+
Instr::ElemDrop(segment) => self.visit_element_drop(*segment),
311+
Instr::RefFunc { func_index } => self.visit_ref_func(*func_index),
312+
Instr::Const(bytes) => self.visit_const(*bytes),
312313
Instr::I32Eqz => self.visit_i32_eqz(),
313314
Instr::I32Eq => self.visit_i32_eq(),
314315
Instr::I32Ne => self.visit_i32_ne(),

0 commit comments

Comments
 (0)