Skip to content

Commit 07140e2

Browse files
committed
use done macro everywhere that makes sense
- remove break_with_trap macro - remove exec_break macros
1 parent bea9fc1 commit 07140e2

File tree

3 files changed

+18
-59
lines changed

3 files changed

+18
-59
lines changed

crates/wasmi/src/engine/executor/handler/dispatch.rs

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -283,35 +283,11 @@ macro_rules! compile_or_get_func {
283283
($state:expr, $ip:expr, $sp:expr, $mem0:expr, $mem0_len:expr, $instance:expr, $func:expr) => {{
284284
match $crate::engine::executor::handler::utils::compile_or_get_func($state, $func) {
285285
Ok((ip, size)) => (ip, size),
286-
Err(error) => {
287-
$state.done(DoneReason::CompileError(error));
288-
return exec_break!($ip, $sp, $mem0, $mem0_len, $instance);
289-
}
286+
Err(error) => done!($state, DoneReason::CompileError(error)),
290287
}
291288
}};
292289
}
293290

294-
#[cfg(not(feature = "trampolines"))]
295-
macro_rules! exec_break {
296-
($ip:expr, $sp:expr, $mem0:expr, $mem0_len:expr, $instance:expr) => {{
297-
$crate::engine::executor::handler::dispatch::Done::control_continue(
298-
$ip, $sp, $mem0, $mem0_len, $instance,
299-
)
300-
}};
301-
}
302-
303-
#[cfg(feature = "trampolines")]
304-
macro_rules! exec_break {
305-
($ip:expr, $sp:expr, $mem0:expr, $mem0_len:expr, $instance:expr) => {{
306-
let _: Ip = $ip;
307-
let _: Sp = $sp;
308-
let _: Mem0Ptr = $mem0;
309-
let _: Mem0Len = $mem0_len;
310-
let _: NonNull<InstanceEntity> = $instance;
311-
$crate::engine::executor::handler::dispatch::Done::Break
312-
}};
313-
}
314-
315291
macro_rules! done {
316292
($state:expr, $reason:expr) => {{
317293
$state.done(<_ as ::core::convert::Into<

crates/wasmi/src/engine/executor/handler/exec.rs

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,7 @@ pub fn consume_fuel(
7575
.fuel_mut()
7676
.consume_fuel_unchecked(u64::from(fuel));
7777
if let Err(FuelError::OutOfFuel { required_fuel }) = consumption_result {
78-
state.done(DoneReason::OutOfFuel { required_fuel });
79-
return exec_break!(ip, sp, mem0, mem0_len, instance);
78+
done!(state, DoneReason::OutOfFuel { required_fuel });
8079
}
8180
dispatch!(state, ip, sp, mem0, mem0_len, instance)
8281
}
@@ -195,7 +194,7 @@ pub fn global_set_64(
195194
pub fn call_internal(
196195
state: &mut VmState,
197196
ip: Ip,
198-
sp: Sp,
197+
_sp: Sp,
199198
mem0: Mem0Ptr,
200199
mem0_len: Mem0Len,
201200
instance: NonNull<InstanceEntity>,
@@ -208,15 +207,15 @@ pub fn call_internal(
208207
.push_frame(Some(caller_ip), callee_ip, params, size, None)
209208
{
210209
Ok(sp) => sp,
211-
Err(trap) => break_with_trap!(trap, state, ip, sp, mem0, mem0_len, instance),
210+
Err(trap) => done!(state, trap),
212211
};
213212
dispatch!(state, callee_ip, callee_sp, mem0, mem0_len, instance)
214213
}
215214

216215
pub fn call_imported(
217216
state: &mut VmState,
218217
ip: Ip,
219-
sp: Sp,
218+
_sp: Sp,
220219
mem0: Mem0Ptr,
221220
mem0_len: Mem0Len,
222221
instance: NonNull<InstanceEntity>,
@@ -239,7 +238,7 @@ pub fn call_imported(
239238
(instance != callee_instance).then_some(callee_instance),
240239
) {
241240
Ok(sp) => sp,
242-
Err(trap) => break_with_trap!(trap, state, ip, sp, mem0, mem0_len, instance),
241+
Err(trap) => done!(state, trap),
243242
};
244243
let (instance, mem0, mem0_len) =
245244
update_instance(state.store, instance, callee_instance, mem0, mem0_len);
@@ -271,7 +270,7 @@ pub fn call_indirect(
271270
) = unsafe { decode_op(ip) };
272271
let func = match resolve_indirect_func(index, table, func_type, state, sp, instance) {
273272
Ok(func) => func,
274-
Err(trap) => break_with_trap!(trap, state, ip, sp, mem0, mem0_len, instance),
273+
Err(trap) => done!(state, trap),
275274
};
276275
let func = resolve_func(state.store, &func);
277276
let (callee_ip, sp, mem0, mem0_len, instance) = match func {
@@ -290,7 +289,7 @@ pub fn call_indirect(
290289
(instance != callee_instance).then_some(callee_instance),
291290
) {
292291
Ok(sp) => sp,
293-
Err(trap) => break_with_trap!(trap, state, ip, sp, mem0, mem0_len, instance),
292+
Err(trap) => done!(state, trap),
294293
};
295294
let (instance, mem0, mem0_len) =
296295
update_instance(state.store, instance, callee_instance, mem0, mem0_len);
@@ -410,19 +409,10 @@ pub fn memory_grow(
410409
}
411410
}
412411
Err(StoreError::External(MemoryError::OutOfFuel { required_fuel })) => {
413-
state.done(DoneReason::OutOfFuel { required_fuel });
414-
return exec_break!(ip, sp, mem0, mem0_len, instance);
412+
done!(state, DoneReason::OutOfFuel { required_fuel });
415413
}
416414
Err(StoreError::External(MemoryError::ResourceLimiterDeniedAllocation)) => {
417-
break_with_trap!(
418-
TrapCode::GrowthOperationLimited,
419-
state,
420-
ip,
421-
sp,
422-
mem0,
423-
mem0_len,
424-
instance
425-
)
415+
done!(state, TrapCode::GrowthOperationLimited);
426416
}
427417
Err(StoreError::Internal(_error)) => {
428418
// TODO: we do not want to panic in the executor handlers so we somehow
@@ -505,7 +495,7 @@ macro_rules! handler_unary {
505495
let value = get_value(value, sp);
506496
let value = match $eval(value).into_trap_result() {
507497
Ok(value) => value,
508-
Err(trap) => break_with_trap!(trap, state, ip, sp, mem0, mem0_len, instance),
498+
Err(trap) => done!(state, trap),
509499
};
510500
set_value(sp, result, value);
511501
dispatch!(state, ip, sp, mem0, mem0_len, instance)
@@ -594,7 +584,7 @@ macro_rules! handler_binary {
594584
let value = match $eval(lhs, rhs).into_trap_result() {
595585
Ok(value) => value,
596586
Err(trap) => {
597-
break_with_trap!(trap, state, ip, sp, mem0, mem0_len, instance)
587+
done!(state, trap)
598588
},
599589
};
600590
set_value(sp, result, value);
@@ -1044,7 +1034,7 @@ macro_rules! handler_load_ss {
10441034
let mem_bytes = memory_bytes(memory, mem0, mem0_len, instance, state);
10451035
let loaded = match $load(mem_bytes, ptr, offset) {
10461036
Ok(loaded) => loaded,
1047-
Err(trap) => break_with_trap!(trap, state, ip, sp, mem0, mem0_len, instance),
1037+
Err(trap) => done!(state, trap),
10481038
};
10491039
set_value(sp, result, loaded);
10501040
dispatch!(state, ip, sp, mem0, mem0_len, instance)
@@ -1090,7 +1080,7 @@ macro_rules! handler_load_si {
10901080
let mem_bytes = memory_bytes(memory, mem0, mem0_len, instance, state);
10911081
let loaded = match $load(mem_bytes, usize::from(address)) {
10921082
Ok(loaded) => loaded,
1093-
Err(trap) => break_with_trap!(trap, state, ip, sp, mem0, mem0_len, instance),
1083+
Err(trap) => done!(state, trap),
10941084
};
10951085
set_value(sp, result, loaded);
10961086
dispatch!(state, ip, sp, mem0, mem0_len, instance)
@@ -1137,7 +1127,7 @@ macro_rules! handler_load_mem0_offset16_ss {
11371127
let mem_bytes = mem0_bytes(mem0, mem0_len);
11381128
let loaded = match $load(mem_bytes, ptr, u64::from(u16::from(offset))) {
11391129
Ok(loaded) => loaded,
1140-
Err(trap) => break_with_trap!(trap, state, ip, sp, mem0, mem0_len, instance),
1130+
Err(trap) => done!(state, trap),
11411131
};
11421132
set_value(sp, result, loaded);
11431133
dispatch!(state, ip, sp, mem0, mem0_len, instance)
@@ -1185,7 +1175,7 @@ macro_rules! handler_store_sx {
11851175
let value: $hint = get_value(value, sp);
11861176
let mem_bytes = memory_bytes(memory, mem0, mem0_len, instance, state);
11871177
if let Err(trap) = $store(mem_bytes, ptr, offset, value.into()) {
1188-
break_with_trap!(trap, state, ip, sp, mem0, mem0_len, instance)
1178+
done!(state, trap)
11891179
}
11901180
dispatch!(state, ip, sp, mem0, mem0_len, instance)
11911181
}
@@ -1232,7 +1222,7 @@ macro_rules! handler_store_ix {
12321222
let value: $hint = get_value(value, sp);
12331223
let mem_bytes = memory_bytes(memory, mem0, mem0_len, instance, state);
12341224
if let Err(trap) = $store(mem_bytes, usize::from(address), value.into()) {
1235-
break_with_trap!(trap, state, ip, sp, mem0, mem0_len, instance)
1225+
done!(state, trap)
12361226
}
12371227
dispatch!(state, ip, sp, mem0, mem0_len, instance)
12381228
}
@@ -1280,7 +1270,7 @@ macro_rules! handler_store_mem0_offset16_sx {
12801270
let value: $hint = get_value(value, sp);
12811271
let mem_bytes = mem0_bytes(mem0, mem0_len);
12821272
if let Err(trap) = $store(mem_bytes, ptr, u64::from(u16::from(offset)), value.into()) {
1283-
break_with_trap!(trap, state, ip, sp, mem0, mem0_len, instance)
1273+
done!(state, trap)
12841274
}
12851275
dispatch!(state, ip, sp, mem0, mem0_len, instance)
12861276
}

crates/wasmi/src/engine/executor/handler/utils.rs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,6 @@ macro_rules! impl_expand_to_result {
124124
}
125125
impl_expand_to_result!(bool, i32, i64, u32, u64, f32, f64);
126126

127-
macro_rules! break_with_trap {
128-
($trap:expr, $state:expr, $ip:expr, $sp:expr, $mem0:expr, $mem0_len:expr, $instance:expr $(,)? ) => {{
129-
$state.done(DoneReason::Trap($trap));
130-
return exec_break!($ip, $sp, $mem0, $mem0_len, $instance);
131-
}};
132-
}
133-
134127
macro_rules! exec_return {
135128
($state:expr, $sp:expr, $mem0:expr, $mem0_len:expr, $instance:expr) => {{
136129
let Some((ip, sp, mem0, mem0_len, instance)) =

0 commit comments

Comments
 (0)