< prev index next >

src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp

Print this page

1408 void InterpreterMacroAssembler::notify_method_entry() {
1409   // Whenever JVMTI is interp_only_mode, method entry/exit events are sent to
1410   // track stack depth.  If it is possible to enter interp_only_mode we add
1411   // the code to check if the event should be sent.
1412   if (JvmtiExport::can_post_interpreter_events()) {
1413     Label L;
1414     ldrw(r3, Address(rthread, JavaThread::interp_only_mode_offset()));
1415     cbzw(r3, L);
1416     call_VM(noreg, CAST_FROM_FN_PTR(address,
1417                                     InterpreterRuntime::post_method_entry));
1418     bind(L);
1419   }
1420 
1421   if (DTraceMethodProbes) {
1422     get_method(c_rarg1);
1423     call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_entry),
1424                  rthread, c_rarg1);
1425   }
1426 
1427   // RedefineClasses() tracing support for obsolete method entry
1428   if (log_is_enabled(Trace, redefine, class, obsolete)) {

1429     get_method(c_rarg1);
1430     call_VM_leaf(
1431       CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry),
1432       rthread, c_rarg1);
1433   }
1434 
1435  }
1436 
1437 
1438 void InterpreterMacroAssembler::notify_method_exit(
1439     TosState state, NotifyMethodExitMode mode) {
1440   // Whenever JVMTI is interp_only_mode, method entry/exit events are sent to
1441   // track stack depth.  If it is possible to enter interp_only_mode we add
1442   // the code to check if the event should be sent.
1443   if (mode == NotifyJVMTI && JvmtiExport::can_post_interpreter_events()) {
1444     Label L;
1445     // Note: frame::interpreter_frame_result has a dependency on how the
1446     // method result is saved across the call to post_method_exit. If this
1447     // is changed then the interpreter_frame_result implementation will
1448     // need to be updated too.

1408 void InterpreterMacroAssembler::notify_method_entry() {
1409   // Whenever JVMTI is interp_only_mode, method entry/exit events are sent to
1410   // track stack depth.  If it is possible to enter interp_only_mode we add
1411   // the code to check if the event should be sent.
1412   if (JvmtiExport::can_post_interpreter_events()) {
1413     Label L;
1414     ldrw(r3, Address(rthread, JavaThread::interp_only_mode_offset()));
1415     cbzw(r3, L);
1416     call_VM(noreg, CAST_FROM_FN_PTR(address,
1417                                     InterpreterRuntime::post_method_entry));
1418     bind(L);
1419   }
1420 
1421   if (DTraceMethodProbes) {
1422     get_method(c_rarg1);
1423     call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_entry),
1424                  rthread, c_rarg1);
1425   }
1426 
1427   // RedefineClasses() tracing support for obsolete method entry
1428   if (log_is_enabled(Trace, redefine, class, obsolete) ||
1429       log_is_enabled(Trace, interpreter, bytecode)) {
1430     get_method(c_rarg1);
1431     call_VM_leaf(
1432       CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry),
1433       rthread, c_rarg1);
1434   }
1435 
1436  }
1437 
1438 
1439 void InterpreterMacroAssembler::notify_method_exit(
1440     TosState state, NotifyMethodExitMode mode) {
1441   // Whenever JVMTI is interp_only_mode, method entry/exit events are sent to
1442   // track stack depth.  If it is possible to enter interp_only_mode we add
1443   // the code to check if the event should be sent.
1444   if (mode == NotifyJVMTI && JvmtiExport::can_post_interpreter_events()) {
1445     Label L;
1446     // Note: frame::interpreter_frame_result has a dependency on how the
1447     // method result is saved across the call to post_method_exit. If this
1448     // is changed then the interpreter_frame_result implementation will
1449     // need to be updated too.
< prev index next >