Javascript:SpiderMonkey:BaselineCompiler: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
m (→‎Post Landing: bug 804676 fixed)
Line 26: Line 26:
** High priority.
** High priority.
** Will reduce memory usage greatly.
** Will reduce memory usage greatly.
** Removal enables Brian Hackett's "rm analyzeTypes"
** Removal enables Brian Hackett's "rm analyzeTypes" ({{bug|804676}} RESOLVED FIXED)
*** See: https://bugzilla.mozilla.org/show_bug.cgi?id=804676 (RESOLVED FIXED)
** Remove ScriptAnalysis::analyzeTypes (for real this time): {{bug|864928}}


* Fix Octane performance issues.
* (DONE?) Fix Octane performance issues.
** Overall scores on Octane are better than Interp+JM+Ion
** Overall scores on Octane are better than Interp+JM+Ion
** Some octane benches show perf-instability on AWFY (some runs are really slow)
** Some octane benches show perf-instability on AWFY (some runs are really slow)
Line 41: Line 41:
*** Splay
*** Splay


* Integrate Ion and Baseline further
* Integrate Ion and Baseline further (mostly done, except SetProp_NativeAdd)
** Inline SetProp_NativeAdd operations using Baseline ICs.
** Inline SetProp_NativeAdd operations using Baseline ICs.
** Inline polymorphic, shape-guarded GetProp and SetProp operations using Baseline ICs.
** Inline polymorphic, shape-guarded GetProp and SetProp operations using Baseline ICs.


* Compile more ops with baseline (e.g. ES6 reset parameters)
* Compile more ops with baseline:
** ES6 rest parameters: {{bug|867471}}
** Remaining ops are |with| and other slow/rare stuff


* Optimize new ES6 features
* Optimize new ES6 features
** Proxies
** Proxies
** Generators
** ES6 Generators: {{bug|903457}}


* Add support for try/finally
* Add support for try/finally ({{bug|866878}} RESOLVED FIXED)


* Enable toggling debugger with code on the stack
* Enable toggling debugger with code on the stack: {{bug|716647}}
** Will require implementation of OST - on-stack transformation of jitcode
** Will require implementation of OST - on-stack transformation of jitcode
** OST also enables removing profiler instrumentation from default jitcode
** OST also enables removing profiler instrumentation from default jitcode

Revision as of 01:44, 29 August 2013

General Plan

Landing

Land with basic functionality to make Firefox 23. This means making it into mozilla-inbound before May 13, 2013.

Current ETA: make it into mozilla-inbound by end of first week of April, 2013.

Requirements:

  • Performance
    • Be on par or better than trunk Interp+JM+Ion on:
      • Kraken
      • Sunspider
      • Octane
      • Dromaeo
  • Memory
    • Do not regress memory as compared to trunk
  • Features
    • Support try/catch
    • Support debugger integration
    • Support profiler integration

Post Landing

  • Remove persistent bytecode analysis (scriptAnalysis) on both Ion and Baseline
    • High priority.
    • Will reduce memory usage greatly.
    • Removal enables Brian Hackett's "rm analyzeTypes" (bug 804676 RESOLVED FIXED)
    • Remove ScriptAnalysis::analyzeTypes (for real this time): bug 864928
  • (DONE?) Fix Octane performance issues.
    • Overall scores on Octane are better than Interp+JM+Ion
    • Some octane benches show perf-instability on AWFY (some runs are really slow)
      • Box2D
      • CodeLoad
      • GameBoy
      • PdfJS
    • Individual benchmarks which are slower than Interp+JM+Ion
      • DeltaBlue
      • Richards
      • Splay
  • Integrate Ion and Baseline further (mostly done, except SetProp_NativeAdd)
    • Inline SetProp_NativeAdd operations using Baseline ICs.
    • Inline polymorphic, shape-guarded GetProp and SetProp operations using Baseline ICs.
  • Compile more ops with baseline:
    • ES6 rest parameters: bug 867471
    • Remaining ops are |with| and other slow/rare stuff
  • Optimize new ES6 features
  • Add support for try/finally (bug 866878 RESOLVED FIXED)
  • Enable toggling debugger with code on the stack: bug 716647
    • Will require implementation of OST - on-stack transformation of jitcode
    • OST also enables removing profiler instrumentation from default jitcode