Index: src/ia32/full-codegen-ia32.cc |
=================================================================== |
--- src/ia32/full-codegen-ia32.cc (revision 4686) |
+++ src/ia32/full-codegen-ia32.cc (working copy) |
@@ -806,8 +806,8 @@ |
__ Check(equal, "Unexpected declaration in current context."); |
} |
if (mode == Variable::CONST) { |
- __ mov(CodeGenerator::ContextOperand(esi, slot->index()), |
- Immediate(Factory::the_hole_value())); |
+ __ mov(eax, Immediate(Factory::the_hole_value())); |
+ __ mov(CodeGenerator::ContextOperand(esi, slot->index()), eax); |
// No write barrier since the hole value is in old space. |
} else if (function != NULL) { |
VisitForValue(function, kAccumulator); |
@@ -823,8 +823,10 @@ |
__ push(esi); |
__ push(Immediate(variable->name())); |
// Declaration nodes are always introduced in one of two modes. |
- ASSERT(mode == Variable::VAR || mode == Variable::CONST); |
- PropertyAttributes attr = (mode == Variable::VAR) ? NONE : READ_ONLY; |
+ ASSERT(mode == Variable::VAR || |
+ mode == Variable::CONST); |
+ PropertyAttributes attr = |
+ (mode == Variable::VAR) ? NONE : READ_ONLY; |
__ push(Immediate(Smi::FromInt(attr))); |
// Push initial value, if any. |
// Note: For variables we must not push an initial value (such as |
@@ -1009,6 +1011,7 @@ |
__ push(eax); // Map. |
__ push(edx); // Enumeration cache. |
__ mov(eax, FieldOperand(edx, FixedArray::kLengthOffset)); |
+ __ SmiTag(eax); |
__ push(eax); // Enumeration cache length (as smi). |
__ push(Immediate(Smi::FromInt(0))); // Initial index. |
__ jmp(&loop); |
@@ -1018,6 +1021,7 @@ |
__ push(Immediate(Smi::FromInt(0))); // Map (0) - force slow check. |
__ push(eax); |
__ mov(eax, FieldOperand(eax, FixedArray::kLengthOffset)); |
+ __ SmiTag(eax); |
__ push(eax); // Fixed array length (as smi). |
__ push(Immediate(Smi::FromInt(0))); // Initial index. |
@@ -1066,8 +1070,8 @@ |
__ StackLimitCheck(&stack_limit_hit); |
__ bind(&stack_check_done); |
- // Generate code for going to the next element by incrementing the |
- // index (smi) stored on top of the stack. |
+ // Generate code for the going to the next element by incrementing |
+ // the index (smi) stored on top of the stack. |
__ bind(loop_statement.continue_target()); |
__ add(Operand(esp, 0 * kPointerSize), Immediate(Smi::FromInt(1))); |
__ jmp(&loop); |
@@ -2029,9 +2033,9 @@ |
__ j(not_zero, if_false); |
__ movzx_b(ecx, FieldOperand(ebx, Map::kInstanceTypeOffset)); |
__ cmp(ecx, FIRST_JS_OBJECT_TYPE); |
- __ j(below, if_false); |
+ __ j(less, if_false); |
__ cmp(ecx, LAST_JS_OBJECT_TYPE); |
- __ j(below_equal, if_true); |
+ __ j(less_equal, if_true); |
__ jmp(if_false); |
Apply(context_, if_true, if_false); |
@@ -2223,7 +2227,7 @@ |
__ mov(eax, FieldOperand(eax, HeapObject::kMapOffset)); |
__ movzx_b(ebx, FieldOperand(eax, Map::kInstanceTypeOffset)); |
__ cmp(ebx, FIRST_JS_OBJECT_TYPE); |
- __ j(below, &null); |
+ __ j(less, &null); |
// As long as JS_FUNCTION_TYPE is the last instance type and it is |
// right after LAST_JS_OBJECT_TYPE, we can avoid checking for |