[8u] RFR for JDK-8134918 - C2: Type speculation produces mismatched unsafe accesses

Vladimir Kozlov vladimir.kozlov at oracle.com
Thu Nov 10 19:55:45 UTC 2016


On 11/9/16 10:42 PM, Shafi Ahmad wrote:
> Hi,
>
> Please review the backport of following dependent backports.
>
> jdk9 bug link: https://bugs.openjdk.java.net/browse/JDK-8136473
> Conflict in file src/share/vm/opto/memnode.cpp due to
> 1. http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/fe311de64c61 [JDK-8080289]. Manual merge is not done as the corresponding code is not there in jdk8u-dev.
> Multiple conflicts in file src/share/vm/opto/library_call.cpp and manual merge is done.
> webrev link: http://cr.openjdk.java.net/~shshahma/8136473/webrev.00/

unaligned unsafe access methods were added in jdk 9 only. In your 
changes  unaligned argument is always false. You can simplify changes.

Also you should base changes on JDK-8140309 (original 8136473 changes 
were backout by 8140267):

On 11/4/15 10:21 PM, Roland Westrelin wrote:
 > http://cr.openjdk.java.net/~roland/8140309/webrev.00/
 >
 > Same as 8136473 with only the following change:
 >
 > diff --git a/src/share/vm/opto/library_call.cpp 
b/src/share/vm/opto/library_call.cpp
 > --- a/src/share/vm/opto/library_call.cpp
 > +++ b/src/share/vm/opto/library_call.cpp
 > @@ -2527,7 +2527,7 @@
 >     // of safe & unsafe memory.
 >     if (need_mem_bar) insert_mem_bar(Op_MemBarCPUOrder);
 >
 > -  assert(is_native_ptr || alias_type->adr_type() == 
TypeOopPtr::BOTTOM ||
 > +  assert(alias_type->adr_type() == TypeRawPtr::BOTTOM || 
alias_type->adr_type() == TypeOopPtr::BOTTOM ||
 >            alias_type->field() != NULL || alias_type->element() != 
NULL, "field, array element or unknown");
 >     bool mismatched = false;
 >     if (alias_type->element() != NULL || alias_type->field() != NULL) {
 >
 > alias_type->adr_type() == TypeRawPtr::BOTTOM covers the is_native_ptr 
case and the case where the unsafe method is called with a null object.

> jdk9 changeset: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/9108fab781a4
>
> jdk9 bug link: https://bugs.openjdk.java.net/browse/JDK-8134918
> Conflict in file src/share/vm/opto/library_call.cpp due to
> 1. http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/4bee38ba018c#l5.165 [JDK-8140309]. Manual merge is not done as the corresponding code is not there in jdk8u-dev.

I explained situation with this line above.

> webrev link: http://cr.openjdk.java.net/~shshahma/8134918/webrev.00/

This webrev is not incremental for your 8136473 changes - 
library_call.cpp has part from 8136473 changes.

> jdk9 changeset: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/79dae2cd00ef
>
> jdk9 bug link: https://bugs.openjdk.java.net/browse/JDK-8155781
> Clean merge
> webrev link: http://cr.openjdk.java.net/~shshahma/8155781/webrev.00/

Thanks seems fine.

> jdk9 changeset: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/cde17b3e2e70
>
> jdk9 bug link: https://bugs.openjdk.java.net/browse/JDK-8162101
> Conflict in file src/share/vm/opto/library_call.cpp due to
> 1. http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/4be0cada20ad#l1.7 [JDK-8160360] - Resolved
> 2. http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/8b9fdaeb8c57#l10.273 [JDK-8148146] - Manual merge is not done as the corresponding code is not there in jdk8u-dev.
> webrev link: http://cr.openjdk.java.net/~shshahma/8162101/webrev.00/

This webrev is not incremental in library_call.cpp. Difficult to see 
this part of changes.

Thanks,
Vladimir

> jdk9 changeset: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/10dad1d40843
>
> Testing: jprt and jtreg
>
> Regards,
> Shafi
>
>> -----Original Message-----
>> From: Shafi Ahmad
>> Sent: Thursday, October 20, 2016 10:08 AM
>> To: Vladimir Kozlov; hotspot-dev at openjdk.java.net
>> Subject: RE: [8u] RFR for JDK-8134918 - C2: Type speculation produces
>> mismatched unsafe accesses
>>
>> Thanks Vladimir.
>>
>> I will create dependent  backport of
>> 1. https://bugs.openjdk.java.net/browse/JDK-8136473
>> 2. https://bugs.openjdk.java.net/browse/JDK-8155781
>> 3. https://bugs.openjdk.java.net/browse/JDK-8162101
>>
>> Regards,
>> Shafi
>>
>>> -----Original Message-----
>>> From: Vladimir Kozlov
>>> Sent: Wednesday, October 19, 2016 8:27 AM
>>> To: Shafi Ahmad; hotspot-dev at openjdk.java.net
>>> Subject: Re: [8u] RFR for JDK-8134918 - C2: Type speculation
>>> produces mismatched unsafe accesses
>>>
>>> Hi Shafi,
>>>
>>> You should also consider backporting following related fixes:
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8155781
>>> https://bugs.openjdk.java.net/browse/JDK-8162101
>>>
>>> Otherwise you may hit asserts added by 8134918 changes.
>>>
>>> Thanks,
>>> Vladimir
>>>
>>> On 10/17/16 3:12 AM, Shafi Ahmad wrote:
>>>> Hi All,
>>>>
>>>> Please review the backport of JDK-8134918 - C2: Type speculation
>>>> produces
>>> mismatched unsafe accesses to jdk8u-dev.
>>>>
>>>> Please note that backport is not clean and the conflict is due to:
>>>> http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/9108fab781a4#l5.1
>>>> 65
>>>>
>>>>  Getting debug build failure because of:
>>>> http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/9108fab781a4#l5.1
>>>> 55
>>>>
>>>> The above changes are done under bug# 'JDK-8136473: failed: no
>>> mismatched stores, except on raw memory: StoreB StoreI' which is not
>>> back ported to jdk8u and the current backport is on top of above change.
>>>>
>>>>  Please note that I am not sure if there is any dependency between
>>>> these
>>> two changesets.
>>>>
>>>> open webrev:
>> http://cr.openjdk.java.net/~shshahma/8134918/webrev.00/
>>>> jdk9 bug link: https://bugs.openjdk.java.net/browse/JDK-8134918
>>>> jdk9 changeset:
>>> http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/79dae2cd00ef
>>>>
>>>> testing: Passes JPRT, jtreg not completed
>>>>
>>>> Regards,
>>>> Shafi
>>>>


More information about the hotspot-dev mailing list