[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