JavaScript:SpiderMonkey:GC Futures: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
Line 6: Line 6:
* Speed up collector
* Speed up collector
* Remove byte flag per thing design
* Remove byte flag per thing design
  * Bad cache effects of flags and things allocated from opposite ends of same arena
** Bad cache effects of flags and things allocated from opposite ends of same arena
  * Don't want generality of different thing-types allocated from same size class
** Don't want generality of different thing-types allocated from same size class
    * Can put finalizer or other index/info in the pool, not in each flag's low bits
*** Can put finalizer or other index/info in the pool, not in each flag's low bits
    * Compress flags to mark bit in bitmap?
*** Compress flags to mark bit in bitmap?
* Add new JNI-like (handles, "clothed" not "naked") global rooting API
* Add new JNI-like (handles, "clothed" not "naked") global rooting API
* Make old JS global rooting API be #ifdef JS_NAKED_GC_ROOTS (enabled at first)
* Make old JS global rooting API be #ifdef JS_NAKED_GC_ROOTS (enabled at first)

Revision as of 18:19, 16 July 2009

JS GC Futures

Brain-dump of work items:

  • Speed up allocator
  • Speed up collector
  • Remove byte flag per thing design
    • Bad cache effects of flags and things allocated from opposite ends of same arena
    • Don't want generality of different thing-types allocated from same size class
      • Can put finalizer or other index/info in the pool, not in each flag's low bits
      • Compress flags to mark bit in bitmap?
  • Add new JNI-like (handles, "clothed" not "naked") global rooting API
  • Make old JS global rooting API be #ifdef JS_NAKED_GC_ROOTS (enabled at first)
  • Convert mozilla-central to use new global rooting API
  • Disable JS_NAKED_GC_ROOTS
  • Write barrier for all code including JITted code
  • Write barrier in API
  • Fast generational copying allocation and collection