JSStackFrame Evisceration: Difference between revisions
Jump to navigation
Jump to search
(21 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
This | This leaves sizeof(JSStackFrame) == 10 words (11 on 32-bit), but we only need to initialize 4 of those words on the common call path; the rest can be lazily (or never) initialized. | ||
=== Members to remove === | |||
Sorted in estimated order of benefit / difficulty: | Sorted in estimated order of benefit / difficulty: | ||
Line 7: | Line 10: | ||
| '''Size (wks)''' | | '''Size (wks)''' | ||
| '''Assignee''' | | '''Assignee''' | ||
| '''Note''' | |||
|- | |- | ||
| [https://bugzilla.mozilla.org/show_bug.cgi?id=539144 argc/argv] | | X[https://bugzilla.mozilla.org/show_bug.cgi?id=539144 argc/argv/fun/script/thisv] | ||
| | | 3 | ||
| lw | | lw | ||
| Requires StackSegment [https://bugzilla.mozilla.org/show_bug.cgi?id=579183 changes]. | |||
|- | |||
| X[https://bugzilla.mozilla.org/show_bug.cgi?id=595073 ncode] | |||
| 3 | |||
| | |||
| Merge it with savedPC in method-jit. Requires building map HW PC --> bytecode (which we sortof already heave | |||
|- | |- | ||
| [https://bugzilla.mozilla.org/show_bug.cgi?id= | | [https://bugzilla.mozilla.org/show_bug.cgi?id=593882 scopeChain] | ||
| .5 | | .5 | ||
| | | | ||
|- | |- | ||
| | | X[https://bugzilla.mozilla.org/show_bug.cgi?id=577708 displaySave] | ||
| | | 1 | ||
| | | cdleary | ||
| Remove display optimization for great justice! | |||
|- | |- | ||
| | | XhookData | ||
| .1 | | .1 | ||
| | | lw | ||
| Lazily initialize using JSStackFrame::flags. Included in bug 539144. | |||
|- | |- | ||
| | | X[https://bugzilla.mozilla.org/show_bug.cgi?id=546848 annotation] | ||
| | | 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. | |||
|- | |- | ||
| | | X[https://bugzilla.mozilla.org/show_bug.cgi?id=540675 callerVersion] | ||
| .5 | | .5 | ||
| | | cdleary | ||
| Mostly the challenge is just understanding the actual use case. | |||
|- | |- | ||
| | | X[https://bugzilla.mozilla.org/show_bug.cgi?id=535912 blockChain] | ||
| 1 | | 1 | ||
| | | wmmcloskey | ||
| A bit tricky | |||
|- | |- | ||
| [https://bugzilla.mozilla.org/show_bug.cgi?id= | | [https://bugzilla.mozilla.org/show_bug.cgi?id=595073 rval] | ||
| 1 | | 1 | ||
| | | | ||
| Lazily initialize with a JSStackFrame::flags bit and avoid ever writing in the hot JM call/return paths. | |||
|- | |- | ||
| | | X[https://bugzilla.mozilla.org/show_bug.cgi?id=586358 imacpc] | ||
| 1 | | 1 | ||
| | | cdleary | ||
| Leave uninitialized in call path and use JSStackFrame::flags to indicate whether there is or is not an imacpc. | |||
|} | |} | ||
Latest revision as of 17:47, 30 September 2010
This leaves sizeof(JSStackFrame) == 10 words (11 on 32-bit), but we only need to initialize 4 of those words on the common 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. |
Xncode | 3 | Merge it with savedPC in method-jit. Requires building map HW PC --> bytecode (which we sortof already heave | |
scopeChain | .5 | ||
XdisplaySave | 1 | cdleary | Remove display optimization for great justice! |
XhookData | .1 | lw | 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 | wmmcloskey | A bit tricky |
rval | 1 | Lazily initialize with a JSStackFrame::flags bit and avoid ever writing in the hot JM call/return paths. | |
Ximacpc | 1 | cdleary | Leave uninitialized in call path and use JSStackFrame::flags to indicate whether there is or is not an imacpc. |