[11] RFR (S): 8202465: C1: Casts should not be eliminated for interface types
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Thu May 3 07:55:58 UTC 2018
Thanks for reviews, John & Tobias!
> Just wondering, should this code be adapted as well?
> http://hg.openjdk.java.net/jdk/jdk/rev/c63bdf53a1a7
No, they are unrelated. 8202399 is about disabling PatchALot for
invokespecial interface calls (because patching not supported), while
8202465 is about erroneous elimination of CheckCast node for interface
casts.
Best regards,
Vladimir Ivanov
>
> On 03.05.2018 08:35, Tobias Hartmann wrote:
>> Hi Vladimir,
>>
>> looks good to me too.
>>
>> Best regards,
>> Tobias
>>
>> On 03.05.2018 04:33, Vladimir Ivanov wrote:
>>> http://cr.openjdk.java.net/~vlivanov/8202465/webrev.00
>>> https://bugs.openjdk.java.net/browse/JDK-8202465
>>>
>>> Interface casts can't be eliminated when there's no exact type known for the object and its declared
>>> type is interface as well. Verifier doesn't enforce interface types, so there are no guarantees at
>>> runtime that values have interface types as declared in bytecode.
>>>
>>> The fix checks that declared type of the object being casted is not an interface before performing
>>> subtype check.
>>>
>>> Also, refactored the test to use jasm instead of jcod.
>>>
>>> Testing: failing test, hs-precheckin-comp, hs-tier1, hs-tier2
>>>
>>> Thanks!
>>>
>>> Best regards,
>>> Vladimir Ivanov
More information about the hotspot-compiler-dev
mailing list