< prev index next >

src/hotspot/cpu/ppc/c1_MacroAssembler_ppc.cpp

Print this page

 52   } else {
 53     Label Lok;
 54     cmpd(CCR0, temp_reg, iCache);
 55     beq(CCR0, Lok);
 56     bind(Lmiss);
 57     //load_const_optimized(temp_reg, SharedRuntime::get_ic_miss_stub(), R0);
 58     calculate_address_from_global_toc(temp_reg, SharedRuntime::get_ic_miss_stub(), true, true, false);
 59     mtctr(temp_reg);
 60     bctr();
 61     align(32, 12);
 62     bind(Lok);
 63   }
 64 }
 65 
 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, _abi0(lr), R1_SP);     // SP->lr = return_pc
 82   push_frame(frame_size_in_bytes, R0); // SP -= frame_size_in_bytes
 83 
 84   BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
 85   bs->nmethod_entry_barrier(this, R20);
 86 }
 87 
 88 
 89 void C1_MacroAssembler::verified_entry(bool breakAtEntry) {
 90   if (breakAtEntry) illtrap();
 91   // build frame
 92 }

 52   } else {
 53     Label Lok;
 54     cmpd(CCR0, temp_reg, iCache);
 55     beq(CCR0, Lok);
 56     bind(Lmiss);
 57     //load_const_optimized(temp_reg, SharedRuntime::get_ic_miss_stub(), R0);
 58     calculate_address_from_global_toc(temp_reg, SharedRuntime::get_ic_miss_stub(), true, true, false);
 59     mtctr(temp_reg);
 60     bctr();
 61     align(32, 12);
 62     bind(Lok);
 63   }
 64 }
 65 
 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, int max_monitors) {
 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, _abi0(lr), R1_SP);     // SP->lr = return_pc
 82   push_frame(frame_size_in_bytes, R0); // SP -= frame_size_in_bytes
 83 
 84   BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
 85   bs->nmethod_entry_barrier(this, R20);
 86 }
 87 
 88 
 89 void C1_MacroAssembler::verified_entry(bool breakAtEntry) {
 90   if (breakAtEntry) illtrap();
 91   // build frame
 92 }
< prev index next >