Index: src/code-stubs.h |
diff --git a/src/code-stubs.h b/src/code-stubs.h |
index f832f40dd450eb89a3cadba194df13c630ea800f..c40bc857cad53b1d03778940c7615c3cc67c2a38 100644 |
--- a/src/code-stubs.h |
+++ b/src/code-stubs.h |
@@ -88,6 +88,7 @@ namespace internal { |
V(VectorRawKeyedLoad) \ |
V(VectorRawLoad) \ |
/* IC Handler stubs */ \ |
+ V(ArrayBufferViewLoadField) \ |
V(LoadConstant) \ |
V(LoadField) \ |
V(KeyedLoadSloppyArguments) \ |
@@ -973,6 +974,32 @@ class LoadFieldStub: public HandlerStub { |
}; |
+class ArrayBufferViewLoadFieldStub : public HandlerStub { |
+ public: |
+ ArrayBufferViewLoadFieldStub(Isolate* isolate, FieldIndex index) |
+ : HandlerStub(isolate) { |
+ int property_index_key = index.GetFieldAccessStubKey(); |
+ set_sub_minor_key( |
+ ArrayBufferViewLoadFieldByIndexBits::encode(property_index_key)); |
+ } |
+ |
+ FieldIndex index() const { |
+ int property_index_key = |
+ ArrayBufferViewLoadFieldByIndexBits::decode(sub_minor_key()); |
+ return FieldIndex::FromFieldAccessStubKey(property_index_key); |
+ } |
+ |
+ protected: |
+ Code::Kind kind() const override { return Code::LOAD_IC; } |
+ Code::StubType GetStubType() const override { return Code::FAST; } |
+ |
+ private: |
+ class ArrayBufferViewLoadFieldByIndexBits : public BitField<int, 0, 13> {}; |
+ |
+ DEFINE_HANDLER_CODE_STUB(ArrayBufferViewLoadField, HandlerStub); |
+}; |
+ |
+ |
class KeyedLoadSloppyArgumentsStub : public HandlerStub { |
public: |
explicit KeyedLoadSloppyArgumentsStub(Isolate* isolate) |