JavaScript:ActionMonkey: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(link problems page)
(→‎Stage 0: add real plans)
Line 13: Line 13:
== Stage 0 ==
== Stage 0 ==


Work is happening here and in some sort of Mercurial repository.
Replace SpiderMonkey's GC with Tamarin's GC (MMgc).


* Identify [[JavaScript:ActionMonkey problems|potential problems]]
* Use MMgc in non-incremental mode to start with.  (It's easier.  Avoid premature optimization.)
* Either get SpiderMonkey to build as C++, or write a C wrapper for MMgc.
* Convince the SpiderMonkey and Tamarin build systems to cooperate.
* Examine the few places where SpiderMonkey is directly using malloc() and free().
* Align SpiderMonkey's jsval type and related macros with MMgc's Atom type.
* Align SpiderMonkey's notion of GC roots with MMgc's GCRoots.
* Replace SpiderMonkey's memory management routines with MMgc's.
 
At the end of this stage, the work will show up somewhere on hg.mozilla.org (TBD); for now jorendorff is working in a fork of hg.mozilla.org/mozilla-central.
 
[[JavaScript:ActionMonkey problems|potential problems]]


== Stage 1 ==
== Stage 1 ==


== Stage 2 ==
== Stage 2 ==

Revision as of 14:12, 23 June 2007

Intro

ActionMonkey is the code-name for the project to integrate Tamarin and SpiderMonkey as part of Mozilla 2. 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.

Stage 0

Replace SpiderMonkey's GC with Tamarin's GC (MMgc).

  • Use MMgc in non-incremental mode to start with. (It's easier. Avoid premature optimization.)
  • Either get SpiderMonkey to build as C++, or write a C wrapper for MMgc.
  • Convince the SpiderMonkey and Tamarin build systems to cooperate.
  • Examine the few places where SpiderMonkey is directly using malloc() and free().
  • Align SpiderMonkey's jsval type and related macros with MMgc's Atom type.
  • Align SpiderMonkey's notion of GC roots with MMgc's GCRoots.
  • Replace SpiderMonkey's memory management routines with MMgc's.

At the end of this stage, the work will show up somewhere on hg.mozilla.org (TBD); for now jorendorff is working in a fork of hg.mozilla.org/mozilla-central.

potential problems

Stage 1

Stage 2