RFR: 8255452: Doing GC during JVMTI MethodExit event posting breaks return oop [v2]
Serguei Spitsyn
sspitsyn at openjdk.java.net
Mon Nov 2 21:02:56 UTC 2020
On Mon, 2 Nov 2020 16:20:09 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:
>> Erik Österlund has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Coleen CR1: Refactoring
>
> This looks better. Just to have the JRT_BLOCK be unconditional is an improvement.
Erik,
Thank you for the update! It looks more elegant.
One concern is that after the move of this fragment to the post_method_exit_inner:
1614 if (state == NULL || !state->is_interp_only_mode()) {
1615 // for any thread that actually wants method exit, interp_only_mode is set
1616 return;
1617 }
there is no guarantee that the current frame is interpreted below:
1580 if (!exception_exit) {
1581 oop oop_result;
1582 BasicType type = current_frame.interpreter_frame_result(&oop_result, &value);
. . .
1597 if (result.not_null() && !mh->is_native()) {
1598 // We have to restore the oop on the stack for interpreter frames
1599 *(oop*)current_frame.interpreter_frame_tos_address() = result();
1600 }
Probably, extra checks for current_frame.is_interpreted_frame() in these fragments will be sufficient.
-------------
PR: https://git.openjdk.java.net/jdk/pull/930
More information about the hotspot-dev
mailing list