Shenandoah barriers study

Roland Westrelin rwestrel at redhat.com
Fri Sep 9 14:38:01 UTC 2016


I push a change to help with this:

>  *)
> http://cr.openjdk.java.net/~shade/shenandoah/shenandoah-gc-bench/src/main/java/org/openjdk/shenandoah/acmp/ACmpBarriersRandom.java
>
>   Potential improvements:
>    b) jump over the second cmp on "==" path.

But it's not sufficient. We would want:

if (a != b) {
  a = rb(a);
  b = rb(b);
}
if (a == b) {
  res = true;
} else {
  res = false;
}

to become:

if (a != b) {
  a = rb(a);
  b = rb(b);
  if (a == b) {
    res = true;
  } else {
    res = false;
  }
} else {
  res = true;
}

which is c2's split if optimization. But:

if (a == b) {
  res = true;
} else {
  res = false;
}

is first transformed in that simple example to use cmoves and that gets
in the way of split if.

Roland.


More information about the shenandoah-dev mailing list