Bug 858655 - Add missing DebugScopes::onPopStrictEvalScope call for baseline frames. r=djvj

--HG--
extra : rebase_source : cab6588c3979881f199722613a9f3ca43a0860d5
This commit is contained in:
Jan de Mooij 2013-04-12 11:57:05 +02:00
parent 8a5221dd01
commit cd2beb0176
2 changed files with 11 additions and 3 deletions

View File

@ -259,10 +259,15 @@ ion::CanEnterBaselineJIT(JSContext *cx, JSScript *scriptArg, StackFrame *fp, boo
if (script->hasBaselineScript())
return Method_Compiled;
// Eagerly compile scripts if JSD is enabled, so that we don't have to OSR
// and don't have to update the frame pointer stored in JSD's frames list.
if (scriptArg->incUseCount() <= js_IonOptions.baselineUsesBeforeCompile && !IsJSDEnabled(cx))
// Check script use count. However, always eagerly compile scripts if JSD
// is enabled, so that we don't have to OSR and don't have to update the
// frame pointer stored in JSD's frames list.
if (IsJSDEnabled(cx)) {
if (JSOp(*cx->regs().pc) == JSOP_LOOPENTRY) // No OSR.
return Method_Skipped;
} else if (scriptArg->incUseCount() <= js_IonOptions.baselineUsesBeforeCompile) {
return Method_Skipped;
}
if (script->isCallsiteClone) {
// Ensure the original function is compiled too, so that bailouts from

View File

@ -638,6 +638,9 @@ DebugEpilogue(JSContext *cx, BaselineFrame *frame, JSBool ok)
if (frame->isNonEvalFunctionFrame()) {
JS_ASSERT_IF(ok, frame->hasReturnValue());
DebugScopes::onPopCall(frame, cx);
} else if (frame->isStrictEvalFrame()) {
JS_ASSERT_IF(frame->hasCallObj(), frame->scopeChain()->asCall().isForEval());
DebugScopes::onPopStrictEvalScope(frame);
}
if (!ok) {