Index: src/code-stubs.h |
diff --git a/src/code-stubs.h b/src/code-stubs.h |
index e91b241579b0389aee2f373b262e80c0aefd7102..6e95780824bf3083f61200f9db482efe903b313f 100644 |
--- a/src/code-stubs.h |
+++ b/src/code-stubs.h |
@@ -1312,6 +1312,47 @@ class KeyedLoadFastElementStub : public HydrogenCodeStub { |
}; |
+class KeyedStoreFastElementStub : public HydrogenCodeStub { |
+ public: |
+ KeyedStoreFastElementStub(bool is_js_array, |
+ ElementsKind elements_kind, |
+ KeyedAccessStoreMode mode) { |
+ bit_field_ = ElementsKindBits::encode(elements_kind) | |
+ IsJSArrayBits::encode(is_js_array) | |
+ StoreModeBits::encode(mode); |
+ } |
+ |
+ Major MajorKey() { return KeyedStoreElement; } |
+ int MinorKey() { return bit_field_; } |
+ |
+ bool is_js_array() const { |
+ return IsJSArrayBits::decode(bit_field_); |
+ } |
+ |
+ ElementsKind elements_kind() const { |
+ return ElementsKindBits::decode(bit_field_); |
+ } |
+ |
+ KeyedAccessStoreMode store_mode() const { |
+ return StoreModeBits::decode(bit_field_); |
+ } |
+ |
+ virtual Handle<Code> GenerateCode(); |
+ |
+ virtual void InitializeInterfaceDescriptor( |
+ Isolate* isolate, |
+ CodeStubInterfaceDescriptor* descriptor); |
+ |
+ private: |
+ class ElementsKindBits: public BitField<ElementsKind, 0, 8> {}; |
+ class StoreModeBits: public BitField<KeyedAccessStoreMode, 8, 4> {}; |
+ class IsJSArrayBits: public BitField<bool, 12, 1> {}; |
+ uint32_t bit_field_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(KeyedStoreFastElementStub); |
+}; |
+ |
+ |
class TransitionElementsKindStub : public HydrogenCodeStub { |
public: |
TransitionElementsKindStub(ElementsKind from_kind, |