From 15b93038f99fe09974c601fb3653b16e85b5273f Mon Sep 17 00:00:00 2001 From: Sergey Pepyakin Date: Tue, 5 Dec 2017 18:54:23 +0100 Subject: [PATCH] Fix matches --- src/validation/func.rs | 346 ++++++++++++++++++++--------------------- src/validation/mod.rs | 10 +- 2 files changed, 178 insertions(+), 178 deletions(-) diff --git a/src/validation/func.rs b/src/validation/func.rs index e9fb976..2d9f78b 100644 --- a/src/validation/func.rs +++ b/src/validation/func.rs @@ -116,196 +116,196 @@ impl Validator { fn validate_instruction(context: &mut FunctionValidationContext, opcode: &Opcode) -> Result { debug!(target: "validator", "validating {:?}", opcode); - match opcode { - &Opcode::Unreachable => Ok(InstructionOutcome::Unreachable), - &Opcode::Nop => Ok(InstructionOutcome::ValidateNextInstruction), - &Opcode::Block(block_type) => Validator::validate_block(context, block_type), - &Opcode::Loop(block_type) => Validator::validate_loop(context, block_type), - &Opcode::If(block_type) => Validator::validate_if(context, block_type), - &Opcode::Else => Validator::validate_else(context), - &Opcode::End => Validator::validate_end(context), - &Opcode::Br(idx) => Validator::validate_br(context, idx), - &Opcode::BrIf(idx) => Validator::validate_br_if(context, idx), - &Opcode::BrTable(ref table, default) => Validator::validate_br_table(context, table, default), - &Opcode::Return => Validator::validate_return(context), + match *opcode { + Opcode::Unreachable => Ok(InstructionOutcome::Unreachable), + Opcode::Nop => Ok(InstructionOutcome::ValidateNextInstruction), + Opcode::Block(block_type) => Validator::validate_block(context, block_type), + Opcode::Loop(block_type) => Validator::validate_loop(context, block_type), + Opcode::If(block_type) => Validator::validate_if(context, block_type), + Opcode::Else => Validator::validate_else(context), + Opcode::End => Validator::validate_end(context), + Opcode::Br(idx) => Validator::validate_br(context, idx), + Opcode::BrIf(idx) => Validator::validate_br_if(context, idx), + Opcode::BrTable(ref table, default) => Validator::validate_br_table(context, table, default), + Opcode::Return => Validator::validate_return(context), - &Opcode::Call(index) => Validator::validate_call(context, index), - &Opcode::CallIndirect(index, _reserved) => Validator::validate_call_indirect(context, index), + Opcode::Call(index) => Validator::validate_call(context, index), + Opcode::CallIndirect(index, _reserved) => Validator::validate_call_indirect(context, index), - &Opcode::Drop => Validator::validate_drop(context), - &Opcode::Select => Validator::validate_select(context), + Opcode::Drop => Validator::validate_drop(context), + Opcode::Select => Validator::validate_select(context), - &Opcode::GetLocal(index) => Validator::validate_get_local(context, index), - &Opcode::SetLocal(index) => Validator::validate_set_local(context, index), - &Opcode::TeeLocal(index) => Validator::validate_tee_local(context, index), - &Opcode::GetGlobal(index) => Validator::validate_get_global(context, index), - &Opcode::SetGlobal(index) => Validator::validate_set_global(context, index), + Opcode::GetLocal(index) => Validator::validate_get_local(context, index), + Opcode::SetLocal(index) => Validator::validate_set_local(context, index), + Opcode::TeeLocal(index) => Validator::validate_tee_local(context, index), + Opcode::GetGlobal(index) => Validator::validate_get_global(context, index), + Opcode::SetGlobal(index) => Validator::validate_set_global(context, index), - &Opcode::I32Load(align, _) => Validator::validate_load(context, align, 4, ValueType::I32.into()), - &Opcode::I64Load(align, _) => Validator::validate_load(context, align, 8, ValueType::I64.into()), - &Opcode::F32Load(align, _) => Validator::validate_load(context, align, 4, ValueType::F32.into()), - &Opcode::F64Load(align, _) => Validator::validate_load(context, align, 8, ValueType::F64.into()), - &Opcode::I32Load8S(align, _) => Validator::validate_load(context, align, 1, ValueType::I32.into()), - &Opcode::I32Load8U(align, _) => Validator::validate_load(context, align, 1, ValueType::I32.into()), - &Opcode::I32Load16S(align, _) => Validator::validate_load(context, align, 2, ValueType::I32.into()), - &Opcode::I32Load16U(align, _) => Validator::validate_load(context, align, 2, ValueType::I32.into()), - &Opcode::I64Load8S(align, _) => Validator::validate_load(context, align, 1, ValueType::I64.into()), - &Opcode::I64Load8U(align, _) => Validator::validate_load(context, align, 1, ValueType::I64.into()), - &Opcode::I64Load16S(align, _) => Validator::validate_load(context, align, 2, ValueType::I64.into()), - &Opcode::I64Load16U(align, _) => Validator::validate_load(context, align, 2, ValueType::I64.into()), - &Opcode::I64Load32S(align, _) => Validator::validate_load(context, align, 4, ValueType::I64.into()), - &Opcode::I64Load32U(align, _) => Validator::validate_load(context, align, 4, ValueType::I64.into()), + Opcode::I32Load(align, _) => Validator::validate_load(context, align, 4, ValueType::I32.into()), + Opcode::I64Load(align, _) => Validator::validate_load(context, align, 8, ValueType::I64.into()), + Opcode::F32Load(align, _) => Validator::validate_load(context, align, 4, ValueType::F32.into()), + Opcode::F64Load(align, _) => Validator::validate_load(context, align, 8, ValueType::F64.into()), + Opcode::I32Load8S(align, _) => Validator::validate_load(context, align, 1, ValueType::I32.into()), + Opcode::I32Load8U(align, _) => Validator::validate_load(context, align, 1, ValueType::I32.into()), + Opcode::I32Load16S(align, _) => Validator::validate_load(context, align, 2, ValueType::I32.into()), + Opcode::I32Load16U(align, _) => Validator::validate_load(context, align, 2, ValueType::I32.into()), + Opcode::I64Load8S(align, _) => Validator::validate_load(context, align, 1, ValueType::I64.into()), + Opcode::I64Load8U(align, _) => Validator::validate_load(context, align, 1, ValueType::I64.into()), + Opcode::I64Load16S(align, _) => Validator::validate_load(context, align, 2, ValueType::I64.into()), + Opcode::I64Load16U(align, _) => Validator::validate_load(context, align, 2, ValueType::I64.into()), + Opcode::I64Load32S(align, _) => Validator::validate_load(context, align, 4, ValueType::I64.into()), + Opcode::I64Load32U(align, _) => Validator::validate_load(context, align, 4, ValueType::I64.into()), - &Opcode::I32Store(align, _) => Validator::validate_store(context, align, 4, ValueType::I32.into()), - &Opcode::I64Store(align, _) => Validator::validate_store(context, align, 8, ValueType::I64.into()), - &Opcode::F32Store(align, _) => Validator::validate_store(context, align, 4, ValueType::F32.into()), - &Opcode::F64Store(align, _) => Validator::validate_store(context, align, 8, ValueType::F64.into()), - &Opcode::I32Store8(align, _) => Validator::validate_store(context, align, 1, ValueType::I32.into()), - &Opcode::I32Store16(align, _) => Validator::validate_store(context, align, 2, ValueType::I32.into()), - &Opcode::I64Store8(align, _) => Validator::validate_store(context, align, 1, ValueType::I64.into()), - &Opcode::I64Store16(align, _) => Validator::validate_store(context, align, 2, ValueType::I64.into()), - &Opcode::I64Store32(align, _) => Validator::validate_store(context, align, 4, ValueType::I64.into()), + Opcode::I32Store(align, _) => Validator::validate_store(context, align, 4, ValueType::I32.into()), + Opcode::I64Store(align, _) => Validator::validate_store(context, align, 8, ValueType::I64.into()), + Opcode::F32Store(align, _) => Validator::validate_store(context, align, 4, ValueType::F32.into()), + Opcode::F64Store(align, _) => Validator::validate_store(context, align, 8, ValueType::F64.into()), + Opcode::I32Store8(align, _) => Validator::validate_store(context, align, 1, ValueType::I32.into()), + Opcode::I32Store16(align, _) => Validator::validate_store(context, align, 2, ValueType::I32.into()), + Opcode::I64Store8(align, _) => Validator::validate_store(context, align, 1, ValueType::I64.into()), + Opcode::I64Store16(align, _) => Validator::validate_store(context, align, 2, ValueType::I64.into()), + Opcode::I64Store32(align, _) => Validator::validate_store(context, align, 4, ValueType::I64.into()), - &Opcode::CurrentMemory(_) => Validator::validate_current_memory(context), - &Opcode::GrowMemory(_) => Validator::validate_grow_memory(context), + Opcode::CurrentMemory(_) => Validator::validate_current_memory(context), + Opcode::GrowMemory(_) => Validator::validate_grow_memory(context), - &Opcode::I32Const(_) => Validator::validate_const(context, ValueType::I32.into()), - &Opcode::I64Const(_) => Validator::validate_const(context, ValueType::I64.into()), - &Opcode::F32Const(_) => Validator::validate_const(context, ValueType::F32.into()), - &Opcode::F64Const(_) => Validator::validate_const(context, ValueType::F64.into()), + Opcode::I32Const(_) => Validator::validate_const(context, ValueType::I32.into()), + Opcode::I64Const(_) => Validator::validate_const(context, ValueType::I64.into()), + Opcode::F32Const(_) => Validator::validate_const(context, ValueType::F32.into()), + Opcode::F64Const(_) => Validator::validate_const(context, ValueType::F64.into()), - &Opcode::I32Eqz => Validator::validate_testop(context, ValueType::I32.into()), - &Opcode::I32Eq => Validator::validate_relop(context, ValueType::I32.into()), - &Opcode::I32Ne => Validator::validate_relop(context, ValueType::I32.into()), - &Opcode::I32LtS => Validator::validate_relop(context, ValueType::I32.into()), - &Opcode::I32LtU => Validator::validate_relop(context, ValueType::I32.into()), - &Opcode::I32GtS => Validator::validate_relop(context, ValueType::I32.into()), - &Opcode::I32GtU => Validator::validate_relop(context, ValueType::I32.into()), - &Opcode::I32LeS => Validator::validate_relop(context, ValueType::I32.into()), - &Opcode::I32LeU => Validator::validate_relop(context, ValueType::I32.into()), - &Opcode::I32GeS => Validator::validate_relop(context, ValueType::I32.into()), - &Opcode::I32GeU => Validator::validate_relop(context, ValueType::I32.into()), + Opcode::I32Eqz => Validator::validate_testop(context, ValueType::I32.into()), + Opcode::I32Eq => Validator::validate_relop(context, ValueType::I32.into()), + Opcode::I32Ne => Validator::validate_relop(context, ValueType::I32.into()), + Opcode::I32LtS => Validator::validate_relop(context, ValueType::I32.into()), + Opcode::I32LtU => Validator::validate_relop(context, ValueType::I32.into()), + Opcode::I32GtS => Validator::validate_relop(context, ValueType::I32.into()), + Opcode::I32GtU => Validator::validate_relop(context, ValueType::I32.into()), + Opcode::I32LeS => Validator::validate_relop(context, ValueType::I32.into()), + Opcode::I32LeU => Validator::validate_relop(context, ValueType::I32.into()), + Opcode::I32GeS => Validator::validate_relop(context, ValueType::I32.into()), + Opcode::I32GeU => Validator::validate_relop(context, ValueType::I32.into()), - &Opcode::I64Eqz => Validator::validate_testop(context, ValueType::I64.into()), - &Opcode::I64Eq => Validator::validate_relop(context, ValueType::I64.into()), - &Opcode::I64Ne => Validator::validate_relop(context, ValueType::I64.into()), - &Opcode::I64LtS => Validator::validate_relop(context, ValueType::I64.into()), - &Opcode::I64LtU => Validator::validate_relop(context, ValueType::I64.into()), - &Opcode::I64GtS => Validator::validate_relop(context, ValueType::I64.into()), - &Opcode::I64GtU => Validator::validate_relop(context, ValueType::I64.into()), - &Opcode::I64LeS => Validator::validate_relop(context, ValueType::I64.into()), - &Opcode::I64LeU => Validator::validate_relop(context, ValueType::I64.into()), - &Opcode::I64GeS => Validator::validate_relop(context, ValueType::I64.into()), - &Opcode::I64GeU => Validator::validate_relop(context, ValueType::I64.into()), + Opcode::I64Eqz => Validator::validate_testop(context, ValueType::I64.into()), + Opcode::I64Eq => Validator::validate_relop(context, ValueType::I64.into()), + Opcode::I64Ne => Validator::validate_relop(context, ValueType::I64.into()), + Opcode::I64LtS => Validator::validate_relop(context, ValueType::I64.into()), + Opcode::I64LtU => Validator::validate_relop(context, ValueType::I64.into()), + Opcode::I64GtS => Validator::validate_relop(context, ValueType::I64.into()), + Opcode::I64GtU => Validator::validate_relop(context, ValueType::I64.into()), + Opcode::I64LeS => Validator::validate_relop(context, ValueType::I64.into()), + Opcode::I64LeU => Validator::validate_relop(context, ValueType::I64.into()), + Opcode::I64GeS => Validator::validate_relop(context, ValueType::I64.into()), + Opcode::I64GeU => Validator::validate_relop(context, ValueType::I64.into()), - &Opcode::F32Eq => Validator::validate_relop(context, ValueType::F32.into()), - &Opcode::F32Ne => Validator::validate_relop(context, ValueType::F32.into()), - &Opcode::F32Lt => Validator::validate_relop(context, ValueType::F32.into()), - &Opcode::F32Gt => Validator::validate_relop(context, ValueType::F32.into()), - &Opcode::F32Le => Validator::validate_relop(context, ValueType::F32.into()), - &Opcode::F32Ge => Validator::validate_relop(context, ValueType::F32.into()), + Opcode::F32Eq => Validator::validate_relop(context, ValueType::F32.into()), + Opcode::F32Ne => Validator::validate_relop(context, ValueType::F32.into()), + Opcode::F32Lt => Validator::validate_relop(context, ValueType::F32.into()), + Opcode::F32Gt => Validator::validate_relop(context, ValueType::F32.into()), + Opcode::F32Le => Validator::validate_relop(context, ValueType::F32.into()), + Opcode::F32Ge => Validator::validate_relop(context, ValueType::F32.into()), - &Opcode::F64Eq => Validator::validate_relop(context, ValueType::F64.into()), - &Opcode::F64Ne => Validator::validate_relop(context, ValueType::F64.into()), - &Opcode::F64Lt => Validator::validate_relop(context, ValueType::F64.into()), - &Opcode::F64Gt => Validator::validate_relop(context, ValueType::F64.into()), - &Opcode::F64Le => Validator::validate_relop(context, ValueType::F64.into()), - &Opcode::F64Ge => Validator::validate_relop(context, ValueType::F64.into()), + Opcode::F64Eq => Validator::validate_relop(context, ValueType::F64.into()), + Opcode::F64Ne => Validator::validate_relop(context, ValueType::F64.into()), + Opcode::F64Lt => Validator::validate_relop(context, ValueType::F64.into()), + Opcode::F64Gt => Validator::validate_relop(context, ValueType::F64.into()), + Opcode::F64Le => Validator::validate_relop(context, ValueType::F64.into()), + Opcode::F64Ge => Validator::validate_relop(context, ValueType::F64.into()), - &Opcode::I32Clz => Validator::validate_unop(context, ValueType::I32.into()), - &Opcode::I32Ctz => Validator::validate_unop(context, ValueType::I32.into()), - &Opcode::I32Popcnt => Validator::validate_unop(context, ValueType::I32.into()), - &Opcode::I32Add => Validator::validate_binop(context, ValueType::I32.into()), - &Opcode::I32Sub => Validator::validate_binop(context, ValueType::I32.into()), - &Opcode::I32Mul => Validator::validate_binop(context, ValueType::I32.into()), - &Opcode::I32DivS => Validator::validate_binop(context, ValueType::I32.into()), - &Opcode::I32DivU => Validator::validate_binop(context, ValueType::I32.into()), - &Opcode::I32RemS => Validator::validate_binop(context, ValueType::I32.into()), - &Opcode::I32RemU => Validator::validate_binop(context, ValueType::I32.into()), - &Opcode::I32And => Validator::validate_binop(context, ValueType::I32.into()), - &Opcode::I32Or => Validator::validate_binop(context, ValueType::I32.into()), - &Opcode::I32Xor => Validator::validate_binop(context, ValueType::I32.into()), - &Opcode::I32Shl => Validator::validate_binop(context, ValueType::I32.into()), - &Opcode::I32ShrS => Validator::validate_binop(context, ValueType::I32.into()), - &Opcode::I32ShrU => Validator::validate_binop(context, ValueType::I32.into()), - &Opcode::I32Rotl => Validator::validate_binop(context, ValueType::I32.into()), - &Opcode::I32Rotr => Validator::validate_binop(context, ValueType::I32.into()), + Opcode::I32Clz => Validator::validate_unop(context, ValueType::I32.into()), + Opcode::I32Ctz => Validator::validate_unop(context, ValueType::I32.into()), + Opcode::I32Popcnt => Validator::validate_unop(context, ValueType::I32.into()), + Opcode::I32Add => Validator::validate_binop(context, ValueType::I32.into()), + Opcode::I32Sub => Validator::validate_binop(context, ValueType::I32.into()), + Opcode::I32Mul => Validator::validate_binop(context, ValueType::I32.into()), + Opcode::I32DivS => Validator::validate_binop(context, ValueType::I32.into()), + Opcode::I32DivU => Validator::validate_binop(context, ValueType::I32.into()), + Opcode::I32RemS => Validator::validate_binop(context, ValueType::I32.into()), + Opcode::I32RemU => Validator::validate_binop(context, ValueType::I32.into()), + Opcode::I32And => Validator::validate_binop(context, ValueType::I32.into()), + Opcode::I32Or => Validator::validate_binop(context, ValueType::I32.into()), + Opcode::I32Xor => Validator::validate_binop(context, ValueType::I32.into()), + Opcode::I32Shl => Validator::validate_binop(context, ValueType::I32.into()), + Opcode::I32ShrS => Validator::validate_binop(context, ValueType::I32.into()), + Opcode::I32ShrU => Validator::validate_binop(context, ValueType::I32.into()), + Opcode::I32Rotl => Validator::validate_binop(context, ValueType::I32.into()), + Opcode::I32Rotr => Validator::validate_binop(context, ValueType::I32.into()), - &Opcode::I64Clz => Validator::validate_unop(context, ValueType::I64.into()), - &Opcode::I64Ctz => Validator::validate_unop(context, ValueType::I64.into()), - &Opcode::I64Popcnt => Validator::validate_unop(context, ValueType::I64.into()), - &Opcode::I64Add => Validator::validate_binop(context, ValueType::I64.into()), - &Opcode::I64Sub => Validator::validate_binop(context, ValueType::I64.into()), - &Opcode::I64Mul => Validator::validate_binop(context, ValueType::I64.into()), - &Opcode::I64DivS => Validator::validate_binop(context, ValueType::I64.into()), - &Opcode::I64DivU => Validator::validate_binop(context, ValueType::I64.into()), - &Opcode::I64RemS => Validator::validate_binop(context, ValueType::I64.into()), - &Opcode::I64RemU => Validator::validate_binop(context, ValueType::I64.into()), - &Opcode::I64And => Validator::validate_binop(context, ValueType::I64.into()), - &Opcode::I64Or => Validator::validate_binop(context, ValueType::I64.into()), - &Opcode::I64Xor => Validator::validate_binop(context, ValueType::I64.into()), - &Opcode::I64Shl => Validator::validate_binop(context, ValueType::I64.into()), - &Opcode::I64ShrS => Validator::validate_binop(context, ValueType::I64.into()), - &Opcode::I64ShrU => Validator::validate_binop(context, ValueType::I64.into()), - &Opcode::I64Rotl => Validator::validate_binop(context, ValueType::I64.into()), - &Opcode::I64Rotr => Validator::validate_binop(context, ValueType::I64.into()), + Opcode::I64Clz => Validator::validate_unop(context, ValueType::I64.into()), + Opcode::I64Ctz => Validator::validate_unop(context, ValueType::I64.into()), + Opcode::I64Popcnt => Validator::validate_unop(context, ValueType::I64.into()), + Opcode::I64Add => Validator::validate_binop(context, ValueType::I64.into()), + Opcode::I64Sub => Validator::validate_binop(context, ValueType::I64.into()), + Opcode::I64Mul => Validator::validate_binop(context, ValueType::I64.into()), + Opcode::I64DivS => Validator::validate_binop(context, ValueType::I64.into()), + Opcode::I64DivU => Validator::validate_binop(context, ValueType::I64.into()), + Opcode::I64RemS => Validator::validate_binop(context, ValueType::I64.into()), + Opcode::I64RemU => Validator::validate_binop(context, ValueType::I64.into()), + Opcode::I64And => Validator::validate_binop(context, ValueType::I64.into()), + Opcode::I64Or => Validator::validate_binop(context, ValueType::I64.into()), + Opcode::I64Xor => Validator::validate_binop(context, ValueType::I64.into()), + Opcode::I64Shl => Validator::validate_binop(context, ValueType::I64.into()), + Opcode::I64ShrS => Validator::validate_binop(context, ValueType::I64.into()), + Opcode::I64ShrU => Validator::validate_binop(context, ValueType::I64.into()), + Opcode::I64Rotl => Validator::validate_binop(context, ValueType::I64.into()), + Opcode::I64Rotr => Validator::validate_binop(context, ValueType::I64.into()), - &Opcode::F32Abs => Validator::validate_unop(context, ValueType::F32.into()), - &Opcode::F32Neg => Validator::validate_unop(context, ValueType::F32.into()), - &Opcode::F32Ceil => Validator::validate_unop(context, ValueType::F32.into()), - &Opcode::F32Floor => Validator::validate_unop(context, ValueType::F32.into()), - &Opcode::F32Trunc => Validator::validate_unop(context, ValueType::F32.into()), - &Opcode::F32Nearest => Validator::validate_unop(context, ValueType::F32.into()), - &Opcode::F32Sqrt => Validator::validate_unop(context, ValueType::F32.into()), - &Opcode::F32Add => Validator::validate_binop(context, ValueType::F32.into()), - &Opcode::F32Sub => Validator::validate_binop(context, ValueType::F32.into()), - &Opcode::F32Mul => Validator::validate_binop(context, ValueType::F32.into()), - &Opcode::F32Div => Validator::validate_binop(context, ValueType::F32.into()), - &Opcode::F32Min => Validator::validate_binop(context, ValueType::F32.into()), - &Opcode::F32Max => Validator::validate_binop(context, ValueType::F32.into()), - &Opcode::F32Copysign => Validator::validate_binop(context, ValueType::F32.into()), + Opcode::F32Abs => Validator::validate_unop(context, ValueType::F32.into()), + Opcode::F32Neg => Validator::validate_unop(context, ValueType::F32.into()), + Opcode::F32Ceil => Validator::validate_unop(context, ValueType::F32.into()), + Opcode::F32Floor => Validator::validate_unop(context, ValueType::F32.into()), + Opcode::F32Trunc => Validator::validate_unop(context, ValueType::F32.into()), + Opcode::F32Nearest => Validator::validate_unop(context, ValueType::F32.into()), + Opcode::F32Sqrt => Validator::validate_unop(context, ValueType::F32.into()), + Opcode::F32Add => Validator::validate_binop(context, ValueType::F32.into()), + Opcode::F32Sub => Validator::validate_binop(context, ValueType::F32.into()), + Opcode::F32Mul => Validator::validate_binop(context, ValueType::F32.into()), + Opcode::F32Div => Validator::validate_binop(context, ValueType::F32.into()), + Opcode::F32Min => Validator::validate_binop(context, ValueType::F32.into()), + Opcode::F32Max => Validator::validate_binop(context, ValueType::F32.into()), + Opcode::F32Copysign => Validator::validate_binop(context, ValueType::F32.into()), - &Opcode::F64Abs => Validator::validate_unop(context, ValueType::F64.into()), - &Opcode::F64Neg => Validator::validate_unop(context, ValueType::F64.into()), - &Opcode::F64Ceil => Validator::validate_unop(context, ValueType::F64.into()), - &Opcode::F64Floor => Validator::validate_unop(context, ValueType::F64.into()), - &Opcode::F64Trunc => Validator::validate_unop(context, ValueType::F64.into()), - &Opcode::F64Nearest => Validator::validate_unop(context, ValueType::F64.into()), - &Opcode::F64Sqrt => Validator::validate_unop(context, ValueType::F64.into()), - &Opcode::F64Add => Validator::validate_binop(context, ValueType::F64.into()), - &Opcode::F64Sub => Validator::validate_binop(context, ValueType::F64.into()), - &Opcode::F64Mul => Validator::validate_binop(context, ValueType::F64.into()), - &Opcode::F64Div => Validator::validate_binop(context, ValueType::F64.into()), - &Opcode::F64Min => Validator::validate_binop(context, ValueType::F64.into()), - &Opcode::F64Max => Validator::validate_binop(context, ValueType::F64.into()), - &Opcode::F64Copysign => Validator::validate_binop(context, ValueType::F64.into()), + Opcode::F64Abs => Validator::validate_unop(context, ValueType::F64.into()), + Opcode::F64Neg => Validator::validate_unop(context, ValueType::F64.into()), + Opcode::F64Ceil => Validator::validate_unop(context, ValueType::F64.into()), + Opcode::F64Floor => Validator::validate_unop(context, ValueType::F64.into()), + Opcode::F64Trunc => Validator::validate_unop(context, ValueType::F64.into()), + Opcode::F64Nearest => Validator::validate_unop(context, ValueType::F64.into()), + Opcode::F64Sqrt => Validator::validate_unop(context, ValueType::F64.into()), + Opcode::F64Add => Validator::validate_binop(context, ValueType::F64.into()), + Opcode::F64Sub => Validator::validate_binop(context, ValueType::F64.into()), + Opcode::F64Mul => Validator::validate_binop(context, ValueType::F64.into()), + Opcode::F64Div => Validator::validate_binop(context, ValueType::F64.into()), + Opcode::F64Min => Validator::validate_binop(context, ValueType::F64.into()), + Opcode::F64Max => Validator::validate_binop(context, ValueType::F64.into()), + Opcode::F64Copysign => Validator::validate_binop(context, ValueType::F64.into()), - &Opcode::I32WarpI64 => Validator::validate_cvtop(context, ValueType::I64.into(), ValueType::I32.into()), - &Opcode::I32TruncSF32 => Validator::validate_cvtop(context, ValueType::F32.into(), ValueType::I32.into()), - &Opcode::I32TruncUF32 => Validator::validate_cvtop(context, ValueType::F32.into(), ValueType::I32.into()), - &Opcode::I32TruncSF64 => Validator::validate_cvtop(context, ValueType::F64.into(), ValueType::I32.into()), - &Opcode::I32TruncUF64 => Validator::validate_cvtop(context, ValueType::F64.into(), ValueType::I32.into()), - &Opcode::I64ExtendSI32 => Validator::validate_cvtop(context, ValueType::I32.into(), ValueType::I64.into()), - &Opcode::I64ExtendUI32 => Validator::validate_cvtop(context, ValueType::I32.into(), ValueType::I64.into()), - &Opcode::I64TruncSF32 => Validator::validate_cvtop(context, ValueType::F32.into(), ValueType::I64.into()), - &Opcode::I64TruncUF32 => Validator::validate_cvtop(context, ValueType::F32.into(), ValueType::I64.into()), - &Opcode::I64TruncSF64 => Validator::validate_cvtop(context, ValueType::F64.into(), ValueType::I64.into()), - &Opcode::I64TruncUF64 => Validator::validate_cvtop(context, ValueType::F64.into(), ValueType::I64.into()), - &Opcode::F32ConvertSI32 => Validator::validate_cvtop(context, ValueType::I32.into(), ValueType::F32.into()), - &Opcode::F32ConvertUI32 => Validator::validate_cvtop(context, ValueType::I32.into(), ValueType::F32.into()), - &Opcode::F32ConvertSI64 => Validator::validate_cvtop(context, ValueType::I64.into(), ValueType::F32.into()), - &Opcode::F32ConvertUI64 => Validator::validate_cvtop(context, ValueType::I64.into(), ValueType::F32.into()), - &Opcode::F32DemoteF64 => Validator::validate_cvtop(context, ValueType::F64.into(), ValueType::F32.into()), - &Opcode::F64ConvertSI32 => Validator::validate_cvtop(context, ValueType::I32.into(), ValueType::F64.into()), - &Opcode::F64ConvertUI32 => Validator::validate_cvtop(context, ValueType::I32.into(), ValueType::F64.into()), - &Opcode::F64ConvertSI64 => Validator::validate_cvtop(context, ValueType::I64.into(), ValueType::F64.into()), - &Opcode::F64ConvertUI64 => Validator::validate_cvtop(context, ValueType::I64.into(), ValueType::F64.into()), - &Opcode::F64PromoteF32 => Validator::validate_cvtop(context, ValueType::F32.into(), ValueType::F64.into()), + Opcode::I32WarpI64 => Validator::validate_cvtop(context, ValueType::I64.into(), ValueType::I32.into()), + Opcode::I32TruncSF32 => Validator::validate_cvtop(context, ValueType::F32.into(), ValueType::I32.into()), + Opcode::I32TruncUF32 => Validator::validate_cvtop(context, ValueType::F32.into(), ValueType::I32.into()), + Opcode::I32TruncSF64 => Validator::validate_cvtop(context, ValueType::F64.into(), ValueType::I32.into()), + Opcode::I32TruncUF64 => Validator::validate_cvtop(context, ValueType::F64.into(), ValueType::I32.into()), + Opcode::I64ExtendSI32 => Validator::validate_cvtop(context, ValueType::I32.into(), ValueType::I64.into()), + Opcode::I64ExtendUI32 => Validator::validate_cvtop(context, ValueType::I32.into(), ValueType::I64.into()), + Opcode::I64TruncSF32 => Validator::validate_cvtop(context, ValueType::F32.into(), ValueType::I64.into()), + Opcode::I64TruncUF32 => Validator::validate_cvtop(context, ValueType::F32.into(), ValueType::I64.into()), + Opcode::I64TruncSF64 => Validator::validate_cvtop(context, ValueType::F64.into(), ValueType::I64.into()), + Opcode::I64TruncUF64 => Validator::validate_cvtop(context, ValueType::F64.into(), ValueType::I64.into()), + Opcode::F32ConvertSI32 => Validator::validate_cvtop(context, ValueType::I32.into(), ValueType::F32.into()), + Opcode::F32ConvertUI32 => Validator::validate_cvtop(context, ValueType::I32.into(), ValueType::F32.into()), + Opcode::F32ConvertSI64 => Validator::validate_cvtop(context, ValueType::I64.into(), ValueType::F32.into()), + Opcode::F32ConvertUI64 => Validator::validate_cvtop(context, ValueType::I64.into(), ValueType::F32.into()), + Opcode::F32DemoteF64 => Validator::validate_cvtop(context, ValueType::F64.into(), ValueType::F32.into()), + Opcode::F64ConvertSI32 => Validator::validate_cvtop(context, ValueType::I32.into(), ValueType::F64.into()), + Opcode::F64ConvertUI32 => Validator::validate_cvtop(context, ValueType::I32.into(), ValueType::F64.into()), + Opcode::F64ConvertSI64 => Validator::validate_cvtop(context, ValueType::I64.into(), ValueType::F64.into()), + Opcode::F64ConvertUI64 => Validator::validate_cvtop(context, ValueType::I64.into(), ValueType::F64.into()), + Opcode::F64PromoteF32 => Validator::validate_cvtop(context, ValueType::F32.into(), ValueType::F64.into()), - &Opcode::I32ReinterpretF32 => Validator::validate_cvtop(context, ValueType::F32.into(), ValueType::I32.into()), - &Opcode::I64ReinterpretF64 => Validator::validate_cvtop(context, ValueType::F64.into(), ValueType::I64.into()), - &Opcode::F32ReinterpretI32 => Validator::validate_cvtop(context, ValueType::I32.into(), ValueType::F32.into()), - &Opcode::F64ReinterpretI64 => Validator::validate_cvtop(context, ValueType::I64.into(), ValueType::F64.into()), + Opcode::I32ReinterpretF32 => Validator::validate_cvtop(context, ValueType::F32.into(), ValueType::I32.into()), + Opcode::I64ReinterpretF64 => Validator::validate_cvtop(context, ValueType::F64.into(), ValueType::I64.into()), + Opcode::F32ReinterpretI32 => Validator::validate_cvtop(context, ValueType::I32.into(), ValueType::F32.into()), + Opcode::F64ReinterpretI64 => Validator::validate_cvtop(context, ValueType::I64.into(), ValueType::F64.into()), } } diff --git a/src/validation/mod.rs b/src/validation/mod.rs index bfcc325..7597586 100644 --- a/src/validation/mod.rs +++ b/src/validation/mod.rs @@ -193,11 +193,11 @@ fn prepare_context(module: &Module) -> Result { .map(|i| i.entries()) .unwrap_or_default() { - match import_entry.external() { - &External::Function(idx) => func_type_indexes.push(idx), - &External::Table(ref table) => tables.push(table.clone()), - &External::Memory(ref memory) => memories.push(memory.clone()), - &External::Global(ref global) => globals.push(global.clone()), + match *import_entry.external() { + External::Function(idx) => func_type_indexes.push(idx), + External::Table(ref table) => tables.push(table.clone()), + External::Memory(ref memory) => memories.push(memory.clone()), + External::Global(ref global) => globals.push(global.clone()), } }