Bug 770092 (part 2) - Don't set JSScript::function_ in JSScript::fullyInitFromEmitter().

--HG--
extra : rebase_source : 83effb7eabadfcaf7efcd56341191b11e6a05069
This commit is contained in:
Nicholas Nethercote 2012-07-02 00:03:26 -07:00
parent a29a9cac2f
commit 11e9d90176
3 changed files with 4 additions and 2 deletions

View File

@ -392,6 +392,7 @@ js::XDRInterpretedFunction(XDRState<mode> *xdr, JSObject **objp, JSScript *paren
fun->flags = uint16_t(flagsword);
fun->atom.init(atom);
fun->initScript(script);
script->setFunction(fun);
if (!script->typeSetFunction(cx, fun))
return false;
JS_ASSERT(fun->nargs == fun->script()->bindings.numArgs());
@ -431,6 +432,7 @@ js::CloneInterpretedFunction(JSContext *cx, JSFunction *srcFun)
clone->flags = srcFun->flags;
clone->atom.init(srcFun->atom);
clone->initScript(clonedScript);
clonedScript->setFunction(clone);
if (!clonedScript->typeSetFunction(cx, clone))
return NULL;
@ -1301,6 +1303,7 @@ js_CloneFunctionObject(JSContext *cx, HandleFunction fun, HandleObject parent,
cscript->globalObject = &clone->global();
clone->setScript(cscript);
cscript->setFunction(clone);
if (!cscript->typeSetFunction(cx, clone))
return NULL;

View File

@ -5419,8 +5419,6 @@ JSScript::makeAnalysis(JSContext *cx)
bool
JSScript::typeSetFunction(JSContext *cx, JSFunction *fun, bool singleton)
{
function_ = fun;
if (!cx->typeInferenceEnabled())
return true;

View File

@ -1359,6 +1359,7 @@ JSScript::fullyInitFromEmitter(JSContext *cx, BytecodeEmitter *bce)
bce->parent &&
bce->parent->checkSingletonContext();
script->setFunction(fun);
if (!script->typeSetFunction(cx, fun, singleton))
return false;