On Tue, 2 Feb 2021 13:31:58 GMT, Aleksey Shipilev <sh...@openjdk.org> wrote:

>> Discovered it with ARM32 tier1 tests, which runs with -CompactStrings by 
>> default. But the bug is actually generic:
>> 
>> $ CONF=linux-x86_64-server-fastdebug make run-test 
>> TEST=java/lang/StringBuilder/Insert.java TEST_VM_OPTS="-XX:-CompactStrings"
>> 
>> test Insert.insertOffset(): failure
>> java.lang.AssertionError: expected [??abc] but found [efabc]
>>      at org.testng.Assert.fail(Assert.java:94)
>>      at org.testng.Assert.failNotEquals(Assert.java:496)
>>      at org.testng.Assert.assertEquals(Assert.java:125)
>>      at org.testng.Assert.assertEquals(Assert.java:178)
>>      at org.testng.Assert.assertEquals(Assert.java:188)
>>      at Insert.insertOffset(Insert.java:45)
>>      at 
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
>> Method)
>> 
>> I believe this is a regression from 
>> [JDK-8254082](https://bugs.openjdk.java.net/browse/JDK-8254082). 
>> 
>>     void getBytes(byte[] dst, int srcPos, int dstBegin, byte coder, int 
>> length) {
>>         if (coder() == coder) {
>>             System.arraycopy(value, srcPos, dst, dstBegin << coder, length 
>> << coder());
>>         } else {    // this.coder == LATIN && coder == UTF16
>>             StringLatin1.inflate(value, srcPos, dst, dstBegin, length);
>>         }
>>     }
>> 
>> When coder is `UTF16` (which it guaranteed to be without `CompactStrings`), 
>> then `srcPos` in `byte[]` array has to be adjusted by `coder` as well.
>> 
>> Additional testing:
>>  - [x] Linux ARM32, affected test now passes
>>  - [x] Linux x86_64, affected test now passes
>>  - [x] Linux x86_64 `tier1` default, passes
>>  - [x] Linux x86_64 `tier1`, `-XX:-CompactStrings`, passes modulo two 
>> testbugs ([JDK-8260933](https://bugs.openjdk.java.net/browse/JDK-8260933), 
>> [JDK-8260934](https://bugs.openjdk.java.net/browse/JDK-8260934))
>
> Aleksey Shipilev has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Add the regression test case

Marked as reviewed by jlaskey (Reviewer).

-------------

PR: https://git.openjdk.java.net/jdk16/pull/143

Reply via email to