diff --git a/js/src/jsapi.cpp b/js/src/jsapi.cpp index e48e81d7ce9..83f9ce5692c 100644 --- a/js/src/jsapi.cpp +++ b/js/src/jsapi.cpp @@ -1549,7 +1549,7 @@ JS_TransplantObject(JSContext *cx, JSObject *origobjArg, JSObject *targetArg) * for that GC. Hence, we finish any ongoing incremental GC before the * transplant to avoid leaks. */ - if (cx->runtime->gcIncrementalState != NO_INCREMENTAL) { + if (IsIncrementalGCInProgress(cx->runtime)) { PrepareForIncrementalGC(cx->runtime); FinishIncrementalGC(cx->runtime, gcreason::TRANSPLANT); } diff --git a/js/src/jsfriendapi.cpp b/js/src/jsfriendapi.cpp index 5e5c94f4c77..6c59db392ab 100644 --- a/js/src/jsfriendapi.cpp +++ b/js/src/jsfriendapi.cpp @@ -127,7 +127,7 @@ js::PrepareForFullGC(JSRuntime *rt) JS_FRIEND_API(void) js::PrepareForIncrementalGC(JSRuntime *rt) { - if (rt->gcIncrementalState == gc::NO_INCREMENTAL) + if (!IsIncrementalGCInProgress(rt)) return; for (CompartmentsIter c(rt); !c.done(); c.next()) { @@ -795,7 +795,7 @@ NotifyDidPaint(JSRuntime *rt) return; } - if (rt->gcIncrementalState != gc::NO_INCREMENTAL && !rt->gcInterFrameGC) { + if (IsIncrementalGCInProgress(rt) && !rt->gcInterFrameGC) { PrepareForIncrementalGC(rt); GCSlice(rt, GC_NORMAL, gcreason::REFRESH_FRAME); } @@ -809,6 +809,12 @@ IsIncrementalGCEnabled(JSRuntime *rt) return rt->gcIncrementalEnabled && rt->gcMode == JSGC_MODE_INCREMENTAL; } +JS_FRIEND_API(bool) +IsIncrementalGCInProgress(JSRuntime *rt) +{ + return (rt->gcIncrementalState != gc::NO_INCREMENTAL && !rt->gcVerifyPreData); +} + extern JS_FRIEND_API(void) DisableIncrementalGC(JSRuntime *rt) { diff --git a/js/src/jsfriendapi.h b/js/src/jsfriendapi.h index 8780648560e..e2321092445 100644 --- a/js/src/jsfriendapi.h +++ b/js/src/jsfriendapi.h @@ -809,6 +809,9 @@ NotifyDidPaint(JSRuntime *rt); extern JS_FRIEND_API(bool) IsIncrementalGCEnabled(JSRuntime *rt); +JS_FRIEND_API(bool) +IsIncrementalGCInProgress(JSRuntime *rt); + extern JS_FRIEND_API(void) DisableIncrementalGC(JSRuntime *rt); diff --git a/js/src/jsscript.cpp b/js/src/jsscript.cpp index d1f760f11cd..81532ea7ec1 100644 --- a/js/src/jsscript.cpp +++ b/js/src/jsscript.cpp @@ -1339,7 +1339,7 @@ js::SaveScriptFilename(JSContext *cx, const char *filename) * scripts or exceptions pointing to the filename may no longer be * reachable. */ - if (rt->gcIncrementalState != NO_INCREMENTAL && rt->gcIsFull) + if (IsIncrementalGCInProgress(rt) && rt->gcIsFull) sfe->marked = true; #endif