On Wed, 12 Jun 2024 14:58:39 GMT, Emanuel Peter <epe...@openjdk.org> wrote:
>> @wenshao If you look at the tests in >> https://github.com/openjdk/jdk/pull/16245, you can see examples like this: >> https://github.com/eme64/jdk/blob/93bf2ddc9b7f584724034aec6a4f8b9fe1b2dfda/test/hotspot/jtreg/compiler/c2/TestMergeStores.java#L501-L514 >> So yes, we can merge them. > >> @eme64 It seems like MergeStore didn't happen, is there something I did >> wrong? > > Yes ;) > > @wenshao The issue is that the pattern matching is quite **limited**. > `putCharsAt(byte[] value, int i, char c1, char c2, char c3, char c4)` > This has 4 variables. This is not allowed for the optimization. You would > have to pass in a `long` and split it via shifts. > A possible exception: if `putCharsAt` is inlined and outside it is a > splitting of a `long` value with shift, then ... maybe ... this would be > optimized with `MergeStores`. > > There are only 2 **accepted** patterns: > - Multiple stores of constants -> constant is merged, which allows stores to > be merged. > - Multiple stores which all store a "section" of a larger value: > > You can see **examples** I listed at the beginning of the PR description in > https://github.com/openjdk/jdk/pull/16245. Thanks to @eme64 's patience and help, I found a way to use MergeStore without doing boundary checking. It would be even better if Unsafe.putChar could be used for MergeStore in the future. ## 1. JavaCode class StringUTF16 { public static void putCharsAt(byte[] value, int i, char c1, char c2, char c3, char c4) { // Don't use the putChar method, Its instrinsic will cause C2 unable to combining values into larger stores. putChar1(value, i , c1); putChar1(value, i + 1, c2); putChar1(value, i + 2, c3); putChar1(value, i + 3, c4); } public static void putCharsAt(byte[] value, int i, char c1, char c2, char c3, char c4, char c5) { // Don't use the putChar method, Its instrinsic will cause C2 unable to combining values into larger stores. putChar1(value, i , c1); putChar1(value, i + 1, c2); putChar1(value, i + 2, c3); putChar1(value, i + 3, c4); putChar1(value, i + 4, c5); } static void putChar1(byte[] value, int i, char c) { int address = Unsafe.ARRAY_BYTE_BASE_OFFSET + (i << 1); Unsafe.getUnsafe().putByte(value, address , (byte)(c >> HI_BYTE_SHIFT)); Unsafe.getUnsafe().putByte(value, address + 1, (byte)(c >> LO_BYTE_SHIFT)); } } ## 2. Benchmark Numbers The performance numbers under MacBookPro M1 Max are as follows: -Benchmark Mode Cnt Score Error Units -StringBuilders.toStringCharWithNull8Latin1 avgt 15 7.073 ? 0.010 ns/op -StringBuilders.toStringCharWithNull8Utf16 avgt 15 9.298 ? 0.015 ns/op -StringBuilders.toStringCharWithBool8Latin1 avgt 15 7.387 ? 0.021 ns/op -StringBuilders.toStringCharWithBool8Utf16 avgt 15 9.615 ? 0.011 ns/op +Benchmark Mode Cnt Score Error Units +StringBuilders.toStringCharWithNull8Latin1 avgt 15 5.628 ? 0.017 ns/op +25.67% +StringBuilders.toStringCharWithNull8Utf16 avgt 15 6.873 ? 0.026 ns/op +35.28% +StringBuilders.toStringCharWithBool8Latin1 avgt 15 6.480 ? 0.077 ns/op +13.99% +StringBuilders.toStringCharWithBool8Utf16 avgt 15 7.456 ? 0.059 ns/op +28.95% ## 3. TraceMergeStores [TraceMergeStores]: Replace 65 StoreB === 54 7 64 12 [[ 87 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=4; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) 87 StoreB === 54 65 86 81 [[ 18 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=4; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) [TraceMergeStores]: with 12 Parm === 3 [[ 81 65 59 44 90 ]] Parm2: int !jvms: StringUTF16::putChar1 @ bci:-1 (line 1566) 90 StoreC === 54 7 64 12 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; [TraceMergeStores]: Replace 639 StoreB === 628 494 638 576 [[ 663 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:3 (line 1551) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) 663 StoreB === 628 639 662 34 [[ 705 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:3 (line 1551) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) 705 StoreB === 628 663 704 577 [[ 729 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:11 (line 1552) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) 729 StoreB === 628 705 728 34 [[ 771 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:11 (line 1552) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) 771 StoreB === 628 729 770 578 [[ 795 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:20 (line 1553) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) 795 StoreB === 628 771 794 34 [[ 838 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:20 (line 1553) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) 838 StoreB === 628 795 837 579 [[ 861 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:29 (line 1554) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) 861 StoreB === 628 838 860 34 [[ 1212 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:29 (line 1554) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) [TraceMergeStores]: with 1275 ConL === 0 [[ 1276 ]] #long:28429475166421108 1276 StoreL === 628 494 638 1275 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; [TraceMergeStores]: Replace 629 StoreB === 618 484 628 566 [[ 653 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:3 (line 1551) AbstractStringBuilder::append @ bci:128 (line 788) 653 StoreB === 618 629 652 24 [[ 695 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:3 (line 1551) AbstractStringBuilder::append @ bci:128 (line 788) 695 StoreB === 618 653 694 567 [[ 719 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:11 (line 1552) AbstractStringBuilder::append @ bci:128 (line 788) 719 StoreB === 618 695 718 24 [[ 761 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:11 (line 1552) AbstractStringBuilder::append @ bci:128 (line 788) 761 StoreB === 618 719 760 568 [[ 785 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:20 (line 1553) AbstractStringBuilder::append @ bci:128 (line 788) 785 StoreB === 618 761 784 24 [[ 828 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:20 (line 1553) AbstractStringBuilder::append @ bci:128 (line 788) 828 StoreB === 618 785 827 569 [[ 851 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:29 (line 1554) AbstractStringBuilder::append @ bci:128 (line 788) 851 StoreB === 618 828 850 24 [[ 1202 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:29 (line 1554) AbstractStringBuilder::append @ bci:128 (line 788) [TraceMergeStores]: with 1259 ConL === 0 [[ 1260 ]] #long:28429475166421108 1260 StoreL === 618 484 628 1259 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; [TraceMergeStores]: Replace 990 StoreB === 917 949 989 870 [[ 1013 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:11 (line 1559) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) 1013 StoreB === 917 990 1012 34 [[ 1054 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:11 (line 1559) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) 1054 StoreB === 917 1013 1053 871 [[ 1077 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:20 (line 1560) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) 1077 StoreB === 917 1054 1076 34 [[ 1118 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:20 (line 1560) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) 1118 StoreB === 917 1077 1117 872 [[ 1141 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:29 (line 1561) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) 1141 StoreB === 917 1118 1140 34 [[ 1181 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:29 (line 1561) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) 1181 StoreB === 917 1141 1180 579 [[ 1205 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:38 (line 1562) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) 1205 StoreB === 917 1181 1204 34 [[ 1212 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:38 (line 1562) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) [TraceMergeStores]: with 1280 ConL === 0 [[ 1281 ]] #long:28429466576093281 1281 StoreL === 917 949 989 1280 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; [TraceMergeStores]: Replace 980 StoreB === 907 939 979 860 [[ 1003 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:11 (line 1559) AbstractStringBuilder::append @ bci:147 (line 790) 1003 StoreB === 907 980 1002 24 [[ 1044 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:11 (line 1559) AbstractStringBuilder::append @ bci:147 (line 790) 1044 StoreB === 907 1003 1043 861 [[ 1067 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:20 (line 1560) AbstractStringBuilder::append @ bci:147 (line 790) 1067 StoreB === 907 1044 1066 24 [[ 1108 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:20 (line 1560) AbstractStringBuilder::append @ bci:147 (line 790) 1108 StoreB === 907 1067 1107 862 [[ 1131 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:29 (line 1561) AbstractStringBuilder::append @ bci:147 (line 790) 1131 StoreB === 907 1108 1130 24 [[ 1171 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:29 (line 1561) AbstractStringBuilder::append @ bci:147 (line 790) 1171 StoreB === 907 1131 1170 569 [[ 1195 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:38 (line 1562) AbstractStringBuilder::append @ bci:147 (line 790) 1195 StoreB === 907 1171 1194 24 [[ 1202 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:38 (line 1562) AbstractStringBuilder::append @ bci:147 (line 790) [TraceMergeStores]: with 1264 ConL === 0 [[ 1265 ]] #long:28429466576093281 1265 StoreL === 907 939 979 1264 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; [TraceMergeStores]: Replace 927 StoreB === 917 494 926 869 [[ 949 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:3 (line 1558) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) 949 StoreB === 917 927 948 34 [[ 1281 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:3 (line 1558) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) [TraceMergeStores]: with 869 ConI === 0 [[ 927 921 921 1284 ]] #int:102 1284 StoreC === 917 494 926 869 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; [TraceMergeStores]: Replace 917 StoreB === 907 484 916 859 [[ 939 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:3 (line 1558) AbstractStringBuilder::append @ bci:147 (line 790) 939 StoreB === 907 917 938 24 [[ 1265 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=10; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:3 (line 1558) AbstractStringBuilder::append @ bci:147 (line 790) [TraceMergeStores]: with 859 ConI === 0 [[ 917 911 911 1268 ]] #int:102 1268 StoreC === 907 484 916 859 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=10; [TraceMergeStores]: Replace 78 StoreB === 67 7 77 12 [[ 100 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=4; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:3 (line 1558) 100 StoreB === 67 78 99 94 [[ 138 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=4; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:3 (line 1558) [TraceMergeStores]: with 12 Parm === 3 [[ 94 78 72 57 343 ]] Parm2: int !jvms: StringUTF16::putCharsAt @ bci:-1 (line 1558) 343 StoreC === 67 7 77 12 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; [TraceMergeStores]: Replace 138 StoreB === 67 343 137 13 [[ 160 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=4; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:11 (line 1559) 160 StoreB === 67 138 159 154 [[ 198 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=4; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:11 (line 1559) [TraceMergeStores]: with 13 Parm === 3 [[ 154 138 72 344 ]] Parm3: int !jvms: StringUTF16::putCharsAt @ bci:-1 (line 1558) 344 StoreC === 67 343 137 13 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; [TraceMergeStores]: Replace 198 StoreB === 67 344 197 14 [[ 220 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=4; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:20 (line 1560) 220 StoreB === 67 198 219 214 [[ 259 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=4; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:20 (line 1560) [TraceMergeStores]: with 14 Parm === 3 [[ 214 198 72 345 ]] Parm4: int !jvms: StringUTF16::putCharsAt @ bci:-1 (line 1558) 345 StoreC === 67 344 197 14 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; [TraceMergeStores]: Replace 259 StoreB === 67 345 258 15 [[ 281 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=4; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:29 (line 1561) 281 StoreB === 67 259 280 275 [[ 317 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=4; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:29 (line 1561) [TraceMergeStores]: with 15 Parm === 3 [[ 275 259 72 346 ]] Parm5: int !jvms: StringUTF16::putCharsAt @ bci:-1 (line 1558) 346 StoreC === 67 345 258 15 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; [TraceMergeStores]: Replace 317 StoreB === 67 346 316 16 [[ 339 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=4; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:38 (line 1562) 339 StoreB === 67 317 338 333 [[ 22 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=4; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:38 (line 1562) [TraceMergeStores]: with 16 Parm === 3 [[ 333 317 72 347 ]] Parm6: int !jvms: StringUTF16::putCharsAt @ bci:-1 (line 1558) 347 StoreC === 67 346 316 16 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=4; [TraceMergeStores]: Replace 1023 StoreB === 473 328 1072 196 [[ 955 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:3 (line 1551) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) 955 StoreB === 473 1023 1024 128 [[ 871 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:3 (line 1551) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) 871 StoreB === 473 955 956 193 [[ 785 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:11 (line 1552) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) 785 StoreB === 473 871 872 128 [[ 695 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:11 (line 1552) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) 695 StoreB === 473 785 786 194 [[ 594 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:20 (line 1553) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) 594 StoreB === 473 695 696 128 [[ 474 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:20 (line 1553) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) 474 StoreB === 473 594 595 195 [[ 336 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:29 (line 1554) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) 336 StoreB === 473 474 475 128 [[ 1143 486 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:29 (line 1554) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) [TraceMergeStores]: with 1372 ConL === 0 [[ 1373 ]] #long:28429475166421108 1373 StoreL === 473 328 1072 1372 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; [TraceMergeStores]: Replace 924 StoreB === 63 997 998 216 [[ 838 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:11 (line 1559) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) 838 StoreB === 63 924 925 128 [[ 743 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:11 (line 1559) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) 743 StoreB === 63 838 839 217 [[ 644 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:20 (line 1560) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) 644 StoreB === 63 743 744 128 [[ 520 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:20 (line 1560) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) 520 StoreB === 63 644 645 218 [[ 374 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:29 (line 1561) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) 374 StoreB === 63 520 521 128 [[ 239 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:29 (line 1561) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) 239 StoreB === 63 374 375 195 [[ 102 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:38 (line 1562) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) 102 StoreB === 63 239 240 128 [[ 56 310 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:38 (line 1562) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) [TraceMergeStores]: with 1383 ConL === 0 [[ 1384 ]] #long:28429466576093281 1384 StoreL === 63 997 998 1383 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; [TraceMergeStores]: Replace 1046 StoreB === 63 1143 1082 219 [[ 997 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:3 (line 1558) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) 997 StoreB === 63 1046 1047 128 [[ 1384 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:3 (line 1558) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) [TraceMergeStores]: with 219 ConI === 0 [[ 1046 92 92 1387 ]] #int:102 1387 StoreC === 63 1143 1082 219 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; [TraceMergeStores]: Replace 1101 StoreB === 544 390 1156 241 [[ 1028 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:3 (line 1551) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) 1028 StoreB === 544 1101 1102 172 [[ 945 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:3 (line 1551) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) 945 StoreB === 544 1028 1029 238 [[ 858 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:11 (line 1552) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) 858 StoreB === 544 945 946 172 [[ 769 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:11 (line 1552) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) 769 StoreB === 544 858 859 239 [[ 664 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:20 (line 1553) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) 664 StoreB === 544 769 770 172 [[ 545 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:20 (line 1553) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) 545 StoreB === 544 664 665 240 [[ 398 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:29 (line 1554) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) 398 StoreB === 544 545 546 172 [[ 1230 557 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:29 (line 1554) AbstractStringBuilder::append @ bci:128 (line 788) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:76 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) [TraceMergeStores]: with 1466 ConL === 0 [[ 1467 ]] #long:28429475166421108 1467 StoreL === 544 390 1156 1466 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; [TraceMergeStores]: Replace 994 StoreB === 78 1068 1069 263 [[ 912 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:11 (line 1559) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) 912 StoreB === 78 994 995 172 [[ 826 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:11 (line 1559) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) 826 StoreB === 78 912 913 264 [[ 729 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:20 (line 1560) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) 729 StoreB === 78 826 827 172 [[ 605 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:20 (line 1560) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) 605 StoreB === 78 729 730 265 [[ 457 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:29 (line 1561) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) 457 StoreB === 78 605 606 172 [[ 302 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:29 (line 1561) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) 302 StoreB === 78 457 458 240 [[ 132 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:38 (line 1562) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) 132 StoreB === 78 302 303 172 [[ 475 70 370 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:38 (line 1562) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) [TraceMergeStores]: with 1477 ConL === 0 [[ 1478 ]] #long:28429466576093281 1478 StoreL === 78 1068 1069 1477 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; [TraceMergeStores]: Replace 1124 StoreB === 78 1230 1165 266 [[ 1068 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:20 (line 1567) StringUTF16::putCharsAt @ bci:3 (line 1558) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) 1068 StoreB === 78 1124 1125 172 [[ 1478 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=11; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; !jvms: StringUTF16::putChar1 @ bci:37 (line 1568) StringUTF16::putCharsAt @ bci:3 (line 1558) AbstractStringBuilder::append @ bci:147 (line 790) StringBuilder::append @ bci:2 (line 239) SBTraceStoreTest::append @ bci:80 (line 18) SBTraceStoreTest::appendTest @ bci:28 (line 32) [TraceMergeStores]: with 266 ConI === 0 [[ 1124 114 114 1481 ]] #int:102 1481 StoreC === 78 1230 1165 266 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=11; ------------- PR Comment: https://git.openjdk.org/jdk/pull/19626#issuecomment-2163403522