RFR(S): 8223965: [lworld] Reflective method invocation does not handle value type returned as fields

Tobias Hartmann tobias.hartmann at oracle.com
Mon May 20 11:29:02 UTC 2019


Thanks Ioi!

Best regards,
Tobias

On 17.05.19 19:16, Ioi Lam wrote:
> Hi Tobias,
> 
> The changes look good to me.
> 
> Thanks
> - Ioi
> 
> On 5/17/19 5:53 AM, Tobias Hartmann wrote:
>> Hi,
>>
>> please review the following patch:
>> https://bugs.openjdk.java.net/browse/JDK-8223965
>> http://cr.openjdk.java.net/~thartmann/8223965/webrev.00/
>>
>> If a method is invoked via reflection we first call through the runtime [1] and once the method is
>> invoked more than 'sun.reflect.inflationThreshold' times we emit bytecodes to directly call the
>> method. Now while the generated bytecodes are fine because they are executed through the interpreter
>> (or the JIT), the call stub does not correctly handle (c2 compiled) methods that return a value type
>> as fields.
>>
>> I added the corresponding check and also had to use different registers in the call stub to avoid
>> trashing those used by the return convention.
>>
>> Thanks,
>> Tobias
>>
>> [1] Reflection::invoke_method() -> ... -> StubRoutines::call_stub()
> 


More information about the valhalla-dev mailing list