Closed Bug 1770919 Opened 3 years ago Closed 3 years ago

ARM64 simulator ought to work on arm64

Categories

(Core :: JavaScript Engine: JIT, enhancement, P1)

ARM64
All
enhancement

Tracking

()

RESOLVED FIXED
102 Branch
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.

Blocks: 1571998

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

The unimplemented instruction is FJCVTZS with rn==rd==0, 0x1E7E0000.

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.)

Severity: -- → N/A
Priority: -- → P1
Pushed by lhansen@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/fd7b64f8a004 Allow ARM64 simulator to run on ARM64. r=nbp
Status: ASSIGNED → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 102 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: