JM: Remove VMFrame::inlineCallCount




JavaScript Engine
8 years ago
8 years ago


(Reporter: dvander, Assigned: dvander)


Firefox Tracking Flags

(Not tracked)



(3 attachments, 1 obsolete attachment)

We can remove inlineCallCount by combining it with the stack quota check, simplifying the stack quota check at the same time.
Created attachment 465565 [details] [diff] [review]
part 1: cleanup, add entryFp

Precursor patch removes correctness dependency on iCC, introducing VMFrame::entryFp which is the stopping point for unwinding frames.

It also cleans up a bunch of confusing invariants in InvokeHelpers.
Created attachment 465568 [details] [diff] [review]
part 1.1: add entryFp for x86, x64
Attachment #465565 - Attachment is obsolete: true
Largest frame size on SS is 656 bytes, average is 184.
Largest frame size on v8 is 1344 bytes, average is 175.

Multiplying our current max-inline-callcount (3000) by these numbers, either as-is or generously increased, results in a huge portion of our contiguous stack.

On Windows, we still have to check the committed region of the contiguous stack. Luke points out that we can check MIN(committed, maxDepth) to take a slow path, and figure out whether we've over-recursed or just need to commit more from there. This will keep the fast single-check on Windows without reporting more memory usage.
Created attachment 465584 [details] [diff] [review]
part 2: remove VMFrame::inlineCallCount
Created attachment 465592 [details] [diff] [review]
part 3: combine commit and overrecursion checks
So far this is a 1% SS win, 5% v8 win on my machine.
On graphs this was a 1% SS win, 3% v8 win.
Last Resolved: 8 years ago
Resolution: --- → FIXED
According to "hg bisect", d7b81bd995c3 broke most of the trace-tests for ARM.
ARM fixes:

The VMFrame construction code in JaegerTrampoline hadn't been updated for ARM.
You need to log in before you can comment on or make changes to this bug.