зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1207696 Part 5b - Don't keep track of times or page fault counts in GC and helper thread activity when recording or replaying, r=sfink.
--HG-- extra : rebase_source : 897096957775d13057ccc40bd5f0039e612ee97e
This commit is contained in:
Родитель
049bcdf766
Коммит
3ab7e5456e
|
@ -286,6 +286,9 @@ FindExceptionStackForConsoleReport(nsPIDOMWindowInner* win,
|
|||
static PRTime
|
||||
GetCollectionTimeDelta()
|
||||
{
|
||||
if (recordreplay::IsRecordingOrReplaying()) {
|
||||
return 0;
|
||||
}
|
||||
PRTime now = PR_Now();
|
||||
if (sFirstCollectionTime) {
|
||||
return now - sFirstCollectionTime;
|
||||
|
|
|
@ -6766,7 +6766,7 @@ GCRuntime::finishCollection()
|
|||
marker.stop();
|
||||
clearBufferedGrayRoots();
|
||||
|
||||
auto currentTime = mozilla::TimeStamp::Now();
|
||||
auto currentTime = ReallyNow();
|
||||
schedulingState.updateHighFrequencyMode(lastGCTime, currentTime, tunables);
|
||||
|
||||
for (ZonesIter zone(rt, WithAtoms); !zone.done(); zone.next()) {
|
||||
|
|
|
@ -286,6 +286,8 @@ MarkPagesInUse(void* p, size_t size)
|
|||
size_t
|
||||
GetPageFaultCount()
|
||||
{
|
||||
if (mozilla::recordreplay::IsRecordingOrReplaying())
|
||||
return 0;
|
||||
PROCESS_MEMORY_COUNTERS pmc;
|
||||
if (!GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc)))
|
||||
return 0;
|
||||
|
@ -813,6 +815,8 @@ MarkPagesInUse(void* p, size_t size)
|
|||
size_t
|
||||
GetPageFaultCount()
|
||||
{
|
||||
if (mozilla::recordreplay::IsRecordingOrReplaying())
|
||||
return 0;
|
||||
struct rusage usage;
|
||||
int err = getrusage(RUSAGE_SELF, &usage);
|
||||
if (err)
|
||||
|
|
|
@ -669,13 +669,13 @@ js::Nursery::maybeClearProfileDurations()
|
|||
inline void
|
||||
js::Nursery::startProfile(ProfileKey key)
|
||||
{
|
||||
startTimes_[key] = TimeStamp::Now();
|
||||
startTimes_[key] = ReallyNow();
|
||||
}
|
||||
|
||||
inline void
|
||||
js::Nursery::endProfile(ProfileKey key)
|
||||
{
|
||||
profileDurations_[key] = TimeStamp::Now() - startTimes_[key];
|
||||
profileDurations_[key] = ReallyNow() - startTimes_[key];
|
||||
totalDurations_[key] += profileDurations_[key];
|
||||
}
|
||||
|
||||
|
|
|
@ -1051,7 +1051,7 @@ Statistics::beginSlice(const ZoneGCStats& zoneStats, JSGCInvocationKind gckind,
|
|||
|
||||
if (!slices_.emplaceBack(budget,
|
||||
reason,
|
||||
TimeStamp::Now(),
|
||||
ReallyNow(),
|
||||
GetPageFaultCount(),
|
||||
runtime->gc.state()))
|
||||
{
|
||||
|
@ -1083,7 +1083,7 @@ Statistics::endSlice()
|
|||
|
||||
if (!aborted) {
|
||||
auto& slice = slices_.back();
|
||||
slice.end = TimeStamp::Now();
|
||||
slice.end = ReallyNow();
|
||||
slice.endFaults = GetPageFaultCount();
|
||||
slice.finalState = runtime->gc.state();
|
||||
|
||||
|
@ -1246,7 +1246,7 @@ Statistics::resumePhases()
|
|||
{
|
||||
Phase resumePhase = suspendedPhases.popCopy();
|
||||
if (resumePhase == Phase::MUTATOR)
|
||||
timedGCTime += TimeStamp::Now() - timedGCStart;
|
||||
timedGCTime += ReallyNow() - timedGCStart;
|
||||
recordPhaseBegin(resumePhase);
|
||||
}
|
||||
}
|
||||
|
@ -1277,7 +1277,7 @@ Statistics::recordPhaseBegin(Phase phase)
|
|||
Phase current = currentPhase();
|
||||
MOZ_ASSERT(phases[phase].parent == current);
|
||||
|
||||
TimeStamp now = TimeStamp::Now();
|
||||
TimeStamp now = ReallyNow();
|
||||
|
||||
if (current != Phase::NONE) {
|
||||
MOZ_ASSERT(now >= phaseStartTimes[currentPhase()], "Inconsistent time data; see bug 1400153");
|
||||
|
@ -1299,7 +1299,7 @@ Statistics::recordPhaseEnd(Phase phase)
|
|||
|
||||
MOZ_ASSERT(phaseStartTimes[phase]);
|
||||
|
||||
TimeStamp now = TimeStamp::Now();
|
||||
TimeStamp now = ReallyNow();
|
||||
|
||||
// Make sure this phase ends after it starts.
|
||||
MOZ_ASSERT(now >= phaseStartTimes[phase], "Inconsistent time data; see bug 1400153");
|
||||
|
@ -1383,7 +1383,7 @@ Statistics::recordParallelPhase(PhaseKind phaseKind, TimeDuration duration)
|
|||
TimeStamp
|
||||
Statistics::beginSCC()
|
||||
{
|
||||
return TimeStamp::Now();
|
||||
return ReallyNow();
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1392,7 +1392,7 @@ Statistics::endSCC(unsigned scc, TimeStamp start)
|
|||
if (scc >= sccTimes.length() && !sccTimes.resize(scc + 1))
|
||||
return;
|
||||
|
||||
sccTimes[scc] += TimeStamp::Now() - start;
|
||||
sccTimes[scc] += ReallyNow() - start;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -1560,7 +1560,7 @@ js::GCParallelTask::runFromMainThread(JSRuntime* rt)
|
|||
{
|
||||
assertNotStarted();
|
||||
MOZ_ASSERT(js::CurrentThreadCanAccessRuntime(rt));
|
||||
TimeStamp timeStart = TimeStamp::Now();
|
||||
TimeStamp timeStart = ReallyNow();
|
||||
runTask();
|
||||
duration_ = TimeSince(timeStart);
|
||||
}
|
||||
|
@ -1575,7 +1575,7 @@ js::GCParallelTask::runFromHelperThread(AutoLockHelperThreadState& lock)
|
|||
|
||||
{
|
||||
AutoUnlockHelperThreadState parallelSection(lock);
|
||||
TimeStamp timeStart = TimeStamp::Now();
|
||||
TimeStamp timeStart = ReallyNow();
|
||||
runTask();
|
||||
duration_ = TimeSince(timeStart);
|
||||
}
|
||||
|
|
|
@ -132,6 +132,8 @@ PRMJ_FormatTime(char* buf, int buflen, const char* fmt, const PRMJTime* tm,
|
|||
static __inline uint64_t
|
||||
ReadTimestampCounter(void)
|
||||
{
|
||||
if (mozilla::recordreplay::IsRecordingOrReplaying())
|
||||
return 0;
|
||||
return __rdtsc();
|
||||
}
|
||||
|
||||
|
@ -140,6 +142,8 @@ ReadTimestampCounter(void)
|
|||
static __inline__ uint64_t
|
||||
ReadTimestampCounter(void)
|
||||
{
|
||||
if (mozilla::recordreplay::IsRecordingOrReplaying())
|
||||
return 0;
|
||||
uint64_t x;
|
||||
__asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
|
||||
return x;
|
||||
|
@ -150,6 +154,8 @@ ReadTimestampCounter(void)
|
|||
static __inline__ uint64_t
|
||||
ReadTimestampCounter(void)
|
||||
{
|
||||
if (mozilla::recordreplay::IsRecordingOrReplaying())
|
||||
return 0;
|
||||
unsigned hi, lo;
|
||||
__asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));
|
||||
return ( (uint64_t)lo)|( ((uint64_t)hi)<<32 );
|
||||
|
|
Загрузка…
Ссылка в новой задаче