Closed
Bug 1200560
Opened 10 years ago
Closed 10 years ago
[SharedStubs] Get arm working
Categories
(Core :: JavaScript Engine: JIT, defect)
Core
JavaScript Engine: JIT
Tracking
()
RESOLVED
FIXED
mozilla43
Tracking | Status | |
---|---|---|
firefox43 | --- | fixed |
People
(Reporter: h4writer, Assigned: h4writer)
References
Details
Attachments
(2 files)
2.87 KB,
patch
|
sstangl
:
review+
|
Details | Diff | Splinter Review |
2.18 KB,
patch
|
sstangl
:
review+
|
Details | Diff | Splinter Review |
No description provided.
Assignee | ||
Comment 1•10 years ago
|
||
Assignee: nobody → hv1989
Attachment #8657077 -
Flags: review?(sstangl)
Assignee | ||
Comment 2•10 years ago
|
||
Attachment #8657086 -
Flags: review?(sstangl)
Comment 3•10 years ago
|
||
Comment on attachment 8657077 [details] [diff] [review]
Part 1: Get tailCallVM working in shared stub embedded in ion
Review of attachment 8657077 [details] [diff] [review]:
-----------------------------------------------------------------
::: js/src/jit/CodeGenerator.cpp
@@ +1711,5 @@
> // Fix up upon return.
> uint32_t callOffset = masm.currentOffset();
> masm.freeStack(sizeof(intptr_t));
> +#ifdef JS_USE_LINK_REGISTER
> + masm.freeStack(sizeof(intptr_t));
Merge with above freeStack():
#ifdef JS_USE_LINK_REGISTER
masm.freeStack(sizeof(intptr_t) * 2);
#else
masm.freeStack(sizeof(intptr_t));
#endif
::: js/src/jit/arm/SharedICHelpers-arm.h
@@ +107,5 @@
>
> inline void
> EmitIonTailCallVM(JitCode* target, MacroAssembler& masm, uint32_t stackSize)
> {
> + masm.loadPtr(Address(sp, stackSize), r0);
Note that r0 is safe to use here as scratch because r0 == ReturnReg, and it is already assumed that the CallVM is going to clobber ReturnReg. Or you could use a ScratchRegisterScope for everything but the masm.branch().
@@ +108,5 @@
> inline void
> EmitIonTailCallVM(JitCode* target, MacroAssembler& masm, uint32_t stackSize)
> {
> + masm.loadPtr(Address(sp, stackSize), r0);
> + masm.ma_lsr(Imm32(FRAMESIZE_SHIFT), r0, r0);
Prefer masm.rshiftPtr(Imm32(...), r0);
@@ +109,5 @@
> EmitIonTailCallVM(JitCode* target, MacroAssembler& masm, uint32_t stackSize)
> {
> + masm.loadPtr(Address(sp, stackSize), r0);
> + masm.ma_lsr(Imm32(FRAMESIZE_SHIFT), r0, r0);
> + masm.ma_add(Imm32(stackSize + JitStubFrameLayout::Size() - sizeof(intptr_t)), r0);
Prefer masm.add32(...);
Attachment #8657077 -
Flags: review?(sstangl) → review+
Comment 4•10 years ago
|
||
Comment on attachment 8657086 [details] [diff] [review]
Part 2: get callVM to work on ARM
Review of attachment 8657086 [details] [diff] [review]:
-----------------------------------------------------------------
::: js/src/jit/arm/SharedICHelpers-arm.h
@@ +150,5 @@
> + masm.Push(Imm32(descriptor));
> + masm.callJit(target);
> +
> + // Remove rest of the frame left on the stack. We remove the return address
> + // which is implicitly poped when returning.
ultra-nit: "popped"
Attachment #8657086 -
Flags: review?(sstangl) → review+
Comment 6•10 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/a1255d7b2c11
https://hg.mozilla.org/mozilla-central/rev/0e15a964f1f9
Status: NEW → RESOLVED
Closed: 10 years ago
status-firefox43:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla43
You need to log in
before you can comment on or make changes to this bug.
Description
•