| Index: src/full-codegen/x87/full-codegen-x87.cc
|
| diff --git a/src/full-codegen/x87/full-codegen-x87.cc b/src/full-codegen/x87/full-codegen-x87.cc
|
| index 2ac7a43cd9f1396a351ad96adba62b91c0e561dd..9b63bcf1bdcd8848f9ae904a5d3a6f625e2e815d 100644
|
| --- a/src/full-codegen/x87/full-codegen-x87.cc
|
| +++ b/src/full-codegen/x87/full-codegen-x87.cc
|
| @@ -1018,7 +1018,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.
|
| @@ -1026,15 +1025,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(Immeadiate(Smi::FromInt(1))); // Smi(1) undicates slow check
|
| __ push(eax); // Array
|
| __ mov(eax, FieldOperand(eax, FixedArray::kLengthOffset));
|
| __ push(eax); // Fixed array length (as smi).
|
| @@ -1063,12 +1054,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.
|
|
|