BaselineCompiler: Store the scope chain

RESOLVED FIXED

Status

()

defect
RESOLVED FIXED
7 years ago
7 years ago

People

(Reporter: jandem, Assigned: jandem)

Tracking

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment, 1 obsolete attachment)

Assignee

Description

7 years ago
Need this to compile DEFVAR, NAME etc.
Assignee

Updated

7 years ago
Depends on: 820816
Assignee

Comment 1

7 years ago
Posted patch Patch (obsolete) — Splinter Review
I tried to handle heavyweight functions too, but we have to compile more ops to test it. So this just aborts on heavyweight functions until we support DEFVAR, NAME, LAMBDA etc.
Attachment #691364 - Flags: review?(kvijayan)
Assignee

Updated

7 years ago
Attachment #691364 - Flags: review?(kvijayan)
Assignee

Comment 2

7 years ago
Posted patch PatchSplinter Review
Attachment #691364 - Attachment is obsolete: true
Attachment #691368 - Flags: review?(kvijayan)
Comment on attachment 691368 [details] [diff] [review]
Patch

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

Thanks for taking care of this.  Unblocks some important ops for implementation.

::: js/src/ion/arm/IonFrames-arm.h
@@ +462,5 @@
>      uint32_t loScratchValue;
>      uint32_t hiScratchValue;
>      size_t frameSize;
> +    JSObject *scopeChain;
> +    uint32_t dummy; // Keep frame 8-byte aligned.

I don't understand the need for this.  Without it, BaselineFrame is 16 bytes on ARM.  This bumps it to 20 bytes.  Are we expecting the stack to be at a 4-byte offset when this is pushed?
Attachment #691368 - Flags: review?(kvijayan) → review+
Assignee

Comment 4

7 years ago
(In reply to Kannan Vijayan [:djvj] from comment #3)
>
> I don't understand the need for this.  Without it, BaselineFrame is 16 bytes
> on ARM.  This bumps it to 20 bytes.  Are we expecting the stack to be at a
> 4-byte offset when this is pushed?

Yeah, the 4-byte offset is for the old frame pointer we push on the stack. See the BaselineFrame static assert, it asserts (sizeof(BaselineFrame) + FramePointerOffset) % 8 == 0.
Assignee

Comment 5

7 years ago
https://hg.mozilla.org/projects/ionmonkey/rev/bc21eceb1c25
Status: ASSIGNED → RESOLVED
Last Resolved: 7 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.