diff options
| author | Henry Gressmann <mail@henrygressmann.de> | 2025-01-06 21:40:21 +0100 |
|---|---|---|
| committer | Henry Gressmann <mail@henrygressmann.de> | 2025-01-06 21:40:29 +0100 |
| commit | 9f1bc8d77b5fa691eb64d851ff39f68a77b5032c (patch) | |
| tree | 707351e5778648139259fdad6f5e68203e918874 /crates/parser/src/conversion.rs | |
| parent | 0202878e1cdf5448fb007cc080c98cce707c889f (diff) | |
feat: replace `RefNull` with new `FuncRef` and `ExternRef` structs
Signed-off-by: Henry Gressmann <mail@henrygressmann.de>
Diffstat (limited to 'crates/parser/src/conversion.rs')
| -rw-r--r-- | crates/parser/src/conversion.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/crates/parser/src/conversion.rs b/crates/parser/src/conversion.rs index 1ebe392..273dd44 100644 --- a/crates/parser/src/conversion.rs +++ b/crates/parser/src/conversion.rs @@ -251,8 +251,12 @@ pub(crate) fn process_const_operators(ops: OperatorsReader<'_>) -> Result<ConstI assert!(matches!(ops[ops.len() - 1], wasmparser::Operator::End)); match &ops[ops.len() - 2] { - wasmparser::Operator::RefNull { hty } => Ok(ConstInstruction::RefNull(convert_heaptype(*hty))), - wasmparser::Operator::RefFunc { function_index } => Ok(ConstInstruction::RefFunc(*function_index)), + wasmparser::Operator::RefNull { hty } => match convert_heaptype(*hty) { + ValType::RefFunc => Ok(ConstInstruction::RefFunc(None)), + ValType::RefExtern => Ok(ConstInstruction::RefExtern(None)), + _ => unimplemented!("Unsupported heap type: {:?}", hty), + }, + wasmparser::Operator::RefFunc { function_index } => Ok(ConstInstruction::RefFunc(Some(*function_index))), wasmparser::Operator::I32Const { value } => Ok(ConstInstruction::I32Const(*value)), wasmparser::Operator::I64Const { value } => Ok(ConstInstruction::I64Const(*value)), wasmparser::Operator::F32Const { value } => Ok(ConstInstruction::F32Const(f32::from_bits(value.bits()))), |
