Changes

Jump to: navigation, search

IonMonkey

904 bytes added, 11:25, 20 October 2016
no edit summary
IonMonkey is the next generation JavaScript JIT compiler for SpiderMonkey. It is a whole-method JIT with the ability to perform type specialization. It has two goals: a cleanly engineered design that makes future optimization work possible, and excellent performance.
 
=Planning=
 
See [[Platform/Features/IonMonkey]] for IonMonkey's planning page.
=Design=
=Development=
*Tracking BugOpen bugs: [https://bugzilla.mozilla.org/show_bugbuglist.cgi?idcomponent=650180 Bug 650180JavaScript%20Engine%3A%20JIT&product=Core&bug_status=__open__&list_id=13273018 link]
*Source code: [http://hg.mozilla.org/mozilla-central/file/tip/js/src/jit http://hg.mozilla.org/mozilla-central/file/tip/js/src/jit]
Currently, IonMonkey is enabled by default for those processor architectures it supports. Use '--disable-ion' to disable it.
 
=Contributing to IonMonkey=
 
IonMonkey can always get improved in various ways.
* Opening bugs about performance issues and reporting regressions
* Implementing new optimization passes
* Improving existing optimizations passes
* Improving the documentation on this wiki
 
The bug list of [https://bugzilla.mozilla.org/buglist.cgi?component=JavaScript%20Engine%3A%20JIT&product=Core&bug_status=__open__&list_id=13273018 open bugs] is quite huge and range from small changes to big feature requests. As a start one can look at the [https://bugzilla.mozilla.org/buglist.cgi?list_id=13273032&o1=isnotempty&f1=bug_mentor&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&component=JavaScript%20Engine%3A%20JIT&product=Core list of bugs which has mentor].
 
If you got any questions, please hop on [http://chat.mibbit.com/?server=irc.mozilla.org&channel=%23ionmonkey #ionmonkey] or [http://chat.mibbit.com/?server=irc.mozilla.org&channel=%23jsapi #jsapi] and we will gladly help out.
=Debugging=
A few tools exist to help debug IonMonkey.
*Debug spew, controlled by the environment variable <tt>IONFLAGS</tt>. Set it to <tt>help</tt> to see available options.
*Instruction spew, via setting the environment variable <tt>JMFLAGS</tt> to <tt>insns</tt>.
*[http://java.net/projects/c1visualizer/ c1visualizer] IonMonkey writes a spew file to <tt>/tmp/ion.cfg</tt>, which can be imported into the c1visualizer. It can display a clickable control-flow graph, MIR, LIR, and liveness intervals for LSRA.
*[https://github.com/sstangl/iongraph iongraph] by Sean Stangl, using IonMonkey's JSON spew.
*Some gdb tricks related to IonMonkey are listed on the [https://developer.mozilla.org/en-US/docs/SpiderMonkey/Hacking_Tips Hacking Tips page] of spider monkey.
Confirm
24
edits

Navigation menu