From 11e9d901760111414076bc36378cab127817ea01 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Mon, 2 Jul 2012 00:03:26 -0700 Subject: [PATCH] Bug 770092 (part 2) - Don't set JSScript::function_ in JSScript::fullyInitFromEmitter(). --HG-- extra : rebase_source : 83effb7eabadfcaf7efcd56341191b11e6a05069 --- js/src/jsfun.cpp | 3 +++ js/src/jsinfer.cpp | 2 -- js/src/jsscript.cpp | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/js/src/jsfun.cpp b/js/src/jsfun.cpp index 6a99350a8c8..b0bdce8b4cd 100644 --- a/js/src/jsfun.cpp +++ b/js/src/jsfun.cpp @@ -392,6 +392,7 @@ js::XDRInterpretedFunction(XDRState *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; diff --git a/js/src/jsinfer.cpp b/js/src/jsinfer.cpp index bff8383dbd0..305092e9965 100644 --- a/js/src/jsinfer.cpp +++ b/js/src/jsinfer.cpp @@ -5419,8 +5419,6 @@ JSScript::makeAnalysis(JSContext *cx) bool JSScript::typeSetFunction(JSContext *cx, JSFunction *fun, bool singleton) { - function_ = fun; - if (!cx->typeInferenceEnabled()) return true; diff --git a/js/src/jsscript.cpp b/js/src/jsscript.cpp index d4f3e150b0d..2e2ac4ef1e0 100644 --- a/js/src/jsscript.cpp +++ b/js/src/jsscript.cpp @@ -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;