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(_klass_reg); 272 visitor->do_input(_length); 273 assert(_result->is_valid(), "must be valid"); visitor->do_output(_result); 274 } 275 #ifndef PRODUCT 276 virtual void print_name(outputStream* out) const { out->print("NewTypeArrayStub"); } 277 #endif // PRODUCT 278 }; 279 280 281 class NewObjectArrayStub: public CodeStub { 282 private: 283 LIR_Opr _klass_reg; 284 LIR_Opr _length; 285 LIR_Opr _result; 286 CodeEmitInfo* _info; 287 288 public: 289 NewObjectArrayStub(LIR_Opr klass_reg, LIR_Opr length, LIR_Opr result, CodeEmitInfo* info); 290 virtual void emit_code(LIR_Assembler* e); 291 virtual CodeEmitInfo* info() const { return _info; } 292 virtual void visit(LIR_OpVisitState* visitor) { 293 visitor->do_slow_case(_info); 294 visitor->do_input(_klass_reg); 295 visitor->do_input(_length); 296 assert(_result->is_valid(), "must be valid"); visitor->do_output(_result); 297 } 298 #ifndef PRODUCT 299 virtual void print_name(outputStream* out) const { out->print("NewObjectArrayStub"); } 300 #endif // PRODUCT 301 }; 302 303 304 class MonitorAccessStub: public CodeStub { 305 protected: 306 LIR_Opr _obj_reg; 307 LIR_Opr _lock_reg; 308 309 public: | 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(_klass_reg); 272 visitor->do_input(_length); 273 assert(_result->is_valid(), "must be valid"); visitor->do_output(_result); 274 } 275 #ifndef PRODUCT 276 virtual void print_name(outputStream* out) const { out->print("NewTypeArrayStub"); } 277 #endif // PRODUCT 278 }; 279 280 281 class NewObjectArrayStub: public CodeStub { 282 private: 283 LIR_Opr _klass_reg; 284 LIR_Opr _length; 285 LIR_Opr _result; 286 CodeEmitInfo* _info; 287 bool _is_value_type; 288 public: 289 NewObjectArrayStub(LIR_Opr klass_reg, LIR_Opr length, LIR_Opr result, CodeEmitInfo* info, bool is_value_type); 290 virtual void emit_code(LIR_Assembler* e); 291 virtual CodeEmitInfo* info() const { return _info; } 292 virtual void visit(LIR_OpVisitState* visitor) { 293 visitor->do_slow_case(_info); 294 visitor->do_input(_klass_reg); 295 visitor->do_input(_length); 296 assert(_result->is_valid(), "must be valid"); visitor->do_output(_result); 297 } 298 #ifndef PRODUCT 299 virtual void print_name(outputStream* out) const { out->print("NewObjectArrayStub"); } 300 #endif // PRODUCT 301 }; 302 303 304 class MonitorAccessStub: public CodeStub { 305 protected: 306 LIR_Opr _obj_reg; 307 LIR_Opr _lock_reg; 308 309 public: |