RFR [10]: Fix ciInstanceKlass::ensure_metadata_alive for Shenandoah

Roman Kennke rkennke at redhat.com
Mon Apr 9 16:22:00 UTC 2018


Am 09.04.2018 um 18:16 schrieb Aleksey Shipilev:
> On 04/09/2018 06:09 PM, Aleksey Shipilev wrote:
>> Fix is trivial:
>>
>> diff -r 177d2c56166c src/hotspot/share/ci/ciInstanceKlass.cpp
>> --- a/src/hotspot/share/ci/ciInstanceKlass.cpp	Fri Apr 06 17:32:05 2018 +0200
>> +++ b/src/hotspot/share/ci/ciInstanceKlass.cpp	Mon Apr 09 17:59:06 2018 +0200
>> @@ -55,7 +55,7 @@
>>  //
>>  static void ensure_metadata_alive(oop metadata_holder) {
>>  #if INCLUDE_ALL_GCS
>> -  if (!UseG1GC) {
>> +  if (!(UseG1GC || UseShenandoahGC)) {
>>      return;
>>    }
>>    if (metadata_holder != NULL) {
> 
> Actually, we should use KALB instead, because it is a bit different for partial GC, and is
> consistent with our other changes:
> 
> diff -r 177d2c56166c src/hotspot/share/ci/ciInstanceKlass.cpp
> --- a/src/hotspot/share/ci/ciInstanceKlass.cpp	Fri Apr 06 17:32:05 2018 +0200
> +++ b/src/hotspot/share/ci/ciInstanceKlass.cpp	Mon Apr 09 18:14:14 2018 +0200
> @@ -55,11 +55,8 @@
>  //
>  static void ensure_metadata_alive(oop metadata_holder) {
>  #if INCLUDE_ALL_GCS
> -  if (!UseG1GC) {
> -    return;
> -  }
>    if (metadata_holder != NULL) {
> -    G1SATBCardTableModRefBS::enqueue(metadata_holder);
> +    BarrierSet::barrier_set()->keep_alive_barrier(metadata_holder);
>    }
>  #endif
>  }
> 
> -Aleksey
> 

Uh shit. Yeah the 2nd fix is good to go!

Thanks for spotting this!

Roman



More information about the shenandoah-dev mailing list