[lworld] RFR: 8253113: [lworld] [lw3] C1 should avoid copying element of flattened arrays when reading a sub-element [v4]
Frederic Parain
fparain at openjdk.java.net
Tue Sep 15 15:40:01 UTC 2020
> Please review these changes optimizing access to flattened arrays in C1.
>
> The optimization avoids unnecessary copies of intermediate values when the code accesses a sub-element of a flattened
> array.
> For instance, with the following code:
>
> inline class Point { int x = 0, y = 0; }
> void foo() {
> Point[] array = new Point[10];
> int i = array[1].x;
> }
>
> C1 used to create a new instance of Point, copy the content from the array, then reads the x field from this new
> instance. With the optimization, C1 directly accesses the x field from the flattened array, and makes no heap
> allocation.
> A simple benchmark on the "int i = array[1].x;" line gives these results:
>
> baseline:
> Benchmark Mode Samples Score Score error Units
> o.s.MyBenchmark.testArrayReads avgt 200 4.250 0.011 ns/op
>
> optimized:
> Benchmark Mode Samples Score Score error Units
> o.s.MyBenchmark.testArrayReads avgt 200 2.228 0.004 ns/op
>
> Thank you,
>
> Fred
Frederic Parain has updated the pull request incrementally with one additional commit since the last revision:
Fix indentation
-------------
Changes:
- all: https://git.openjdk.java.net/valhalla/pull/187/files
- new: https://git.openjdk.java.net/valhalla/pull/187/files/fcde3846..8d97e01b
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=valhalla&pr=187&range=03
- incr: https://webrevs.openjdk.java.net/?repo=valhalla&pr=187&range=02-03
Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 mod
Patch: https://git.openjdk.java.net/valhalla/pull/187.diff
Fetch: git fetch https://git.openjdk.java.net/valhalla pull/187/head:pull/187
PR: https://git.openjdk.java.net/valhalla/pull/187
More information about the valhalla-dev
mailing list