Closed Bug 1436953 Opened 2 years ago Closed 2 years ago

Make ARM64 assembler support wasm

Categories

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

ARM64
All
enhancement

Tracking

()

RESOLVED FIXED
mozilla60
Tracking Status
firefox60 --- fixed

People

(Reporter: lth, Assigned: lth)

References

Details

Attachments

(1 file, 2 obsolete files)

The native assembler has some bugs (incorrect register assignments, weird NOP encodings, simulator-only Unreachable instruction support) and some missing features.  Let's fix these problems.
Buffer management follows ARM ditto.  See commit msg for additional details.
Attachment #8949657 - Flags: review?(sstangl)
Comment on attachment 8949657 [details] [diff] [review]
bug1436953-arm64-assembler-fixes.patch

I suspect the definition of bindLater() is busted, cancelling review until I can investigate.
Attachment #8949657 - Flags: review?(sstangl)
Blocks: 1430743
As the previous patch, with a clarification for bindLater() even though it was correct already, and with additional code for icache flushing.  See commit msg for full list of issues addressed.
Attachment #8949657 - Attachment is obsolete: true
Attachment #8952167 - Flags: review?(sstangl)
Comment on attachment 8952167 [details] [diff] [review]
bug1436953-arm64-assembler-fixes-v2.patch

Review of attachment 8952167 [details] [diff] [review]:
-----------------------------------------------------------------

::: js/src/jit/arm64/Assembler-arm64.h
@@ +129,4 @@
>  // None of these may be the second scratch register.
>  static constexpr Register WasmIonExitRegReturnData = r2;
>  static constexpr Register WasmIonExitRegReturnType = r3;
> +static constexpr Register WasmIonExitTlsReg = r23;

Seems fine, but why?
Attachment #8952167 - Flags: review?(sstangl) → review+
(In reply to Sean Stangl [:sstangl] from comment #4)
> Comment on attachment 8952167 [details] [diff] [review]
> bug1436953-arm64-assembler-fixes-v2.patch
> 
> Review of attachment 8952167 [details] [diff] [review]:
> -----------------------------------------------------------------
> 
> ::: js/src/jit/arm64/Assembler-arm64.h
> @@ +129,4 @@
> >  // None of these may be the second scratch register.
> >  static constexpr Register WasmIonExitRegReturnData = r2;
> >  static constexpr Register WasmIonExitRegReturnType = r3;
> > +static constexpr Register WasmIonExitTlsReg = r23;
> 
> Seems fine, but why?

You're right, I was just being trigger-happy.  Will revert this.

Turns out nobody uses WasmIonExitTlsReg anyway...
Rebased, etc, ready to land.  Carrying r+.
Attachment #8952167 - Attachment is obsolete: true
Attachment #8954004 - Flags: review+
https://hg.mozilla.org/mozilla-central/rev/0d3462c103e9
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla60
You need to log in before you can comment on or make changes to this bug.