< prev index next >

src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp

Print this page

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

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

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