< prev index next >

src/hotspot/share/c1/c1_CodeStubs.hpp

Print this page

*** 319,337 **** class MonitorEnterStub: public MonitorAccessStub { private: CodeEmitInfo* _info; public: ! MonitorEnterStub(LIR_Opr obj_reg, LIR_Opr lock_reg, CodeEmitInfo* info); virtual void emit_code(LIR_Assembler* e); virtual CodeEmitInfo* info() const { return _info; } virtual void visit(LIR_OpVisitState* visitor) { visitor->do_input(_obj_reg); visitor->do_input(_lock_reg); visitor->do_slow_case(_info); } #ifndef PRODUCT virtual void print_name(outputStream* out) const { out->print("MonitorEnterStub"); } #endif // PRODUCT --- 319,342 ---- class MonitorEnterStub: public MonitorAccessStub { private: CodeEmitInfo* _info; + CodeStub* _throw_imse_stub; + LIR_Opr _scratch_reg; public: ! MonitorEnterStub(LIR_Opr obj_reg, LIR_Opr lock_reg, CodeEmitInfo* info, CodeStub* throw_imse_stub = NULL, LIR_Opr scratch_reg = LIR_OprFact::illegalOpr); virtual void emit_code(LIR_Assembler* e); virtual CodeEmitInfo* info() const { return _info; } virtual void visit(LIR_OpVisitState* visitor) { visitor->do_input(_obj_reg); visitor->do_input(_lock_reg); + if (_scratch_reg != LIR_OprFact::illegalOpr) { + visitor->do_temp(_scratch_reg); + } visitor->do_slow_case(_info); } #ifndef PRODUCT virtual void print_name(outputStream* out) const { out->print("MonitorEnterStub"); } #endif // PRODUCT
< prev index next >