JSStackFrame Evisceration

From MozillaWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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.