[9] RFR (XS): 8155635: C2: opaque unsafe access triggers an assert

Vladimir Kozlov vladimir.kozlov at oracle.com
Thu May 5 23:40:34 UTC 2016


Thank you for info. Will this fix cause performance issue? It looks like common case for me.

Thanks,
Vladimir K

On 5/5/16 3:12 PM, Vladimir Ivanov wrote:
> Thanks, Vladimir.
>
>> Looks good. What actual alias type in such case?
>
> Both adr_type & alias_type are:
>
>     java/lang/Object+12 * [narrow]
>
> And LibraryCallKit::classify_unsafe_addr() returns Type::OopPtr for it.
>
> Best regards,
> Vladimir Ivanov
>>
>> Thanks,
>> Vladimir
>>
>> On 5/5/16 11:48 AM, Vladimir Ivanov wrote:
>>> http://cr.openjdk.java.net/~vlivanov/8155781/webrev.00/
>>> https://bugs.openjdk.java.net/browse/JDK-8155781
>>>
>>> The following code hits an assert in
>>> LibraryCallKit::inline_unsafe_access() during compilation of the
>>> following code:
>>>
>>>      int test(Object o) {
>>>          return UNSAFE.getInt(o, F_OFFSET);
>>>      }
>>>
>>> It baffles the compiler since such shape can be used to access both
>>> on-heap and off-heap memory (due to double-register addressing mode).
>>>
>>> The proposed fix is to convert the asserts into guards which revert to
>>> native calls in such cases.
>>>
>>> Testing: JPRT, RBT (hs-tier0-comp).
>>>
>>> Thanks!
>>>
>>> Best regards,
>>> Vladimir Ivanov


More information about the hotspot-compiler-dev mailing list