Index: src/code-stubs.h |
diff --git a/src/code-stubs.h b/src/code-stubs.h |
index 7a6ad6ad6e83c27b225ce90ba2a5a5f1bfebf7db..bf87a0d157449b26e12b373d0d7aaf15763021be 100644 |
--- a/src/code-stubs.h |
+++ b/src/code-stubs.h |
@@ -65,6 +65,7 @@ namespace internal { |
V(FastCloneShallowObject) \ |
V(FastNewClosure) \ |
V(FastNewContext) \ |
+ V(GrowArrayElements) \ |
V(InternalArrayNArgumentsConstructor) \ |
V(InternalArrayNoArgumentConstructor) \ |
V(InternalArraySingleArgumentConstructor) \ |
@@ -662,6 +663,29 @@ class CreateAllocationSiteStub : public HydrogenCodeStub { |
}; |
+class GrowArrayElementsStub : public HydrogenCodeStub { |
+ public: |
+ GrowArrayElementsStub(Isolate* isolate, bool is_js_array, ElementsKind kind) |
+ : HydrogenCodeStub(isolate) { |
+ set_sub_minor_key(ElementsKindBits::encode(kind) | |
+ IsJsArrayBits::encode(is_js_array)); |
+ } |
+ |
+ ElementsKind elements_kind() const { |
+ return ElementsKindBits::decode(sub_minor_key()); |
+ } |
+ |
+ bool is_js_array() const { return IsJsArrayBits::decode(sub_minor_key()); } |
+ |
+ private: |
+ class ElementsKindBits : public BitField<ElementsKind, 0, 8> {}; |
+ class IsJsArrayBits : public BitField<bool, ElementsKindBits::kNext, 1> {}; |
+ |
+ DEFINE_CALL_INTERFACE_DESCRIPTOR(GrowArrayElements); |
+ DEFINE_HYDROGEN_CODE_STUB(GrowArrayElements, HydrogenCodeStub); |
+}; |
+ |
+ |
class InstanceofStub: public PlatformCodeStub { |
public: |
enum Flags { |