src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp
changeset 57574 6a159c6c23cc
parent 55322 bc5baf205475
child 57626 91bc70505019
equal deleted inserted replaced
57573:7e8f6c56c285 57574:6a159c6c23cc
  1275   // entry: c2i
  1275   // entry: c2i
  1276 
  1276 
  1277   c2i_entry = __ pc();
  1277   c2i_entry = __ pc();
  1278 
  1278 
  1279   // Class initialization barrier for static methods
  1279   // Class initialization barrier for static methods
       
  1280   address c2i_no_clinit_check_entry = NULL;
  1280   if (VM_Version::supports_fast_class_init_checks()) {
  1281   if (VM_Version::supports_fast_class_init_checks()) {
  1281     Label L_skip_barrier;
  1282     Label L_skip_barrier;
  1282 
  1283 
  1283     { // Bypass the barrier for non-static methods
  1284     { // Bypass the barrier for non-static methods
  1284       __ lwz(R0, in_bytes(Method::access_flags_offset()), R19_method);
  1285       __ lwz(R0, in_bytes(Method::access_flags_offset()), R19_method);
  1293     __ load_const_optimized(klass, SharedRuntime::get_handle_wrong_method_stub(), R0);
  1294     __ load_const_optimized(klass, SharedRuntime::get_handle_wrong_method_stub(), R0);
  1294     __ mtctr(klass);
  1295     __ mtctr(klass);
  1295     __ bctr();
  1296     __ bctr();
  1296 
  1297 
  1297     __ bind(L_skip_barrier);
  1298     __ bind(L_skip_barrier);
       
  1299     c2i_no_clinit_check_entry = __ pc();
  1298   }
  1300   }
  1299 
  1301 
  1300   gen_c2i_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs, call_interpreter, ientry);
  1302   gen_c2i_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs, call_interpreter, ientry);
  1301 
  1303 
  1302   return AdapterHandlerLibrary::new_entry(fingerprint, i2c_entry, c2i_entry, c2i_unverified_entry);
  1304   return AdapterHandlerLibrary::new_entry(fingerprint, i2c_entry, c2i_entry, c2i_unverified_entry, c2i_no_clinit_check_entry);
  1303 }
  1305 }
  1304 
  1306 
  1305 #ifdef COMPILER2
  1307 #ifdef COMPILER2
  1306 // An oop arg. Must pass a handle not the oop itself.
  1308 // An oop arg. Must pass a handle not the oop itself.
  1307 static void object_move(MacroAssembler* masm,
  1309 static void object_move(MacroAssembler* masm,