Chromium Code Reviews| Index: src/code-stubs.cc |
| diff --git a/src/code-stubs.cc b/src/code-stubs.cc |
| index 27bcbae26c3162f1fd7c1b85b0ef6e961d957616..11bb8e8f120af25a5f43e1da2e1bdb7e83ef760c 100644 |
| --- a/src/code-stubs.cc |
| +++ b/src/code-stubs.cc |
| @@ -5704,15 +5704,15 @@ compiler::Node* NonEmptyShallowClone(CodeStubAssembler* assembler, |
| // static |
| compiler::Node* FastCloneShallowArrayStub::Generate( |
| CodeStubAssembler* assembler, compiler::Node* closure, |
| - compiler::Node* literal_index, compiler::Node* constant_elements, |
| - compiler::Node* context, AllocationSiteMode allocation_site_mode) { |
| + compiler::Node* literal_index, compiler::Node* context, |
| + AllocationSiteMode allocation_site_mode, |
|
rmcilroy
2016/09/16 08:52:26
nit - allocation_site_mode at the end of parameter
klaasb
2016/09/19 13:53:57
Done.
|
| + CodeStubAssembler::Label* call_runtime) { |
| typedef CodeStubAssembler::Label Label; |
| typedef CodeStubAssembler::Variable Variable; |
| typedef compiler::Node Node; |
| - Label call_runtime(assembler, Label::kDeferred), zero_capacity(assembler), |
| - cow_elements(assembler), fast_elements(assembler), |
| - return_result(assembler); |
| + Label zero_capacity(assembler), cow_elements(assembler), |
| + fast_elements(assembler), return_result(assembler); |
| Variable result(assembler, MachineRepresentation::kTagged); |
| Node* undefined = assembler->UndefinedConstant(); |
| @@ -5725,7 +5725,7 @@ compiler::Node* FastCloneShallowArrayStub::Generate( |
| CodeStubAssembler::SMI_PARAMETERS); |
| assembler->GotoIf(assembler->WordEqual(allocation_site, undefined), |
| - &call_runtime); |
| + call_runtime); |
| Node* boilerplate = assembler->LoadObjectField( |
| allocation_site, AllocationSite::kTransitionInfoOffset); |
| @@ -5812,21 +5812,6 @@ compiler::Node* FastCloneShallowArrayStub::Generate( |
| assembler->Goto(&return_result); |
| } |
| - assembler->Bind(&call_runtime); |
| - { |
| - assembler->Comment("call runtime"); |
| - Node* flags = assembler->SmiConstant( |
| - Smi::FromInt(ArrayLiteral::kShallowElements | |
| - (allocation_site_mode == TRACK_ALLOCATION_SITE |
| - ? 0 |
| - : ArrayLiteral::kDisableMementos))); |
| - Node* array = |
| - assembler->CallRuntime(Runtime::kCreateArrayLiteral, context, closure, |
| - literal_index, constant_elements, flags); |
| - result.Bind(array); |
| - assembler->Goto(&return_result); |
| - } |
| - |
| assembler->Bind(&return_result); |
| return result.value(); |
| } |
| @@ -5834,14 +5819,27 @@ compiler::Node* FastCloneShallowArrayStub::Generate( |
| void FastCloneShallowArrayStub::GenerateAssembly( |
| CodeStubAssembler* assembler) const { |
| typedef compiler::Node Node; |
| + typedef CodeStubAssembler::Label Label; |
| Node* closure = assembler->Parameter(Descriptor::kClosure); |
| Node* literal_index = assembler->Parameter(Descriptor::kLiteralIndex); |
| Node* constant_elements = assembler->Parameter(Descriptor::kConstantElements); |
| Node* context = assembler->Parameter(Descriptor::kContext); |
| + Label call_runtime(assembler, Label::kDeferred); |
| + assembler->Return(Generate(assembler, closure, literal_index, context, |
| + allocation_site_mode(), &call_runtime)); |
| - assembler->Return(Generate(assembler, closure, literal_index, |
| - constant_elements, context, |
| - allocation_site_mode())); |
| + assembler->Bind(&call_runtime); |
| + { |
| + assembler->Comment("call runtime"); |
| + Node* flags = assembler->SmiConstant( |
| + Smi::FromInt(ArrayLiteral::kShallowElements | |
| + (allocation_site_mode() == TRACK_ALLOCATION_SITE |
| + ? 0 |
| + : ArrayLiteral::kDisableMementos))); |
| + assembler->Return(assembler->CallRuntime(Runtime::kCreateArrayLiteral, |
| + context, closure, literal_index, |
| + constant_elements, flags)); |
| + } |
| } |
| void CreateAllocationSiteStub::GenerateAheadOfTime(Isolate* isolate) { |