Tamarin:WeeklyUpdates: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
Line 12: Line 12:




= 11th December 2007 =
= 18th December 2007 =


== Attendees ==
== Attendees ==


* brendan
* Marsha
* bsmedberg
* Brett
* ed
* Ed
* erik t
* Steven
* jorendorff
* Brendan
* lars
* Moh
* marcia
* Benjamin
* markh
* Andreas Gal
* moh
* Dan Schaffer
* rick r
* Jeff
* seo
 
* steven j
== tamarin-tracing ==
 
* Adobe will push later today a branch of the code in tamarin-central (T-C), which introduces a trace-based just-in-time compiler.
* Research (www.ics.uci.edu/~franz/Site/pubs-pdf/ICS-TR-07-10.pdf) and experience with Tamarin indicate that tracing provides significant size and performance advantages over traditional static JIT compilers, especially when executing untyped JavaScript.
 
* The new code will reside in a repository at:
 
  http://hg.mozilla.org/tamarin-tracing
 
* Tamarin-tracing (T-T) shares a common root with T-C and so the complete history of changes is recorded. Fixes from both branches will be merged to the other over time.
* T-T is currently optimized to run effectively on mobile devices. As such, its performance characteristics favor memory efficiency over speed.
* Not API compatible with T-C
* Calls to builtins can be optimized by rewriting builtins in interpreted (trace-able) byte code. This also leads to smaller object files
* The interpreter is and indirect threading Forth engine.


== Status ==
== Status ==


'''Moh'''
'''Mark H'''
* call graph in VTune working.
* Q. How different are the APIs? A. Pretty different. They are not compatible, but the builts have already been ported, and you'll only need to port you own host objects.
* waiting for mgmt decision on VTune availability, possibly via [http://whatif.intel.com/ whatif.intel.com]
 
* will look into adding JavaGrande to the VTune-profiled tests
* Shouldn't be too bad then.
 
* ChessApp working a bit better. JScript can call Tamarin and vice-versa. This allows workaround of missing event handling across engines since JScript event handlers can call Tamarin functions. Close to having Tamarin move chess pieces around the board.
 
'''Benjamin'''
 
* From earlier email:
 
Just a note: I'm working on a project to add valgrind memory annotations to
MMgc. This will allow valgrind to note improper use of GC memory.
 
The first step is quite simple: it will use the valgrind client requests
described at
http://valgrind.org/docs/manual/mc-manual.html#mc-manual.clientreqs to
declare freed memory as unaccessable.
 
The second step will be to check memory overruns (writes of multiple GC
allocations from a single call).


'''Marsha'''
The third step will be a warning system for correct incremental marking. If
* filed https://bugzilla.mozilla.org/show_bug.cgi?id=407046
you write a pointer-like value to GC memory without using a write barrier,
* also looking for comments on PowerPoint draft showing VTune profiling results, preliminary, mailing around for review
it will warn. This has to be a conservative warning, of course.
* looking at slide 3, vtune barchart of alioth debian shootout benchmarks
* question about debugger support costs reading too high
* Ed: should be possible to build in release mode but enable the right opcodes to build address maps for vtune
* Goal is to have a "Release VTune" configuration
* Markh asked about debug penalty, but needs that to get exception detail otherwise missing
* Brendan says a Tamarin in Firefox must have good exception details, source images in ReferenceError diagnostics, etc.
* Ed suggests starting from Release Debugger and optimizing hard
* Brendan points to ESC involvement, JS debugger APIs used by Firebug -- lots to do (will file bugs)


'''Markh'''
I hope to have step I done by the first week of January.
* implementing IDispatch in ScreamingMonkey Tamarin glue
* questions:
** use of MI and templates, specifically some GCRoot inheritors
** Hashtables for managed memory: GCHashtable, avmplus::Hashtable
** Also avmplus::List
* ScreamingMonkey status: plugging away, nothing much to expect till after Christmas


'''Seo'''
- --BDS
* working on CIL decompiler, [http://groups.google.com/group/mono-cecil/browse_thread/thread/b43296d0cb0e93f0 sent] patches upstream
* exception issue from last week? no open issue
* [http://www.iunknown.com/2007/11/dlr-hosting-spe.html DLR hosting spec], looks ok


'''Jason'''
'''Jason'''
* chasing down GC bugs, progressively better, still crashing -- more to do on js/src side
* js/src/xpconnect/tests/js/old/threads.js broke some time over the years, due most recently to thread manager API change
* after fixing that, still having problems with thread-unsafe xpcom objects finalized on wrong thread
* See the [https://bugzilla.mozilla.org/show_bug.cgi?id=407803 bug]


'''Rick'''
* Stage 1 (ActionMonkey) just about complete. Waiting for reviews. "maybegc" api done. 4 or 5 patches ready to land.
* JIT intermediate buffers are not shared across threads
 
* each Tamarin instance has its own buffer => big footprint
* Stage 2, incremental GC, is next
* synch using GC spinlock
 
* Brendan: might want lock-free (SpiderMonkey portable [http://lxr.mozilla.org/mozilla/source/js/src/jslock.c CAS])
'''Moh'''
 
* Profiled JSBench (http://gforge.ssllab.org/gf/project/jsbench/scmsvn/) from the UCI team. Shows one helper method (doubleToAtom) is responsible for ~46% of the time in one of the tests (Moldyn).
* Will study further to look for optimization opporunities


= Older meetings =
= Older meetings =

Revision as of 00:13, 19 December 2007

These updates concern Tamarin and related projects only.

Meeting Details

  • 2:00pm Pacific Time (21:00 UTC) on Tuesdays
    • (5PM Eastern US, 11PM Oslo, 6AM (Wed) Seoul, 7AM (Wed) Melbourne)
  • Meeting ID: 8262746 (TAMARIN)
    • California: 408-536-9900
    • Toll-Free(US & Canada): 877-220-5439
    • International: +1-408-536-9900
  • Duration: 60 minutes
  • join irc.mozilla.org #tamarin for attendence taking and questions


18th December 2007

Attendees

  • Marsha
  • Brett
  • Ed
  • Steven
  • Brendan
  • Moh
  • Benjamin
  • Andreas Gal
  • Dan Schaffer
  • Jeff

tamarin-tracing

  • Adobe will push later today a branch of the code in tamarin-central (T-C), which introduces a trace-based just-in-time compiler.
  • Research (www.ics.uci.edu/~franz/Site/pubs-pdf/ICS-TR-07-10.pdf) and experience with Tamarin indicate that tracing provides significant size and performance advantages over traditional static JIT compilers, especially when executing untyped JavaScript.
  • The new code will reside in a repository at:
 http://hg.mozilla.org/tamarin-tracing
  • Tamarin-tracing (T-T) shares a common root with T-C and so the complete history of changes is recorded. Fixes from both branches will be merged to the other over time.
  • T-T is currently optimized to run effectively on mobile devices. As such, its performance characteristics favor memory efficiency over speed.
  • Not API compatible with T-C
  • Calls to builtins can be optimized by rewriting builtins in interpreted (trace-able) byte code. This also leads to smaller object files
  • The interpreter is and indirect threading Forth engine.

Status

Mark H

  • Q. How different are the APIs? A. Pretty different. They are not compatible, but the builts have already been ported, and you'll only need to port you own host objects.
  • Shouldn't be too bad then.
  • ChessApp working a bit better. JScript can call Tamarin and vice-versa. This allows workaround of missing event handling across engines since JScript event handlers can call Tamarin functions. Close to having Tamarin move chess pieces around the board.

Benjamin

  • From earlier email:

Just a note: I'm working on a project to add valgrind memory annotations to MMgc. This will allow valgrind to note improper use of GC memory.

The first step is quite simple: it will use the valgrind client requests described at http://valgrind.org/docs/manual/mc-manual.html#mc-manual.clientreqs to declare freed memory as unaccessable.

The second step will be to check memory overruns (writes of multiple GC allocations from a single call).

The third step will be a warning system for correct incremental marking. If you write a pointer-like value to GC memory without using a write barrier, it will warn. This has to be a conservative warning, of course.

I hope to have step I done by the first week of January.

- --BDS

Jason

  • Stage 1 (ActionMonkey) just about complete. Waiting for reviews. "maybegc" api done. 4 or 5 patches ready to land.
  • Stage 2, incremental GC, is next

Moh

Older meetings