mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-27 04:05:32 +00:00
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:
parent
314393ad7b
commit
dfeb403149
@ -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
|
||||
|
||||
/*
|
||||
|
@ -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());
|
||||
|
@ -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 {
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user