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