52
edits
(→Plans) |
(Mark as Outdated) |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{OutdatedSpiderMonkey}} | |||
== JS GC Futures == | == JS GC Futures == | ||
Line 58: | Line 60: | ||
|- | |- | ||
| Compartmentalize Gecko | | Compartmentalize Gecko | ||
| | | 3 | ||
| jorendorff | | jorendorff | ||
|- | |- | ||
Line 67: | Line 69: | ||
| MT wrappers | | MT wrappers | ||
| 3 | | 3 | ||
| | | gal | ||
|- | |- | ||
| Lock-free allocation and slot access | | Lock-free allocation and slot access | ||
| 1 | | 1 | ||
| | | gal | ||
|- | |- | ||
| Compartmental GC | | Compartmental GC | ||
Line 171: | Line 173: | ||
'''Wrapper API.''' Since the cross-compartment reference from a wrapper to the wrappee is so special, we will need API for it. TBD. | '''Wrapper API.''' Since the cross-compartment reference from a wrapper to the wrappee is so special, we will need API for it. TBD. | ||
== Emerging Invariants == | |||
This section describes invariants and rules which have emerged during initial development of the conservative GC and the compartments code. They are not likely to change, but still may. | |||
* The C stack is not scanned for GC roots when there are no contexts (suspended or otherwise) in requests on a given thread | |||
* When doing a single-compartment GC, only the current thread's stack is scanned (unless there are no contexts in requests on that thread) | |||
* A context's compartment is equal to JS_GetScopeChain(cx)->getCompartment. A NULL scope chain indicates the default compartment. | |||
* Corollary: All non-default compartments have at least a global object. | |||
* Only one thread per compartment may be in a request at any given time |
edits