From fb04513de528b3f6b55057f61bf4108bd44ddeea Mon Sep 17 00:00:00 2001 From: Peter Shipton Date: Thu, 18 Apr 2024 09:51:15 -0400 Subject: [PATCH] jdk11 should create LATIN1 String constants LATIN1 String constants were only created in jdk17 and later. The JCL for jdk11 creates LATIN1 Strings and the VM needs to match. Issue https://github.com/eclipse-openj9/openj9/issues/19334 Signed-off-by: Peter Shipton --- runtime/gc_base/StringTable.cpp | 4 ++-- .../src/org/openj9/test/java/lang/Test_String.java | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/runtime/gc_base/StringTable.cpp b/runtime/gc_base/StringTable.cpp index 73e96d6a01f..d2bc346545f 100644 --- a/runtime/gc_base/StringTable.cpp +++ b/runtime/gc_base/StringTable.cpp @@ -576,7 +576,7 @@ j9gc_createJavaLangString(J9VMThread *vmThread, U_8 *data, UDATA length, UDATA s for (UDATA i = 0; i < unicodeLength; ++i) { if (unicodeData[i] > 0x7F) { isASCII = false; - if (J2SE_VERSION(vm) >= J2SE_V17) { + if (J2SE_VERSION(vm) >= J2SE_V11) { for (UDATA j = i; j < unicodeLength; ++j) { if (unicodeData[j] > 0xFF) { isASCIIorLatin1 = false; @@ -604,7 +604,7 @@ j9gc_createJavaLangString(J9VMThread *vmThread, U_8 *data, UDATA length, UDATA s continue; } isASCII = false; - if (compressStrings && (J2SE_VERSION(vm) >= J2SE_V17)) { + if (compressStrings && (J2SE_VERSION(vm) >= J2SE_V11)) { U_8 *dataTmp = data + i; UDATA lengthTmp = length - i; isASCIIorLatin1 = VM_VMHelpers::isLatin1String(dataTmp, lengthTmp); diff --git a/test/functional/Java8andUp/src/org/openj9/test/java/lang/Test_String.java b/test/functional/Java8andUp/src/org/openj9/test/java/lang/Test_String.java index 6d4cfdd0dc8..1329cd3e50d 100644 --- a/test/functional/Java8andUp/src/org/openj9/test/java/lang/Test_String.java +++ b/test/functional/Java8andUp/src/org/openj9/test/java/lang/Test_String.java @@ -932,8 +932,11 @@ public void test_indexOf2() { */ @Test public void test_indexOf3() { - AssertJUnit.assertTrue("Failed to find string", hw1.indexOf("World") > 0); - AssertJUnit.assertTrue("Failed to find string", !(hw1.indexOf("ZZ") > 0)); + AssertJUnit.assertEquals("Failed to find string 1", 5, hw1.indexOf("World")); + AssertJUnit.assertEquals("Failed to find string 2", -1, hw1.indexOf("ZZ")); + String needle = "\u00b0\u00b1"; + String hay = new StringBuilder("a").append(needle).toString(); + AssertJUnit.assertEquals("Failed to find string 3", 1, hay.indexOf(needle)); } /**