Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Side by Side Diff: src/ic/accessor-assembler.cc

Issue 2510653002: [ic] Pass name to LoadGlobalIC again. (Closed)
Patch Set: Release fix Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/full-codegen/full-codegen.cc ('k') | src/interface-descriptors.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « src/full-codegen/full-codegen.cc ('k') | src/interface-descriptors.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698