diff --git a/js/src/jit/IonAnalysis.cpp b/js/src/jit/IonAnalysis.cpp index 3bb7ed4c28b8..278e9069945b 100644 --- a/js/src/jit/IonAnalysis.cpp +++ b/js/src/jit/IonAnalysis.cpp @@ -4486,7 +4486,7 @@ bool jit::AnalyzeArgumentsUsage(JSContext* cx, JSScript* scriptArg) { RootedScript script(cx, scriptArg); AutoEnterAnalysis enter(cx); - MOZ_ASSERT(!script->analyzedArgsUsage()); + MOZ_ASSERT(script->needsArgsAnalysis()); MOZ_ASSERT(script->argumentsHasVarBinding()); // Treat the script as needing an arguments object until we determine it diff --git a/js/src/jsfriendapi.cpp b/js/src/jsfriendapi.cpp index b885af6bb64c..f869142e2302 100644 --- a/js/src/jsfriendapi.cpp +++ b/js/src/jsfriendapi.cpp @@ -800,7 +800,7 @@ static bool FormatFrame(JSContext* cx, const FrameIter& iter, Sprinter& sp, arg = MagicValue(JS_OPTIMIZED_OUT); } } else if (iter.hasUsableAbstractFramePtr()) { - if (script->analyzedArgsUsage() && script->argsObjAliasesFormals() && + if (!script->needsArgsAnalysis() && script->argsObjAliasesFormals() && iter.hasArgsObj()) { arg = iter.argsObj().arg(i); } else { diff --git a/js/src/vm/EnvironmentObject.cpp b/js/src/vm/EnvironmentObject.cpp index 4b7b05f611dc..c834da5b2a87 100644 --- a/js/src/vm/EnvironmentObject.cpp +++ b/js/src/vm/EnvironmentObject.cpp @@ -2751,7 +2751,7 @@ void DebugEnvironments::takeFrameSnapshot( * Copy in formals that are not aliased via the scope chain * but are aliased via the arguments object. */ - if (script->analyzedArgsUsage() && script->needsArgsObj() && + if (!script->needsArgsAnalysis() && script->needsArgsObj() && frame.hasArgsObj()) { for (unsigned i = 0; i < frame.numFormalArgs(); ++i) { if (script->formalLivesInArgumentsObject(i)) { diff --git a/js/src/vm/JSScript-inl.h b/js/src/vm/JSScript-inl.h index b0c4a4413b68..e9ec4c470bdf 100644 --- a/js/src/vm/JSScript-inl.h +++ b/js/src/vm/JSScript-inl.h @@ -160,10 +160,10 @@ inline js::Shape* JSScript::initialEnvironmentShape() const { } inline bool JSScript::ensureHasAnalyzedArgsUsage(JSContext* cx) { - if (analyzedArgsUsage()) { - return true; + if (needsArgsAnalysis()) { + return js::jit::AnalyzeArgumentsUsage(cx, this); } - return js::jit::AnalyzeArgumentsUsage(cx, this); + return true; } inline bool JSScript::isDebuggee() const { diff --git a/js/src/vm/JSScript.cpp b/js/src/vm/JSScript.cpp index 7c3766861ca7..00d3a695bfdf 100644 --- a/js/src/vm/JSScript.cpp +++ b/js/src/vm/JSScript.cpp @@ -5303,7 +5303,7 @@ void js::SetFrameArgumentsObject(JSContext* cx, AbstractFramePtr frame, /* static */ void JSScript::argumentsOptimizationFailed(JSContext* cx, HandleScript script) { MOZ_ASSERT(script->isFunction()); - MOZ_ASSERT(script->analyzedArgsUsage()); + MOZ_ASSERT(!script->needsArgsAnalysis()); MOZ_ASSERT(script->argumentsHasVarBinding()); /* diff --git a/js/src/vm/JSScript.h b/js/src/vm/JSScript.h index c0e417dbacac..f55ab23ebf5a 100644 --- a/js/src/vm/JSScript.h +++ b/js/src/vm/JSScript.h @@ -2404,12 +2404,9 @@ class JSScript : public js::BaseScript { * maintain the invariant that needsArgsObj is only called after the script * has been analyzed. */ - bool analyzedArgsUsage() const { - return !hasFlag(MutableFlags::NeedsArgsAnalysis); - } inline bool ensureHasAnalyzedArgsUsage(JSContext* cx); bool needsArgsObj() const { - MOZ_ASSERT(analyzedArgsUsage()); + MOZ_ASSERT(!needsArgsAnalysis()); return hasFlag(MutableFlags::NeedsArgsObj); } void setNeedsArgsObj(bool needsArgsObj);