src/hotspot/cpu/x86/sharedRuntime_x86_32.cpp
changeset 59284 88502b1cf76f
parent 59122 5d73255c2d52
equal deleted inserted replaced
59283:78aa7484c722 59284:88502b1cf76f
   972     __ bind(missed);
   972     __ bind(missed);
   973     __ jump(RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
   973     __ jump(RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
   974   }
   974   }
   975 
   975 
   976   address c2i_entry = __ pc();
   976   address c2i_entry = __ pc();
       
   977 
       
   978   BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
       
   979   bs->c2i_entry_barrier(masm);
   977 
   980 
   978   gen_c2i_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs, skip_fixup);
   981   gen_c2i_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs, skip_fixup);
   979 
   982 
   980   __ flush();
   983   __ flush();
   981   return AdapterHandlerLibrary::new_entry(fingerprint, i2c_entry, c2i_entry, c2i_unverified_entry);
   984   return AdapterHandlerLibrary::new_entry(fingerprint, i2c_entry, c2i_entry, c2i_unverified_entry);
  1884   // Generate a new frame for the wrapper.
  1887   // Generate a new frame for the wrapper.
  1885   __ enter();
  1888   __ enter();
  1886   // -2 because return address is already present and so is saved rbp
  1889   // -2 because return address is already present and so is saved rbp
  1887   __ subptr(rsp, stack_size - 2*wordSize);
  1890   __ subptr(rsp, stack_size - 2*wordSize);
  1888 
  1891 
       
  1892 
       
  1893   BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
       
  1894   bs->nmethod_entry_barrier(masm);
       
  1895 
  1889   // Frame is now completed as far as size and linkage.
  1896   // Frame is now completed as far as size and linkage.
  1890   int frame_complete = ((intptr_t)__ pc()) - start;
  1897   int frame_complete = ((intptr_t)__ pc()) - start;
  1891 
  1898 
  1892   if (UseRTMLocking) {
  1899   if (UseRTMLocking) {
  1893     // Abort RTM transaction before calling JNI
  1900     // Abort RTM transaction before calling JNI
  1919 
  1926 
  1920   // We use rdi as a thread pointer because it is callee save and
  1927   // We use rdi as a thread pointer because it is callee save and
  1921   // if we load it once it is usable thru the entire wrapper
  1928   // if we load it once it is usable thru the entire wrapper
  1922   const Register thread = rdi;
  1929   const Register thread = rdi;
  1923 
  1930 
  1924   // We use rsi as the oop handle for the receiver/klass
  1931    // We use rsi as the oop handle for the receiver/klass
  1925   // It is callee save so it survives the call to native
  1932    // It is callee save so it survives the call to native
  1926 
  1933 
  1927   const Register oop_handle_reg = rsi;
  1934    const Register oop_handle_reg = rsi;
  1928 
  1935 
  1929   __ get_thread(thread);
  1936    __ get_thread(thread);
  1930 
  1937 
  1931   if (is_critical_native && !Universe::heap()->supports_object_pinning()) {
  1938   if (is_critical_native && !Universe::heap()->supports_object_pinning()) {
  1932     check_needs_gc_for_critical_native(masm, thread, stack_slots, total_c_args, total_in_args,
  1939     check_needs_gc_for_critical_native(masm, thread, stack_slots, total_c_args, total_in_args,
  1933                                        oop_handle_offset, oop_maps, in_regs, in_sig_bt);
  1940                                        oop_handle_offset, oop_maps, in_regs, in_sig_bt);
  1934   }
  1941   }