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)