Happy path

Aleksey Shipilev shade at redhat.com
Thu Apr 26 14:02:05 UTC 2018


On 04/26/2018 02:35 PM, Roland Westrelin wrote:
> 
>> And coalescing worked before this patch, because we treated the
>> null-checks specially?
> 
> Before we had:
> 
> null check
> wb
> field store
> 
> which was expanded to:
> 
> if (evacuation in progress) {
>   null check
>   rb
>   // more stuff
> } else {
>   null check
>   rb
> }
> field store
> 
> and the null check becomes 2 implicit null checks
> 
> now we have:
> 
> if (heap stable) {
>   // nothing
> } else {
>   if (evacuation in progress) {
>     null check
>     rb
>     // more stuff
>   } else {
>     null check
>     rb
>   }
> }
> 
> null check
> field store
> 
> 1 null check becomes 3 implicit null checks
> 
> Putting the null check in the heap stable path would not allow it to
> become an implicit null check. So it's now in the way when it comes to
> coalescing.

OK, fine.

-Aleksey




More information about the shenandoah-dev mailing list