equal
deleted
inserted
replaced
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 |