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"}, 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]; 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"