Chromium Code Reviews| Index: src/ia32/full-codegen-ia32.cc |
| diff --git a/src/ia32/full-codegen-ia32.cc b/src/ia32/full-codegen-ia32.cc |
| index 63c3ee6014c03938a67523ae2e970b4a93daf512..b116b8e8b8df621378831a531be8c7305a8cdc9a 100644 |
| --- a/src/ia32/full-codegen-ia32.cc |
| +++ b/src/ia32/full-codegen-ia32.cc |
| @@ -1729,24 +1729,7 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) { |
| allocation_site_mode = DONT_TRACK_ALLOCATION_SITE; |
| } |
| - Heap* heap = isolate()->heap(); |
| - if (has_constant_fast_elements && |
| - constant_elements_values->map() == heap->fixed_cow_array_map()) { |
| - // If the elements are already FAST_*_ELEMENTS, the boilerplate cannot |
| - // change, so it's possible to specialize the stub in advance. |
| - __ IncrementCounter(isolate()->counters()->cow_arrays_created_stub(), 1); |
| - __ mov(ebx, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset)); |
| - __ mov(eax, FieldOperand(ebx, JSFunction::kLiteralsOffset)); |
| - __ mov(ebx, Immediate(Smi::FromInt(expr->literal_index()))); |
| - __ mov(ecx, Immediate(constant_elements)); |
| - FastCloneShallowArrayStub stub( |
| - isolate(), |
| - FastCloneShallowArrayStub::COPY_ON_WRITE_ELEMENTS, |
| - allocation_site_mode, |
| - length); |
| - __ CallStub(&stub); |
| - } else if (expr->depth() > 1 || Serializer::enabled(isolate()) || |
| - length > FastCloneShallowArrayStub::kMaximumClonedLength) { |
| + if (expr->depth() > 1) { |
|
mvstanton
2014/05/09 13:16:49
Awesome!
|
| __ mov(ebx, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset)); |
| __ push(FieldOperand(ebx, JSFunction::kLiteralsOffset)); |
| __ push(Immediate(Smi::FromInt(expr->literal_index()))); |
| @@ -1754,25 +1737,11 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) { |
| __ push(Immediate(Smi::FromInt(flags))); |
| __ CallRuntime(Runtime::kHiddenCreateArrayLiteral, 4); |
| } else { |
| - ASSERT(IsFastSmiOrObjectElementsKind(constant_elements_kind) || |
| - FLAG_smi_only_arrays); |
| - FastCloneShallowArrayStub::Mode mode = |
| - FastCloneShallowArrayStub::CLONE_ANY_ELEMENTS; |
| - |
| - // If the elements are already FAST_*_ELEMENTS, the boilerplate cannot |
| - // change, so it's possible to specialize the stub in advance. |
| - if (has_constant_fast_elements) { |
| - mode = FastCloneShallowArrayStub::CLONE_ELEMENTS; |
| - } |
| - |
| __ mov(ebx, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset)); |
| __ mov(eax, FieldOperand(ebx, JSFunction::kLiteralsOffset)); |
| __ mov(ebx, Immediate(Smi::FromInt(expr->literal_index()))); |
| __ mov(ecx, Immediate(constant_elements)); |
| - FastCloneShallowArrayStub stub(isolate(), |
| - mode, |
| - allocation_site_mode, |
| - length); |
| + FastCloneShallowArrayStub stub(isolate(), allocation_site_mode); |
| __ CallStub(&stub); |
| } |