From d5ae248d8461579feeccc26b83ace68f2313bd1e Mon Sep 17 00:00:00 2001 From: ol-automation_ww Date: Fri, 28 Mar 2025 21:05:40 +0000 Subject: [PATCH 1/3] Update graal import. --- common.json | 16 ++++++++-------- mx.truffleruby/suite.py | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/common.json b/common.json index 86b4e01aeef..6e67ba93708 100644 --- a/common.json +++ b/common.json @@ -8,7 +8,7 @@ "COMMENT.jdks": "When adding or removing JDKs keep in sync with JDKs in ci/common.jsonnet", "jdks": { - "galahad-jdk": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+12-1270", "platformspecific": true, "extrabundles": ["static-libs"]}, + "galahad-jdk": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+15-1632", "platformspecific": true, "extrabundles": ["static-libs"]}, "oraclejdk17": {"name": "jpg-jdk", "version": "17.0.7", "build_id": "jdk-17.0.7+8", "platformspecific": true, "extrabundles": ["static-libs"]}, "labsjdk-ce-17": {"name": "labsjdk", "version": "ce-17.0.7+4-jvmci-23.1-b02", "platformspecific": true }, @@ -45,13 +45,13 @@ "oraclejdk23": {"name": "jpg-jdk", "version": "23", "build_id": "jdk-23+37", "platformspecific": true, "extrabundles": ["static-libs"]}, - "oraclejdk-latest": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+13", "platformspecific": true, "extrabundles": ["static-libs"]}, - "labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-25+13-jvmci-b01", "platformspecific": true }, - "labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-25+13-jvmci-b01-debug", "platformspecific": true }, - "labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-25+13-jvmci-b01-sulong", "platformspecific": true }, - "labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-25+13-jvmci-b01", "platformspecific": true }, - "labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-25+13-jvmci-b01-debug", "platformspecific": true }, - "labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-25+13-jvmci-b01-sulong", "platformspecific": true } + "oraclejdk-latest": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+15", "platformspecific": true, "extrabundles": ["static-libs"]}, + "labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-25+15-jvmci-b01", "platformspecific": true }, + "labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-25+15-jvmci-b01-debug", "platformspecific": true }, + "labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-25+15-jvmci-b01-sulong", "platformspecific": true }, + "labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-25+15-jvmci-b01", "platformspecific": true }, + "labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-25+15-jvmci-b01-debug", "platformspecific": true }, + "labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-25+15-jvmci-b01-sulong", "platformspecific": true } }, "eclipse": { diff --git a/mx.truffleruby/suite.py b/mx.truffleruby/suite.py index fc0d766b32e..726aaa6a16a 100644 --- a/mx.truffleruby/suite.py +++ b/mx.truffleruby/suite.py @@ -22,7 +22,7 @@ { "name": "regex", "subdir": True, - "version": "7d33961d49854bedb877d54b9819947fd253df9b", + "version": "f8fbbb697fb577184408dd16c52e34dbc9b0d8e8", "urls": [ {"url": "https://github.com/oracle/graal.git", "kind": "git"}, {"url": "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind": "binary"}, @@ -31,7 +31,7 @@ { "name": "sulong", "subdir": True, - "version": "7d33961d49854bedb877d54b9819947fd253df9b", + "version": "f8fbbb697fb577184408dd16c52e34dbc9b0d8e8", "urls": [ {"url": "https://github.com/oracle/graal.git", "kind": "git"}, {"url": "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind": "binary"}, From 3314837da26863e7d6c2dc8072d941750e711f11 Mon Sep 17 00:00:00 2001 From: Andrew Konchin Date: Mon, 31 Mar 2025 17:01:06 +0300 Subject: [PATCH 2/3] Fix Truffle deprecation warnings --- .../truffleruby/core/regexp/ClassicRegexp.java | 12 +++++++----- .../core/string/StringHelperNodes.java | 2 +- .../truffleruby/core/string/StringNodes.java | 18 +++++++++--------- .../truffleruby/core/string/StringSupport.java | 4 ++-- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/truffleruby/core/regexp/ClassicRegexp.java b/src/main/java/org/truffleruby/core/regexp/ClassicRegexp.java index e1145ae8624..851f5d77008 100644 --- a/src/main/java/org/truffleruby/core/regexp/ClassicRegexp.java +++ b/src/main/java/org/truffleruby/core/regexp/ClassicRegexp.java @@ -665,10 +665,11 @@ private static boolean all7Bit(byte[] bytes) { public static TStringWithEncoding quote19(ATStringWithEncoding bs) { final boolean asciiOnly = bs.isAsciiOnly(); boolean metaFound = false; + final var tencoding = bs.encoding.tencoding; var iterator = bs.createCodePointIterator(); while (iterator.hasNext()) { - final int c = iterator.nextUncached(); + final int c = iterator.nextUncached(tencoding); switch (c) { case '[': @@ -712,7 +713,7 @@ public static TStringWithEncoding quote19(ATStringWithEncoding bs) { iterator = bs.createCodePointIterator(); while (iterator.hasNext()) { int p = iterator.getByteIndex(); - final int c = iterator.nextUncached(); + final int c = iterator.nextUncached(tencoding); if (c == -1) { int after = iterator.getByteIndex(); @@ -919,11 +920,12 @@ public static void appendRegexpString(TStringBuilder to, TStringWithEncoding ful var str = fullStr.substring(start, len); final var enc = str.encoding.jcoding; + final var tencoding = str.encoding.tencoding; var iterator = str.createCodePointIterator(); boolean needEscape = false; while (iterator.hasNext()) { - final int c = iterator.nextUncached(); + final int c = iterator.nextUncached(tencoding); if ((c >= 0 && Encoding.isAscii(c)) && (c == '/' || !enc.isPrint(c))) { needEscape = true; break; @@ -936,10 +938,10 @@ public static void appendRegexpString(TStringBuilder to, TStringWithEncoding ful iterator = str.createCodePointIterator(); while (iterator.hasNext()) { final int p = iterator.getByteIndex(); - final int c = iterator.nextUncached(); + final int c = iterator.nextUncached(tencoding); if (c == '\\' && iterator.hasNext()) { - iterator.nextUncached(); + iterator.nextUncached(tencoding); to.append(str, p, iterator.getByteIndex() - p); } else if (c == '/') { to.append((byte) '\\'); diff --git a/src/main/java/org/truffleruby/core/string/StringHelperNodes.java b/src/main/java/org/truffleruby/core/string/StringHelperNodes.java index 7844321193f..8d8ff444f1b 100644 --- a/src/main/java/org/truffleruby/core/string/StringHelperNodes.java +++ b/src/main/java/org/truffleruby/core/string/StringHelperNodes.java @@ -510,7 +510,7 @@ byte[] invert(RubyString string, TruffleStringIterator iterator, byte[] initialB while (iterator.hasNext()) { int p = iterator.getByteIndex(); - int c = nextNode.execute(iterator); + int c = nextNode.execute(iterator, encoding); if ((lowerToUpper && StringSupport.isAsciiLowercase(c)) || (upperToLower && StringSupport.isAsciiUppercase(c))) { diff --git a/src/main/java/org/truffleruby/core/string/StringNodes.java b/src/main/java/org/truffleruby/core/string/StringNodes.java index 19c13149eb0..6cd91d245cc 100644 --- a/src/main/java/org/truffleruby/core/string/StringNodes.java +++ b/src/main/java/org/truffleruby/core/string/StringNodes.java @@ -1273,7 +1273,7 @@ Object eachCodePoint(Object string, RubyProc block, var iterator = createCodePointIteratorNode.execute(tstring, tencoding, ErrorHandling.RETURN_NEGATIVE); while (iterator.hasNext()) { - int codePoint = nextNode.execute(iterator); + int codePoint = nextNode.execute(iterator, tencoding); if (codePoint == -1) { invalidCodePointProfile.enter(this); @@ -1313,7 +1313,7 @@ Object codePointsWithoutBlock(Object string, Nil unusedBlock, int i = 0; while (iterator.hasNext()) { - int codePoint = nextNode.execute(iterator); + int codePoint = nextNode.execute(iterator, tencoding); if (codePoint == -1) { invalidCodePointProfile.enter(this); @@ -1639,7 +1639,7 @@ static Object lstripBangSingleByte(RubyString string, var tencoding = encoding.tencoding; var iterator = createCodePointIteratorNode.execute(tstring, tencoding, ErrorHandling.RETURN_NEGATIVE); - int codePoint = nextNode.execute(iterator); + int codePoint = nextNode.execute(iterator, tencoding); // Check the first code point to see if it's broken. In the case of strings without leading spaces, // this check can avoid having to compile the while loop. @@ -1657,7 +1657,7 @@ static Object lstripBangSingleByte(RubyString string, while (iterator.hasNext()) { int byteIndex = iterator.getByteIndex(); - codePoint = nextNode.execute(iterator); + codePoint = nextNode.execute(iterator, tencoding); if (codePoint == -1) { badCodePointProfile.enter(node); @@ -1780,7 +1780,7 @@ static Object rstripBangNonEmptyString(RubyString string, var iterator = createBackwardCodePointIteratorNode.execute(tstring, tencoding, ErrorHandling.RETURN_NEGATIVE); - int codePoint = previousNode.execute(iterator); + int codePoint = previousNode.execute(iterator, tencoding); // Check the last code point to see if it's broken. In the case of strings without trailing spaces, // this check can avoid having to compile the while loop. @@ -1798,7 +1798,7 @@ static Object rstripBangNonEmptyString(RubyString string, while (iterator.hasPrevious()) { int byteIndex = iterator.getByteIndex(); - codePoint = previousNode.execute(iterator); + codePoint = previousNode.execute(iterator, tencoding); if (codePoint == -1) { badCodePointProfile.enter(node); @@ -3023,7 +3023,7 @@ Object capitalizeAsciiCodePoints(RubyString string, int caseMappingOptions, byte[] bytes = null; var iterator = createCodePointIteratorNode.execute(tstring, tencoding, ErrorHandling.RETURN_NEGATIVE); - int firstCodePoint = nextNode.execute(iterator); + int firstCodePoint = nextNode.execute(iterator, tencoding); if (firstCharIsLowerProfile.profile(this, StringSupport.isAsciiLowercase(firstCodePoint))) { bytes = copyByteArray(tstring, tencoding); bytes[0] ^= 0x20; @@ -3289,7 +3289,7 @@ static Object stringAwkSplit(Object string, int limit, Object block, int e = 0, b = 0, iterations = 0; try { while (loopProfile.inject(node, iterator.hasNext())) { - int c = nextNode.execute(iterator); + int c = nextNode.execute(iterator, tencoding); int p = iterator.getByteIndex(); iterations++; @@ -3521,7 +3521,7 @@ private static TruffleString rbStrEscape(AbstractTruffleString tstring, RubyEnco while (iterator.hasNext()) { final int p = iterator.getByteIndex(); - int c = iterator.nextUncached(); + int c = iterator.nextUncached(tencoding); if (c == -1) { int n = iterator.getByteIndex() - p; diff --git a/src/main/java/org/truffleruby/core/string/StringSupport.java b/src/main/java/org/truffleruby/core/string/StringSupport.java index 33b43dd93ba..d411365298c 100644 --- a/src/main/java/org/truffleruby/core/string/StringSupport.java +++ b/src/main/java/org/truffleruby/core/string/StringSupport.java @@ -1226,10 +1226,10 @@ public static int multiByteCasecmp(RubyEncoding enc, AbstractTruffleString selfT while (selfIterator.hasNext() && otherIterator.hasNext()) { final int selfPos = selfIterator.getByteIndex(); - final int c = selfIterator.nextUncached(); + final int c = selfIterator.nextUncached(selfEncoding); final int otherPos = otherIterator.getByteIndex(); - final int oc = otherIterator.nextUncached(); + final int oc = otherIterator.nextUncached(otherEncoding); if (enc.isAsciiCompatible && (c >= 0 && Encoding.isAscii(c)) && (oc >= 0 && Encoding.isAscii(oc))) { byte uc = AsciiTables.ToUpperCaseTable[c]; From b76bb4998c1dee3bb686ec427e974aa56a40aa18 Mon Sep 17 00:00:00 2001 From: Andrew Konchin Date: Mon, 31 Mar 2025 17:06:00 +0300 Subject: [PATCH 3/3] Exclude failing timezone-related MRI test --- test/mri/excludes/TestTimeTZ.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/test/mri/excludes/TestTimeTZ.rb b/test/mri/excludes/TestTimeTZ.rb index 003a2cc2f0c..8eea846387e 100644 --- a/test/mri/excludes/TestTimeTZ.rb +++ b/test/mri/excludes/TestTimeTZ.rb @@ -1,4 +1,5 @@ exclude :test_america_los_angeles, "RangeError: bignum too big to convert into `long'" exclude :test_europe_berlin, "TZ=Europe/Berlin Time.local(2011, 10, 30, 2, 0, 0)." +exclude :test_europe_lisbon, "RangeError: bignum too big to convert into `long'" exclude :test_localtime_zone, "<\"GMT+08:00\"> expected but was <\"PST\">." exclude :test_utc_names, "ArgumentError: \"+HH:MM\", \"-HH:MM\", \"UTC\" or \"A\"..\"I\",\"K\"..\"Z\" expected for utc_offset: utc"