cranelift-wasm: Make FuncEnvironment::translate_ref_func take a FuncIndex

It was previously taking a raw `u32`. This change makes it more clear what index
space that index points into.
This commit is contained in:
Nick Fitzgerald
2020-06-18 09:39:30 -07:00
parent c6f32f666d
commit ddc2ce8080
4 changed files with 9 additions and 4 deletions

View File

@@ -1045,7 +1045,8 @@ pub fn translate_operator<FE: FuncEnvironment + ?Sized>(
state.push1(environ.translate_ref_is_null(builder.cursor(), value)?);
}
Operator::RefFunc { function_index } => {
state.push1(environ.translate_ref_func(builder.cursor(), *function_index)?);
let index = FuncIndex::from_u32(*function_index);
state.push1(environ.translate_ref_func(builder.cursor(), index)?);
}
Operator::AtomicNotify { .. }
| Operator::I32AtomicWait { .. }

View File

@@ -516,7 +516,7 @@ impl<'dummy_environment> FuncEnvironment for DummyFuncEnvironment<'dummy_environ
fn translate_ref_func(
&mut self,
mut pos: FuncCursor,
_func_index: u32,
_func_index: FuncIndex,
) -> WasmResult<ir::Value> {
Ok(pos.ins().null(self.reference_type()))
}

View File

@@ -456,7 +456,11 @@ pub trait FuncEnvironment: TargetEnvironment {
}
/// Translate a `ref.func` WebAssembly instruction.
fn translate_ref_func(&mut self, pos: FuncCursor, func_index: u32) -> WasmResult<ir::Value>;
fn translate_ref_func(
&mut self,
pos: FuncCursor,
func_index: FuncIndex,
) -> WasmResult<ir::Value>;
/// Translate a `global.get` WebAssembly instruction at `pos` for a global
/// that is custom.

View File

@@ -687,7 +687,7 @@ impl<'module_environment> cranelift_wasm::FuncEnvironment for FuncEnvironment<'m
fn translate_ref_func(
&mut self,
_: cranelift_codegen::cursor::FuncCursor<'_>,
_: u32,
_: FuncIndex,
) -> WasmResult<ir::Value> {
Err(WasmError::Unsupported(
"the `ref.func` instruction is not supported yet".into(),