< prev index next >

src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp

Print this page

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

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

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