JSStackFrame Evisceration: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
This would leave sizeof(JSStackFrame) == 6 words.
This leaves sizeof(JSStackFrame) == 10 words (11 on 32-bit), but we only need to initialize 5 of those words on the call path; the rest can be lazily (or never) initialized.


=== Members to remove ===
=== Members to remove ===
Line 12: Line 12:
| '''Note'''
| '''Note'''
|-
|-
| [https://bugzilla.mozilla.org/show_bug.cgi?id=539144 argc/argv/fun/script/thisv]
| X[https://bugzilla.mozilla.org/show_bug.cgi?id=539144 argc/argv/fun/script/thisv]
| 3
| 3
| lw
| lw
Line 19: Line 19:
| ncode
| ncode
| 3
| 3
| dvander
| dvander/bhackett
| Merge it with savedPC in method-jit.  Requires building map HW PC --> bytecode (which we sortof already heave
| Merge it with savedPC in method-jit.  Requires building map HW PC --> bytecode (which we sortof already heave
|-
|-
Line 32: Line 32:
| Lazily initialize using JSStackFrame::flags.  Included in bug 539144.
| Lazily initialize using JSStackFrame::flags.  Included in bug 539144.
|-
|-
| [https://bugzilla.mozilla.org/show_bug.cgi?id=546848 annotation]
| X[https://bugzilla.mozilla.org/show_bug.cgi?id=546848 annotation]
| 3
| 3
| sayrer
| sayrer
| Trivial if we can remove callers in nsScriptSecurityManager. Alas, that is not trivial, so this is going to take a while.
| Trivial if we can remove callers in nsScriptSecurityManager. Alas, that is not trivial, so this is going to take a while.  For now, we lazily initialize which gives practically all the benefit.
|-
|-
| [https://bugzilla.mozilla.org/show_bug.cgi?id=540675 callerVersion]
| X[https://bugzilla.mozilla.org/show_bug.cgi?id=540675 callerVersion]
| .5
| .5
| cdleary
| cdleary

Revision as of 04:00, 10 September 2010

This leaves sizeof(JSStackFrame) == 10 words (11 on 32-bit), but we only need to initialize 5 of those words on the call path; the rest can be lazily (or never) initialized.

Members to remove

Sorted in estimated order of benefit / difficulty:

Task Size (wks) Assignee Note
Xargc/argv/fun/script/thisv 3 lw Requires StackSegment changes.
ncode 3 dvander/bhackett Merge it with savedPC in method-jit. Requires building map HW PC --> bytecode (which we sortof already heave
XdisplaySave 1 cdleary Remove display optimization for great justice!
XhookData .1 Lazily initialize using JSStackFrame::flags. Included in bug 539144.
Xannotation 3 sayrer Trivial if we can remove callers in nsScriptSecurityManager. Alas, that is not trivial, so this is going to take a while. For now, we lazily initialize which gives practically all the benefit.
XcallerVersion .5 cdleary Mostly the challenge is just understanding the actual use case.
XblockChain 1 A bit tricky
rval 1 Probably more trouble than its worth to remove, just lazily initialize with a JSStackFrame::flags bit and avoid ever writing in the hot JM call/return paths.
imacpc 1 cdleary Leave uninitialized in call path and use JSStackFrame::flags to indicate whether there is or is not an imacpc.

Method-jit changes

  • PIC for fast natives calls
  • PIC/fast path for interpreted inline call