Skip to content

Commit 9601354

Browse files
committed
refactor WasmInteger users
1 parent a4e95e0 commit 9601354

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-13
lines changed

crates/wasmi/src/engine/translator/func/mod.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,18 +1362,17 @@ impl FuncTranslator {
13621362
///
13631363
/// - `{i32, i64}.{div_u, div_s, rem_u, rem_s}`
13641364
#[allow(clippy::too_many_arguments)]
1365-
fn translate_divrem<T, NonZeroT>(
1365+
fn translate_divrem<T>(
13661366
&mut self,
13671367
make_instr: fn(result: Reg, lhs: Reg, rhs: Reg) -> Instruction,
1368-
make_instr_imm16: fn(result: Reg, lhs: Reg, rhs: Const16<NonZeroT>) -> Instruction,
1368+
make_instr_imm16: fn(result: Reg, lhs: Reg, rhs: Const16<T::NonZero>) -> Instruction,
13691369
make_instr_imm16_rev: fn(result: Reg, lhs: Const16<T>, rhs: Reg) -> Instruction,
13701370
consteval: fn(T, T) -> Result<T, TrapCode>,
13711371
make_instr_opt: fn(&mut Self, lhs: Reg, rhs: Reg) -> Result<bool, Error>,
13721372
make_instr_reg_imm_opt: fn(&mut Self, lhs: Reg, rhs: T) -> Result<bool, Error>,
13731373
) -> Result<(), Error>
13741374
where
13751375
T: WasmInteger,
1376-
NonZeroT: Copy + TryFrom<T> + TryInto<Const16<NonZeroT>>,
13771376
{
13781377
bail_unreachable!(self);
13791378
match self.stack.pop2() {
@@ -1385,7 +1384,7 @@ impl FuncTranslator {
13851384
self.push_binary_instr(lhs, rhs, make_instr)
13861385
}
13871386
(TypedProvider::Register(lhs), TypedProvider::Const(rhs)) => {
1388-
let Some(non_zero_rhs) = NonZeroT::try_from(T::from(rhs)).ok() else {
1387+
let Some(non_zero_rhs) = <T as WasmInteger>::non_zero(T::from(rhs)) else {
13891388
// Optimization: division by zero always traps
13901389
self.translate_trap(TrapCode::IntegerDivisionByZero)?;
13911390
return Ok(());

crates/wasmi/src/engine/translator/func/visit.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ use crate::{
3333
FuncRef,
3434
Mutability,
3535
};
36-
use core::num::{NonZeroI32, NonZeroI64, NonZeroU32, NonZeroU64};
3736
use wasmparser::VisitOperator;
3837

3938
/// Used to swap operands of binary [`Instruction`] constructor.
@@ -2037,7 +2036,7 @@ impl<'a> VisitOperator<'a> for FuncTranslator {
20372036
}
20382037

20392038
fn visit_i32_div_s(&mut self) -> Self::Output {
2040-
self.translate_divrem::<i32, NonZeroI32>(
2039+
self.translate_divrem::<i32>(
20412040
Instruction::i32_div_s,
20422041
Instruction::i32_div_s_imm16_rhs,
20432042
Instruction::i32_div_s_imm16_lhs,
@@ -2055,7 +2054,7 @@ impl<'a> VisitOperator<'a> for FuncTranslator {
20552054
}
20562055

20572056
fn visit_i32_div_u(&mut self) -> Self::Output {
2058-
self.translate_divrem::<u32, NonZeroU32>(
2057+
self.translate_divrem::<u32>(
20592058
Instruction::i32_div_u,
20602059
Instruction::i32_div_u_imm16_rhs,
20612060
Instruction::i32_div_u_imm16_lhs,
@@ -2073,7 +2072,7 @@ impl<'a> VisitOperator<'a> for FuncTranslator {
20732072
}
20742073

20752074
fn visit_i32_rem_s(&mut self) -> Self::Output {
2076-
self.translate_divrem::<i32, NonZeroI32>(
2075+
self.translate_divrem::<i32>(
20772076
Instruction::i32_rem_s,
20782077
Instruction::i32_rem_s_imm16_rhs,
20792078
Instruction::i32_rem_s_imm16_lhs,
@@ -2091,7 +2090,7 @@ impl<'a> VisitOperator<'a> for FuncTranslator {
20912090
}
20922091

20932092
fn visit_i32_rem_u(&mut self) -> Self::Output {
2094-
self.translate_divrem::<u32, NonZeroU32>(
2093+
self.translate_divrem::<u32>(
20952094
Instruction::i32_rem_u,
20962095
Instruction::i32_rem_u_imm16_rhs,
20972096
Instruction::i32_rem_u_imm16_lhs,
@@ -2354,7 +2353,7 @@ impl<'a> VisitOperator<'a> for FuncTranslator {
23542353
}
23552354

23562355
fn visit_i64_div_s(&mut self) -> Self::Output {
2357-
self.translate_divrem::<i64, NonZeroI64>(
2356+
self.translate_divrem::<i64>(
23582357
Instruction::i64_div_s,
23592358
Instruction::i64_div_s_imm16_rhs,
23602359
Instruction::i64_div_s_imm16_lhs,
@@ -2372,7 +2371,7 @@ impl<'a> VisitOperator<'a> for FuncTranslator {
23722371
}
23732372

23742373
fn visit_i64_div_u(&mut self) -> Self::Output {
2375-
self.translate_divrem::<u64, NonZeroU64>(
2374+
self.translate_divrem::<u64>(
23762375
Instruction::i64_div_u,
23772376
Instruction::i64_div_u_imm16_rhs,
23782377
Instruction::i64_div_u_imm16_lhs,
@@ -2390,7 +2389,7 @@ impl<'a> VisitOperator<'a> for FuncTranslator {
23902389
}
23912390

23922391
fn visit_i64_rem_s(&mut self) -> Self::Output {
2393-
self.translate_divrem::<i64, NonZeroI64>(
2392+
self.translate_divrem::<i64>(
23942393
Instruction::i64_rem_s,
23952394
Instruction::i64_rem_s_imm16_rhs,
23962395
Instruction::i64_rem_s_imm16_lhs,
@@ -2408,7 +2407,7 @@ impl<'a> VisitOperator<'a> for FuncTranslator {
24082407
}
24092408

24102409
fn visit_i64_rem_u(&mut self) -> Self::Output {
2411-
self.translate_divrem::<u64, NonZeroU64>(
2410+
self.translate_divrem::<u64>(
24122411
Instruction::i64_rem_u,
24132412
Instruction::i64_rem_u_imm16_rhs,
24142413
Instruction::i64_rem_u_imm16_lhs,

0 commit comments

Comments
 (0)