Happy path

Roland Westrelin rwestrel at redhat.com
Thu Apr 26 12:35:39 UTC 2018


> 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.

Roland.


More information about the shenandoah-dev mailing list