Index: src/code-stubs.h |
diff --git a/src/code-stubs.h b/src/code-stubs.h |
index b1e42591281c032e48e518b09f75d6da9ee045d5..7379ff489c2bf534224ab39d99a427f8a8a55e9d 100644 |
--- a/src/code-stubs.h |
+++ b/src/code-stubs.h |
@@ -140,15 +140,16 @@ namespace internal { |
V(ToLength) \ |
/* IC Handler stubs */ \ |
V(ArrayBufferViewLoadField) \ |
+ V(KeyedLoadSloppyArguments) \ |
+ V(KeyedStoreSloppyArguments) \ |
+ V(LoadApiGetter) \ |
V(LoadConstant) \ |
V(LoadFastElement) \ |
V(LoadField) \ |
V(LoadIndexedInterceptor) \ |
- V(KeyedLoadSloppyArguments) \ |
- V(KeyedStoreSloppyArguments) \ |
V(StoreField) \ |
- V(StoreInterceptor) \ |
V(StoreGlobal) \ |
+ V(StoreInterceptor) \ |
V(StoreTransition) |
// List of code stubs only used on ARM 32 bits platforms. |
@@ -1456,6 +1457,30 @@ class LoadConstantStub : public HandlerStub { |
DEFINE_HANDLER_CODE_STUB(LoadConstant, HandlerStub); |
}; |
+class LoadApiGetterStub : public TurboFanCodeStub { |
+ public: |
+ LoadApiGetterStub(Isolate* isolate, bool receiver_is_holder, int index) |
+ : TurboFanCodeStub(isolate) { |
+ minor_key_ = IndexBits::encode(index) | |
+ ReceiverIsHolderBits::encode(receiver_is_holder); |
+ } |
+ |
+ Code::Kind GetCodeKind() const override { return Code::HANDLER; } |
+ ExtraICState GetExtraICState() const override { return Code::LOAD_IC; } |
+ InlineCacheState GetICState() const override { return MONOMORPHIC; } |
+ |
+ int index() const { return IndexBits::decode(minor_key_); } |
+ bool receiver_is_holder() const { |
+ return ReceiverIsHolderBits::decode(minor_key_); |
+ } |
+ |
+ private: |
+ class ReceiverIsHolderBits : public BitField<bool, 0, 1> {}; |
+ class IndexBits : public BitField<int, 1, kDescriptorIndexBitCount> {}; |
+ |
+ DEFINE_CALL_INTERFACE_DESCRIPTOR(Load); |
+ DEFINE_TURBOFAN_CODE_STUB(LoadApiGetter, TurboFanCodeStub); |
+}; |
class StoreFieldStub : public HandlerStub { |
public: |