src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp
changeset 57574 6a159c6c23cc
parent 55105 9ad765641e8f
child 57710 05ff6e27de45
equal deleted inserted replaced
57573:7e8f6c56c285 57574:6a159c6c23cc
   969     __ jump(RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
   969     __ jump(RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
   970   }
   970   }
   971 
   971 
   972   address c2i_entry = __ pc();
   972   address c2i_entry = __ pc();
   973 
   973 
   974   BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
       
   975   bs->c2i_entry_barrier(masm);
       
   976 
       
   977   // Class initialization barrier for static methods
   974   // Class initialization barrier for static methods
       
   975   address c2i_no_clinit_check_entry = NULL;
   978   if (VM_Version::supports_fast_class_init_checks()) {
   976   if (VM_Version::supports_fast_class_init_checks()) {
   979     Label L_skip_barrier;
   977     Label L_skip_barrier;
   980     Register method = rbx;
   978     Register method = rbx;
   981 
   979 
   982     { // Bypass the barrier for non-static methods
   980     { // Bypass the barrier for non-static methods
   991     __ clinit_barrier(klass, r15_thread, &L_skip_barrier /*L_fast_path*/);
   989     __ clinit_barrier(klass, r15_thread, &L_skip_barrier /*L_fast_path*/);
   992 
   990 
   993     __ jump(RuntimeAddress(SharedRuntime::get_handle_wrong_method_stub())); // slow path
   991     __ jump(RuntimeAddress(SharedRuntime::get_handle_wrong_method_stub())); // slow path
   994 
   992 
   995     __ bind(L_skip_barrier);
   993     __ bind(L_skip_barrier);
   996   }
   994     c2i_no_clinit_check_entry = __ pc();
       
   995   }
       
   996 
       
   997   BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
       
   998   bs->c2i_entry_barrier(masm);
   997 
   999 
   998   gen_c2i_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs, skip_fixup);
  1000   gen_c2i_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs, skip_fixup);
   999 
  1001 
  1000   __ flush();
  1002   __ flush();
  1001   return AdapterHandlerLibrary::new_entry(fingerprint, i2c_entry, c2i_entry, c2i_unverified_entry);
  1003   return AdapterHandlerLibrary::new_entry(fingerprint, i2c_entry, c2i_entry, c2i_unverified_entry, c2i_no_clinit_check_entry);
  1002 }
  1004 }
  1003 
  1005 
  1004 int SharedRuntime::c_calling_convention(const BasicType *sig_bt,
  1006 int SharedRuntime::c_calling_convention(const BasicType *sig_bt,
  1005                                          VMRegPair *regs,
  1007                                          VMRegPair *regs,
  1006                                          VMRegPair *regs2,
  1008                                          VMRegPair *regs2,