Closed
Bug 820422
Opened 13 years ago
Closed 13 years ago
GC: Store buffered gray roots per-compartment
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
RESOLVED
FIXED
mozilla20
People
(Reporter: jonco, Assigned: jonco)
References
Details
Attachments
(1 file, 1 obsolete file)
14.39 KB,
patch
|
billm
:
review+
|
Details | Diff | Splinter Review |
At the moment all the buffered gray roots are stored in the runtime. This means that we have to iterate through all of them when marking a particular compartment.
A quick look at the number of roots showed that most compartments have few (if any) and some have very many, so I think it makes sense to split them up and store them by compartment.
Assignee | ||
Comment 1•13 years ago
|
||
Assignee | ||
Updated•13 years ago
|
Assignee: general → jcoppeard
Assignee | ||
Comment 2•13 years ago
|
||
Updated patch, fixed a couple of minor issues.
Attachment #690912 -
Attachment is obsolete: true
Attachment #691307 -
Flags: review?(wmccloskey)
Comment on attachment 691307 [details] [diff] [review]
Proposed fix
Review of attachment 691307 [details] [diff] [review]:
-----------------------------------------------------------------
::: js/src/gc/RootMarking.cpp
@@ +798,5 @@
> }
> }
> +
> +void
> +js::gc::BufferGrayRoots(JSTracer *trc)
Can this take a GCMarker* instead of a JSTracer*?
::: js/src/jsgc.cpp
@@ +3556,5 @@
> JS_ASSERT_IF(lastGC, !rt->gcSweepOnBackgroundThread);
>
> JS_ASSERT(rt->gcMarker.isDrained());
> rt->gcMarker.stop();
> + rt->gcMarker.resetBufferedGrayRoots();
Could GCMarker::stop call resetBufferedGrayRoots? Then this call and the one below wouldn't be needed.
Attachment #691307 -
Flags: review?(wmccloskey) → review+
Assignee | ||
Comment 4•13 years ago
|
||
Comment 5•13 years ago
|
||
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla20
You need to log in
before you can comment on or make changes to this bug.
Description
•