Bug 683470 - InlineReturn should assert using js_GetOpcode instead of *regs.pc (r=dvander)

This commit is contained in:
Luke Wagner 2011-08-31 15:42:04 -07:00
Родитель 7dd0a5b474
Коммит b1a623706e
2 изменённых файлов: 21 добавлений и 5 удалений

Просмотреть файл

@ -0,0 +1,15 @@
// |jit-test| debug
f = (function() {
function b() {
"use strict";
Object.defineProperty(this, "x", ({}));
}
for each(let d in [0, 0]) {
try {
b(d);
} catch (e) {}
}
})
trap(f, 54, undefined);
f()

Просмотреть файл

@ -181,11 +181,12 @@ InlineReturn(VMFrame &f)
JS_ASSERT(!js_IsActiveWithOrBlock(f.cx, &f.fp()->scopeChain(), 0)); JS_ASSERT(!js_IsActiveWithOrBlock(f.cx, &f.fp()->scopeChain(), 0));
f.cx->stack.popInlineFrame(f.regs); f.cx->stack.popInlineFrame(f.regs);
JS_ASSERT(*f.regs.pc == JSOP_CALL || DebugOnly<JSOp> op = js_GetOpcode(f.cx, f.fp()->script(), f.regs.pc);
*f.regs.pc == JSOP_NEW || JS_ASSERT(op == JSOP_CALL ||
*f.regs.pc == JSOP_EVAL || op == JSOP_NEW ||
*f.regs.pc == JSOP_FUNCALL || op == JSOP_EVAL ||
*f.regs.pc == JSOP_FUNAPPLY); op == JSOP_FUNCALL ||
op == JSOP_FUNAPPLY);
f.regs.pc += JSOP_CALL_LENGTH; f.regs.pc += JSOP_CALL_LENGTH;
} }