// Make sure we are correctly parsing this custom section. var code =`
(module
(func $$dummy)
(func $main (param i32) (result i32)
i32.const 0
local.get 0
i32.eq
;; Only allowed on br_if and if
(@metadata.code.branch_hint "\\00") if
call $$dummy
i32.const 1 return else
call $$dummy
i32.const 0 return
end
i32.const 3 return
)
(export "_main" (func $main))
)`;
let branchHintsModule = new WebAssembly.Module(wasmTextToBinary(code));
assertEq(WebAssembly.Module.customSections(branchHintsModule, "metadata.code.branch_hint").length, 1);
assertEq(wasmParsedBranchHints(branchHintsModule), true);
let instance = new WebAssembly.Instance(branchHintsModule);
assertEq(instance.exports._main(0), 1);
// Testing branch hints parsing on `if` and `br_if`
branchHintsModule = new WebAssembly.Module(wasmTextToBinary(`
(module
(func $main
i32.const 0
(@metadata.code.branch_hint "\\00") if
i32.const 0
(@metadata.code.branch_hint "\\01")
br_if 0
end
)
(export "_main" (func $main))
)`));
assertEq(wasmParsedBranchHints(branchHintsModule), true);
instance = new WebAssembly.Instance(branchHintsModule);
instance.exports._main();
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.