< prev index next >

src/hotspot/cpu/ppc/c1_MacroAssembler_ppc.cpp

Print this page




  66 
  67 void C1_MacroAssembler::explicit_null_check(Register base) {
  68   Unimplemented();
  69 }
  70 
  71 
  72 void C1_MacroAssembler::build_frame(int frame_size_in_bytes, int bang_size_in_bytes) {
  73   // Avoid stack bang as first instruction. It may get overwritten by patch_verified_entry.
  74   const Register return_pc = R20;
  75   mflr(return_pc);
  76 
  77   // Make sure there is enough stack space for this method's activation.
  78   assert(bang_size_in_bytes >= frame_size_in_bytes, "stack bang size incorrect");
  79   generate_stack_overflow_check(bang_size_in_bytes);
  80 
  81   std(return_pc, _abi(lr), R1_SP);     // SP->lr = return_pc
  82   push_frame(frame_size_in_bytes, R0); // SP -= frame_size_in_bytes
  83 }
  84 
  85 
  86 void C1_MacroAssembler::unverified_entry(Register receiver, Register ic_klass) {
  87   Unimplemented(); // Currently unused.
  88   //if (C1Breakpoint) illtrap();
  89   //inline_cache_check(receiver, ic_klass);
  90 }
  91 
  92 
  93 void C1_MacroAssembler::verified_entry() {
  94   if (C1Breakpoint) illtrap();
  95   // build frame
  96 }
  97 
  98 
  99 void C1_MacroAssembler::lock_object(Register Rmark, Register Roop, Register Rbox, Register Rscratch, Label& slow_case) {
 100   assert_different_registers(Rmark, Roop, Rbox, Rscratch);
 101 
 102   Label done, cas_failed, slow_int;
 103 
 104   // The following move must be the first instruction of emitted since debug
 105   // information may be generated for it.
 106   // Load object header.
 107   ld(Rmark, oopDesc::mark_offset_in_bytes(), Roop);
 108 
 109   verify_oop(Roop);
 110 
 111   // Save object being locked into the BasicObjectLock...
 112   std(Roop, BasicObjectLock::obj_offset_in_bytes(), Rbox);




  66 
  67 void C1_MacroAssembler::explicit_null_check(Register base) {
  68   Unimplemented();
  69 }
  70 
  71 
  72 void C1_MacroAssembler::build_frame(int frame_size_in_bytes, int bang_size_in_bytes) {
  73   // Avoid stack bang as first instruction. It may get overwritten by patch_verified_entry.
  74   const Register return_pc = R20;
  75   mflr(return_pc);
  76 
  77   // Make sure there is enough stack space for this method's activation.
  78   assert(bang_size_in_bytes >= frame_size_in_bytes, "stack bang size incorrect");
  79   generate_stack_overflow_check(bang_size_in_bytes);
  80 
  81   std(return_pc, _abi(lr), R1_SP);     // SP->lr = return_pc
  82   push_frame(frame_size_in_bytes, R0); // SP -= frame_size_in_bytes
  83 }
  84 
  85 







  86 void C1_MacroAssembler::verified_entry() {
  87   if (C1Breakpoint) illtrap();
  88   // build frame
  89 }
  90 
  91 
  92 void C1_MacroAssembler::lock_object(Register Rmark, Register Roop, Register Rbox, Register Rscratch, Label& slow_case) {
  93   assert_different_registers(Rmark, Roop, Rbox, Rscratch);
  94 
  95   Label done, cas_failed, slow_int;
  96 
  97   // The following move must be the first instruction of emitted since debug
  98   // information may be generated for it.
  99   // Load object header.
 100   ld(Rmark, oopDesc::mark_offset_in_bytes(), Roop);
 101 
 102   verify_oop(Roop);
 103 
 104   // Save object being locked into the BasicObjectLock...
 105   std(Roop, BasicObjectLock::obj_offset_in_bytes(), Rbox);


< prev index next >