| Index: src/full-codegen/ia32/full-codegen-ia32.cc
|
| diff --git a/src/full-codegen/ia32/full-codegen-ia32.cc b/src/full-codegen/ia32/full-codegen-ia32.cc
|
| index 28fbe85bbe6d53b6e7b79380bbf9139b3d2aca2f..7943f0b2e173c73118520a33e2fa9f5e23b98a7b 100644
|
| --- a/src/full-codegen/ia32/full-codegen-ia32.cc
|
| +++ b/src/full-codegen/ia32/full-codegen-ia32.cc
|
| @@ -1026,7 +1026,6 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
| __ jmp(&exit);
|
|
|
| // We got a fixed array in register eax. Iterate through that.
|
| - Label non_proxy;
|
| __ bind(&fixed_array);
|
|
|
| // No need for a write barrier, we are storing a Smi in the feedback vector.
|
| @@ -1034,15 +1033,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
| int vector_index = SmiFromSlot(slot)->value();
|
| __ mov(FieldOperand(ebx, FixedArray::OffsetOfElementAt(vector_index)),
|
| Immediate(TypeFeedbackVector::MegamorphicSentinel(isolate())));
|
| -
|
| - __ mov(ebx, Immediate(Smi::FromInt(1))); // Smi indicates slow check
|
| - __ mov(ecx, Operand(esp, 0 * kPointerSize)); // Get enumerated object
|
| - STATIC_ASSERT(JS_PROXY_TYPE == FIRST_JS_RECEIVER_TYPE);
|
| - __ CmpObjectType(ecx, JS_PROXY_TYPE, ecx);
|
| - __ j(above, &non_proxy);
|
| - __ Move(ebx, Immediate(Smi::FromInt(0))); // Zero indicates proxy
|
| - __ bind(&non_proxy);
|
| - __ push(ebx); // Smi
|
| + __ push(Immediate(Smi::FromInt(1))); // Smi(1) indicates slow check
|
| __ push(eax); // Array
|
| __ mov(eax, FieldOperand(eax, FixedArray::kLengthOffset));
|
| __ push(eax); // Fixed array length (as smi).
|
| @@ -1071,12 +1062,6 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
| __ cmp(edx, FieldOperand(ecx, HeapObject::kMapOffset));
|
| __ j(equal, &update_each, Label::kNear);
|
|
|
| - // For proxies, no filtering is done.
|
| - // TODO(rossberg): What if only a prototype is a proxy? Not specified yet.
|
| - DCHECK(Smi::FromInt(0) == 0);
|
| - __ test(edx, edx);
|
| - __ j(zero, &update_each);
|
| -
|
| // Convert the entry to a string or null if it isn't a property
|
| // anymore. If the property has been removed while iterating, we
|
| // just skip it.
|
|
|