Bug 716619 - Simplify GC probes (r=sfink)

This commit is contained in:
Bill McCloskey 2012-01-27 11:35:12 -08:00
parent 2e64659d2f
commit 50c8625072
3 changed files with 27 additions and 36 deletions

View File

@ -79,29 +79,29 @@
<!-- GC --> <!-- GC -->
<event symbol="EvtGCStart" value="1012" version="1" <event symbol="EvtGCStart" value="1012" version="1"
channel="MozillaChannel" level="win:Informational" channel="MozillaChannel" level="win:Informational"
template="CompartmentTemplate" task="Allocation" opcode="GCStart" template="BooleanTemplate" task="Allocation" opcode="GCStart"
keywords="SampleKeyword" message="$(string.SampleProvider.SampleEvent.message)"/> keywords="SampleKeyword" message="$(string.SampleProvider.SampleEvent.message)"/>
<event symbol="EvtGCEnd" value="1013" version="1" <event symbol="EvtGCEnd" value="1013" version="1"
channel="MozillaChannel" level="win:Informational" channel="MozillaChannel" level="win:Informational"
template="CompartmentTemplate" task="Allocation" opcode="GCEnd" template="BooleanTemplate" task="Allocation" opcode="GCEnd"
keywords="SampleKeyword" message="$(string.SampleProvider.SampleEvent.message)"/> keywords="SampleKeyword" message="$(string.SampleProvider.SampleEvent.message)"/>
<event symbol="EvtGCStartMarkPhase" value="1014" version="1" <event symbol="EvtGCStartMarkPhase" value="1014" version="1"
channel="MozillaChannel" level="win:Informational" channel="MozillaChannel" level="win:Informational"
template="CompartmentTemplate" task="Allocation" opcode="GCMarkStart" template="VoidTemplate" task="Allocation" opcode="GCMarkStart"
keywords="SampleKeyword" message="$(string.SampleProvider.SampleEvent.message)"/> keywords="SampleKeyword" message="$(string.SampleProvider.SampleEvent.message)"/>
<event symbol="EvtGCEndMarkPhase" value="1015" version="1" <event symbol="EvtGCEndMarkPhase" value="1015" version="1"
channel="MozillaChannel" level="win:Informational" channel="MozillaChannel" level="win:Informational"
template="CompartmentTemplate" task="Allocation" opcode="GCMarkEnd" template="VoidTemplate" task="Allocation" opcode="GCMarkEnd"
keywords="SampleKeyword" message="$(string.SampleProvider.SampleEvent.message)"/> keywords="SampleKeyword" message="$(string.SampleProvider.SampleEvent.message)"/>
<event symbol="EvtGCStartSweepPhase" value="1016" version="1" <event symbol="EvtGCStartSweepPhase" value="1016" version="1"
channel="MozillaChannel" level="win:Informational" channel="MozillaChannel" level="win:Informational"
template="CompartmentTemplate" task="Allocation" opcode="GCSweepStart" template="VoidTemplate" task="Allocation" opcode="GCSweepStart"
keywords="SampleKeyword" message="$(string.SampleProvider.SampleEvent.message)"/> keywords="SampleKeyword" message="$(string.SampleProvider.SampleEvent.message)"/>
<event symbol="EvtGCEndSweepPhase" value="1017" version="1" <event symbol="EvtGCEndSweepPhase" value="1017" version="1"
channel="MozillaChannel" level="win:Informational" channel="MozillaChannel" level="win:Informational"
template="CompartmentTemplate" task="Allocation" opcode="GCSweepEnd" template="VoidTemplate" task="Allocation" opcode="GCSweepEnd"
keywords="SampleKeyword" message="$(string.SampleProvider.SampleEvent.message)"/> keywords="SampleKeyword" message="$(string.SampleProvider.SampleEvent.message)"/>
<event symbol="EvtMemoryAcquire" value="1018" version="1" <event symbol="EvtMemoryAcquire" value="1018" version="1"
@ -231,8 +231,8 @@
<data name="Size" inType="win:Int64" outType="xs:long"/> <data name="Size" inType="win:Int64" outType="xs:long"/>
</template> </template>
<template tid="CompartmentTemplate"> <template tid="BooleanTemplate">
<data name="Compartment" inType="win:Int64" outType="xs:long"/> <data name="Boolean" inType="win:Boolean" outType="xs:boolean"/>
</template> </template>
<template tid="MemoryLocationTemplate"> <template tid="MemoryLocationTemplate">
@ -259,6 +259,9 @@
<data name="Int" inType="win:Int32" outType="xs:int"/> <data name="Int" inType="win:Int32" outType="xs:int"/>
</template> </template>
<template tid="VoidTemplate">
</template>
</templates> </templates>
</provider> </provider>
</events> </events>

View File

@ -206,7 +206,7 @@ Statistics::beginGC(JSCompartment *comp, gcreason::Reason reason)
triggerReason = reason; triggerReason = reason;
beginPhase(PHASE_GC); beginPhase(PHASE_GC);
Probes::GCStart(compartment); Probes::GCStart(!!compartment);
GCCrashData crashData; GCCrashData crashData;
crashData.isCompartment = !!compartment; crashData.isCompartment = !!compartment;
@ -283,7 +283,7 @@ Statistics::printStats()
void void
Statistics::endGC() Statistics::endGC()
{ {
Probes::GCEnd(compartment); Probes::GCEnd(!!compartment);
endPhase(PHASE_GC); endPhase(PHASE_GC);
crash::SnapshotGCStack(); crash::SnapshotGCStack();
@ -315,16 +315,10 @@ Statistics::beginPhase(Phase phase)
{ {
phaseStarts[phase] = PRMJ_Now(); phaseStarts[phase] = PRMJ_Now();
if (phase == gcstats::PHASE_SWEEP) { if (phase == gcstats::PHASE_MARK)
Probes::GCStartSweepPhase(NULL); Probes::GCStartMarkPhase();
if (!compartment) { else if (phase == gcstats::PHASE_SWEEP)
for (JSCompartment **c = runtime->compartments.begin(); Probes::GCStartSweepPhase();
c != runtime->compartments.end(); ++c)
{
Probes::GCStartSweepPhase(*c);
}
}
}
} }
void void
@ -333,16 +327,10 @@ Statistics::endPhase(Phase phase)
phaseEnds[phase] = PRMJ_Now(); phaseEnds[phase] = PRMJ_Now();
phaseTimes[phase] += phaseEnds[phase] - phaseStarts[phase]; phaseTimes[phase] += phaseEnds[phase] - phaseStarts[phase];
if (phase == gcstats::PHASE_SWEEP) { if (phase == gcstats::PHASE_MARK)
if (!compartment) { Probes::GCEndMarkPhase();
for (JSCompartment **c = runtime->compartments.begin(); else if (phase == gcstats::PHASE_SWEEP)
c != runtime->compartments.end(); ++c) Probes::GCEndSweepPhase();
{
Probes::GCEndSweepPhase(*c);
}
}
Probes::GCEndSweepPhase(NULL);
}
} }
} /* namespace gcstats */ } /* namespace gcstats */

View File

@ -197,14 +197,14 @@ bool releaseMemory(JSContext *cx, void *address, size_t nbytes);
* Multiple compartments' GC will be interleaved during a global collection * Multiple compartments' GC will be interleaved during a global collection
* (eg, compartment 1 starts, compartment 2 starts, compartment 1 ends, ...) * (eg, compartment 1 starts, compartment 2 starts, compartment 1 ends, ...)
*/ */
bool GCStart(JSCompartment *compartment); bool GCStart(bool isFull);
bool GCEnd(JSCompartment *compartment); bool GCEnd(bool isFull);
bool GCStartMarkPhase(JSCompartment *compartment); bool GCStartMarkPhase();
bool GCEndMarkPhase(JSCompartment *compartment); bool GCEndMarkPhase();
bool GCStartSweepPhase(JSCompartment *compartment); bool GCStartSweepPhase();
bool GCEndSweepPhase(JSCompartment *compartment); bool GCEndSweepPhase();
/* /*
* Various APIs for inserting custom probe points. These might be used to mark * Various APIs for inserting custom probe points. These might be used to mark