Closed Bug 663598 Opened 13 years ago Closed 13 years ago

javascript.options.mem.log says "full" for "compartment" gc

Categories

(Core :: JavaScript Engine, defect)

defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 677079

People

(Reporter: luke, Unassigned)

Details

Pretty simple bug: DOMGCCallback checks cx->runtime->gcTriggerCompartment == NULL to determine "compartment" or "full", but this field gets set to NULL early in MarkAndSweep.
I don't know the correct canonical state to indicate compartmental vs. full gc; perhaps some gc-knowing folk care to fix this?
The right way to check is via rt->gcCurrentCompartment. This holds the right compartment if we perform a per-compartment GC.
I'm not sure rt->gcCurrentCompartment will work either. It's only set during GCCycle. It looks like DOMGCCallback is called from js_GC, so rt->gcCurrentCompartment is NULL then.

I don't think we get any kind of "assertion safety" from the fact that rt->gcCurrentCompartment is NULL outside of GCCycle, since NULL is a valid value for it (it means we're doing a full GC). So we might as well just not set it to NULL at the end of GCCycle and take out the assertion that it's NULL at the beginning.

Regardless, gcTriggerCompartment is definitely wrong.
Any new simple way to return the correct "compartment" vs. "full" ?
I guess once bug 677411 lands we can pull the info out of there.
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.