IonMonkey: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
(Mark as Outdated)
 
(5 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{OutdatedSpiderMonkey}}
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.
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=
=Design=
Line 11: Line 9:
=Development=
=Development=


*Source code: [http://hg.mozilla.org/projects/ionmonkey http://hg.mozilla.org/projects/ionmonkey]
*Open bugs: [https://bugzilla.mozilla.org/buglist.cgi?component=JavaScript%20Engine%3A%20JIT&product=Core&bug_status=__open__&list_id=13273018 link]
*TBPL: [http://tbpl.mozilla.org/?tree=Ionmonkey http://tbpl.mozilla.org/?tree=Ionmonkey]
*Source code: [http://hg.mozilla.org/mozilla-central/file/tip/js/src/jit http://hg.mozilla.org/mozilla-central/file/tip/js/src/jit]


To get started, see the [https://developer.mozilla.org/En/SpiderMonkey/Build_Documentation Build Documentation for SpiderMonkey]. Use the '-h' shell option to see all of IonMonkey's options.
To get started, see the [https://developer.mozilla.org/En/SpiderMonkey/Build_Documentation Build Documentation for SpiderMonkey]. Use the '-h' shell option to see all of IonMonkey's options.


Currently, IonMonkey is disabled by default. Use '--ion' to enable it.
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=
=Debugging=
Line 22: Line 32:
A few tools exist to help debug IonMonkey.
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.
*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.
*[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.
*[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.

Latest revision as of 21:16, 27 April 2021

Ambox outdated.png THIS PAGE IS OBSOLETE
This article is in parts, or in its entirety, outdated. Hence, the information presented on this page may be incorrect, and should be treated with due caution. Visit SpiderMonkey.dev for more up to date information.

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.

Design

See IonMonkey/Overview for an overview of the IonMonkey architecture and its files.

Development

To get started, see the Build Documentation for SpiderMonkey. Use the '-h' shell option to see all of IonMonkey's options.

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 open bugs is quite huge and range from small changes to big feature requests. As a start one can look at the list of bugs which has mentor.

If you got any questions, please hop on #ionmonkey or #jsapi and we will gladly help out.

Debugging

A few tools exist to help debug IonMonkey.

  • Debug spew, controlled by the environment variable IONFLAGS. Set it to help to see available options.
  • c1visualizer IonMonkey writes a spew file to /tmp/ion.cfg, which can be imported into the c1visualizer. It can display a clickable control-flow graph, MIR, LIR, and liveness intervals for LSRA.
  • iongraph by Sean Stangl, using IonMonkey's JSON spew.
  • Some gdb tricks related to IonMonkey are listed on the Hacking Tips page of spider monkey.