Closed
Bug 573083
Opened 14 years ago
Closed 14 years ago
JM: Don't flush the entire state for implicit calls
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
RESOLVED
FIXED
People
(Reporter: dvander, Unassigned)
References
Details
There are two ways this affects us. On stub calls with no fast-paths, we sync the entire frame to memory. On out-of-line slow paths, we do the same, but it leads to a great deal of code bloat. For example SETELEM has six side exits, each one must independently sync all pending stores. I've seen this be more than 20 instructions for each exit.
With bug 566022 fixed, this is no longer a problem but correctness, but it is for rooting. When conservative GC lands on fatval we should be able to eliminate all these stores.
Reporter | ||
Comment 1•14 years ago
|
||
http://hg.mozilla.org/users/danderson_mozilla.com/moo/rev/be62769dce74
^-- For inline slow calls, we now only sync relevant state.
http://hg.mozilla.org/users/danderson_mozilla.com/moo/rev/5ff0c0a8d4d8
^-- For OOL slow calls, we no longer sync irrelevant copies or constants. Registers are harder and will come later.
This increases code size on SS by about 1%, since with less syncs on the inline path, the OOL has to do more work. It looks like maybe a 2% win on v8 and not much on SS, so far.
Reporter | ||
Updated•14 years ago
|
Reporter | ||
Comment 2•14 years ago
|
||
http://hg.mozilla.org/users/danderson_mozilla.com/moo/rev/9852618873d9
About a 2% v8 win, noise on SS.
I'm a little bothered by this patch because code inside a try block will run slower, as the world must be synced inside each stub call. Perhaps someday we can mitigate this if it really matters.
Reporter | ||
Updated•14 years ago
|
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•