< prev index next >

src/hotspot/cpu/ppc/c1_LIRGenerator_ppc.cpp

Print this page

 329 void LIRGenerator::do_MonitorEnter(MonitorEnter* x) {
 330   assert(x->is_pinned(),"");
 331   LIRItem obj(x->obj(), this);
 332   obj.load_item();
 333 
 334   set_no_result(x);
 335 
 336   // We use R4+R5 in order to get a temp effect. These regs are used in slow path (MonitorEnterStub).
 337   LIR_Opr lock    = FrameMap::R5_opr;
 338   LIR_Opr scratch = FrameMap::R4_opr;
 339   LIR_Opr hdr     = FrameMap::R6_opr;
 340 
 341   CodeEmitInfo* info_for_exception = NULL;
 342   if (x->needs_null_check()) {
 343     info_for_exception = state_for(x);
 344   }
 345 
 346   // This CodeEmitInfo must not have the xhandlers because here the
 347   // object is already locked (xhandlers expects object to be unlocked).
 348   CodeEmitInfo* info = state_for(x, x->state(), true);
 349   monitor_enter(obj.result(), lock, hdr, scratch, x->monitor_no(), info_for_exception, info);
 350 }
 351 
 352 
 353 void LIRGenerator::do_MonitorExit(MonitorExit* x) {
 354   assert(x->is_pinned(),"");
 355   LIRItem obj(x->obj(), this);
 356   obj.dont_load_item();
 357 
 358   set_no_result(x);
 359   LIR_Opr lock     = FrameMap::R5_opr;
 360   LIR_Opr hdr      = FrameMap::R4_opr; // Used for slow path (MonitorExitStub).
 361   LIR_Opr obj_temp = FrameMap::R6_opr;
 362   monitor_exit(obj_temp, lock, hdr, LIR_OprFact::illegalOpr, x->monitor_no());
 363 }
 364 
 365 
 366 // _ineg, _lneg, _fneg, _dneg
 367 void LIRGenerator::do_NegateOp(NegateOp* x) {
 368   LIRItem value(x->x(), this);
 369   value.load_item();

 329 void LIRGenerator::do_MonitorEnter(MonitorEnter* x) {
 330   assert(x->is_pinned(),"");
 331   LIRItem obj(x->obj(), this);
 332   obj.load_item();
 333 
 334   set_no_result(x);
 335 
 336   // We use R4+R5 in order to get a temp effect. These regs are used in slow path (MonitorEnterStub).
 337   LIR_Opr lock    = FrameMap::R5_opr;
 338   LIR_Opr scratch = FrameMap::R4_opr;
 339   LIR_Opr hdr     = FrameMap::R6_opr;
 340 
 341   CodeEmitInfo* info_for_exception = NULL;
 342   if (x->needs_null_check()) {
 343     info_for_exception = state_for(x);
 344   }
 345 
 346   // This CodeEmitInfo must not have the xhandlers because here the
 347   // object is already locked (xhandlers expects object to be unlocked).
 348   CodeEmitInfo* info = state_for(x, x->state(), true);
 349   monitor_enter(obj.result(), lock, hdr, scratch, new_register(T_INT), x->monitor_no(), info_for_exception, info);
 350 }
 351 
 352 
 353 void LIRGenerator::do_MonitorExit(MonitorExit* x) {
 354   assert(x->is_pinned(),"");
 355   LIRItem obj(x->obj(), this);
 356   obj.dont_load_item();
 357 
 358   set_no_result(x);
 359   LIR_Opr lock     = FrameMap::R5_opr;
 360   LIR_Opr hdr      = FrameMap::R4_opr; // Used for slow path (MonitorExitStub).
 361   LIR_Opr obj_temp = FrameMap::R6_opr;
 362   monitor_exit(obj_temp, lock, hdr, LIR_OprFact::illegalOpr, x->monitor_no());
 363 }
 364 
 365 
 366 // _ineg, _lneg, _fneg, _dneg
 367 void LIRGenerator::do_NegateOp(NegateOp* x) {
 368   LIRItem value(x->x(), this);
 369   value.load_item();
< prev index next >