RFR 8173309: jvmtiDeferredLocalVariableSet may update the wrong frame
Tom Rodriguez
tom.rodriguez at oracle.com
Fri Jan 27 01:55:14 UTC 2017
Nils Eliasson wrote:
> Hi Tom,
>
> Could you add the test case as well?
The program that showed this was part of larger complex piece of code
using Graal. I might be able to build a jtreg test for it, but it's a
little challenging to hand build to test out a complex deopt situation.
Now that Graal itself is integrated into the JDK maybe a full Graal
unit test would work? Are the Graal unit tests run as part of testing now?
I thought it might be possible to build a debugger test for this but it
doesn't look like the jtreg tests have enough harness for such a setup.
tom
>
> // Nils
>
> On 2017-01-25 02:06, Tom Rodriguez wrote:
>> http://cr.openjdk.java.net/~never/8173309/webrev
>> https://bugs.openjdk.java.net/browse/JDK-8173309
>>
>> When using jvmtiDeferredLocalVariableSet to update locals in a
>> compiled frame, the code matches based purely on the method/bci pair.
>> If some recursion has been inlined then it will update the first frame
>> that matches instead of the intended frame. The code should be
>> tracking the actual depth that the compilerVFrame came from instead.
>> The JVMCI operation materializeVirtualObjects uses this code when
>> forcibly materializing EA’ed objects. Normally this would only be
>> noticed by debugger clients. Tested with failing case from Graal.
>>
>> tom
>
More information about the hotspot-compiler-dev
mailing list