Changes

Jump to: navigation, search

Platform/Features/IonMonkey

2,720 bytes added, 15:08, 12 July 2011
m
no edit summary
{{FeatureStatus
|Feature name=IonMonkey
|Feature stage=Draft
|Feature health=OK
}}
{{FeatureTeam
|Feature lead engineer=David Anderson, David Mandelin
}}
{{FeaturePageBody
|Feature overview=IonMonkey is a new JIT for SpiderMonkey. Our goal is to implement a new compiler to enable many new JavaScript optimizations. In particular IonMonkey will feature much more organized and explicit data structures typical of advanced compilers. This goal of being clean and flexible will be extremely important for future optimization work and experimentation.
|Feature users and use cases=Goals:
* Provide a backend that can match or beat the Trace JIT or Crankshaft in speed. Sub-goals:
** Fine-grained specialization and de-specialization.
** Integration with type inference.
* Clean, textbook IR so optimization passes can be separated and pipelined with well-known algorithms.
* Document and comment well so the implementation and its side effects can be easily understood.
* Recompilation, debugging, bailouts are all related - and should be solved up-front.
* First SpiderMonkey JIT that starts off with peer reviews!
* (Unknown feasibility) Act as a baseline compiler to replace JM2.
* Manage memory much better, in part to avoid range problems on x64.
 
Avoiding these:
* Aggressive stores. We should move state syncing to bailout points.
|Feature requirements=* Does not regress correctness.
* Does not regress usability or bench-marketing performance.
 
|Feature functional spec=See bug 646923 for an experimental design in Python, and bug 650181 for IR plans.
 
See [[/RegisterAllocator]] for information on the register allocator interfaces.
|Feature implementation notes=* Immediate worklist:
** Prototype model backend ([https://bugzilla.mozilla.org/show_bug.cgi?id=646923 bug 646923])
** Design and implement new IRs ([https://bugzilla.mozilla.org/show_bug.cgi?id=650181 bug 650181])
** Create a code generator and simple register allocator
* Long-term worklist:
** Implement method inlining
** Implement advanced linear-scan register allocation
** Implement loop invariant code motion
** Implement constant sub-expression elimination
** Implement type-profiling
** Implement enough functionality to replace existing JITs
** Implement proper memory management of code
** Implement interval analysis
 
}}
{{FeatureInfo
|Feature priority=P1
|Feature roadmap=Platform
|Feature list=Platform
|Feature engineering team=JavaScript
}}
{{FeatureTeamStatus
|Feature products status=tbd
|Feature engineering status=tbd
|Feature security status=tbd
|Feature privacy status=tbd
|Feature localization status=tbd
|Feature accessibility status=tbd
|Feature qa status=tbd
|Feature ux status=tbd
|Feature product marketing status=tbd
}}
Canmove, confirm, emeritus
6,906
edits

Navigation menu