author Nicholas D. Matsakis <>
Tue, 06 Nov 2012 22:32:01 -0500
changeset 120446 651dc9d52259884f7c3924334581530a85fa2dcb
parent 64423 41a7fb6cb4f95efcc9e84cc0caf970a4dc9cdd96
child 180415 d8f0dc8111097946f21bd3484d925cbba66c9bd9
permissions -rw-r--r--
Bug 807480 - Add Rooted<T> roots to PerThread state. r=luke Currently there are a number of global fields in JSRuntime* which are basically tracking per-thread state. This makes sense on the current trunk since there is only ever a single thread associated with a runtime, but as Parallel JS (nee Rivertrail) starts to land this assumption no longer holds. This patch makes a struct, currently called |JS::PerThreadData|, that stores per-thread data from the runtime. There is one instance of this struct embedded in "Runtime" itself (the field |mainThread|). For now I have only migrated the debug GC fields into |PerThread|, those are the ones causing me immediate pain. Eventually more fields will want to move into there. The eventual goal is to distinguish thread-safe code, which will take as argument a |JS::PerThread*|, from non-thread-safe code, which will take a |JSRuntime*| or |JSContext*|.

An explanation of the Mozilla Source Code Directory Structure and links to
project pages with documentation can be found at:

For information on how to build Mozilla from the source code, see:

To have your bug fix / feature added to Mozilla, you should create a patch and
submit it to Bugzilla ( Instructions are at:

If you have a question about developing Mozilla, and can't find the solution
on, you can try asking your question in a
mozilla.* Usenet group, or on IRC at [The Mozilla news groups
are accessible on Google Groups, or with a NNTP reader.]

You can download nightly development builds from the Mozilla FTP server.
Keep in mind that nightly builds, which are used by Mozilla developers for
testing, may be buggy. Firefox nightlies, for example, can be found at:
            - or -