Bug 1557928 - Replace several functions with a single general function r=jonco

Differential Revision: https://phabricator.services.mozilla.com/D34675

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Paul Bone 2019-06-13 01:11:54 +00:00
parent 314393ad7b
commit dfeb403149
4 changed files with 15 additions and 40 deletions

View File

@ -37,14 +37,6 @@ struct ClearEdgesTracer final : public JS::CallbackTracer {
void onChild(const JS::GCCellPtr& thing) override;
};
#ifdef DEBUG
inline bool IsClearEdgesTracer(JSTracer* trc) {
return trc->isCallbackTracer() &&
trc->asCallbackTracer()->getTracerKind() ==
JS::CallbackTracer::TracerKind::ClearEdges;
}
#endif
} // namespace gc
/*

View File

@ -150,9 +150,9 @@ static inline bool IsThingPoisoned(T* thing) {
return false;
}
static bool IsMovingTracer(JSTracer* trc) {
return trc->isCallbackTracer() && trc->asCallbackTracer()->getTracerKind() ==
JS::CallbackTracer::TracerKind::Moving;
bool js::IsTracerKind(JSTracer* trc, JS::CallbackTracer::TracerKind kind) {
return trc->isCallbackTracer() &&
trc->asCallbackTracer()->getTracerKind() == kind;
}
#endif
@ -202,7 +202,8 @@ void js::CheckTracedThing(JSTracer* trc, T* thing) {
return;
}
MOZ_ASSERT_IF(!IsMovingTracer(trc) && !trc->isTenuringTracer(),
MOZ_ASSERT_IF(!IsTracerKind(trc, JS::CallbackTracer::TracerKind::Moving) &&
!trc->isTenuringTracer(),
!IsForwarded(thing));
/*
@ -216,8 +217,9 @@ void js::CheckTracedThing(JSTracer* trc, T* thing) {
Zone* zone = thing->zoneFromAnyThread();
JSRuntime* rt = trc->runtime();
if (!IsMovingTracer(trc) && !IsBufferGrayRootsTracer(trc) &&
!IsClearEdgesTracer(trc)) {
if (!IsTracerKind(trc, JS::CallbackTracer::TracerKind::Moving) &&
!IsTracerKind(trc, JS::CallbackTracer::TracerKind::GrayBuffering) &&
!IsTracerKind(trc, JS::CallbackTracer::TracerKind::ClearEdges)) {
MOZ_ASSERT(CurrentThreadCanAccessZone(zone));
MOZ_ASSERT(CurrentThreadCanAccessRuntime(rt));
}
@ -234,9 +236,12 @@ void js::CheckTracedThing(JSTracer* trc, T* thing) {
bool isGcMarkingTracer = trc->isMarkingTracer();
MOZ_ASSERT_IF(zone->requireGCTracer(),
isGcMarkingTracer || IsBufferGrayRootsTracer(trc) ||
IsUnmarkGrayTracer(trc) || IsClearEdgesTracer(trc));
MOZ_ASSERT_IF(
zone->requireGCTracer(),
isGcMarkingTracer ||
IsTracerKind(trc, JS::CallbackTracer::TracerKind::GrayBuffering) ||
IsTracerKind(trc, JS::CallbackTracer::TracerKind::UnmarkGray) ||
IsTracerKind(trc, JS::CallbackTracer::TracerKind::ClearEdges));
if (isGcMarkingTracer) {
GCMarker* gcMarker = GCMarker::fromTracer(trc);
@ -3599,14 +3604,6 @@ void UnmarkGrayTracer::unmark(JS::GCCellPtr cell) {
}
}
#ifdef DEBUG
bool js::IsUnmarkGrayTracer(JSTracer* trc) {
return trc->isCallbackTracer() &&
trc->asCallbackTracer()->getTracerKind() ==
JS::CallbackTracer::TracerKind::UnmarkGray;
}
#endif
static bool UnmarkGrayGCThing(JSRuntime* rt, JS::GCCellPtr thing) {
MOZ_ASSERT(thing);
MOZ_ASSERT(thing.asCell()->isMarkedGray());

View File

@ -33,11 +33,7 @@ class JitCode;
} // namespace jit
#ifdef DEBUG
// Return true if this trace is happening on behalf of gray buffering during
// the marking phase of incremental GC.
bool IsBufferGrayRootsTracer(JSTracer* trc);
bool IsUnmarkGrayTracer(JSTracer* trc);
bool IsTracerKind(JSTracer* trc, JS::CallbackTracer::TracerKind kind);
#endif
namespace gc {

View File

@ -491,16 +491,6 @@ class BufferGrayRootsTracer final : public JS::CallbackTracer {
#endif
};
#ifdef DEBUG
// Return true if this trace is happening on behalf of gray buffering during
// the marking phase of incremental GC.
bool js::IsBufferGrayRootsTracer(JSTracer* trc) {
return trc->isCallbackTracer() &&
trc->asCallbackTracer()->getTracerKind() ==
JS::CallbackTracer::TracerKind::GrayBuffering;
}
#endif
void js::gc::GCRuntime::bufferGrayRoots() {
// Precondition: the state has been reset to "unused" after the last GC
// and the zone's buffers have been cleared.