214 class ImplicitNullCheckStub: public CodeStub { 215 private: 216 CodeEmitInfo* _info; 217 int _offset; 218 219 public: 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 class LoadFlattenedArrayStub: public CodeStub { 235 private: 236 LIR_Opr _array; 237 LIR_Opr _index; 238 LIR_Opr _result; 239 CodeEmitInfo* _info; 240 241 public: 242 LoadFlattenedArrayStub(LIR_Opr array, LIR_Opr index, LIR_Opr result, CodeEmitInfo* info); 243 virtual void emit_code(LIR_Assembler* e); 244 virtual CodeEmitInfo* info() const { return _info; } 245 virtual void visit(LIR_OpVisitState* visitor) { 246 visitor->do_slow_case(_info); 247 visitor->do_input(_array); 248 visitor->do_input(_index); 249 visitor->do_output(_result); 250 } 251 #ifndef PRODUCT 252 virtual void print_name(outputStream* out) const { out->print("LoadFlattenedArrayStub"); } 253 #endif // PRODUCT 254 }; 255 256 257 258 class NewInstanceStub: public CodeStub { 259 private: 260 ciInstanceKlass* _klass; 261 LIR_Opr _klass_reg; 262 LIR_Opr _result; 263 CodeEmitInfo* _info; 264 Runtime1::StubID _stub_id; 265 266 public: 267 NewInstanceStub(LIR_Opr klass_reg, LIR_Opr result, ciInstanceKlass* klass, CodeEmitInfo* info, Runtime1::StubID stub_id); 268 virtual void emit_code(LIR_Assembler* e); 269 virtual CodeEmitInfo* info() const { return _info; } 270 virtual void visit(LIR_OpVisitState* visitor) { 271 visitor->do_slow_case(_info); 272 visitor->do_input(_klass_reg); 273 visitor->do_output(_result); 274 } 275 #ifndef PRODUCT | 214 class ImplicitNullCheckStub: public CodeStub { 215 private: 216 CodeEmitInfo* _info; 217 int _offset; 218 219 public: 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 visitor->do_slow_case(_info); 248 visitor->do_input(_array); 249 visitor->do_input(_index); 250 visitor->do_output(_result); 251 } 252 #ifndef PRODUCT 253 virtual void print_name(outputStream* out) const { out->print("LoadFlattenedArrayStub"); } 254 #endif // PRODUCT 255 }; 256 257 258 class StoreFlattenedArrayStub: public CodeStub { 259 private: 260 LIR_Opr _array; 261 LIR_Opr _index; 262 LIR_Opr _value; 263 CodeEmitInfo* _info; 264 265 public: 266 StoreFlattenedArrayStub(LIR_Opr array, LIR_Opr index, LIR_Opr value, CodeEmitInfo* info); 267 virtual void emit_code(LIR_Assembler* e); 268 virtual CodeEmitInfo* info() const { return _info; } 269 virtual void visit(LIR_OpVisitState* visitor) { 270 visitor->do_slow_case(_info); 271 visitor->do_input(_array); 272 visitor->do_input(_index); 273 visitor->do_input(_value); 274 } 275 #ifndef PRODUCT 276 virtual void print_name(outputStream* out) const { out->print("StoreFlattenedArrayStub"); } 277 #endif // PRODUCT 278 }; 279 280 281 class NewInstanceStub: public CodeStub { 282 private: 283 ciInstanceKlass* _klass; 284 LIR_Opr _klass_reg; 285 LIR_Opr _result; 286 CodeEmitInfo* _info; 287 Runtime1::StubID _stub_id; 288 289 public: 290 NewInstanceStub(LIR_Opr klass_reg, LIR_Opr result, ciInstanceKlass* klass, CodeEmitInfo* info, Runtime1::StubID stub_id); 291 virtual void emit_code(LIR_Assembler* e); 292 virtual CodeEmitInfo* info() const { return _info; } 293 virtual void visit(LIR_OpVisitState* visitor) { 294 visitor->do_slow_case(_info); 295 visitor->do_input(_klass_reg); 296 visitor->do_output(_result); 297 } 298 #ifndef PRODUCT |