[lworld] Integrated: 8253113: [lworld] [lw3] C1 should avoid copying element of flattened arrays when reading a sub-element
Frederic Parain
fparain at openjdk.java.net
Tue Sep 15 15:40:09 UTC 2020
On Mon, 14 Sep 2020 13:55:17 GMT, Frederic Parain <fparain at openjdk.org> wrote:
> 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
This pull request has now been integrated.
Changeset: 1a52191c
Author: Frederic Parain <fparain at openjdk.org>
URL: https://git.openjdk.java.net/valhalla/commit/1a52191c
Stats: 343 lines in 7 files changed: 9 ins; 297 del; 37 mod
8253113: [lworld] [lw3] C1 should avoid copying element of flattened arrays when reading a sub-element
Reviewed-by: thartmann
-------------
PR: https://git.openjdk.java.net/valhalla/pull/187
More information about the valhalla-dev
mailing list