Closed Bug 1574865 Opened 5 years ago Closed 4 years ago

Cranelift: support reference types

Categories

(Core :: JavaScript: WebAssembly, enhancement, P3)

enhancement

Tracking

()

RESOLVED FIXED
mozilla74
Tracking Status
firefox74 --- fixed

People

(Reporter: bbouvier, Assigned: rhunt)

References

Details

Attachments

(6 files)

Support for references types has landed in Cranelift. It's mostly untested and does nothing in Baldrdash yet; we should support it at some point.

Priority: -- → P3

I'm working on this now, and have some WIP patches that pass the test-suite.

Assignee: nobody → rhunt

Turns out I had switched all jit-tests to only use cranelift except for the ones in the gc/ directory. So there were actually quite a few test failures to get through. I've got a good handle on them now and I think the only thing remaining is stackmap support and gc write barriers.

I have tests passing and the commits ready for review. These commits will be blocked on work landing upstream in wasmparser [1] and cranelift [2].

[1] https://github.com/bytecodealliance/wasmparser/pull/168
[2] https://github.com/bytecodealliance/cranelift/pull/1317

This commit updates the encoding of nullref to match the one given in
the reference types proposal.

Spec: https://github.com/WebAssembly/reference-types/pull/66

This commit changes the wasm compiler feature detection bits to report that
cranelift supports reference types.

Depends on D58882

This commit translates the basic parts of reference types that does not
require any barriers. AnyRef,FuncRef,NullRef are translated to R32/R64. The
existing bulk-memory instructions are extended to operate on multiple tables,
and the new reference type instructions are implemented with instance calls.

Depends on D58883

cranelift-wasm cannot express arbitrary control flow inside of
'global.get/set' easily. This makes it difficult to implement the pre/post write
barriers inline like the baseline compiler does.

[1] has a discussion about the ideal solution to problem, which involves a new IR
concept called templates. We will want to use that when it is ready.

In the short-term, this commit implements pre/post write barriers using slow OOL
functions and implements Wasm globals.

[1] https://github.com/bytecodealliance/cranelift/issues/1176

Depends on D58884

This commit adds support for receiving stackmaps from Cranelift
and converting to wasm::Stackmaps. [1] will change the stackmap
representation in Cranelift to be the same as in Spidermonkey.

The stack overflow/interrupt trap handler stackmap is implemented by
sharing code with Ion.

[1] https://github.com/bytecodealliance/cranelift/pull/1317

Depends on D58885

Cranelift fails this assertion and it's not clear to me that there is any restriction inside
Cranelift that would limit the set of registers we'd need to check here.

Depends on D58886

Pushed by rhunt@eqrion.net:
https://hg.mozilla.org/integration/autoland/rev/48c545152a47
Wasm: Update encoding of nullref to match proposal. r=lth
https://hg.mozilla.org/integration/autoland/rev/bdf099acc592
Wasm: Change compiler selection to allow Cranelift when reference types is enabled. r=jseward
https://hg.mozilla.org/integration/autoland/rev/247e358f4fc7
Baldr: Translate reference types and implement table/ref instruction translation. r=jseward
https://hg.mozilla.org/integration/autoland/rev/242e859e580f
Baldr: Translate reference type globals using slow OOL barriers. r=jseward
https://hg.mozilla.org/integration/autoland/rev/f89941b23fce
Baldr: Add support for Cranelift stackmaps. r=jseward
https://hg.mozilla.org/integration/autoland/rev/05de7598585a
Wasm: Allow stackmaps that are indexed at an x86 indirect call instruction with any register. r=jseward

Backed out for bustage on WasmCraneliftCompile.cpp

backout: https://hg.mozilla.org/integration/autoland/rev/578b23afed741a5762a4249947bc122ec4e5f378

push: https://treeherder.mozilla.org/#/jobs?repo=autoland&group_state=expanded&revision=05de7598585a4d9fb13a910858d88d504046d756&searchStr=build&selectedJob=286390756

failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=286390756&repo=autoland&lineNumber=5014

[task 2020-01-24T17:42:09.251Z] /builds/worker/fetches/gcc/bin/g++ -std=gnu++17 -o testJitGVN.o -c -I/builds/worker/workspace/build/src/obj-spider/dist/system_wrappers -include /builds/worker/workspace/build/src/config/gcc_hidden.h -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -DDEBUG=1 -DMOZ_HAS_MOZGLUE -DEXPORT_JS_API -Dtopsrcdir=/builds/worker/workspace/build/src/js/src -I/builds/worker/workspace/build/src/js/src/jsapi-tests -I/builds/worker/workspace/build/src/obj-spider/js/src/jsapi-tests -I/builds/worker/workspace/build/src/obj-spider/js/src -I/builds/worker/workspace/build/src/js/src -I/builds/worker/workspace/build/src/obj-spider/dist/include -I/builds/worker/workspace/build/src/obj-spider/dist/include/nspr -fPIC -DMOZILLA_CLIENT -include /builds/worker/workspace/build/src/obj-spider/js/src/js-confdefs.h -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wwrite-strings -Wno-invalid-offsetof -Wduplicated-cond -Wimplicit-fallthrough -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=coverage-mismatch -Wno-error=free-nonheap-object -Wformat -Wformat-overflow=2 -Wno-noexcept-type -D_GLIBCXX_USE_CXX11_ABI=0 -fno-sized-deallocation -fno-aligned-new -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe -g -freorder-blocks -O3 -fno-omit-frame-pointer -funwind-tables -Werror -fno-strict-aliasing -Werror=format -Wno-shadow -Wno-attributes -MD -MP -MF .deps/testJitGVN.o.pp /builds/worker/workspace/build/src/js/src/jsapi-tests/testJitGVN.cpp
[task 2020-01-24T17:42:09.251Z] js/src/jsapi-tests/testJitMacroAssembler.o
[task 2020-01-24T17:42:11.279Z] /builds/worker/workspace/build/src/js/src/wasm/WasmCraneliftCompile.cpp: In function 'bool GenerateCraneliftCode(js::jit::WasmMacroAssembler&, const CraneliftCompiledFunc&, const js::wasm::FuncTypeWithId&, uint32_t, uint32_t, js::wasm::StackMaps*, size_t, size_t, js::wasm::FuncOffsets*)':
[task 2020-01-24T17:42:11.279Z] /builds/worker/workspace/build/src/js/src/wasm/WasmCraneliftCompile.cpp:131:5: error: 'GenerateTrapExitMachineState' was not declared in this scope
[task 2020-01-24T17:42:11.279Z] GenerateTrapExitMachineState(&trapExitLayout, &trapExitLayoutNumWords);
[task 2020-01-24T17:42:11.279Z] ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
[task 2020-01-24T17:42:11.732Z] /builds/worker/fetches/gcc/bin/g++ -std=gnu++17 -o testJitMacroAssembler.o -c -I/builds/worker/workspace/build/src/obj-spider/dist/system_wrappers -include /builds/worker/workspace/build/src/config/gcc_hidden.h -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -DDEBUG=1 -DMOZ_HAS_MOZGLUE -DEXPORT_JS_API -Dtopsrcdir=/builds/worker/workspace/build/src/js/src -I/builds/worker/workspace/build/src/js/src/jsapi-tests -I/builds/worker/workspace/build/src/obj-spider/js/src/jsapi-tests -I/builds/worker/workspace/build/src/obj-spider/js/src -I/builds/worker/workspace/build/src/js/src -I/builds/worker/workspace/build/src/obj-spider/dist/include -I/builds/worker/workspace/build/src/obj-spider/dist/include/nspr -fPIC -DMOZILLA_CLIENT -include /builds/worker/workspace/build/src/obj-spider/js/src/js-confdefs.h -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wwrite-strings -Wno-invalid-offsetof -Wduplicated-cond -Wimplicit-fallthrough -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=coverage-mismatch -Wno-error=free-nonheap-object -Wformat -Wformat-overflow=2 -Wno-noexcept-type -D_GLIBCXX_USE_CXX11_ABI=0 -fno-sized-deallocation -fno-aligned-new -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe -g -freorder-blocks -O3 -fno-omit-frame-pointer -funwind-tables -Werror -fno-strict-aliasing -Werror=format -Wno-shadow -Wno-attributes -MD -MP -MF .deps/testJitMacroAssembler.o.pp /builds/worker/workspace/build/src/js/src/jsapi-tests/testJitMacroAssembler.cpp
[task 2020-01-24T17:42:11.732Z] js/src/jsapi-tests/testJitMoveEmitterCycles-mips32.o

Flags: needinfo?(rhunt)

Ah, unified builds. Will post a fix.

Flags: needinfo?(rhunt)
Pushed by rhunt@eqrion.net:
https://hg.mozilla.org/integration/autoland/rev/f76fa61db00e
Wasm: Update encoding of nullref to match proposal. r=lth
https://hg.mozilla.org/integration/autoland/rev/c23741f62a09
Wasm: Change compiler selection to allow Cranelift when reference types is enabled. r=jseward
https://hg.mozilla.org/integration/autoland/rev/e800ad37740b
Baldr: Translate reference types and implement table/ref instruction translation. r=jseward
https://hg.mozilla.org/integration/autoland/rev/6524f814a556
Baldr: Translate reference type globals using slow OOL barriers. r=jseward
https://hg.mozilla.org/integration/autoland/rev/fd4311521f6b
Baldr: Add support for Cranelift stackmaps. r=jseward
https://hg.mozilla.org/integration/autoland/rev/5683b58e5a5c
Wasm: Allow stackmaps that are indexed at an x86 indirect call instruction with any register. r=jseward
Backout by opoprus@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/90a631ef67b5
Backed out 6 changesets for build bustages on a CLOSED TREE

Backed out 6 changesets (bug 1574865) for build bustages

Push that started the failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=superseded%2Ctestfailed%2Cbusted%2Cexception%2Crunnable&revision=5683b58e5a5c2782645bacc08f3dadb043809e7e&selectedJob=286428253

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=286428220&repo=autoland&lineNumber=7192

Backout: https://hg.mozilla.org/integration/autoland/rev/90a631ef67b5f2c13b8c63c63ea7d789445b6531

[task 2020-01-24T23:17:11.130Z] 23:17:11 ERROR - error[E0407]: method translate_table_grow is not a member of trait FuncEnvironment
[task 2020-01-24T23:17:11.130Z] 23:17:11 INFO - --> js/src/wasm/cranelift/src/wasm2clif.rs:1065:5
[task 2020-01-24T23:17:11.131Z] 23:17:11 INFO - |
[task 2020-01-24T23:17:11.131Z] 23:17:11 INFO - 1065 | / fn translate_table_grow(
[task 2020-01-24T23:17:11.132Z] 23:17:11 INFO - 1066 | | &mut self,
[task 2020-01-24T23:17:11.132Z] 23:17:11 INFO - 1067 | | mut pos: FuncCursor,
[task 2020-01-24T23:17:11.137Z] 23:17:11 INFO - 1068 | | table_index: u32,
[task 2020-01-24T23:17:11.137Z] 23:17:11 INFO - ... |
[task 2020-01-24T23:17:11.137Z] 23:17:11 INFO - 1075 | | .unwrap())
[task 2020-01-24T23:17:11.137Z] 23:17:11 INFO - 1076 | | }
[task 2020-01-24T23:17:11.137Z] 23:17:11 INFO - | |^ not a member of trait FuncEnvironment
[task 2020-01-24T23:17:11.138Z] 23:17:11 ERROR - error[E0407]: method translate_table_get is not a member of trait FuncEnvironment
[task 2020-01-24T23:17:11.138Z] 23:17:11 INFO - --> js/src/wasm/cranelift/src/wasm2clif.rs:1078:5
[task 2020-01-24T23:17:11.138Z] 23:17:11 INFO - |
[task 2020-01-24T23:17:11.138Z] 23:17:11 INFO - 1078 | / fn translate_table_get(
[task 2020-01-24T23:17:11.138Z] 23:17:11 INFO - 1079 | | &mut self,
[task 2020-01-24T23:17:11.138Z] 23:17:11 INFO - 1080 | | mut pos: FuncCursor,
[task 2020-01-24T23:17:11.138Z] 23:17:11 INFO - 1081 | | table_index: u32,
[task 2020-01-24T23:17:11.138Z] 23:17:11 INFO - ... |
[task 2020-01-24T23:17:11.139Z] 23:17:11 INFO - 1087 | | .unwrap())
[task 2020-01-24T23:17:11.139Z] 23:17:11 INFO - 1088 | | }
[task 2020-01-24T23:17:11.139Z] 23:17:11 INFO - | |
^ not a member of trait FuncEnvironment
[task 2020-01-24T23:17:11.139Z] 23:17:11 ERROR - error[E0407]: method translate_table_set is not a member of trait FuncEnvironment
[task 2020-01-24T23:17:11.139Z] 23:17:11 INFO - --> js/src/wasm/cranelift/src/wasm2clif.rs:1090:5
[task 2020-01-24T23:17:11.139Z] 23:17:11 INFO - |
[task 2020-01-24T23:17:11.139Z] 23:17:11 INFO - 1090 | / fn translate_table_set(
[task 2020-01-24T23:17:11.140Z] 23:17:11 INFO - 1091 | | &mut self,
[task 2020-01-24T23:17:11.140Z] 23:17:11 INFO - 1092 | | mut pos: FuncCursor,
[task 2020-01-24T23:17:11.140Z] 23:17:11 INFO - 1093 | | table_index: u32,
[task 2020-01-24T23:17:11.140Z] 23:17:11 INFO - ... |
[task 2020-01-24T23:17:11.140Z] 23:17:11 INFO - 1099 | | Ok(())
[task 2020-01-24T23:17:11.140Z] 23:17:11 INFO - 1100 | | }
[task 2020-01-24T23:17:11.140Z] 23:17:11 INFO - | |^ not a member of trait FuncEnvironment
[task 2020-01-24T23:17:11.140Z] 23:17:11 ERROR - error[E0407]: method translate_table_fill is not a member of trait FuncEnvironment
[task 2020-01-24T23:17:11.141Z] 23:17:11 INFO - --> js/src/wasm/cranelift/src/wasm2clif.rs:1127:5
[task 2020-01-24T23:17:11.141Z] 23:17:11 INFO - |
[task 2020-01-24T23:17:11.141Z] 23:17:11 INFO - 1127 | / fn translate_table_fill(
[task 2020-01-24T23:17:11.141Z] 23:17:11 INFO - 1128 | | &mut self,
[task 2020-01-24T23:17:11.141Z] 23:17:11 INFO - 1129 | | mut pos: FuncCursor,
[task 2020-01-24T23:17:11.141Z] 23:17:11 INFO - 1130 | | table_index: u32,
[task 2020-01-24T23:17:11.141Z] 23:17:11 INFO - ... |
[task 2020-01-24T23:17:11.141Z] 23:17:11 INFO - 1137 | | Ok(())
[task 2020-01-24T23:17:11.142Z] 23:17:11 INFO - 1138 | | }
[task 2020-01-24T23:17:11.142Z] 23:17:11 INFO - | |
^ not a member of trait FuncEnvironment
[task 2020-01-24T23:17:11.143Z] 23:17:11 ERROR - error[E0407]: method translate_ref_func is not a member of trait FuncEnvironment
[task 2020-01-24T23:17:11.143Z] 23:17:11 INFO - --> js/src/wasm/cranelift/src/wasm2clif.rs:1168:5
[task 2020-01-24T23:17:11.144Z] 23:17:11 INFO - |
[task 2020-01-24T23:17:11.144Z] 23:17:11 INFO - 1168 | / fn translate_ref_func(
[task 2020-01-24T23:17:11.145Z] 23:17:11 INFO - 1169 | | &mut self,
[task 2020-01-24T23:17:11.146Z] 23:17:11 INFO - 1170 | | mut pos: FuncCursor,
[task 2020-01-24T23:17:11.146Z] 23:17:11 INFO - 1171 | | func_index: u32,
[task 2020-01-24T23:17:11.147Z] 23:17:11 INFO - ... |
[task 2020-01-24T23:17:11.148Z] 23:17:11 INFO - 1176 | | .unwrap())
[task 2020-01-24T23:17:11.148Z] 23:17:11 INFO - 1177 | | }
[task 2020-01-24T23:17:11.149Z] 23:17:11 INFO - | |^ not a member of trait FuncEnvironment
[task 2020-01-24T23:17:11.150Z] 23:17:11 ERROR - error[E0407]: method translate_custom_global_get is not a member of trait FuncEnvironment
[task 2020-01-24T23:17:11.151Z] 23:17:11 INFO - --> js/src/wasm/cranelift/src/wasm2clif.rs:1179:5
[task 2020-01-24T23:17:11.151Z] 23:17:11 INFO - |
[task 2020-01-24T23:17:11.152Z] 23:17:11 INFO - 1179 | / fn translate_custom_global_get(
[task 2020-01-24T23:17:11.153Z] 23:17:11 INFO - 1180 | | &mut self,
[task 2020-01-24T23:17:11.153Z] 23:17:11 INFO - 1181 | | mut pos: FuncCursor,
[task 2020-01-24T23:17:11.154Z] 23:17:11 INFO - 1182 | | global_index: GlobalIndex,
[task 2020-01-24T23:17:11.155Z] 23:17:11 INFO - ... |
[task 2020-01-24T23:17:11.155Z] 23:17:11 INFO - 1191 | | Ok(pos.ins().load(ty, flags, addr, offset))
[task 2020-01-24T23:17:11.156Z] 23:17:11 INFO - 1192 | | }
[task 2020-01-24T23:17:11.157Z] 23:17:11 INFO - | |
^ not a member of trait FuncEnvironment
[task 2020-01-24T23:17:11.157Z] 23:17:11 ERROR - error[E0407]: method translate_custom_global_set is not a member of trait FuncEnvironment
[task 2020-01-24T23:17:11.158Z] 23:17:11 INFO - --> js/src/wasm/cranelift/src/wasm2clif.rs:1194:5
[task 2020-01-24T23:17:11.159Z] 23:17:11 INFO - |
[task 2020-01-24T23:17:11.159Z] 23:17:11 INFO - 1194 | / fn translate_custom_global_set(
[task 2020-01-24T23:17:11.160Z] 23:17:11 INFO - 1195 | | &mut self,
[task 2020-01-24T23:17:11.161Z] 23:17:11 INFO - 1196 | | mut pos: FuncCursor,
[task 2020-01-24T23:17:11.162Z] 23:17:11 INFO - 1197 | | global_index: GlobalIndex,
[task 2020-01-24T23:17:11.162Z] 23:17:11 INFO - ... |
[task 2020-01-24T23:17:11.163Z] 23:17:11 INFO - 1220 | | Ok(())
[task 2020-01-24T23:17:11.164Z] 23:17:11 INFO - 1221 | | }
[task 2020-01-24T23:17:11.164Z] 23:17:11 INFO - | |_____^ not a member of trait FuncEnvironment
[task 2020-01-24T23:17:11.165Z] 23:17:11 INFO - warning: ignoring -C extra-filename flag due to -o flag
[task 2020-01-24T23:17:11.166Z] 23:17:11 INFO - error: aborting due to 7 previous errors
[task 2020-01-24T23:17:11.166Z] 23:17:11 INFO - For more information about this error, try rustc --explain E0407.
[task 2020-01-24T23:17:11.167Z] 23:17:11 INFO - error: could not compile baldrdash.
[task 2020-01-24T23:17:11.168Z] 23:17:11 INFO - Caused by:
[task 2020-01-24T23:17:11.169Z] 23:17:11 INFO - process didn't exit successfully: CARGO_PKG_VERSION=0.1.0 CARGO_PKG_VERSION_MAJOR=0 OUT_DIR=/builds/worker/workspace/build/src/obj-firefox/x86_64-unknown-linux-gnu/release/build/baldrdash-a9e39337bf4a836f/out CARGO_PKG_HOMEPAGE= CARGO_MANIFEST_DIR=/builds/worker/workspace/build/src/js/src/wasm/cranelift CARGO_PKG_VERSION_MINOR=1 CARGO_PKG_NAME=baldrdash CARGO_PKG_DESCRIPTION= CARGO_PKG_REPOSITORY= CARGO_PKG_AUTHORS='The Spidermonkey and Cranelift developers' LD_LIBRARY_PATH='/builds/worker/workspace/build/src/obj-firefox/release/deps:/builds/worker/fetches/rustc/lib:/builds/worker/fetches/clang/lib:/builds/worker/fetches/clang/lib32' CARGO_PKG_VERSION_PATCH=0 CARGO_PKG_VERSION_PRE= CARGO=/builds/worker/fetches/rustc/bin/cargo /builds/worker/fetches/sccache/sccache /builds/worker/fetches/rustc/bin/rustc --edition=2018 --crate-name baldrdash js/src/wasm/cranelift/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type rlib --emit=dep-info,metadata,link -C opt-level=2 -C panic=abort -C codegen-units=1 --cfg 'feature="cranelift_x86"' --cfg 'feature="default"' -C metadata=f5e17efee61bb8de -C extra-filename=-f5e17efee61bb8de --out-dir /builds/worker/workspace/build/src/obj-firefox/x86_64-unknown-linux-gnu/release/deps --target x86_64-unknown-linux-gnu -L dependency=/builds/worker/workspace/build/src/obj-firefox/x86_64-unknown-linux-gnu/release/deps -L dependency=/builds/worker/workspace/build/src/obj-firefox/release/deps --extern cranelift_codegen=/builds/worker/workspace/build/src/obj-firefox/x86_64-unknown-linux-gnu/release/deps/libcranelift_codegen-04ed20c92f3195ce.rmeta --extern cranelift_wasm=/builds/worker/workspace/build/src/obj-firefox/x86_64-unknown-linux-gnu/release/deps/libcranelift_wasm-82e1c4e47559594b.rmeta --extern env_logger=/builds/worker/workspace/build/src/obj-firefox/x86_64-unknown-linux-gnu/release/deps/libenv_logger-021249ca1252d756.rmeta --extern log=/builds/worker/workspace/build/src/obj-firefox/x86_64-unknown-linux-gnu/release/deps/liblog-db3e6d54f5365a0c.rmeta --extern smallvec=/builds/worker/workspace/build/src/obj-firefox/x86_64-unknown-linux-gnu/release/deps/libsmallvec-a3333aff4ec35a9f.rmeta -C opt-level=2 -C debuginfo=2 --cap-lints warn -Zsanitizer=thread (exit code: 1)

Flags: needinfo?(rhunt)

Oh. So the first backout included bug 1611302 [1], but it wasn't marked on the bug. On the second push I dropped that commit because I didn't want a conflict from it landing twice, but that mean it was missing bug 1611302 and failed.

[1] https://hg.mozilla.org/integration/autoland/rev/578b23afed741a5762a4249947bc122ec4e5f378

Flags: needinfo?(rhunt)
Pushed by rhunt@eqrion.net:
https://hg.mozilla.org/integration/autoland/rev/985cd0a6aca9
Wasm: Update encoding of nullref to match proposal. r=lth
https://hg.mozilla.org/integration/autoland/rev/7ed658e202e9
Wasm: Change compiler selection to allow Cranelift when reference types is enabled. r=jseward
https://hg.mozilla.org/integration/autoland/rev/b32a5493de69
Baldr: Translate reference types and implement table/ref instruction translation. r=jseward
https://hg.mozilla.org/integration/autoland/rev/850e59aaad92
Baldr: Translate reference type globals using slow OOL barriers. r=jseward
https://hg.mozilla.org/integration/autoland/rev/bcb234673712
Baldr: Add support for Cranelift stackmaps. r=jseward
https://hg.mozilla.org/integration/autoland/rev/d111f56f78e8
Wasm: Allow stackmaps that are indexed at an x86 indirect call instruction with any register. r=jseward
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: