| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #include "src/code-stubs.h" | 7 #include "src/code-stubs.h" |
| 8 #include "src/field-index.h" | 8 #include "src/field-index.h" |
| 9 #include "src/hydrogen.h" | 9 #include "src/hydrogen.h" |
| 10 #include "src/lithium.h" | 10 #include "src/lithium.h" |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 HEnvironment* start_environment = graph()->start_environment(); | 121 HEnvironment* start_environment = graph()->start_environment(); |
| 122 HBasicBlock* next_block = CreateBasicBlock(start_environment); | 122 HBasicBlock* next_block = CreateBasicBlock(start_environment); |
| 123 Goto(next_block); | 123 Goto(next_block); |
| 124 next_block->SetJoinId(BailoutId::StubEntry()); | 124 next_block->SetJoinId(BailoutId::StubEntry()); |
| 125 set_current_block(next_block); | 125 set_current_block(next_block); |
| 126 | 126 |
| 127 bool runtime_stack_params = descriptor_->stack_parameter_count().is_valid(); | 127 bool runtime_stack_params = descriptor_->stack_parameter_count().is_valid(); |
| 128 HInstruction* stack_parameter_count = NULL; | 128 HInstruction* stack_parameter_count = NULL; |
| 129 for (int i = 0; i < param_count; ++i) { | 129 for (int i = 0; i < param_count; ++i) { |
| 130 Representation r = descriptor_->GetEnvironmentParameterRepresentation(i); | 130 Representation r = descriptor_->GetEnvironmentParameterRepresentation(i); |
| 131 HParameter* param = Add<HParameter>(i, | 131 HParameter* param = Add<HParameter>(i, HParameter::REGISTER_PARAMETER, r); |
| 132 HParameter::REGISTER_PARAMETER, r); | |
| 133 start_environment->Bind(i, param); | 132 start_environment->Bind(i, param); |
| 134 parameters_[i] = param; | 133 parameters_[i] = param; |
| 135 if (descriptor_->IsEnvironmentParameterCountRegister(i)) { | 134 if (descriptor_->IsEnvironmentParameterCountRegister(i)) { |
| 136 param->set_type(HType::Smi()); | 135 param->set_type(HType::Smi()); |
| 137 stack_parameter_count = param; | 136 stack_parameter_count = param; |
| 138 arguments_length_ = stack_parameter_count; | 137 arguments_length_ = stack_parameter_count; |
| 139 } | 138 } |
| 140 } | 139 } |
| 141 | 140 |
| 142 ASSERT(!runtime_stack_params || arguments_length_ != NULL); | 141 ASSERT(!runtime_stack_params || arguments_length_ != NULL); |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 530 return feedback_vector; | 529 return feedback_vector; |
| 531 } | 530 } |
| 532 | 531 |
| 533 | 532 |
| 534 Handle<Code> CreateAllocationSiteStub::GenerateCode() { | 533 Handle<Code> CreateAllocationSiteStub::GenerateCode() { |
| 535 return DoGenerateCode(this); | 534 return DoGenerateCode(this); |
| 536 } | 535 } |
| 537 | 536 |
| 538 | 537 |
| 539 template <> | 538 template <> |
| 539 HValue* CodeStubGraphBuilder<GrowArrayElementsStub>::BuildCodeStub() { |
| 540 HValue* object = GetParameter(GrowArrayElementsStub::kObjectIndex); |
| 541 HValue* key = GetParameter(GrowArrayElementsStub::kKeyIndex); |
| 542 HValue* current_capacity = GetParameter( |
| 543 GrowArrayElementsStub::kCapacityIndex); |
| 544 ElementsKind kind = casted_stub()->elements_kind(); |
| 545 |
| 546 HValue* elements = AddLoadElements(object); |
| 547 HValue* length = casted_stub()->is_js_array() |
| 548 ? Add<HLoadNamedField>(object, static_cast<HValue*>(NULL), |
| 549 HObjectAccess::ForArrayLength(kind)) |
| 550 : current_capacity; |
| 551 |
| 552 return BuildCheckAndGrowElementsCapacity(object, elements, kind, length, |
| 553 current_capacity, key); |
| 554 } |
| 555 |
| 556 |
| 557 Handle<Code> GrowArrayElementsStub::GenerateCode() { |
| 558 return DoGenerateCode(this); |
| 559 } |
| 560 |
| 561 |
| 562 template <> |
| 540 HValue* CodeStubGraphBuilder<KeyedLoadFastElementStub>::BuildCodeStub() { | 563 HValue* CodeStubGraphBuilder<KeyedLoadFastElementStub>::BuildCodeStub() { |
| 541 HInstruction* load = BuildUncheckedMonomorphicElementAccess( | 564 HInstruction* load = BuildUncheckedMonomorphicElementAccess( |
| 542 GetParameter(KeyedLoadIC::kReceiverIndex), | 565 GetParameter(KeyedLoadIC::kReceiverIndex), |
| 543 GetParameter(KeyedLoadIC::kNameIndex), | 566 GetParameter(KeyedLoadIC::kNameIndex), |
| 544 NULL, | 567 NULL, |
| 545 casted_stub()->is_js_array(), | 568 casted_stub()->is_js_array(), |
| 546 casted_stub()->elements_kind(), | 569 casted_stub()->elements_kind(), |
| 547 LOAD, | 570 LOAD, |
| 548 NEVER_RETURN_HOLE, | 571 NEVER_RETURN_HOLE, |
| 549 STANDARD_STORE); | 572 STANDARD_STORE); |
| (...skipping 1177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1727 return Pop(); | 1750 return Pop(); |
| 1728 } | 1751 } |
| 1729 | 1752 |
| 1730 | 1753 |
| 1731 Handle<Code> KeyedLoadGenericElementStub::GenerateCode() { | 1754 Handle<Code> KeyedLoadGenericElementStub::GenerateCode() { |
| 1732 return DoGenerateCode(this); | 1755 return DoGenerateCode(this); |
| 1733 } | 1756 } |
| 1734 | 1757 |
| 1735 | 1758 |
| 1736 } } // namespace v8::internal | 1759 } } // namespace v8::internal |
| OLD | NEW |