JSStackFrame Evisceration
Removing JSStackFrame members / things on the call path
This would leave sizeof(JSStackFrame) == 6 words. Sorted in estimated order of benefit / difficulty:
Task | Size (wks) | Candidate Assignee | |||
argc/argv | 1 | lw | |||
thisv (depends on argv) | .5 | lw | |||
fun, script (depend on thisv) | .5 | lw | |||
ncode (merge with savedPC) | .1 | dvander | |||
displaySave - remove display optimization | 1 | cdleary | |||
hookData (just use js::Invoke and use a local variable) | .5 | ||||
callerVersion | .5 | - | blockChain | 1 | |
rval | 1 | ||||
annotation | ? (0, once we can drop the callers of JS_{Get,Set}FrameAnnotation in nsScriptSecurityManager.cpp) | ||||
imacpc (use some side stack, or push a jsval (like JSOP_GOSUB) | 1 |
Remove from call path
- PIC for fast natives calls
- PIC/fast path for interpreted inline call
- Remove empty script check (not just a predictable branch)