Index: src/code-stubs.h |
diff --git a/src/code-stubs.h b/src/code-stubs.h |
index 6bfe8b5c21501800fcdcf92255d1d3a74b8bf4c7..c6767e9b8b73f60c318e6a18952b0367aae8026e 100644 |
--- a/src/code-stubs.h |
+++ b/src/code-stubs.h |
@@ -69,6 +69,7 @@ namespace internal { |
V(FastCloneShallowObject) \ |
V(FastNewClosure) \ |
V(FastNewContext) \ |
+ V(GrowArrayElements) \ |
V(InternalArrayNArgumentsConstructor) \ |
V(InternalArrayNoArgumentConstructor) \ |
V(InternalArraySingleArgumentConstructor) \ |
@@ -709,6 +710,28 @@ class CreateWeakCellStub : 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 { |