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

Side by Side Diff: src/code-stubs.h

Issue 1895093002: Create per-descriptor-index LoadApiGetterStub (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase Created 4 years, 8 months 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/code-factory.cc ('k') | src/code-stubs.cc » ('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 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 #ifndef V8_CODE_STUBS_H_ 5 #ifndef V8_CODE_STUBS_H_
6 #define V8_CODE_STUBS_H_ 6 #define V8_CODE_STUBS_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/assembler.h" 9 #include "src/assembler.h"
10 #include "src/code-stub-assembler.h" 10 #include "src/code-stub-assembler.h"
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 V(StringNotEqual) \ 133 V(StringNotEqual) \
134 V(StringLessThan) \ 134 V(StringLessThan) \
135 V(StringLessThanOrEqual) \ 135 V(StringLessThanOrEqual) \
136 V(StringGreaterThan) \ 136 V(StringGreaterThan) \
137 V(StringGreaterThanOrEqual) \ 137 V(StringGreaterThanOrEqual) \
138 V(ToBoolean) \ 138 V(ToBoolean) \
139 V(ToInteger) \ 139 V(ToInteger) \
140 V(ToLength) \ 140 V(ToLength) \
141 /* IC Handler stubs */ \ 141 /* IC Handler stubs */ \
142 V(ArrayBufferViewLoadField) \ 142 V(ArrayBufferViewLoadField) \
143 V(KeyedLoadSloppyArguments) \
144 V(KeyedStoreSloppyArguments) \
145 V(LoadApiGetter) \
143 V(LoadConstant) \ 146 V(LoadConstant) \
144 V(LoadFastElement) \ 147 V(LoadFastElement) \
145 V(LoadField) \ 148 V(LoadField) \
146 V(LoadIndexedInterceptor) \ 149 V(LoadIndexedInterceptor) \
147 V(KeyedLoadSloppyArguments) \
148 V(KeyedStoreSloppyArguments) \
149 V(StoreField) \ 150 V(StoreField) \
151 V(StoreGlobal) \
150 V(StoreInterceptor) \ 152 V(StoreInterceptor) \
151 V(StoreGlobal) \
152 V(StoreTransition) 153 V(StoreTransition)
153 154
154 // List of code stubs only used on ARM 32 bits platforms. 155 // List of code stubs only used on ARM 32 bits platforms.
155 #if V8_TARGET_ARCH_ARM 156 #if V8_TARGET_ARCH_ARM
156 #define CODE_STUB_LIST_ARM(V) V(DirectCEntry) 157 #define CODE_STUB_LIST_ARM(V) V(DirectCEntry)
157 158
158 #else 159 #else
159 #define CODE_STUB_LIST_ARM(V) 160 #define CODE_STUB_LIST_ARM(V)
160 #endif 161 #endif
161 162
(...skipping 1287 matching lines...) Expand 10 before | Expand all | Expand 10 after
1449 1450
1450 protected: 1451 protected:
1451 Code::Kind kind() const override { return Code::LOAD_IC; } 1452 Code::Kind kind() const override { return Code::LOAD_IC; }
1452 1453
1453 private: 1454 private:
1454 class ConstantIndexBits : public BitField<int, 0, kSubMinorKeyBits> {}; 1455 class ConstantIndexBits : public BitField<int, 0, kSubMinorKeyBits> {};
1455 1456
1456 DEFINE_HANDLER_CODE_STUB(LoadConstant, HandlerStub); 1457 DEFINE_HANDLER_CODE_STUB(LoadConstant, HandlerStub);
1457 }; 1458 };
1458 1459
1460 class LoadApiGetterStub : public TurboFanCodeStub {
1461 public:
1462 LoadApiGetterStub(Isolate* isolate, bool receiver_is_holder, int index)
1463 : TurboFanCodeStub(isolate) {
1464 minor_key_ = IndexBits::encode(index) |
1465 ReceiverIsHolderBits::encode(receiver_is_holder);
1466 }
1467
1468 Code::Kind GetCodeKind() const override { return Code::HANDLER; }
1469 ExtraICState GetExtraICState() const override { return Code::LOAD_IC; }
1470 InlineCacheState GetICState() const override { return MONOMORPHIC; }
1471
1472 int index() const { return IndexBits::decode(minor_key_); }
1473 bool receiver_is_holder() const {
1474 return ReceiverIsHolderBits::decode(minor_key_);
1475 }
1476
1477 private:
1478 class ReceiverIsHolderBits : public BitField<bool, 0, 1> {};
1479 class IndexBits : public BitField<int, 1, kDescriptorIndexBitCount> {};
1480
1481 DEFINE_CALL_INTERFACE_DESCRIPTOR(Load);
1482 DEFINE_TURBOFAN_CODE_STUB(LoadApiGetter, TurboFanCodeStub);
1483 };
1459 1484
1460 class StoreFieldStub : public HandlerStub { 1485 class StoreFieldStub : public HandlerStub {
1461 public: 1486 public:
1462 StoreFieldStub(Isolate* isolate, FieldIndex index, 1487 StoreFieldStub(Isolate* isolate, FieldIndex index,
1463 Representation representation) 1488 Representation representation)
1464 : HandlerStub(isolate) { 1489 : HandlerStub(isolate) {
1465 int property_index_key = index.GetFieldAccessStubKey(); 1490 int property_index_key = index.GetFieldAccessStubKey();
1466 uint8_t repr = PropertyDetails::EncodeRepresentation(representation); 1491 uint8_t repr = PropertyDetails::EncodeRepresentation(representation);
1467 set_sub_minor_key(StoreFieldByIndexBits::encode(property_index_key) | 1492 set_sub_minor_key(StoreFieldByIndexBits::encode(property_index_key) |
1468 RepresentationBits::encode(repr)); 1493 RepresentationBits::encode(repr));
(...skipping 1682 matching lines...) Expand 10 before | Expand all | Expand 10 after
3151 #undef DEFINE_HYDROGEN_CODE_STUB 3176 #undef DEFINE_HYDROGEN_CODE_STUB
3152 #undef DEFINE_CODE_STUB 3177 #undef DEFINE_CODE_STUB
3153 #undef DEFINE_CODE_STUB_BASE 3178 #undef DEFINE_CODE_STUB_BASE
3154 3179
3155 extern Representation RepresentationFromType(Type* type); 3180 extern Representation RepresentationFromType(Type* type);
3156 3181
3157 } // namespace internal 3182 } // namespace internal
3158 } // namespace v8 3183 } // namespace v8
3159 3184
3160 #endif // V8_CODE_STUBS_H_ 3185 #endif // V8_CODE_STUBS_H_
OLDNEW
« no previous file with comments | « src/code-factory.cc ('k') | src/code-stubs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698