Javascript:SpiderMonkey:BaselineCompiler

From MozillaWiki
Jump to: navigation, search

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