8357962: JFR Cooperative Sampling reveals inconsistent interpreter frames as part of JVMTI PopFrame

Reviewed-by: dholmes, eosterlund
This commit is contained in:
Markus Grönlund 2025-06-05 10:14:41 +00:00
parent 66feb490bd
commit d450e341c7
3 changed files with 3 additions and 0 deletions

View File

@ -1893,6 +1893,7 @@ void TemplateInterpreterGenerator::generate_throw_exception() {
Interpreter::_remove_activation_preserving_args_entry = __ pc(); Interpreter::_remove_activation_preserving_args_entry = __ pc();
__ empty_expression_stack(); __ empty_expression_stack();
__ restore_bcp(); // We could have returned from deoptimizing this frame, so restore rbcp.
// Set the popframe_processing bit in pending_popframe_condition // Set the popframe_processing bit in pending_popframe_condition
// indicating that we are currently handling popframe, so that // indicating that we are currently handling popframe, so that
// call_VMs that may happen later do not trigger new popframe // call_VMs that may happen later do not trigger new popframe

View File

@ -1646,6 +1646,7 @@ void TemplateInterpreterGenerator::generate_throw_exception() {
Interpreter::_remove_activation_preserving_args_entry = __ pc(); Interpreter::_remove_activation_preserving_args_entry = __ pc();
__ empty_expression_stack(); __ empty_expression_stack();
__ restore_bcp(); // We could have returned from deoptimizing this frame, so restore rbcp.
// Set the popframe_processing bit in pending_popframe_condition // Set the popframe_processing bit in pending_popframe_condition
// indicating that we are currently handling popframe, so that // indicating that we are currently handling popframe, so that
// call_VMs that may happen later do not trigger new popframe // call_VMs that may happen later do not trigger new popframe

View File

@ -1441,6 +1441,7 @@ void TemplateInterpreterGenerator::generate_throw_exception() {
Interpreter::_remove_activation_preserving_args_entry = __ pc(); Interpreter::_remove_activation_preserving_args_entry = __ pc();
__ empty_expression_stack(); __ empty_expression_stack();
__ restore_bcp(); // We could have returned from deoptimizing this frame, so restore rbcp.
// Set the popframe_processing bit in pending_popframe_condition // Set the popframe_processing bit in pending_popframe_condition
// indicating that we are currently handling popframe, so that // indicating that we are currently handling popframe, so that
// call_VMs that may happen later do not trigger new popframe // call_VMs that may happen later do not trigger new popframe