[lworld] RFR: 8251046: [lworld] [lw3] C1 should avoid heap allocations in withfield when possible

Frederic Parain fparain at openjdk.java.net
Wed Aug 5 13:19:30 UTC 2020


Please review this patch which reduces the number of heap allocations when executing the withfield bytecode with C1.
The CR linked below contains a more detailed description of the optimization:

CR: https://bugs.openjdk.java.net/browse/JDK-8251046

A rudimentary benchmark shows encouraging numbers:
Measuring inline type creation time with -XX:TieredStopAtLevel=1
Inline class Point has two int fields.
Inline class Rectangle has four int fields.

Without the optimization:
Benchmark                                Mode  Samples   Score  Score error  Units
o.s.MyBenchmark.testPointCreation        avgt      200   7.573        0.027  ns/op
o.s.MyBenchmark.testRectangleCreation    avgt      200  21.387        0.067  ns/op

With the optimization:
Benchmark                                Mode  Samples  Score  Score error  Units
o.s.MyBenchmark.testPointCreation        avgt      200  5.284        0.014  ns/op
o.s.MyBenchmark.testRectangleCreation    avgt      200  7.750        0.082  ns/op

Tested manually and with Mach5, tiers 1 to 3 (with Tobias' changes enabling more C1 testing).

Thank you,

Fred

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

Commit messages:
 - Remove macros and add unit test
 - Add case of two aloads
 - Rebase needed renaming
 - Optimize the dup_x2/pop pattern
 - Optimize withfield with larva state
 - Fixing C1 debug features

Changes: https://git.openjdk.java.net/valhalla/pull/137/files
 Webrev: https://webrevs.openjdk.java.net/valhalla/137/webrev.00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8251046
  Stats: 232 lines in 5 files changed: 147 ins; 57 del; 28 mod
  Patch: https://git.openjdk.java.net/valhalla/pull/137.diff
  Fetch: git fetch https://git.openjdk.java.net/valhalla pull/137/head:pull/137

PR: https://git.openjdk.java.net/valhalla/pull/137


More information about the valhalla-dev mailing list