RFR: 8333893: Optimization for StringBuilder append boolean & null [v4]
Shaojin Wen
duke at openjdk.org
Wed Jun 12 16:01:16 UTC 2024
On Wed, 12 Jun 2024 14:58:39 GMT, Emanuel Peter <epeter at 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
More information about the core-libs-dev
mailing list