Lines 1226-1241
js::Interpret(JSContext *cx, StackFrame
Link Here
|
1226 |
RootedValue rootValue0(cx), rootValue1(cx); |
1226 |
RootedValue rootValue0(cx), rootValue1(cx); |
1227 |
RootedString rootString0(cx), rootString1(cx); |
1227 |
RootedString rootString0(cx), rootString1(cx); |
1228 |
RootedObject rootObject0(cx), rootObject1(cx), rootObject2(cx); |
1228 |
RootedObject rootObject0(cx), rootObject1(cx), rootObject2(cx); |
1229 |
RootedFunction rootFunction0(cx); |
1229 |
RootedFunction rootFunction0(cx); |
1230 |
RootedTypeObject rootType0(cx); |
1230 |
RootedTypeObject rootType0(cx); |
1231 |
RootedPropertyName rootName0(cx); |
1231 |
RootedPropertyName rootName0(cx); |
1232 |
RootedId rootId0(cx); |
1232 |
RootedId rootId0(cx); |
1233 |
RootedShape rootShape0(cx); |
1233 |
RootedShape rootShape0(cx); |
|
|
1234 |
DebugOnly<uint32_t> blockDepth; |
1234 |
|
1235 |
|
1235 |
if (!entryFrame) |
1236 |
if (!entryFrame) |
1236 |
entryFrame = regs.fp(); |
1237 |
entryFrame = regs.fp(); |
1237 |
|
1238 |
|
1238 |
#if JS_HAS_GENERATORS |
1239 |
#if JS_HAS_GENERATORS |
1239 |
if (JS_UNLIKELY(regs.fp()->isGeneratorFrame())) { |
1240 |
if (JS_UNLIKELY(regs.fp()->isGeneratorFrame())) { |
1240 |
JS_ASSERT(size_t(regs.pc - script->code) <= script->length); |
1241 |
JS_ASSERT(size_t(regs.pc - script->code) <= script->length); |
1241 |
JS_ASSERT(regs.stackDepth() <= script->nslots); |
1242 |
JS_ASSERT(regs.stackDepth() <= script->nslots); |
Lines 3645-3661
BEGIN_CASE(JSOP_ENTERLET1)
Link Here
|
3645 |
goto error; |
3646 |
goto error; |
3646 |
} |
3647 |
} |
3647 |
END_CASE(JSOP_ENTERBLOCK) |
3648 |
END_CASE(JSOP_ENTERBLOCK) |
3648 |
|
3649 |
|
3649 |
BEGIN_CASE(JSOP_LEAVEBLOCK) |
3650 |
BEGIN_CASE(JSOP_LEAVEBLOCK) |
3650 |
BEGIN_CASE(JSOP_LEAVEFORLETIN) |
3651 |
BEGIN_CASE(JSOP_LEAVEFORLETIN) |
3651 |
BEGIN_CASE(JSOP_LEAVEBLOCKEXPR) |
3652 |
BEGIN_CASE(JSOP_LEAVEBLOCKEXPR) |
3652 |
{ |
3653 |
{ |
3653 |
DebugOnly<uint32_t> blockDepth = regs.fp()->blockChain().stackDepth(); |
3654 |
blockDepth = regs.fp()->blockChain().stackDepth(); |
3654 |
|
3655 |
|
3655 |
regs.fp()->popBlock(cx); |
3656 |
regs.fp()->popBlock(cx); |
3656 |
|
3657 |
|
3657 |
if (op == JSOP_LEAVEBLOCK) { |
3658 |
if (op == JSOP_LEAVEBLOCK) { |
3658 |
/* Pop the block's slots. */ |
3659 |
/* Pop the block's slots. */ |
3659 |
regs.sp -= GET_UINT16(regs.pc); |
3660 |
regs.sp -= GET_UINT16(regs.pc); |
3660 |
JS_ASSERT(regs.stackDepth() == blockDepth); |
3661 |
JS_ASSERT(regs.stackDepth() == blockDepth); |
3661 |
} else if (op == JSOP_LEAVEBLOCKEXPR) { |
3662 |
} else if (op == JSOP_LEAVEBLOCKEXPR) { |