[lworld] RFR: 8253113: [lworld] [lw3] C1 should avoid copying element of flattened arrays when reading a sub-element [v4]
Tobias Hartmann
thartmann at openjdk.java.net
Tue Sep 15 15:40:03 UTC 2020
On Tue, 15 Sep 2020 15:36:20 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
>
> Frederic Parain has updated the pull request incrementally with one additional commit since the last revision:
>
> Fix indentation
Marked as reviewed by thartmann (Committer).
-------------
PR: https://git.openjdk.java.net/valhalla/pull/187
More information about the valhalla-dev
mailing list