RFR: 8333893: Optimization for StringBuilder append boolean & null [v4]
Emanuel Peter
epeter at openjdk.org
Wed Jun 12 12:55:17 UTC 2024
On Wed, 12 Jun 2024 12:38:58 GMT, Shaojin Wen <duke at openjdk.org> wrote:
>> Shaojin Wen has updated the pull request incrementally with one additional commit since the last revision:
>>
>> revert
>
> -XX:+TraceMergeStores -XX:+UnlockDiagnosticVMOptions -XX:DisableIntrinsic=_putCharStringU
>
>
>
> [TraceMergeStores]: Replace
> 644 StoreB === 628 499 642 573 [[ 669 655 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar @ bci:43 (line 71) StringUTF16::putCharsAt @ bci:3 (line 1552) AbstractStringBuilder::appendNull @ bci:63 (line 647) AbstractStringBuilder::append @ bci:5 (line 587)
> 669 StoreB === 654 644 667 35 [[ 720 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar @ bci:52 (line 72) StringUTF16::putCharsAt @ bci:3 (line 1552) AbstractStringBuilder::appendNull @ bci:63 (line 647) AbstractStringBuilder::append @ bci:5 (line 587)
> 720 StoreB === 654 669 718 574 [[ 744 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar @ bci:43 (line 71) StringUTF16::putCharsAt @ bci:11 (line 1553) AbstractStringBuilder::appendNull @ bci:63 (line 647) AbstractStringBuilder::append @ bci:5 (line 587)
> 744 StoreB === 654 720 742 35 [[ 796 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar @ bci:52 (line 72) StringUTF16::putCharsAt @ bci:11 (line 1553) AbstractStringBuilder::appendNull @ bci:63 (line 647) AbstractStringBuilder::append @ bci:5 (line 587)
> 796 StoreB === 654 744 794 575 [[ 820 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar @ bci:43 (line 71) StringUTF16::putCharsAt @ bci:20 (line 1554) AbstractStringBuilder::appendNull @ bci:63 (line 647) AbstractStringBuilder::append @ bci:5 (line 587)
> 820 StoreB === 654 796 818 35 [[ 872 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar @ bci:52 (line 72) StringUTF16::putCharsAt @ ...
@wenshao @cl4es nice, so it is a problem that `putChar` is not inlined in these cases, but intfinsified. Now it would be interestig to see if we can get rid of the `putChar` intrinsic. That would have to happen in a separate RFE probably, and would require sufficient benchmarking.
But first: I would say @wenshao should run the benchmarks from above again with disabled intrinsic. We could expect to get a performance boost from that - but we want to prove it with the benchmark.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/19626#issuecomment-2162937241
More information about the hotspot-compiler-dev
mailing list