JavaScript:ActionMonkey: Difference between revisions
(build info) |
|||
Line 15: | Line 15: | ||
* [http://www.cs.cornell.edu/Info/People/jgm/lang-based-security/ Information flow] VM support for better security models. | * [http://www.cs.cornell.edu/Info/People/jgm/lang-based-security/ Information flow] VM support for better security models. | ||
== | == Building ActionMonkey == | ||
All ActionMonkey work is happening in the http://hg.mozilla.org/actionmonkey and http://hg.mozilla.org/actionmonkey-tamarin [[Mercurial]] repositories. | All ActionMonkey work is happening in the http://hg.mozilla.org/actionmonkey and http://hg.mozilla.org/actionmonkey-tamarin [[Mercurial]] repositories. | ||
Line 31: | Line 31: | ||
You should be able to build a working JS shell, Firefox, or other app this way. If it doesn't work for you, please file a bug with "ActionMonkey" in the summary and assign it to <tt>jorendorff</tt>. | You should be able to build a working JS shell, Firefox, or other app this way. If it doesn't work for you, please file a bug with "ActionMonkey" in the summary and assign it to <tt>jorendorff</tt>. | ||
== Stage 0 == | == Stage 0 == |
Revision as of 16:35, 24 July 2007
ActionMonkey is the code-name for the project to integrate Tamarin and SpiderMonkey as part of Mozilla 2.
Want to help? Write to jason dot orendorff at gmail dot com. Or visit irc://irc.mozilla.org/jslang and say hi.
Goals
The goals are:
- Preservation (with necessary additions and as few deletions as possible) of jsapi.h.
- SpiderMonkey's thread safety and property tree integrated/reimplemented in Tamarin.
- Replacement of SpiderMonkey's decompiler with a better decompiler that can work with ABC.
- Replacement of SpiderMonkey's GC with Tamarin:MMgc, evolved as needed.
- Replacement of SpiderMonkey's interpreter by an evolved version of Tamarin's.
- Advanced JIT optimization for hot paths and untyped code, inspired by Trace Trees.
- Information flow VM support for better security models.
Building ActionMonkey
All ActionMonkey work is happening in the http://hg.mozilla.org/actionmonkey and http://hg.mozilla.org/actionmonkey-tamarin Mercurial repositories.
(These repositories are a hard hat area, one step removed from the primary mozilla-central repository. This is because we expect things will break intermittently. Also because some of the people working on this aren't CVS committers yet, myself included. -jorendorff)
How to build: Things work slightly differently in Mercurial land. You'll want to be familiar with building in CVS first. After you're comfortable with that, try this:
- Install Mercurial. (On Mac with MacPorts, sudo port install mercurial)
- Install Python 2.4 or later. (sudo port install python24)
- hg clone http://hg.mozilla.org/actionmonkey
- cd actionmonkey
- python client.py
- Then build as you normally would.
You should be able to build a working JS shell, Firefox, or other app this way. If it doesn't work for you, please file a bug with "ActionMonkey" in the summary and assign it to jorendorff.
Stage 0
Replace SpiderMonkey's GC with Tamarin's GC (MMgc). See JavaScript:ActionMonkey:Stage 0 Whiteboard.
Stage 1
Integrate SpiderMonkey more closely with MMgc.
- Make
MMgc::Mark()
call SpiderMonkeytrace()
methods. The plan is to add a per-page type tag to MMgc; this takes over the job of the type bits in SpiderMonkey'sGCThingFlags
.
- Get rid of js_GetGCThingFlags.
- The type bits: move to an MMgc page-level type tag. (Note: The cycle collector sneakily uses these, in nsXPConnect.cpp; it will be changed.)
- The
GCF_LOCK
bit: mainly replaced by allowing MMgc to scanrt->gcLocksHash
. There is also a string optimization that uses this bit. It's yet to be determined what to do about that. - The
GCF_MUTABLE
bit: move intoJSString
. - The
GCF_SYSTEM
bit: To be determined.
- Drop weak roots, newborns, and local root scopes (if they're not already gone in stage 0). These will be replaced by MMgc's conservative stack scanning.