Index: src/ia32/full-codegen-ia32.cc |
diff --git a/src/ia32/full-codegen-ia32.cc b/src/ia32/full-codegen-ia32.cc |
index bb75b1e6acb22922dd13505981523e1be1e4521d..07fd7258234e7e7550afc4eb59261c68e61e145b 100644 |
--- a/src/ia32/full-codegen-ia32.cc |
+++ b/src/ia32/full-codegen-ia32.cc |
@@ -875,7 +875,7 @@ void FullCodeGenerator::VisitSwitchStatement(SwitchStatement* stmt) { |
__ bind(&next_test); |
__ Drop(1); // Switch value is no longer needed. |
if (default_clause == NULL) { |
- __ jmp(nested_statement.break_target()); |
+ __ jmp(nested_statement.break_label()); |
} else { |
__ jmp(default_clause->body_target()); |
} |
@@ -890,7 +890,7 @@ void FullCodeGenerator::VisitSwitchStatement(SwitchStatement* stmt) { |
VisitStatements(clause->statements()); |
} |
- __ bind(nested_statement.break_target()); |
+ __ bind(nested_statement.break_label()); |
PrepareForBailoutForId(stmt->ExitId(), NO_REGISTERS); |
} |
@@ -1006,12 +1006,13 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) { |
__ push(eax); // Fixed array length (as smi). |
__ push(Immediate(Smi::FromInt(0))); // Initial index. |
- increment_stack_height(4); |
+ // 1 ~ The object has already been pushed. |
+ increment_stack_height(ForIn::kElementCount - 1); |
// Generate code for doing the condition check. |
__ bind(&loop); |
__ mov(eax, Operand(esp, 0 * kPointerSize)); // Get the current index. |
__ cmp(eax, Operand(esp, 1 * kPointerSize)); // Compare to the array length. |
- __ j(above_equal, loop_statement.break_target()); |
+ __ j(above_equal, loop_statement.break_label()); |
// Get the current entry of the array into register ebx. |
__ mov(ebx, Operand(esp, 2 * kPointerSize)); |
@@ -1035,7 +1036,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) { |
__ push(ebx); // Current entry. |
__ InvokeBuiltin(Builtins::FILTER_KEY, CALL_FUNCTION); |
__ test(eax, Operand(eax)); |
- __ j(equal, loop_statement.continue_target()); |
+ __ j(equal, loop_statement.continue_label()); |
__ mov(ebx, Operand(eax)); |
// Update the 'each' property or variable from the possibly filtered |
@@ -1052,17 +1053,17 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) { |
// Generate code for going to the next element by incrementing the |
// index (smi) stored on top of the stack. |
- __ bind(loop_statement.continue_target()); |
+ __ bind(loop_statement.continue_label()); |
__ add(Operand(esp, 0 * kPointerSize), Immediate(Smi::FromInt(1))); |
EmitStackCheck(stmt); |
__ jmp(&loop); |
// Remove the pointers stored on the stack. |
- __ bind(loop_statement.break_target()); |
+ __ bind(loop_statement.break_label()); |
__ add(Operand(esp), Immediate(5 * kPointerSize)); |
- decrement_stack_height(5); |
+ decrement_stack_height(ForIn::kElementCount); |
// Exit and decrement the loop depth. |
__ bind(&exit); |
decrement_loop_depth(); |