src/hotspot/cpu/x86/templateInterpreterGenerator_x86.cpp
changeset 52460 f1bb77833b59
parent 51996 84743156e780
equal deleted inserted replaced
52459:cbe83e9c2100 52460:f1bb77833b59
  1088   // change thread state
  1088   // change thread state
  1089   NOT_LP64(__ get_thread(thread));
  1089   NOT_LP64(__ get_thread(thread));
  1090   __ movl(Address(thread, JavaThread::thread_state_offset()),
  1090   __ movl(Address(thread, JavaThread::thread_state_offset()),
  1091           _thread_in_native_trans);
  1091           _thread_in_native_trans);
  1092 
  1092 
  1093   if (UseMembar) {
  1093   // Force this write out before the read below
  1094     // Force this write out before the read below
  1094   __ membar(Assembler::Membar_mask_bits(
  1095     __ membar(Assembler::Membar_mask_bits(
  1095               Assembler::LoadLoad | Assembler::LoadStore |
  1096                 Assembler::LoadLoad | Assembler::LoadStore |
  1096               Assembler::StoreLoad | Assembler::StoreStore));
  1097                 Assembler::StoreLoad | Assembler::StoreStore));
       
  1098   } else {
       
  1099     // Write serialization page so VM thread can do a pseudo remote membar.
       
  1100     // We use the current thread pointer to calculate a thread specific
       
  1101     // offset to write to within the page. This minimizes bus traffic
       
  1102     // due to cache line collision.
       
  1103     __ serialize_memory(thread, rcx);
       
  1104   }
       
  1105 
  1097 
  1106 #ifndef _LP64
  1098 #ifndef _LP64
  1107   if (AlwaysRestoreFPU) {
  1099   if (AlwaysRestoreFPU) {
  1108     //  Make sure the control word is correct.
  1100     //  Make sure the control word is correct.
  1109     __ fldcw(ExternalAddress(StubRoutines::addr_fpu_cntrl_wrd_std()));
  1101     __ fldcw(ExternalAddress(StubRoutines::addr_fpu_cntrl_wrd_std()));