RFR: 8261137: Optimization of Box nodes in uncommon_trap

Wang Huang whuang at openjdk.java.net
Thu Feb 4 08:55:07 UTC 2021


JDK-8075052 have removed useless autobox. However, in some cases, the box is still saved. For instance:
@Benchmark
public void testMethod(Blackhole bh) {
  int sum = 0;
  for (int i = 0; i < data.length; i++) {
      Integer ii = Integer.valueOf(data[i]);
      if (i < data.length) {
          sum += ii.intValue();
      }
  }
  bh.consume(sum);
}
Although the variable ii is only used at ii.intValue(), it cannot be eliminated as a result of being used by a hidden uncommon_trap.
The uncommon_trap is generated by the optimized "if", because its condition is always true.

We can postpone box in uncommon_trap in this situation. We treat box as a scalarized object by adding a SafePointScalarObjectNode in the uncommon_trap node,
and deleting the use of box:

There is no additional fail/error(s) of jtreg after this patch.

-------------

Commit messages:
 - 8261137: Optimization of Box nodes in uncommon_trap

Changes: https://git.openjdk.java.net/jdk/pull/2401/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=2401&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8261137
  Stats: 46 lines in 1 file changed: 45 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/2401.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/2401/head:pull/2401

PR: https://git.openjdk.java.net/jdk/pull/2401


More information about the hotspot-compiler-dev mailing list