< prev index next >

src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp

Print this page

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   {
1422     SkipIfEqual skip(this, &DTraceMethodProbes, false);
1423     get_method(c_rarg1);
1424     call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_entry),
1425                  rthread, c_rarg1);
1426   }
1427 
1428   // RedefineClasses() tracing support for obsolete method entry
1429   if (log_is_enabled(Trace, redefine, class, obsolete)) {

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.

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   {
1422     SkipIfEqual skip(this, &DTraceMethodProbes, false);
1423     get_method(c_rarg1);
1424     call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_entry),
1425                  rthread, c_rarg1);
1426   }
1427 
1428   // RedefineClasses() tracing support for obsolete method entry
1429   if (log_is_enabled(Trace, redefine, class, obsolete) ||
1430       log_is_enabled(Trace, interpreter, bytecode)) {
1431     get_method(c_rarg1);
1432     call_VM_leaf(
1433       CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry),
1434       rthread, c_rarg1);
1435   }
1436 
1437  }
1438 
1439 
1440 void InterpreterMacroAssembler::notify_method_exit(
1441     TosState state, NotifyMethodExitMode mode) {
1442   // Whenever JVMTI is interp_only_mode, method entry/exit events are sent to
1443   // track stack depth.  If it is possible to enter interp_only_mode we add
1444   // the code to check if the event should be sent.
1445   if (mode == NotifyJVMTI && JvmtiExport::can_post_interpreter_events()) {
1446     Label L;
1447     // Note: frame::interpreter_frame_result has a dependency on how the
1448     // method result is saved across the call to post_method_exit. If this
1449     // is changed then the interpreter_frame_result implementation will
1450     // need to be updated too.
< prev index next >