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:
Brian Hackett 2018-07-23 14:35:53 +00:00
Родитель 049bcdf766
Коммит 3ab7e5456e
7 изменённых файлов: 25 добавлений и 12 удалений

Просмотреть файл

@ -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 );