Closed Bug 1156552 Opened 9 years ago Closed 9 years ago

Out-of-line BaseShape tracing

Categories

(Core :: JavaScript: GC, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla40
Tracking Status
firefox40 --- fixed

People

(Reporter: terrence, Assigned: terrence)

References

Details

Attachments

(1 file)

BaseShapes are the 3rd least frequently called marker, and they don't recurse, so there is no need to have 2 copies for performance.
Attachment #8595026 - Flags: review?(sphink)
Comment on attachment 8595026 [details] [diff] [review]
10.2_outofline_baseshape_tracing-v0.diff

Review of attachment 8595026 [details] [diff] [review]:
-----------------------------------------------------------------

::: js/src/gc/Marking.cpp
@@ -1064,5 @@
> -GCMarker::eagerlyMarkChildren(BaseShape* base)
> -{
> -    base->assertConsistency();
> -
> -    base->compartment()->mark();

What was this for, and why is it no longer necessary?
Attachment #8595026 - Flags: review?(sphink) → review+
Good catch! I've no idea what it's for, but other types seem to have it as well. In particular, JSScript::traceChildren has an |if (trc->isGCMarker()) compartment()->mark()|, so I've added that pattern here as well.
(In reply to Terrence Cole [:terrence] from comment #2)
Looks like it's for working out which compartments in a zone are still live in GCRuntime::sweepZones() and Zone::sweepCompartments().
https://hg.mozilla.org/mozilla-central/rev/a7ad947cdcb7
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla40
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: