< prev index next >

src/hotspot/share/c1/c1_CodeStubs.hpp

Print this page

@@ -229,10 +229,11 @@
 #ifndef PRODUCT
   virtual void print_name(outputStream* out) const { out->print("ImplicitNullCheckStub"); }
 #endif // PRODUCT
 };
 
+
 class LoadFlattenedArrayStub: public CodeStub {
  private:
   LIR_Opr          _array;
   LIR_Opr          _index;
   LIR_Opr          _result;

@@ -252,10 +253,32 @@
   virtual void print_name(outputStream* out) const { out->print("LoadFlattenedArrayStub"); }
 #endif // PRODUCT
 };
 
 
+class StoreFlattenedArrayStub: public CodeStub {
+ private:
+  LIR_Opr          _array;
+  LIR_Opr          _index;
+  LIR_Opr          _value;
+  CodeEmitInfo*    _info;
+
+ public:
+  StoreFlattenedArrayStub(LIR_Opr array, LIR_Opr index, LIR_Opr value, CodeEmitInfo* info);
+  virtual void emit_code(LIR_Assembler* e);
+  virtual CodeEmitInfo* info() const             { return _info; }
+  virtual void visit(LIR_OpVisitState* visitor) {
+    visitor->do_slow_case(_info);
+    visitor->do_input(_array);
+    visitor->do_input(_index);
+    visitor->do_input(_value);
+  }
+#ifndef PRODUCT
+  virtual void print_name(outputStream* out) const { out->print("StoreFlattenedArrayStub"); }
+#endif // PRODUCT
+};
+
 
 class NewInstanceStub: public CodeStub {
  private:
   ciInstanceKlass* _klass;
   LIR_Opr          _klass_reg;
< prev index next >