JSStackFrame Evisceration
This would leave sizeof(JSStackFrame) == 6 words. Sorted in estimated order of benefit / difficulty:
Task | Size (wks) | 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)