| Index: src/code-stubs.h
|
| diff --git a/src/code-stubs.h b/src/code-stubs.h
|
| index 8591adbea0d3c3c8322f52d7740c331cd88abd08..6e46d916821c122f94ab2e35d64287156e5a289f 100644
|
| --- a/src/code-stubs.h
|
| +++ b/src/code-stubs.h
|
| @@ -1305,6 +1305,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,
|
|
|