< prev index next >

src/hotspot/share/c1/c1_CodeStubs.hpp

Print this page


 220   ImplicitNullCheckStub(int offset, CodeEmitInfo* info)
 221     : _info(info), _offset(offset) {
 222   }
 223   virtual void emit_code(LIR_Assembler* e);
 224   virtual CodeEmitInfo* info() const             { return _info; }
 225   virtual bool is_exception_throw_stub() const   { return true; }
 226   virtual void visit(LIR_OpVisitState* visitor) {
 227     visitor->do_slow_case(_info);
 228   }
 229 #ifndef PRODUCT
 230   virtual void print_name(outputStream* out) const { out->print("ImplicitNullCheckStub"); }
 231 #endif // PRODUCT
 232 };
 233 
 234 
 235 class LoadFlattenedArrayStub: public CodeStub {
 236  private:
 237   LIR_Opr          _array;
 238   LIR_Opr          _index;
 239   LIR_Opr          _result;

 240   CodeEmitInfo*    _info;
 241 
 242  public:
 243   LoadFlattenedArrayStub(LIR_Opr array, LIR_Opr index, LIR_Opr result, CodeEmitInfo* info);
 244   virtual void emit_code(LIR_Assembler* e);
 245   virtual CodeEmitInfo* info() const             { return _info; }
 246   virtual void visit(LIR_OpVisitState* visitor);












 247 #ifndef PRODUCT
 248   virtual void print_name(outputStream* out) const { out->print("LoadFlattenedArrayStub"); }
 249 #endif // PRODUCT
 250 };
 251 
 252 
 253 class StoreFlattenedArrayStub: public CodeStub {
 254  private:
 255   LIR_Opr          _array;
 256   LIR_Opr          _index;
 257   LIR_Opr          _value;
 258   CodeEmitInfo*    _info;
 259 
 260  public:
 261   StoreFlattenedArrayStub(LIR_Opr array, LIR_Opr index, LIR_Opr value, CodeEmitInfo* info);
 262   virtual void emit_code(LIR_Assembler* e);
 263   virtual CodeEmitInfo* info() const             { return _info; }
 264   virtual void visit(LIR_OpVisitState* visitor) {
 265     visitor->do_slow_case(_info);
 266     visitor->do_input(_array);




 220   ImplicitNullCheckStub(int offset, CodeEmitInfo* info)
 221     : _info(info), _offset(offset) {
 222   }
 223   virtual void emit_code(LIR_Assembler* e);
 224   virtual CodeEmitInfo* info() const             { return _info; }
 225   virtual bool is_exception_throw_stub() const   { return true; }
 226   virtual void visit(LIR_OpVisitState* visitor) {
 227     visitor->do_slow_case(_info);
 228   }
 229 #ifndef PRODUCT
 230   virtual void print_name(outputStream* out) const { out->print("ImplicitNullCheckStub"); }
 231 #endif // PRODUCT
 232 };
 233 
 234 
 235 class LoadFlattenedArrayStub: public CodeStub {
 236  private:
 237   LIR_Opr          _array;
 238   LIR_Opr          _index;
 239   LIR_Opr          _result;
 240   LIR_Opr          _scratch_reg;
 241   CodeEmitInfo*    _info;
 242 
 243  public:
 244   LoadFlattenedArrayStub(LIR_Opr array, LIR_Opr index, LIR_Opr result, CodeEmitInfo* info);
 245   virtual void emit_code(LIR_Assembler* e);
 246   virtual CodeEmitInfo* info() const             { return _info; }
 247   virtual void visit(LIR_OpVisitState* visitor) {
 248     visitor->do_slow_case(_info);
 249     visitor->do_input(_array);
 250     visitor->do_input(_index);
 251     visitor->do_output(_result);
 252     if (_scratch_reg != LIR_OprFact::illegalOpr) {
 253       visitor->do_temp(_scratch_reg);
 254     }
 255   // Tell the register allocator that the runtime call will scratch rax.
 256   visitor->do_output(FrameMap::rax_oop_opr);
 257 }
 258 
 259 
 260 #ifndef PRODUCT
 261   virtual void print_name(outputStream* out) const { out->print("LoadFlattenedArrayStub"); }
 262 #endif // PRODUCT
 263 };
 264 
 265 
 266 class StoreFlattenedArrayStub: public CodeStub {
 267  private:
 268   LIR_Opr          _array;
 269   LIR_Opr          _index;
 270   LIR_Opr          _value;
 271   CodeEmitInfo*    _info;
 272 
 273  public:
 274   StoreFlattenedArrayStub(LIR_Opr array, LIR_Opr index, LIR_Opr value, CodeEmitInfo* info);
 275   virtual void emit_code(LIR_Assembler* e);
 276   virtual CodeEmitInfo* info() const             { return _info; }
 277   virtual void visit(LIR_OpVisitState* visitor) {
 278     visitor->do_slow_case(_info);
 279     visitor->do_input(_array);


< prev index next >