RFR: JDK-8215196: [Graal] vmTestbase/nsk/jvmti/PopFrame/popframe003/TestDescription.java fails with "changes for the arguments of the popped frame's method, did not remain current argument values"

serguei.spitsyn at oracle.com serguei.spitsyn at oracle.com
Mon Nov 11 11:06:11 UTC 2019


Hi Chris,


On 11/8/19 16:55, Chris Plummer wrote:
> Hi Alex,
>
> Comments below:
>
> On 11/8/19 4:39 PM, Alex Menkov wrote:
>>
>>
>> On 11/08/2019 15:22, Alex Menkov wrote:
>>> Hi all,
>>>
>>> Please review the fix for
>>> https://bugs.openjdk.java.net/browse/JDK-8215196
>>> webrev:
>>> http://cr.openjdk.java.net/~amenkov/jdk14/popframe_args/webrev/
> I don't really see a resolution in the JDK-8215196 comments as to what 
> is actually broken. Are we sure we want to fix this in the test, and 
> not require different behavior by the compiler (and also clarify the 
> spec)?

This is one more case to the topic "Should optimizations be observable 
for JVMTI agents?"
which was recently discussed on the serviceability-dev mailing list.
The question is about the following statement of the JVMTI PopFrame spec:
  "Note however, that any changes to the arguments, which occurred in 
the called method, remain;
   when execution continues, the first instruction to execute will be 
the invoke."

One point is we could consider this statement as a possible side affect 
which has to be preserved by the JIT compiler.
So, the optimization to delete such a code which "looks useless" has to 
be disabled.

Another point is that it is hard to understand why such a side effect 
can be really useful.
Maybe it was specified like this just because it does not make sense to 
preserve original argument values at the call side.
We can consider to relax the JVMTI PopFrame spec by changing it to 
something like:
  "Note however, that the original argument values are not preserved and 
can be changed by the called method;"

Let's wait for other opinions.

Thanks,
Serguei

>>>
>>> Currently PopFrame is disabled with JVMCI by [1], so for testing I 
>>> reverted [1] changes.
>>
>> Just to be clear - I temporary reverted [1] for test runs.
>>
> The description for JDK-8218025 says that the intention is to only 
> disable these capabilities for JDK12. Is there a CR to re-enabled them?
>
> thanks,
>
> Chris
>> --alex
>>
>>>
>>> [1] https://bugs.openjdk.java.net/browse/JDK-8218025
>>>
>>> --alex
>



More information about the serviceability-dev mailing list