Enable ref.func global initializers (#1380)
* Fix comment referencing an outdated instruction name * cranelift-wasm: Enable `ref.func` global initializers
This commit is contained in:
@@ -224,6 +224,9 @@ pub fn parse_global_section(
|
||||
GlobalInit::V128Const(V128Imm::from(value.bytes().to_vec().as_slice()))
|
||||
}
|
||||
Operator::RefNull => GlobalInit::RefNullConst,
|
||||
Operator::RefFunc { function_index } => {
|
||||
GlobalInit::RefFunc(FuncIndex::from_u32(function_index))
|
||||
}
|
||||
Operator::GlobalGet { global_index } => {
|
||||
GlobalInit::GetGlobal(GlobalIndex::from_u32(global_index))
|
||||
}
|
||||
|
||||
@@ -81,10 +81,12 @@ pub enum GlobalInit {
|
||||
F64Const(u64),
|
||||
/// A `vconst`.
|
||||
V128Const(V128Imm),
|
||||
/// A `get_global` of another global.
|
||||
/// A `global.get` of another global.
|
||||
GetGlobal(GlobalIndex),
|
||||
/// A `ref.null`.
|
||||
RefNullConst,
|
||||
/// A `ref.func <index>`.
|
||||
RefFunc(FuncIndex),
|
||||
///< The global is imported from, and thus initialized by, a different module.
|
||||
Import,
|
||||
}
|
||||
|
||||
12
cranelift/wasmtests/ref-func-0.wat
Normal file
12
cranelift/wasmtests/ref-func-0.wat
Normal file
@@ -0,0 +1,12 @@
|
||||
(module
|
||||
(func $imported (import "env" "f") (param i32) (result i32))
|
||||
(func $local (result anyref anyref funcref funcref)
|
||||
global.get 0
|
||||
global.get 1
|
||||
global.get 2
|
||||
global.get 3)
|
||||
|
||||
(global (export "anyref-imported") anyref (ref.func $imported))
|
||||
(global (export "anyref-local") anyref (ref.func $local))
|
||||
(global (export "funcref-imported") funcref (ref.func $imported))
|
||||
(global (export "funcref-local") funcref (ref.func $local)))
|
||||
Reference in New Issue
Block a user