JSStackFrame Evisceration: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
This would leave sizeof(JSStackFrame) == 6 words.
This would leave sizeof(JSStackFrame) == 6 words.
=== 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]
| [https://bugzilla.mozilla.org/show_bug.cgi?id=539144 argc/argv]
| 1
| 1.5
| lw
| lw
| Requires CallSegment (CallStack) changes, educate decompiler
|-
|-
| [https://bugzilla.mozilla.org/show_bug.cgi?id=557375 thisv] (depends on argv)
| [https://bugzilla.mozilla.org/show_bug.cgi?id=557375 thisv]
| .5
| .5
| lw
| lw
| Depends on argv/argc
|-
|-
| fun, script (depend on thisv)
| fun, script
| .5
| .5
| lw
| lw
| Depends on thisv
|-
|-
| ncode (merge with savedPC)
| ncode
| .1
| .1
| dvander
| dvander
| Merge it with savedPC in method-jit
|-
|-
| displaySave - remove display optimization
| displaySave
| 1
| 1
| cdleary
| cdleary
| Remove display optimization for great justice!
|-
|-
| hookData (just use js::Invoke and use a local variable)
| hookData
| .5
| .5
|  
|
| Just use js::Invoke and use a local variable
|-
| annotation
| 0
| sayrer
| Trivial if we can remove callers in nsScriptSecurityManager.
|-
|-
| [https://bugzilla.mozilla.org/show_bug.cgi?id=540675 callerVersion]
| [https://bugzilla.mozilla.org/show_bug.cgi?id=540675 callerVersion]
| .5
| .5
|
|
| -
| Mostly the challenge is just understanding the actual use case.
|-
| [https://bugzilla.mozilla.org/show_bug.cgi?id=535912 blockChain]
| [https://bugzilla.mozilla.org/show_bug.cgi?id=535912 blockChain]
| 1
| 1
|  
|  
| A bit tricky
|-
|-
| [https://bugzilla.mozilla.org/show_bug.cgi?id=550639 rval]
| [https://bugzilla.mozilla.org/show_bug.cgi?id=550639 rval]
| 1
| 1
|
|
| Tricky
|-
|-
| annotation
| imacpc
| ? (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
| 1
|
|
| Perhaps push on the expression stack like JSOP_GOSUB does
|}
|}


== Remove from call path ==
=== Method-jit changes ===


*PIC for fast natives calls
* PIC for fast natives calls
*PIC/fast path for interpreted inline call
* PIC/fast path for interpreted inline call
*Remove empty script check (not just a predictable branch)

Revision as of 06:43, 9 July 2010

This would leave sizeof(JSStackFrame) == 6 words.

Members to remove

Sorted in estimated order of benefit / difficulty:

Task Size (wks) Assignee Note
argc/argv 1.5 lw Requires CallSegment (CallStack) changes, educate decompiler
thisv .5 lw Depends on argv/argc
fun, script .5 lw Depends on thisv
ncode .1 dvander Merge it with savedPC in method-jit
displaySave 1 cdleary Remove display optimization for great justice!
hookData .5 Just use js::Invoke and use a local variable
annotation 0 sayrer Trivial if we can remove callers in nsScriptSecurityManager.
callerVersion .5 Mostly the challenge is just understanding the actual use case.
blockChain 1 A bit tricky
rval 1 Tricky
imacpc 1 Perhaps push on the expression stack like JSOP_GOSUB does

Method-jit changes

  • PIC for fast natives calls
  • PIC/fast path for interpreted inline call