| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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/ic/accessor-assembler.h" | 5 #include "src/ic/accessor-assembler.h" |
| 6 #include "src/ic/accessor-assembler-impl.h" | 6 #include "src/ic/accessor-assembler-impl.h" |
| 7 | 7 |
| 8 #include "src/code-factory.h" | 8 #include "src/code-factory.h" |
| 9 #include "src/code-stubs.h" | 9 #include "src/code-stubs.h" |
| 10 #include "src/ic/handler-configuration.h" | 10 #include "src/ic/handler-configuration.h" |
| (...skipping 1152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1163 LoadFixedArrayElement(p->vector, p->slot, kPointerSize, SMI_PARAMETERS); | 1163 LoadFixedArrayElement(p->vector, p->slot, kPointerSize, SMI_PARAMETERS); |
| 1164 GotoIf(WordEqual(handler, LoadRoot(Heap::kuninitialized_symbolRootIndex)), | 1164 GotoIf(WordEqual(handler, LoadRoot(Heap::kuninitialized_symbolRootIndex)), |
| 1165 &miss); | 1165 &miss); |
| 1166 | 1166 |
| 1167 // In this case {handler} must be a Code object. | 1167 // In this case {handler} must be a Code object. |
| 1168 CSA_ASSERT(this, HasInstanceType(handler, CODE_TYPE)); | 1168 CSA_ASSERT(this, HasInstanceType(handler, CODE_TYPE)); |
| 1169 LoadWithVectorDescriptor descriptor(isolate()); | 1169 LoadWithVectorDescriptor descriptor(isolate()); |
| 1170 Node* native_context = LoadNativeContext(p->context); | 1170 Node* native_context = LoadNativeContext(p->context); |
| 1171 Node* receiver = | 1171 Node* receiver = |
| 1172 LoadContextElement(native_context, Context::EXTENSION_INDEX); | 1172 LoadContextElement(native_context, Context::EXTENSION_INDEX); |
| 1173 Node* fake_name = IntPtrConstant(0); | 1173 TailCallStub(descriptor, handler, p->context, receiver, p->name, p->slot, |
| 1174 TailCallStub(descriptor, handler, p->context, receiver, fake_name, p->slot, | |
| 1175 p->vector); | 1174 p->vector); |
| 1176 } | 1175 } |
| 1177 Bind(&miss); | 1176 Bind(&miss); |
| 1178 { | 1177 { |
| 1179 TailCallRuntime(Runtime::kLoadGlobalIC_Miss, p->context, p->slot, | 1178 TailCallRuntime(Runtime::kLoadGlobalIC_Miss, p->context, p->slot, |
| 1180 p->vector); | 1179 p->vector); |
| 1181 } | 1180 } |
| 1182 } | 1181 } |
| 1183 | 1182 |
| 1184 void AccessorAssemblerImpl::KeyedLoadIC(const LoadICParameters* p) { | 1183 void AccessorAssemblerImpl::KeyedLoadIC(const LoadICParameters* p) { |
| (...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1562 Node* handler = Parameter(Descriptor::kHandler); | 1561 Node* handler = Parameter(Descriptor::kHandler); |
| 1563 Node* context = Parameter(Descriptor::kContext); | 1562 Node* context = Parameter(Descriptor::kContext); |
| 1564 | 1563 |
| 1565 LoadICParameters p(context, receiver, name, slot, vector); | 1564 LoadICParameters p(context, receiver, name, slot, vector); |
| 1566 LoadICProtoArray(&p, handler); | 1565 LoadICProtoArray(&p, handler); |
| 1567 } | 1566 } |
| 1568 | 1567 |
| 1569 void AccessorAssemblerImpl::GenerateLoadGlobalIC() { | 1568 void AccessorAssemblerImpl::GenerateLoadGlobalIC() { |
| 1570 typedef LoadGlobalICStub::Descriptor Descriptor; | 1569 typedef LoadGlobalICStub::Descriptor Descriptor; |
| 1571 | 1570 |
| 1571 Node* name = Parameter(Descriptor::kName); |
| 1572 Node* slot = Parameter(Descriptor::kSlot); | 1572 Node* slot = Parameter(Descriptor::kSlot); |
| 1573 Node* vector = Parameter(Descriptor::kVector); | 1573 Node* vector = Parameter(Descriptor::kVector); |
| 1574 Node* context = Parameter(Descriptor::kContext); | 1574 Node* context = Parameter(Descriptor::kContext); |
| 1575 | 1575 |
| 1576 LoadICParameters p(context, nullptr, nullptr, slot, vector); | 1576 LoadICParameters p(context, nullptr, name, slot, vector); |
| 1577 LoadGlobalIC(&p); | 1577 LoadGlobalIC(&p); |
| 1578 } | 1578 } |
| 1579 | 1579 |
| 1580 void AccessorAssemblerImpl::GenerateLoadGlobalICTrampoline() { | 1580 void AccessorAssemblerImpl::GenerateLoadGlobalICTrampoline() { |
| 1581 typedef LoadGlobalICTrampolineStub::Descriptor Descriptor; | 1581 typedef LoadGlobalICTrampolineStub::Descriptor Descriptor; |
| 1582 | 1582 |
| 1583 Node* name = Parameter(Descriptor::kName); |
| 1583 Node* slot = Parameter(Descriptor::kSlot); | 1584 Node* slot = Parameter(Descriptor::kSlot); |
| 1584 Node* context = Parameter(Descriptor::kContext); | 1585 Node* context = Parameter(Descriptor::kContext); |
| 1585 Node* vector = LoadTypeFeedbackVectorForStub(); | 1586 Node* vector = LoadTypeFeedbackVectorForStub(); |
| 1586 | 1587 |
| 1587 LoadICParameters p(context, nullptr, nullptr, slot, vector); | 1588 LoadICParameters p(context, nullptr, name, slot, vector); |
| 1588 LoadGlobalIC(&p); | 1589 LoadGlobalIC(&p); |
| 1589 } | 1590 } |
| 1590 | 1591 |
| 1591 void AccessorAssemblerImpl::GenerateKeyedLoadICTF() { | 1592 void AccessorAssemblerImpl::GenerateKeyedLoadICTF() { |
| 1592 typedef KeyedLoadICTFStub::Descriptor Descriptor; | 1593 typedef KeyedLoadICTFStub::Descriptor Descriptor; |
| 1593 | 1594 |
| 1594 Node* receiver = Parameter(Descriptor::kReceiver); | 1595 Node* receiver = Parameter(Descriptor::kReceiver); |
| 1595 Node* name = Parameter(Descriptor::kName); | 1596 Node* name = Parameter(Descriptor::kName); |
| 1596 Node* slot = Parameter(Descriptor::kSlot); | 1597 Node* slot = Parameter(Descriptor::kSlot); |
| 1597 Node* vector = Parameter(Descriptor::kVector); | 1598 Node* vector = Parameter(Descriptor::kVector); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1704 void AccessorAssembler::GenerateKeyedStoreICTrampolineTF( | 1705 void AccessorAssembler::GenerateKeyedStoreICTrampolineTF( |
| 1705 CodeAssemblerState* state, LanguageMode language_mode) { | 1706 CodeAssemblerState* state, LanguageMode language_mode) { |
| 1706 AccessorAssemblerImpl assembler(state); | 1707 AccessorAssemblerImpl assembler(state); |
| 1707 assembler.GenerateKeyedStoreICTrampolineTF(language_mode); | 1708 assembler.GenerateKeyedStoreICTrampolineTF(language_mode); |
| 1708 } | 1709 } |
| 1709 | 1710 |
| 1710 #undef ACCESSOR_ASSEMBLER_PUBLIC_INTERFACE | 1711 #undef ACCESSOR_ASSEMBLER_PUBLIC_INTERFACE |
| 1711 | 1712 |
| 1712 } // namespace internal | 1713 } // namespace internal |
| 1713 } // namespace v8 | 1714 } // namespace v8 |
| OLD | NEW |