зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1320408 - Part 2: Change JSFunction::getOrCreateScript to static method. r=jandem
This commit is contained in:
Родитель
6e4269027d
Коммит
a0d3730cfd
|
@ -1759,7 +1759,7 @@ js::intrinsic_GetElemBaseForLambda(JSContext* cx, unsigned argc, Value* vp)
|
|||
if (!fun->isInterpreted() || fun->isClassConstructor())
|
||||
return true;
|
||||
|
||||
JSScript* script = fun->getOrCreateScript(cx);
|
||||
JSScript* script = JSFunction::getOrCreateScript(cx, fun);
|
||||
if (!script)
|
||||
return false;
|
||||
|
||||
|
|
|
@ -3274,13 +3274,13 @@ ByteSizeOfScript(JSContext*cx, unsigned argc, Value* vp)
|
|||
return false;
|
||||
}
|
||||
|
||||
JSFunction* fun = &args[0].toObject().as<JSFunction>();
|
||||
RootedFunction fun(cx, &args[0].toObject().as<JSFunction>());
|
||||
if (fun->isNative()) {
|
||||
JS_ReportErrorASCII(cx, "Argument must be a scripted function");
|
||||
return false;
|
||||
}
|
||||
|
||||
RootedScript script(cx, fun->getOrCreateScript(cx));
|
||||
RootedScript script(cx, JSFunction::getOrCreateScript(cx, fun));
|
||||
if (!script)
|
||||
return false;
|
||||
|
||||
|
|
|
@ -286,7 +286,8 @@ BytecodeCompiler::deoptimizeArgumentsInEnclosingScripts(JSContext* cx, HandleObj
|
|||
RootedObject env(cx, environment);
|
||||
while (env->is<EnvironmentObject>() || env->is<DebugEnvironmentProxy>()) {
|
||||
if (env->is<CallObject>()) {
|
||||
RootedScript script(cx, env->as<CallObject>().callee().getOrCreateScript(cx));
|
||||
RootedFunction fun(cx, &env->as<CallObject>().callee());
|
||||
RootedScript script(cx, JSFunction::getOrCreateScript(cx, fun));
|
||||
if (!script)
|
||||
return false;
|
||||
if (script->argumentsHasVarBinding()) {
|
||||
|
|
|
@ -4115,7 +4115,7 @@ CmpInstructions(const void* a, const void* b)
|
|||
}
|
||||
|
||||
bool
|
||||
jit::AnalyzeNewScriptDefiniteProperties(JSContext* cx, JSFunction* fun,
|
||||
jit::AnalyzeNewScriptDefiniteProperties(JSContext* cx, HandleFunction fun,
|
||||
ObjectGroup* group, HandlePlainObject baseobj,
|
||||
Vector<TypeNewScript::Initializer>* initializerList)
|
||||
{
|
||||
|
@ -4125,7 +4125,7 @@ jit::AnalyzeNewScriptDefiniteProperties(JSContext* cx, JSFunction* fun,
|
|||
// which will definitely be added to the created object before it has a
|
||||
// chance to escape and be accessed elsewhere.
|
||||
|
||||
RootedScript script(cx, fun->getOrCreateScript(cx));
|
||||
RootedScript script(cx, JSFunction::getOrCreateScript(cx, fun));
|
||||
if (!script)
|
||||
return false;
|
||||
|
||||
|
|
|
@ -196,7 +196,7 @@ MCompare*
|
|||
ConvertLinearInequality(TempAllocator& alloc, MBasicBlock* block, const LinearSum& sum);
|
||||
|
||||
MOZ_MUST_USE bool
|
||||
AnalyzeNewScriptDefiniteProperties(JSContext* cx, JSFunction* fun,
|
||||
AnalyzeNewScriptDefiniteProperties(JSContext* cx, HandleFunction fun,
|
||||
ObjectGroup* group, HandlePlainObject baseobj,
|
||||
Vector<TypeNewScript::Initializer>* initializerList);
|
||||
|
||||
|
|
|
@ -467,7 +467,8 @@ IonBuilder::canInlineTarget(JSFunction* target, CallInfo& callInfo)
|
|||
// Allow constructing lazy scripts when performing the definite properties
|
||||
// analysis, as baseline has not been used to warm the caller up yet.
|
||||
if (target->isInterpreted() && info().analysisMode() == Analysis_DefiniteProperties) {
|
||||
RootedScript script(analysisContext, target->getOrCreateScript(analysisContext));
|
||||
RootedFunction fun(analysisContext, target);
|
||||
RootedScript script(analysisContext, JSFunction::getOrCreateScript(analysisContext, fun));
|
||||
if (!script)
|
||||
return InliningDecision_Error;
|
||||
|
||||
|
|
|
@ -560,7 +560,7 @@ CreateThis(JSContext* cx, HandleObject callee, HandleObject newTarget, MutableHa
|
|||
if (callee->is<JSFunction>()) {
|
||||
RootedFunction fun(cx, &callee->as<JSFunction>());
|
||||
if (fun->isInterpreted() && fun->isConstructor()) {
|
||||
JSScript* script = fun->getOrCreateScript(cx);
|
||||
JSScript* script = JSFunction::getOrCreateScript(cx, fun);
|
||||
if (!script || !script->ensureHasTypes(cx))
|
||||
return false;
|
||||
if (fun->isBoundFunction() || script->isDerivedClassConstructor()) {
|
||||
|
|
|
@ -646,7 +646,7 @@ BEGIN_TEST(test_JS_ubi_Node_scriptFilename)
|
|||
CHECK(obj->is<JSFunction>());
|
||||
JS::RootedFunction func(cx, &obj->as<JSFunction>());
|
||||
|
||||
JS::RootedScript script(cx, func->getOrCreateScript(cx));
|
||||
JS::RootedScript script(cx, JSFunction::getOrCreateScript(cx, func));
|
||||
CHECK(script);
|
||||
CHECK(script->filename());
|
||||
|
||||
|
|
|
@ -3529,7 +3529,7 @@ CloneFunctionObject(JSContext* cx, HandleObject funobj, HandleObject env, Handle
|
|||
RootedFunction fun(cx, &funobj->as<JSFunction>());
|
||||
if (fun->isInterpretedLazy()) {
|
||||
AutoCompartment ac(cx, funobj);
|
||||
if (!fun->getOrCreateScript(cx))
|
||||
if (!JSFunction::getOrCreateScript(cx, fun))
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -3561,7 +3561,7 @@ CloneFunctionObject(JSContext* cx, HandleObject funobj, HandleObject env, Handle
|
|||
// Fail here if we OOM during debug asserting.
|
||||
// CloneFunctionReuseScript will delazify the script anyways, so we
|
||||
// are not creating an extra failure condition for DEBUG builds.
|
||||
if (!fun->getOrCreateScript(cx))
|
||||
if (!JSFunction::getOrCreateScript(cx, fun))
|
||||
return nullptr;
|
||||
MOZ_ASSERT(scope->as<GlobalScope>().isSyntactic() ||
|
||||
fun->nonLazyScript()->hasNonSyntacticScope());
|
||||
|
@ -4216,7 +4216,7 @@ JS_GetFunctionScript(JSContext* cx, HandleFunction fun)
|
|||
return nullptr;
|
||||
if (fun->isInterpretedLazy()) {
|
||||
AutoCompartment funCompartment(cx, fun);
|
||||
JSScript* script = fun->getOrCreateScript(cx);
|
||||
JSScript* script = JSFunction::getOrCreateScript(cx, fun);
|
||||
if (!script)
|
||||
MOZ_CRASH();
|
||||
return script;
|
||||
|
|
|
@ -1712,11 +1712,11 @@ MatchNumericComparator(JSContext* cx, const Value& v)
|
|||
if (!obj.is<JSFunction>())
|
||||
return Match_None;
|
||||
|
||||
JSFunction* fun = &obj.as<JSFunction>();
|
||||
RootedFunction fun(cx, &obj.as<JSFunction>());
|
||||
if (!fun->isInterpreted() || fun->isClassConstructor())
|
||||
return Match_None;
|
||||
|
||||
JSScript* script = fun->getOrCreateScript(cx);
|
||||
JSScript* script = JSFunction::getOrCreateScript(cx, fun);
|
||||
if (!script)
|
||||
return Match_Failure;
|
||||
|
||||
|
|
|
@ -1052,18 +1052,18 @@ CreateLazyScriptsForCompartment(JSContext* cx)
|
|||
// Create scripts for each lazy function, updating the list of functions to
|
||||
// process with any newly exposed inner functions in created scripts.
|
||||
// A function cannot be delazified until its outer script exists.
|
||||
RootedFunction fun(cx);
|
||||
for (size_t i = 0; i < lazyFunctions.length(); i++) {
|
||||
JSFunction* fun = &lazyFunctions[i]->as<JSFunction>();
|
||||
fun = &lazyFunctions[i]->as<JSFunction>();
|
||||
|
||||
// lazyFunctions may have been populated with multiple functions for
|
||||
// a lazy script.
|
||||
if (!fun->isInterpretedLazy())
|
||||
continue;
|
||||
|
||||
LazyScript* lazy = fun->lazyScript();
|
||||
bool lazyScriptHadNoScript = !lazy->maybeScript();
|
||||
bool lazyScriptHadNoScript = !fun->lazyScript()->maybeScript();
|
||||
|
||||
JSScript* script = fun->getOrCreateScript(cx);
|
||||
JSScript* script = JSFunction::getOrCreateScript(cx, fun);
|
||||
if (!script)
|
||||
return false;
|
||||
if (lazyScriptHadNoScript && !AddInnerLazyFunctionsFromScript(script, lazyFunctions))
|
||||
|
|
|
@ -938,7 +938,7 @@ const Class* const js::FunctionClassPtr = &JSFunction::class_;
|
|||
JSString*
|
||||
js::FunctionToString(JSContext* cx, HandleFunction fun, bool prettyPrint)
|
||||
{
|
||||
if (fun->isInterpretedLazy() && !fun->getOrCreateScript(cx))
|
||||
if (fun->isInterpretedLazy() && !JSFunction::getOrCreateScript(cx, fun))
|
||||
return nullptr;
|
||||
|
||||
if (IsAsmJSModule(fun))
|
||||
|
@ -1273,7 +1273,7 @@ JSFunction::isDerivedClassConstructor()
|
|||
JSFunction::getLength(JSContext* cx, HandleFunction fun, uint16_t* length)
|
||||
{
|
||||
MOZ_ASSERT(!fun->isBoundFunction());
|
||||
if (fun->isInterpretedLazy() && !fun->getOrCreateScript(cx))
|
||||
if (fun->isInterpretedLazy() && !getOrCreateScript(cx, fun))
|
||||
return false;
|
||||
|
||||
*length = fun->hasScript() ? fun->nonLazyScript()->funLength()
|
||||
|
|
|
@ -404,16 +404,15 @@ class JSFunction : public js::NativeObject
|
|||
//
|
||||
// - For functions known to have a JSScript, nonLazyScript() will get it.
|
||||
|
||||
JSScript* getOrCreateScript(JSContext* cx) {
|
||||
MOZ_ASSERT(isInterpreted());
|
||||
static JSScript* getOrCreateScript(JSContext* cx, js::HandleFunction fun) {
|
||||
MOZ_ASSERT(fun->isInterpreted());
|
||||
MOZ_ASSERT(cx);
|
||||
if (isInterpretedLazy()) {
|
||||
JS::RootedFunction self(cx, this);
|
||||
if (!createScriptForLazilyInterpretedFunction(cx, self))
|
||||
if (fun->isInterpretedLazy()) {
|
||||
if (!createScriptForLazilyInterpretedFunction(cx, fun))
|
||||
return nullptr;
|
||||
return self->nonLazyScript();
|
||||
return fun->nonLazyScript();
|
||||
}
|
||||
return nonLazyScript();
|
||||
return fun->nonLazyScript();
|
||||
}
|
||||
|
||||
JSScript* existingScriptNonDelazifying() const {
|
||||
|
|
|
@ -88,7 +88,7 @@ CloneFunctionObjectIfNotSingleton(JSContext* cx, HandleFunction fun, HandleObjec
|
|||
if (CanReuseScriptForClone(cx->compartment(), fun, parent))
|
||||
return CloneFunctionReuseScript(cx, fun, parent, kind, newKind, proto);
|
||||
|
||||
RootedScript script(cx, fun->getOrCreateScript(cx));
|
||||
RootedScript script(cx, JSFunction::getOrCreateScript(cx, fun));
|
||||
if (!script)
|
||||
return nullptr;
|
||||
RootedScope enclosingScope(cx, script->enclosingScope());
|
||||
|
|
|
@ -951,7 +951,7 @@ js::CreateThisForFunctionWithProto(JSContext* cx, HandleObject callee, HandleObj
|
|||
}
|
||||
|
||||
if (res) {
|
||||
JSScript* script = callee->as<JSFunction>().getOrCreateScript(cx);
|
||||
JSScript* script = JSFunction::getOrCreateScript(cx, callee.as<JSFunction>());
|
||||
if (!script)
|
||||
return nullptr;
|
||||
TypeScript::SetThis(cx, script, TypeSet::ObjectType(res));
|
||||
|
|
|
@ -2139,6 +2139,7 @@ GenerateLcovInfo(JSContext* cx, JSCompartment* comp, GenericPrinter& out)
|
|||
return false;
|
||||
|
||||
RootedScript script(cx);
|
||||
RootedFunction fun(cx);
|
||||
do {
|
||||
script = queue.popCopy();
|
||||
compCover.collectCodeCoverageInfo(comp, script->sourceObject(), script);
|
||||
|
@ -2156,15 +2157,15 @@ GenerateLcovInfo(JSContext* cx, JSCompartment* comp, GenericPrinter& out)
|
|||
// Only continue on JSFunction objects.
|
||||
if (!obj->is<JSFunction>())
|
||||
continue;
|
||||
JSFunction& fun = obj->as<JSFunction>();
|
||||
fun = &obj->as<JSFunction>();
|
||||
|
||||
// Let's skip wasm for now.
|
||||
if (!fun.isInterpreted())
|
||||
if (!fun->isInterpreted())
|
||||
continue;
|
||||
|
||||
// Queue the script in the list of script associated to the
|
||||
// current source.
|
||||
JSScript* childScript = fun.getOrCreateScript(cx);
|
||||
JSScript* childScript = JSFunction::getOrCreateScript(cx, fun);
|
||||
if (!childScript || !queue.append(childScript))
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -3225,7 +3225,7 @@ js::detail::CopyScript(JSContext* cx, HandleScript src, HandleScript dst,
|
|||
} else {
|
||||
if (innerFun->isInterpretedLazy()) {
|
||||
AutoCompartment ac(cx, innerFun);
|
||||
if (!innerFun->getOrCreateScript(cx))
|
||||
if (!JSFunction::getOrCreateScript(cx, innerFun))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -4242,7 +4242,7 @@ JSScript::AutoDelazify::holdScript(JS::HandleFunction fun)
|
|||
script_ = fun->nonLazyScript();
|
||||
} else {
|
||||
JSAutoCompartment ac(cx_, fun);
|
||||
script_ = fun->getOrCreateScript(cx_);
|
||||
script_ = JSFunction::getOrCreateScript(cx_, fun);
|
||||
if (script_) {
|
||||
oldDoNotRelazify_ = script_->doNotRelazify_;
|
||||
script_->setDoNotRelazify(true);
|
||||
|
|
|
@ -78,7 +78,8 @@ inline JSFunction*
|
|||
LazyScript::functionDelazifying(JSContext* cx) const
|
||||
{
|
||||
Rooted<const LazyScript*> self(cx, this);
|
||||
if (self->function_ && !self->function_->getOrCreateScript(cx))
|
||||
RootedFunction fun(cx, self->function_);
|
||||
if (self->function_ && !JSFunction::getOrCreateScript(cx, fun))
|
||||
return nullptr;
|
||||
return self->function_;
|
||||
}
|
||||
|
|
|
@ -2313,7 +2313,7 @@ ValueToScript(JSContext* cx, HandleValue v, JSFunction** funp = nullptr)
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
JSScript* script = fun->getOrCreateScript(cx);
|
||||
JSScript* script = JSFunction::getOrCreateScript(cx, fun);
|
||||
if (!script)
|
||||
return nullptr;
|
||||
|
||||
|
@ -2713,7 +2713,7 @@ DisassembleScript(JSContext* cx, HandleScript script, HandleFunction fun,
|
|||
|
||||
RootedFunction fun(cx, &obj->as<JSFunction>());
|
||||
if (fun->isInterpreted()) {
|
||||
RootedScript script(cx, fun->getOrCreateScript(cx));
|
||||
RootedScript script(cx, JSFunction::getOrCreateScript(cx, fun));
|
||||
if (script) {
|
||||
if (!DisassembleScript(cx, script, fun, lines, recursive, sourceNotes, sp))
|
||||
return false;
|
||||
|
@ -5367,7 +5367,7 @@ DumpScopeChain(JSContext* cx, unsigned argc, Value* vp)
|
|||
ReportUsageErrorASCII(cx, callee, "Argument must be an interpreted function");
|
||||
return false;
|
||||
}
|
||||
script = fun->getOrCreateScript(cx);
|
||||
script = JSFunction::getOrCreateScript(cx, fun);
|
||||
} else {
|
||||
script = obj->as<ModuleObject>().script();
|
||||
}
|
||||
|
|
|
@ -473,7 +473,7 @@ MappedArgSetter(JSContext* cx, HandleObject obj, HandleId id, MutableHandleValue
|
|||
attrs &= (JSPROP_ENUMERATE | JSPROP_PERMANENT); /* only valid attributes */
|
||||
|
||||
RootedFunction callee(cx, &argsobj->callee());
|
||||
RootedScript script(cx, callee->getOrCreateScript(cx));
|
||||
RootedScript script(cx, JSFunction::getOrCreateScript(cx, callee));
|
||||
if (!script)
|
||||
return false;
|
||||
|
||||
|
@ -628,7 +628,7 @@ MappedArgumentsObject::obj_defineProperty(JSContext* cx, HandleObject obj, Handl
|
|||
} else {
|
||||
if (desc.hasValue()) {
|
||||
RootedFunction callee(cx, &argsobj->callee());
|
||||
RootedScript script(cx, callee->getOrCreateScript(cx));
|
||||
RootedScript script(cx, JSFunction::getOrCreateScript(cx, callee));
|
||||
if (!script)
|
||||
return false;
|
||||
argsobj->setElement(cx, arg, desc.value());
|
||||
|
|
|
@ -225,7 +225,7 @@ EnsureFunctionHasScript(JSContext* cx, HandleFunction fun)
|
|||
{
|
||||
if (fun->isInterpretedLazy()) {
|
||||
AutoCompartment ac(cx, fun);
|
||||
return !!fun->getOrCreateScript(cx);
|
||||
return !!JSFunction::getOrCreateScript(cx, fun);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -1420,7 +1420,8 @@ class DebugEnvironmentProxyHandler : public BaseProxyHandler
|
|||
/* Handle unaliased formals, vars, lets, and consts at function scope. */
|
||||
if (env->is<CallObject>()) {
|
||||
CallObject& callobj = env->as<CallObject>();
|
||||
RootedScript script(cx, callobj.callee().getOrCreateScript(cx));
|
||||
RootedFunction fun(cx, &callobj.callee());
|
||||
RootedScript script(cx, JSFunction::getOrCreateScript(cx, fun));
|
||||
if (!script->ensureHasTypes(cx) || !script->ensureHasAnalyzedArgsUsage(cx))
|
||||
return false;
|
||||
|
||||
|
@ -2955,7 +2956,7 @@ js::GetDebugEnvironmentForFunction(JSContext* cx, HandleFunction fun)
|
|||
MOZ_ASSERT(CanUseDebugEnvironmentMaps(cx));
|
||||
if (!DebugEnvironments::updateLiveEnvironments(cx))
|
||||
return nullptr;
|
||||
JSScript* script = fun->getOrCreateScript(cx);
|
||||
JSScript* script = JSFunction::getOrCreateScript(cx, fun);
|
||||
if (!script)
|
||||
return nullptr;
|
||||
EnvironmentIter ei(cx, fun->environment(), script->enclosingScope());
|
||||
|
@ -3463,11 +3464,13 @@ RemoveReferencedNames(JSContext* cx, HandleScript script, PropertyNameSet& remai
|
|||
|
||||
if (script->hasObjects()) {
|
||||
ObjectArray* objects = script->objects();
|
||||
RootedFunction fun(cx);
|
||||
RootedScript innerScript(cx);
|
||||
for (size_t i = 0; i < objects->length; i++) {
|
||||
JSObject* obj = objects->vector[i];
|
||||
if (obj->is<JSFunction>() && obj->as<JSFunction>().isInterpreted()) {
|
||||
JSFunction* fun = &obj->as<JSFunction>();
|
||||
RootedScript innerScript(cx, fun->getOrCreateScript(cx));
|
||||
fun = &obj->as<JSFunction>();
|
||||
innerScript = JSFunction::getOrCreateScript(cx, fun);
|
||||
if (!innerScript)
|
||||
return false;
|
||||
|
||||
|
@ -3530,11 +3533,13 @@ AnalyzeEntrainedVariablesInScript(JSContext* cx, HandleScript script, HandleScri
|
|||
|
||||
if (innerScript->hasObjects()) {
|
||||
ObjectArray* objects = innerScript->objects();
|
||||
RootedFunction fun(cx);
|
||||
RootedScript innerInnerScript(cx);
|
||||
for (size_t i = 0; i < objects->length; i++) {
|
||||
JSObject* obj = objects->vector[i];
|
||||
if (obj->is<JSFunction>() && obj->as<JSFunction>().isInterpreted()) {
|
||||
JSFunction* fun = &obj->as<JSFunction>();
|
||||
RootedScript innerInnerScript(cx, fun->getOrCreateScript(cx));
|
||||
fun = &obj->as<JSFunction>();
|
||||
innerInnerScript = JSFunction::getOrCreateScript(cx, fun);
|
||||
if (!innerInnerScript ||
|
||||
!AnalyzeEntrainedVariablesInScript(cx, script, innerInnerScript))
|
||||
{
|
||||
|
@ -3565,11 +3570,13 @@ js::AnalyzeEntrainedVariables(JSContext* cx, HandleScript script)
|
|||
return true;
|
||||
|
||||
ObjectArray* objects = script->objects();
|
||||
RootedFunction fun(cx);
|
||||
RootedScript innerScript(cx);
|
||||
for (size_t i = 0; i < objects->length; i++) {
|
||||
JSObject* obj = objects->vector[i];
|
||||
if (obj->is<JSFunction>() && obj->as<JSFunction>().isInterpreted()) {
|
||||
JSFunction* fun = &obj->as<JSFunction>();
|
||||
RootedScript innerScript(cx, fun->getOrCreateScript(cx));
|
||||
fun = &obj->as<JSFunction>();
|
||||
innerScript = JSFunction::getOrCreateScript(cx, fun);
|
||||
if (!innerScript)
|
||||
return false;
|
||||
|
||||
|
|
|
@ -835,7 +835,7 @@ class FastCallGuard
|
|||
|
||||
if (useIon_ && fun_) {
|
||||
if (!script_) {
|
||||
script_ = fun_->getOrCreateScript(cx);
|
||||
script_ = JSFunction::getOrCreateScript(cx, fun_);
|
||||
if (!script_)
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -448,7 +448,7 @@ js::InternalCallOrConstruct(JSContext* cx, const CallArgs& args, MaybeConstruct
|
|||
}
|
||||
|
||||
/* Invoke native functions. */
|
||||
JSFunction* fun = &args.callee().as<JSFunction>();
|
||||
RootedFunction fun(cx, &args.callee().as<JSFunction>());
|
||||
if (construct != CONSTRUCT && fun->isClassConstructor()) {
|
||||
JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_CANT_CALL_CLASS_CONSTRUCTOR);
|
||||
return false;
|
||||
|
@ -459,7 +459,7 @@ js::InternalCallOrConstruct(JSContext* cx, const CallArgs& args, MaybeConstruct
|
|||
return CallJSNative(cx, fun->native(), args);
|
||||
}
|
||||
|
||||
if (!fun->getOrCreateScript(cx))
|
||||
if (!JSFunction::getOrCreateScript(cx, fun))
|
||||
return false;
|
||||
|
||||
/* Run function until JSOP_RETRVAL, JSOP_RETURN or error. */
|
||||
|
@ -2931,7 +2931,7 @@ CASE(JSOP_FUNCALL)
|
|||
{
|
||||
MOZ_ASSERT(maybeFun);
|
||||
ReservedRooted<JSFunction*> fun(&rootFunction0, maybeFun);
|
||||
ReservedRooted<JSScript*> funScript(&rootScript0, fun->getOrCreateScript(cx));
|
||||
ReservedRooted<JSScript*> funScript(&rootScript0, JSFunction::getOrCreateScript(cx, fun));
|
||||
if (!funScript)
|
||||
goto error;
|
||||
|
||||
|
|
|
@ -310,7 +310,7 @@ JSObject::makeLazyGroup(JSContext* cx, HandleObject obj)
|
|||
/* De-lazification of functions can GC, so we need to do it up here. */
|
||||
if (obj->is<JSFunction>() && obj->as<JSFunction>().isInterpretedLazy()) {
|
||||
RootedFunction fun(cx, &obj->as<JSFunction>());
|
||||
if (!fun->getOrCreateScript(cx))
|
||||
if (!JSFunction::getOrCreateScript(cx, fun))
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
|
|
@ -3006,7 +3006,7 @@ JSRuntime::cloneSelfHostedFunctionScript(JSContext* cx, HandlePropertyName name,
|
|||
MOZ_ASSERT(targetFun->isInterpretedLazy());
|
||||
MOZ_ASSERT(targetFun->isSelfHostedBuiltin());
|
||||
|
||||
RootedScript sourceScript(cx, sourceFun->getOrCreateScript(cx));
|
||||
RootedScript sourceScript(cx, JSFunction::getOrCreateScript(cx, sourceFun));
|
||||
if (!sourceScript)
|
||||
return false;
|
||||
|
||||
|
|
|
@ -336,7 +336,7 @@ InterpreterStack::resumeGeneratorCallFrame(JSContext* cx, InterpreterRegs& regs,
|
|||
HandleObject envChain)
|
||||
{
|
||||
MOZ_ASSERT(callee->isGenerator());
|
||||
RootedScript script(cx, callee->getOrCreateScript(cx));
|
||||
RootedScript script(cx, JSFunction::getOrCreateScript(cx, callee));
|
||||
InterpreterFrame* prev = regs.fp();
|
||||
jsbytecode* prevpc = regs.pc;
|
||||
Value* prevsp = regs.sp;
|
||||
|
|
|
@ -3821,7 +3821,8 @@ TypeNewScript::maybeAnalyze(JSContext* cx, ObjectGroup* group, bool* regenerate,
|
|||
Vector<Initializer> initializerVector(cx);
|
||||
|
||||
RootedPlainObject templateRoot(cx, templateObject());
|
||||
if (!jit::AnalyzeNewScriptDefiniteProperties(cx, function(), group, templateRoot, &initializerVector))
|
||||
RootedFunction fun(cx, function());
|
||||
if (!jit::AnalyzeNewScriptDefiniteProperties(cx, fun, group, templateRoot, &initializerVector))
|
||||
return false;
|
||||
|
||||
if (!group->newScript())
|
||||
|
|
Загрузка…
Ссылка в новой задаче