ARM64 simulator ought to work on arm64
Categories
(Core :: JavaScript Engine: JIT, enhancement, P1)
Tracking
()
Tracking | Status | |
---|---|---|
firefox102 | --- | fixed |
People
(Reporter: lth, Assigned: lth)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
The ARM64 simulator ought to work on ARM64 platforms - there's no reason why it can't, I think, it's just some gating in moz.configure.
The reason why it should work on ARM64 is that (a) the simulator exercises some different code paths that are sometimes useful (for example, for wasm code the simulator performs a partial stack walk for every memory reference and thus stress-tests the stack walking machinery) and (b) increasingly the developers are on ARM64 systems and are prevented from exercising these code paths.
Assignee | ||
Comment 1•3 years ago
|
||
Wasm tests all pass, but a number of JS tests fail because the simulator encounters an unallocated instruction, there are various stacks, here's one:
Hit MOZ_CRASH(UNIMPLEMENTED ) at /Users/lhansen/m-u/js/src/jit/arm64/vixl/Simulator-vixl.cpp:755
#01: vixl::Simulator::VisitUnallocated(vixl::Instruction const*)[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0xb8032c]
#02: vixl::Decoder::VisitUnallocated(vixl::Instruction const*)[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0xb31a5c]
#03: vixl::CachingDecoder::Decode(vixl::Instruction const*)[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0xb7a690]
#04: vixl::Simulator::ExecuteInstruction()[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0xb7a598]
#05: vixl::Simulator::Run()[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0xb7e8b4]
#06: vixl::Simulator::call(unsigned char*, int, ...)[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0xb7b294]
#07: js::jit::EnterBaselineInterpreterAtBranch(JSContext*, js::InterpreterFrame*, unsigned char*)[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0x9bbc80]
#08: Interpret(JSContext*, js::RunState&)[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0xa46f4]
#09: js::RunScript(JSContext*, js::RunState&)[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0xa392c]
#10: js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JS::Handle<JSObject*>, js::AbstractFramePtr, JS::MutableHandle<JS::Value>)[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0xb5dcc]
#11: js::Execute(JSContext*, JS::Handle<JSScript*>, JS::Handle<JSObject*>, JS::MutableHandle<JS::Value>)[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0xb62b4]
#12: ExecuteScript(JSContext*, JS::Handle<JSObject*>, JS::Handle<JSScript*>, JS::MutableHandle<JS::Value>)[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0x1e7630]
#13: JS_ExecuteScript(JSContext*, JS::Handle<JSScript*>)[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0x1e781c]
#14: RunFile(JSContext*, char const*, __sFILE*, CompileUtf8, bool)[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0x6df0c]
#15: Process(JSContext*, char const*, bool, FileKind)[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0x6d4fc]
#16: Shell(JSContext*, js::cli::OptionParser*)[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0x121f0]
#17: main[/Users/lhansen/m-u/obj-arm64-reldebug/dist/bin/js +0xc1b4]
Exit code: -11
FAIL - ion/testInArray.js
Assignee | ||
Comment 2•3 years ago
|
||
The unimplemented instruction is FJCVTZS with rn==rd==0, 0x1E7E0000.
Assignee | ||
Comment 3•3 years ago
|
||
Remove the gating in moz.configure that prevents the arm64 simulator from
being compiled on an arm64 system.
Avoid using the fjcvt instruction when running on arm64 hardware, since
the simulator does not appear to support it while cpu detection does
support it. (The alternative would be to implement the instruction
on the simulator.)
Updated•3 years ago
|
Comment 5•3 years ago
|
||
bugherder |
Description
•