Closed Bug 586886 Opened 14 years ago Closed 14 years ago

JM: Remove VMFrame::inlineCallCount

Categories

(Core :: JavaScript Engine, defect)

x86_64
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: dvander, Assigned: dvander)

References

Details

Attachments

(3 files, 1 obsolete file)

We can remove inlineCallCount by combining it with the stack quota check, simplifying the stack quota check at the same time.
Attached patch part 1: cleanup, add entryFp (obsolete) — Splinter Review
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.
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.
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.

http://hg.mozilla.org/projects/jaegermonkey/rev/d7b81bd995c3
http://hg.mozilla.org/projects/jaegermonkey/rev/6a6a72c1961a
Status: ASSIGNED → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
According to "hg bisect", d7b81bd995c3 broke most of the trace-tests for ARM.
ARM fixes: http://hg.mozilla.org/projects/jaegermonkey/rev/0bb64c9ca0b6

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.

Attachment

General

Created:
Updated:
Size: