src/hotspot/cpu/s390/interp_masm_s390.cpp
changeset 58784 9019c186ae99
parent 57839 de0ccdc4db13
child 59252 623722a6aeb9
equal deleted inserted replaced
58783:d55b62dbe688 58784:9019c186ae99
  1070 //
  1070 //
  1071 // Throw IllegalMonitorException if object is not locked by current thread.
  1071 // Throw IllegalMonitorException if object is not locked by current thread.
  1072 void InterpreterMacroAssembler::unlock_object(Register monitor, Register object) {
  1072 void InterpreterMacroAssembler::unlock_object(Register monitor, Register object) {
  1073 
  1073 
  1074   if (UseHeavyMonitors) {
  1074   if (UseHeavyMonitors) {
  1075     call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::monitorexit),
  1075     call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::monitorexit), monitor);
  1076             monitor, /*check_for_exceptions=*/ true);
       
  1077     return;
  1076     return;
  1078   }
  1077   }
  1079 
  1078 
  1080 // else {
  1079 // else {
  1081   // template code:
  1080   // template code:
  1145   //   InterpreterRuntime::monitorexit(THREAD, monitor);
  1144   //   InterpreterRuntime::monitorexit(THREAD, monitor);
  1146 
  1145 
  1147   // The lock has been converted into a heavy lock and hence
  1146   // The lock has been converted into a heavy lock and hence
  1148   // we need to get into the slow case.
  1147   // we need to get into the slow case.
  1149   z_stg(object, obj_entry);   // Restore object entry, has been cleared above.
  1148   z_stg(object, obj_entry);   // Restore object entry, has been cleared above.
  1150   call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::monitorexit),
  1149   call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::monitorexit), monitor);
  1151           monitor,  /*check_for_exceptions=*/false);
       
  1152 
  1150 
  1153   // }
  1151   // }
  1154 
  1152 
  1155   bind(done);
  1153   bind(done);
  1156 }
  1154 }
  2093   // the code to check if the event should be sent.
  2091   // the code to check if the event should be sent.
  2094   if (JvmtiExport::can_post_interpreter_events()) {
  2092   if (JvmtiExport::can_post_interpreter_events()) {
  2095     Label jvmti_post_done;
  2093     Label jvmti_post_done;
  2096     MacroAssembler::load_and_test_int(Z_R0, Address(Z_thread, JavaThread::interp_only_mode_offset()));
  2094     MacroAssembler::load_and_test_int(Z_R0, Address(Z_thread, JavaThread::interp_only_mode_offset()));
  2097     z_bre(jvmti_post_done);
  2095     z_bre(jvmti_post_done);
  2098     call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::post_method_entry), /*check_exceptions=*/false);
  2096     call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::post_method_entry));
  2099     bind(jvmti_post_done);
  2097     bind(jvmti_post_done);
  2100   }
  2098   }
  2101 }
  2099 }
  2102 
  2100 
  2103 // Inline assembly for:
  2101 // Inline assembly for:
  2127   if (mode == NotifyJVMTI && JvmtiExport::can_post_interpreter_events()) {
  2125   if (mode == NotifyJVMTI && JvmtiExport::can_post_interpreter_events()) {
  2128     Label jvmti_post_done;
  2126     Label jvmti_post_done;
  2129     MacroAssembler::load_and_test_int(Z_R0, Address(Z_thread, JavaThread::interp_only_mode_offset()));
  2127     MacroAssembler::load_and_test_int(Z_R0, Address(Z_thread, JavaThread::interp_only_mode_offset()));
  2130     z_bre(jvmti_post_done);
  2128     z_bre(jvmti_post_done);
  2131     if (!native_method) push(state); // see frame::interpreter_frame_result()
  2129     if (!native_method) push(state); // see frame::interpreter_frame_result()
  2132     call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::post_method_exit), /*check_exceptions=*/false);
  2130     call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::post_method_exit));
  2133     if (!native_method) pop(state);
  2131     if (!native_method) pop(state);
  2134     bind(jvmti_post_done);
  2132     bind(jvmti_post_done);
  2135   }
  2133   }
  2136 
  2134 
  2137 #if 0
  2135 #if 0