On Wed, 6 Nov 2024 01:44:38 GMT, Chen Liang <li...@openjdk.org> wrote:
>> Shaojin Wen has updated the pull request with a new target base due to a >> merge or a rebase. The incremental webrev excludes the unrelated changes >> brought in by the merge/rebase. The pull request contains 11 additional >> commits since the last revision: >> >> - Merge remote-tracking branch 'upstream/master' into >> int_get_chars_dedup_202410 >> - fix Helper >> - fix Helper >> - fix Helper >> - unsafe putByte >> - remove digitPair >> - fix import >> - remove JLA >> - remove unused code >> - add comments >> - ... and 1 more: https://git.openjdk.org/jdk/compare/1355efc1...73b32004 > > src/java.base/share/classes/jdk/internal/util/DecimalDigits.java line 415: > >> 413: int packed = DIGITS[v]; >> 414: putCharLatin1(buf, charPos, packed & 0xFF); >> 415: putCharLatin1(buf, charPos + 1, packed >> 8); > > Does merge store work here? Original code in StringLatin1 uses direct array > writes, not sure about this version. Tests show that the current version of MergeStore also works [TraceMergeStores] found: 0--> 114 StoreB === 80 91 113 95 [[ 18 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=5; !jvms: DecimalDigits::putCharLatin1 @ bci:12 (line 430) DecimalDigits::putPairLatin1 @ bci:24 (line 413) 1--> 91 StoreB === 80 7 90 51 [[ 114 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=5; !jvms: DecimalDigits::putCharLatin1 @ bci:12 (line 430) DecimalDigits::putPairLatin1 @ bci:13 (line 412) [TraceMergeStores] truncated: 0--> 114 StoreB === 80 91 113 95 [[ 18 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=5; !jvms: DecimalDigits::putCharLatin1 @ bci:12 (line 430) DecimalDigits::putPairLatin1 @ bci:24 (line 413) 1--> 91 StoreB === 80 7 90 51 [[ 114 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=5; !jvms: DecimalDigits::putCharLatin1 @ bci:12 (line 430) DecimalDigits::putPairLatin1 @ bci:13 (line 412) [TraceMergeStores]: Replace 91 StoreB === 80 7 90 51 [[ 114 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=5; !jvms: DecimalDigits::putCharLatin1 @ bci:12 (line 430) DecimalDigits::putPairLatin1 @ bci:13 (line 412) 114 StoreB === 80 91 113 95 [[ 18 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; unsafe Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=5; !jvms: DecimalDigits::putCharLatin1 @ bci:12 (line 430) DecimalDigits::putPairLatin1 @ bci:24 (line 413) [TraceMergeStores]: with 51 LoadS === 33 7 49 [[ 91 85 95 70 118 ]] @short[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=4; #short !jvms: DecimalDigits::putPairLatin1 @ bci:4 (line 411) 118 StoreC === 80 7 90 51 [[ ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=5; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=5; [TraceMergeStores] MergePrimitiveStores::run: 118 StoreC === 80 7 90 51 [[ 18 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=5; mismatched Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=5; !orig=[114] !jvms: DecimalDigits::putCharLatin1 @ bci:12 (line 430) DecimalDigits::putPairLatin1 @ bci:24 (line 413) ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/21593#discussion_r1830398810