From dcba014ad56eae753c25c579fb30bb8ecfab69af Mon Sep 17 00:00:00 2001
From: Yasumasa Suenaga
Date: Tue, 18 Nov 2025 14:44:14 +0000
Subject: [PATCH 001/114] 8371967: Add Visual Studio 2026 to build toolchain
for Windows
Reviewed-by: erikj
---
doc/building.html | 2 +-
doc/building.md | 2 +-
make/autoconf/toolchain_microsoft.m4 | 17 ++++++++++++++++-
3 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/doc/building.html b/doc/building.html
index 99eb3e0c473..19313ebf43a 100644
--- a/doc/building.html
+++ b/doc/building.html
@@ -668,7 +668,7 @@ update.
(Note that this version is often presented as "MSVC 14.28", and reported
by cl.exe as 19.28.) Older versions will not be accepted by
configure and will not work. The maximum accepted version
-of Visual Studio is 2022.
+of Visual Studio is 2026.
If you have multiple versions of Visual Studio installed,
configure will by default pick the latest. You can request
a specific version to be used by setting
diff --git a/doc/building.md b/doc/building.md
index 047255d1848..1fbd395a9d1 100644
--- a/doc/building.md
+++ b/doc/building.md
@@ -468,7 +468,7 @@ available for this update.
The minimum accepted version is Visual Studio 2019 version 16.8. (Note that
this version is often presented as "MSVC 14.28", and reported by cl.exe as
19.28.) Older versions will not be accepted by `configure` and will not work.
-The maximum accepted version of Visual Studio is 2022.
+The maximum accepted version of Visual Studio is 2026.
If you have multiple versions of Visual Studio installed, `configure` will by
default pick the latest. You can request a specific version to be used by
diff --git a/make/autoconf/toolchain_microsoft.m4 b/make/autoconf/toolchain_microsoft.m4
index 17ad2666b3a..f577cf1a2a1 100644
--- a/make/autoconf/toolchain_microsoft.m4
+++ b/make/autoconf/toolchain_microsoft.m4
@@ -25,7 +25,7 @@
################################################################################
# The order of these defines the priority by which we try to find them.
-VALID_VS_VERSIONS="2022 2019"
+VALID_VS_VERSIONS="2022 2019 2026"
VS_DESCRIPTION_2019="Microsoft Visual Studio 2019"
VS_VERSION_INTERNAL_2019=142
@@ -57,6 +57,21 @@ VS_SDK_PLATFORM_NAME_2022=
VS_SUPPORTED_2022=true
VS_TOOLSET_SUPPORTED_2022=true
+VS_DESCRIPTION_2026="Microsoft Visual Studio 2026"
+VS_VERSION_INTERNAL_2026=145
+VS_MSVCR_2026=vcruntime140.dll
+VS_VCRUNTIME_1_2026=vcruntime140_1.dll
+VS_MSVCP_2026=msvcp140.dll
+VS_ENVVAR_2026="VS180COMNTOOLS"
+VS_USE_UCRT_2026="true"
+VS_VS_INSTALLDIR_2026="Microsoft Visual Studio/18"
+VS_EDITIONS_2026="BuildTools Community Professional Enterprise"
+VS_SDK_INSTALLDIR_2026=
+VS_VS_PLATFORM_NAME_2026="v145"
+VS_SDK_PLATFORM_NAME_2026=
+VS_SUPPORTED_2026=true
+VS_TOOLSET_SUPPORTED_2026=true
+
################################################################################
AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT],
From 43040f30a72591a37deb9a54ab7723988c1e4b51 Mon Sep 17 00:00:00 2001
From: Brian Burkhalter
Date: Tue, 18 Nov 2025 15:11:45 +0000
Subject: [PATCH 002/114] 8372012:
java/nio/file/attribute/BasicFileAttributeView/SetTimesNanos.java should
check ability to create links
Reviewed-by: alanb, jpai
---
.../attribute/BasicFileAttributeView/SetTimesNanos.java | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/test/jdk/java/nio/file/attribute/BasicFileAttributeView/SetTimesNanos.java b/test/jdk/java/nio/file/attribute/BasicFileAttributeView/SetTimesNanos.java
index acdff692601..55a7ca10a6d 100644
--- a/test/jdk/java/nio/file/attribute/BasicFileAttributeView/SetTimesNanos.java
+++ b/test/jdk/java/nio/file/attribute/BasicFileAttributeView/SetTimesNanos.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -67,8 +67,10 @@ public class SetTimesNanos {
Path file = Files.createFile(dir.resolve("test.dat"));
testNanos(file);
- testNanosLink(false);
- testNanosLink(true);
+ if (TestUtil.supportsSymbolicLinks(Path.of(""))) {
+ testNanosLink(false);
+ testNanosLink(true);
+ }
}
private static void testNanos(Path path) throws IOException {
From b6d83eda6bfa76da98274aa3ad294759cb56d3a5 Mon Sep 17 00:00:00 2001
From: Chen Liang
Date: Tue, 18 Nov 2025 15:14:20 +0000
Subject: [PATCH 003/114] 8371960: Missing null check in AnnotatedType
annotation accessor methods
Reviewed-by: alanb
---
.../annotation/AnnotatedTypeFactory.java | 6 +-
.../AnnotatedElementNullCheckTest.java | 101 ++++++++++++++++++
2 files changed, 105 insertions(+), 2 deletions(-)
create mode 100644 test/jdk/java/lang/reflect/AnnotatedElement/AnnotatedElementNullCheckTest.java
diff --git a/src/java.base/share/classes/sun/reflect/annotation/AnnotatedTypeFactory.java b/src/java.base/share/classes/sun/reflect/annotation/AnnotatedTypeFactory.java
index aa69e29831d..b5db897b218 100644
--- a/src/java.base/share/classes/sun/reflect/annotation/AnnotatedTypeFactory.java
+++ b/src/java.base/share/classes/sun/reflect/annotation/AnnotatedTypeFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -128,7 +128,7 @@ public final class AnnotatedTypeFactory {
private final Type type;
private final LocationInfo location;
private final TypeAnnotation[] allOnSameTargetTypeAnnotations;
- private final Map, Annotation> annotations;
+ private final Map, Annotation> annotations;
AnnotatedTypeBaseImpl(Type type, LocationInfo location,
TypeAnnotation[] actualTypeAnnotations, TypeAnnotation[] allOnSameTargetTypeAnnotations) {
@@ -162,11 +162,13 @@ public final class AnnotatedTypeFactory {
@Override
@SuppressWarnings("unchecked")
public final T getDeclaredAnnotation(Class annotation) {
+ Objects.requireNonNull(annotation);
return (T)annotations.get(annotation);
}
@Override
public final T[] getDeclaredAnnotationsByType(Class annotation) {
+ Objects.requireNonNull(annotation);
return AnnotationSupport.getDirectlyAndIndirectlyPresent(annotations, annotation);
}
diff --git a/test/jdk/java/lang/reflect/AnnotatedElement/AnnotatedElementNullCheckTest.java b/test/jdk/java/lang/reflect/AnnotatedElement/AnnotatedElementNullCheckTest.java
new file mode 100644
index 00000000000..632dab252a9
--- /dev/null
+++ b/test/jdk/java/lang/reflect/AnnotatedElement/AnnotatedElementNullCheckTest.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8371953 8371960
+ * @summary Null checks for AnnotatedElement APIs.
+ * @run junit AnnotatedElementNullCheckTest
+ */
+
+import java.lang.reflect.AnnotatedArrayType;
+import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.AnnotatedParameterizedType;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.Consumer;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.fail;
+
+class AnnotatedElementNullCheckTest {
+
+ // Return a stream of instances, each of a different implementation class
+ static AnnotatedElement[] implementations() throws Exception {
+ var objectHashCodeMethod = Object.class.getMethod("hashCode");
+ var annotatedParameterizedType = (AnnotatedParameterizedType) Optional.class
+ .getMethod("ifPresent", Consumer.class)
+ .getAnnotatedParameterTypes()[0];
+ var annotatedGenericArrayType = (AnnotatedArrayType) List.class
+ .getMethod("of", Object[].class)
+ .getAnnotatedParameterTypes()[0];
+ record Rec(int a) {}
+ return new AnnotatedElement[] {
+ Object.class,
+ objectHashCodeMethod,
+ System.class.getField("out"),
+ Object.class.getConstructor(),
+ Object.class.getPackage(),
+ Optional.class.getTypeParameters()[0],
+ // AnnotatedType (direct)
+ objectHashCodeMethod.getAnnotatedReturnType(),
+ // AnnotatedParameterizedType
+ annotatedParameterizedType,
+ // AnnotatedArrayType
+ annotatedGenericArrayType,
+ // AnnotatedTypeVariable
+ annotatedGenericArrayType.getAnnotatedGenericComponentType(),
+ // AnnotatedWildcardType
+ annotatedParameterizedType.getAnnotatedActualTypeArguments()[0],
+ Rec.class.getRecordComponents()[0],
+ Object.class.getMethod("equals", Object.class).getParameters()[0],
+ Object.class.getModule(),
+ };
+ }
+
+ @Test
+ void ensureImplementationsDistinct() throws Throwable {
+ var set = new HashSet>();
+ for (var impl : implementations()) {
+ var clazz = impl.getClass();
+ if (!set.add(clazz)) {
+ fail("Duplicate implementation class %s in %s".formatted(clazz, impl));
+ }
+ }
+ }
+
+ @ParameterizedTest
+ @MethodSource("implementations")
+ void nullChecks(AnnotatedElement impl) {
+ assertThrows(NullPointerException.class, () -> impl.isAnnotationPresent(null));
+ assertThrows(NullPointerException.class, () -> impl.getAnnotation(null));
+ assertThrows(NullPointerException.class, () -> impl.getAnnotationsByType(null));
+ assertThrows(NullPointerException.class, () -> impl.getDeclaredAnnotation(null));
+ assertThrows(NullPointerException.class, () -> impl.getDeclaredAnnotationsByType(null));
+ }
+}
From 1f99cf942449728cdeb9918b93fd9a97a51eb0b6 Mon Sep 17 00:00:00 2001
From: Chen Liang
Date: Tue, 18 Nov 2025 15:14:49 +0000
Subject: [PATCH 004/114] 8372002: VarHandle for receiver's superclass instance
fields fails describeConstable
Reviewed-by: psandoz, jvernee
---
.../classes/java/lang/invoke/VarHandles.java | 13 +++---
.../DescribeConstableTest.java | 45 +++++++++++++++----
.../VarHandles/describeConstable/p/C.java | 4 +-
.../VarHandles/describeConstable/p/q/Q.java | 4 +-
4 files changed, 51 insertions(+), 15 deletions(-)
diff --git a/src/java.base/share/classes/java/lang/invoke/VarHandles.java b/src/java.base/share/classes/java/lang/invoke/VarHandles.java
index c97d44ba5d3..8c3e123f39a 100644
--- a/src/java.base/share/classes/java/lang/invoke/VarHandles.java
+++ b/src/java.base/share/classes/java/lang/invoke/VarHandles.java
@@ -166,12 +166,15 @@ final class VarHandles {
static Field getFieldFromReceiverAndOffset(Class> receiverType,
long offset,
Class> fieldType) {
- for (Field f : receiverType.getDeclaredFields()) {
- if (Modifier.isStatic(f.getModifiers())) continue;
+ // The receiver may be a referenced class different from the declaring class
+ for (var declaringClass = receiverType; declaringClass != null; declaringClass = declaringClass.getSuperclass()) {
+ for (Field f : declaringClass.getDeclaredFields()) {
+ if (Modifier.isStatic(f.getModifiers())) continue;
- if (offset == UNSAFE.objectFieldOffset(f)) {
- assert f.getType() == fieldType;
- return f;
+ if (offset == UNSAFE.objectFieldOffset(f)) {
+ assert f.getType() == fieldType;
+ return f;
+ }
}
}
throw new InternalError("Field not found at offset");
diff --git a/test/jdk/java/lang/invoke/VarHandles/describeConstable/DescribeConstableTest.java b/test/jdk/java/lang/invoke/VarHandles/describeConstable/DescribeConstableTest.java
index ecda61cac48..0eecbdc3798 100644
--- a/test/jdk/java/lang/invoke/VarHandles/describeConstable/DescribeConstableTest.java
+++ b/test/jdk/java/lang/invoke/VarHandles/describeConstable/DescribeConstableTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2023, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,18 +21,16 @@
* questions.
*/
-/**
+/*
* @test
- * @bug 8302260
+ * @bug 8302260 8372002
* @build p.C p.D p.I p.q.Q
* @run junit DescribeConstableTest
* @summary Test VarHandle::describeConstable on static fields
*/
-import java.lang.constant.ClassDesc;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodHandles.Lookup;
-import java.lang.invoke.VarHandle;
import java.lang.invoke.VarHandle.VarHandleDesc;
import java.util.stream.Stream;
@@ -43,7 +41,7 @@ import static org.junit.jupiter.api.Assertions.*;
public class DescribeConstableTest {
private static final Lookup LOOKUP = MethodHandles.lookup();
- private static Stream testCases() {
+ private static Stream staticTestCases() {
return Stream.of(
// static field defined in p.C only
Arguments.of(p.C.class, "cString", String.class, p.C.class, "CClass"),
@@ -68,8 +66,8 @@ public class DescribeConstableTest {
}
@ParameterizedTest
- @MethodSource("testCases")
- void test(Class> refc, String name, Class> type, Class> declaringClass, Object value) throws Throwable {
+ @MethodSource("staticTestCases")
+ void testStatic(Class> refc, String name, Class> type, Class> declaringClass, Object value) throws Throwable {
var vh = LOOKUP.findStaticVarHandle(refc, name, type);
assertEquals(value, vh.get());
@@ -84,6 +82,37 @@ public class DescribeConstableTest {
assertEquals(vhd.toString(), varHandleDescString(declaringClass, name, type, true));
}
+ private static Arguments[] instanceTestCases() {
+ return new Arguments[] {
+ // Basic instance field in p.q.Q
+ Arguments.of(p.q.Q.class, "instanceIntField", int.class, new p.q.Q(), 42),
+ // p.C.instanceIntField hides the superclass instanceIntField, but it still exists
+ Arguments.of(p.C.class, "instanceIntField", int.class, new p.C(), 76),
+ Arguments.of(p.q.Q.class, "instanceIntField", int.class, new p.C(), 42),
+ // p.D.instanceIntField points to that of p.q.Q
+ Arguments.of(p.D.class, "instanceIntField", int.class, new p.D(), 42),
+ };
+ }
+
+ @ParameterizedTest
+ @MethodSource("instanceTestCases")
+ void testInstance(Class> refc, String name, Class> type, Object instance, Object value) throws Throwable {
+ var vh = LOOKUP.findVarHandle(refc, name, type).withInvokeBehavior();
+ assertEquals(value, vh.get(instance));
+
+ var refcDesc = refc.describeConstable().orElseThrow();
+ var typeDesc = type.describeConstable().orElseThrow();
+ var vhd = vh.describeConstable().orElseThrow();
+ var vhd2 = VarHandleDesc.ofField(refcDesc, name, typeDesc);
+
+ assertEquals(value, vhd.resolveConstantDesc(LOOKUP).get(instance));
+ assertEquals(value, vhd2.resolveConstantDesc(LOOKUP).get(instance));
+
+ // The string does not use the declaring class because
+ // receiver is restricted on the handle
+ assertEquals(vhd.toString(), varHandleDescString(refc, name, type, false));
+ }
+
static String varHandleDescString(Class> declaringClass, String name, Class> type, boolean staticField) {
return String.format("VarHandleDesc[%s%s.%s:%s]",
staticField ? "static " : "",
diff --git a/test/jdk/java/lang/invoke/VarHandles/describeConstable/p/C.java b/test/jdk/java/lang/invoke/VarHandles/describeConstable/p/C.java
index 353bd26dcf5..5e56451ea25 100644
--- a/test/jdk/java/lang/invoke/VarHandles/describeConstable/p/C.java
+++ b/test/jdk/java/lang/invoke/VarHandles/describeConstable/p/C.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2023, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,4 +25,6 @@ package p;
public class C extends p.q.Q implements I {
public static String cString = "CClass";
+
+ public int instanceIntField = 76; // Hides the field from Q
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/describeConstable/p/q/Q.java b/test/jdk/java/lang/invoke/VarHandles/describeConstable/p/q/Q.java
index b3bbb8adafc..0461d43b533 100644
--- a/test/jdk/java/lang/invoke/VarHandles/describeConstable/p/q/Q.java
+++ b/test/jdk/java/lang/invoke/VarHandles/describeConstable/p/q/Q.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2023, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,4 +29,6 @@ public class Q {
public static String stringField2 = "QClass2";
public static long longField2 = 102L;
+
+ public int instanceIntField = 42;
}
From 713de231a61234632e2f9858b222b5f7fd0bdaf1 Mon Sep 17 00:00:00 2001
From: Nityanand Rai
Date: Tue, 18 Nov 2025 15:47:54 +0000
Subject: [PATCH 005/114] 8371854: Shenandoah: Simplify
WALK_FORWARD_IN_BLOCK_START use
Reviewed-by: shade, ysr, xpeng
---
.../share/gc/shenandoah/shenandoahScanRemembered.cpp | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahScanRemembered.cpp b/src/hotspot/share/gc/shenandoah/shenandoahScanRemembered.cpp
index 3a99023eca4..34713898fc6 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahScanRemembered.cpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahScanRemembered.cpp
@@ -378,24 +378,20 @@ HeapWord* ShenandoahCardCluster::first_object_start(const size_t card_index, con
// evacuation phase) of young collections. This is never called
// during global collections during marking or update refs..
// 4. Every allocation under TAMS updates the object start array.
+#ifdef ASSERT
oop obj = cast_to_oop(p);
assert(oopDesc::is_oop(obj), "Should be an object");
-#ifdef ASSERT
-#define WALK_FORWARD_IN_BLOCK_START true
-#else
-#define WALK_FORWARD_IN_BLOCK_START false
-#endif // ASSERT
- while (WALK_FORWARD_IN_BLOCK_START && p + obj->size() < left) {
+ while (p + obj->size() < left) {
p += obj->size();
obj = cast_to_oop(p);
assert(oopDesc::is_oop(obj), "Should be an object");
assert(Klass::is_valid(obj->klass()), "Not a valid klass ptr");
// Check assumptions in previous block comment if this assert fires
- guarantee(false, "Should never need forward walk in block start");
+ fatal("Should never need forward walk in block start");
}
-#undef WALK_FORWARD_IN_BLOCK_START
assert(p <= left, "p should start at or before left end of card");
assert(p + obj->size() > left, "obj should end after left end of card");
+#endif // ASSERT
return p;
}
From ac6f5e96512a7f003ac536611c53f2564ea912a6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hannes=20Walln=C3=B6fer?=
Date: Tue, 18 Nov 2025 16:52:12 +0000
Subject: [PATCH 006/114] 8366094: Sealed graph for nested types creates broken
links
Reviewed-by: liach
---
.../src/classes/build/tools/taglet/SealedGraph.java | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/make/jdk/src/classes/build/tools/taglet/SealedGraph.java b/make/jdk/src/classes/build/tools/taglet/SealedGraph.java
index 17867b99595..3e93826c180 100644
--- a/make/jdk/src/classes/build/tools/taglet/SealedGraph.java
+++ b/make/jdk/src/classes/build/tools/taglet/SealedGraph.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -219,13 +219,13 @@ public final class SealedGraph implements Taglet {
// This implies the module is always the same.
private String relativeLink(TypeElement node) {
var util = SealedGraph.this.docletEnvironment.getElementUtils();
- var rootPackage = util.getPackageOf(rootNode);
var nodePackage = util.getPackageOf(node);
- var backNavigator = rootPackage.getQualifiedName().toString().chars()
+ // Note: SVG files for nested types use the simple names of containing types as parent directories.
+ // We therefore need to convert all dots in the qualified name to "../" below.
+ var backNavigator = rootNode.getQualifiedName().toString().chars()
.filter(c -> c == '.')
.mapToObj(c -> "../")
- .collect(joining()) +
- "../";
+ .collect(joining());
var forwardNavigator = nodePackage.getQualifiedName().toString()
.replace(".", "/");
From 0e6c7e8664fdddd8b789851263613852fc2c55f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hannes=20Walln=C3=B6fer?=
Date: Tue, 18 Nov 2025 17:55:43 +0000
Subject: [PATCH 007/114] 8371896: Links in snippets can not be highlighted
Reviewed-by: liach
---
.../formats/html/taglets/SnippetTaglet.java | 12 +--
.../testSnippetTag/TestSnippetMarkup.java | 82 ++++++++++++++++---
2 files changed, 78 insertions(+), 16 deletions(-)
diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SnippetTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SnippetTaglet.java
index d16c47dd59f..38baa7b2826 100644
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SnippetTaglet.java
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SnippetTaglet.java
@@ -162,10 +162,11 @@ public class SnippetTaglet extends BaseTaglet {
case Style.Markup m -> markupEncountered = true;
}
}
- Content c;
if (markupEncountered) {
return;
- } else if (linkTarget != null) {
+ }
+ Content c = Text.of(text);
+ if (linkTarget != null) {
//disable preview tagging inside the snippets:
Utils.PreviewFlagProvider prevPreviewProvider = utils.setPreviewFlagProvider(el -> false);
try {
@@ -174,15 +175,16 @@ public class SnippetTaglet extends BaseTaglet {
null,
linkTarget,
ref,
- false, // TODO: for now
+ true,
Text.of(sequence.toString()),
(key, args) -> { /* Error has already been reported above */ },
tagletWriter);
} finally {
utils.setPreviewFlagProvider(prevPreviewProvider);
}
- } else {
- c = HtmlTree.SPAN(Text.of(text));
+ }
+ if (!classes.isEmpty()) {
+ c = HtmlTree.SPAN(c);
classes.forEach(((HtmlTree) c)::addStyle);
}
code.add(c);
diff --git a/test/langtools/jdk/javadoc/doclet/testSnippetTag/TestSnippetMarkup.java b/test/langtools/jdk/javadoc/doclet/testSnippetTag/TestSnippetMarkup.java
index a3e92584ae2..be60a114040 100644
--- a/test/langtools/jdk/javadoc/doclet/testSnippetTag/TestSnippetMarkup.java
+++ b/test/langtools/jdk/javadoc/doclet/testSnippetTag/TestSnippetMarkup.java
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 8266666 8281969 8319339 8338833
+ * @bug 8266666 8281969 8319339 8338833 8371896
* @summary Implementation for snippets
* @library /tools/lib ../../lib
* @modules jdk.compiler/com.sun.tools.javac.api
@@ -180,7 +180,7 @@ public class TestSnippetMarkup extends SnippetTester {
replace("""
link(First) link(line)
Second line
- """, "link\\((.+?)\\)", r -> link(true, "java.lang.Object#Object", r.group(1)))
+ """, "link\\((.+?)\\)", r -> link("java.lang.Object#Object", r.group(1)))
),
new TestCase(
"""
@@ -190,7 +190,7 @@ public class TestSnippetMarkup extends SnippetTester {
replace("""
First line
link( )Secondlink( )line
- """, "link\\((.+?)\\)", r -> link(true, "java.lang.System#out", r.group(1)))
+ """, "link\\((.+?)\\)", r -> link("java.lang.System#out", r.group(1)))
),
new TestCase(
"""
@@ -200,7 +200,68 @@ public class TestSnippetMarkup extends SnippetTester {
replace("""
First line
link( )Secondlink( )line
- """, "link\\((.+?)\\)", r -> link(true, "java.lang.System#in", r.group(1)))
+ """, "link\\((.+?)\\)", r -> link("java.lang.System#in", r.group(1)))
+ )
+ );
+ testPositive(base, testCases);
+ }
+
+ // Test combinations of @link, @highlight and @replace on the same or overlapping substrings.
+ @Test
+ public void testLinkHighlightReplace(Path base) throws Exception {
+ var testCases = List.of(
+ new TestCase(
+ """
+ void method(Object o); // @link substring=Object target=Object @highlight substring=Object
+ """,
+ replace("""
+ void method(link(Object) o);
+ """, "link\\((.+?)\\)", r -> link("Object", r.group(1)))
+ ),
+ new TestCase(
+ """
+ void method(Object o); // @replace substring=Object replacement=String \
+ @highlight substring=String @link substring=String target=String
+ """,
+ replace("""
+ void method(link(String) o);
+ """, "link\\((.+?)\\)", r -> link("String", r.group(1)))
+ ),
+ new TestCase(
+ """
+ void method(Object o); // @highlight substring="(Object o)" @link substring=Object target=Object
+ """,
+ replace("""
+ void method(link(Object) o);
+ """, "link\\((.+?)\\)", r -> link("Object", r.group(1)))
+ ),
+ new TestCase(
+ """
+ void method(Object o); // @replace substring=Object replacement=String \
+ @link substring=String target=String @highlight substring="(String o)"
+ """,
+ replace("""
+ void method(link(String) o);
+ """, "link\\((.+?)\\)", r -> link("String", r.group(1)))
+ ),
+ new TestCase(
+ """
+ void method(Object o); // @replace substring=Object replacement=String \
+ @link substring="String o" target=String @highlight substring=String
+ """,
+ replace("""
+ void method(link(String)link( o));
+ """, "link\\((.+?)\\)", r -> link("String", r.group(1)))
+ ),
+ // replacement subtext does not retain links and highlights of the replaced subtext
+ new TestCase(
+ """
+ void method(Object o); // @link substring=Object target=Object \
+ @highlight substring=Object @replace substring=Object replacement=String
+ """,
+ """
+ void method(String o);
+ """
)
);
testPositive(base, testCases);
@@ -245,7 +306,7 @@ public class TestSnippetMarkup extends SnippetTester {
"""
invalid reference
- Second
+ Second
""");
checkNoCrashes();
}
@@ -646,7 +707,7 @@ First line // @highlight :
replace("""
First line
link( Third line)
- """, "link\\((.+?)\\)", r -> link(true, "java.lang.Object#equals(Object)", r.group(1)))
+ """, "link\\((.+?)\\)", r -> link("java.lang.Object#equals(Object)", r.group(1)))
),
new TestCase("""
First line
@@ -910,8 +971,7 @@ First line // @highlight :
checkNoCrashes();
}
- private static String link(boolean linkPlain,
- String targetReference,
+ private static String link(String targetReference,
String content)
throws UncheckedIOException {
@@ -935,7 +995,7 @@ First line // @highlight :
var LABEL_PLACEHOLDER = "label";
var source = """
- /** {@link %s %s} */
+ /** {@linkplain %s %s} */
public interface A { }
""".formatted(targetReference, LABEL_PLACEHOLDER);
@@ -1063,8 +1123,8 @@ First line // @highlight :
}
String output = fileManager.getFileString(DOCUMENTATION_OUTPUT, "A.html");
// use the [^<>] regex to select HTML elements that immediately enclose "content"
- Matcher m = Pattern.compile("(?is)(]*\" title=\"[^<>]*\" class=\"[^<>]*\">)"
- + LABEL_PLACEHOLDER + "()").matcher(output);
+ Matcher m = Pattern.compile("(?is)(]*\" title=\"[^<>]*\" class=\"[^<>]*\">)"
+ + LABEL_PLACEHOLDER + "()").matcher(output);
if (!m.find()) {
throw new IOException(output);
}
From b3e408c07891b58a312a58ffd756d6a1d18c0f6d Mon Sep 17 00:00:00 2001
From: Ioi Lam
Date: Tue, 18 Nov 2025 18:12:07 +0000
Subject: [PATCH 008/114] 8372045: AOT assembly phase asserts with old class if
AOT class linking is disabled
Reviewed-by: shade, mgronlun
---
src/hotspot/share/oops/instanceKlass.cpp | 2 +-
.../cds/appcds/aotCache/OldClassSupport2.java | 104 ++++++++++++++++++
2 files changed, 105 insertions(+), 1 deletion(-)
create mode 100644 test/hotspot/jtreg/runtime/cds/appcds/aotCache/OldClassSupport2.java
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
index 2d03b69ee92..24358f662bc 100644
--- a/src/hotspot/share/oops/instanceKlass.cpp
+++ b/src/hotspot/share/oops/instanceKlass.cpp
@@ -2870,7 +2870,7 @@ void InstanceKlass::restore_unshareable_info(ClassLoaderData* loader_data, Handl
}
bool InstanceKlass::can_be_verified_at_dumptime() const {
- if (AOTMetaspace::in_aot_cache(this)) {
+ if (CDSConfig::is_dumping_dynamic_archive() && AOTMetaspace::in_aot_cache(this)) {
// This is a class that was dumped into the base archive, so we know
// it was verified at dump time.
return true;
diff --git a/test/hotspot/jtreg/runtime/cds/appcds/aotCache/OldClassSupport2.java b/test/hotspot/jtreg/runtime/cds/appcds/aotCache/OldClassSupport2.java
new file mode 100644
index 00000000000..16a4d258e4f
--- /dev/null
+++ b/test/hotspot/jtreg/runtime/cds/appcds/aotCache/OldClassSupport2.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/*
+ * @test
+ * @summary AOT cache should exclude old classes when AOT class linking is disabled.
+ * @bug 8372045
+ * @requires vm.cds.supports.aot.class.linking
+ * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ * @build OldClass
+ * @build OldClassSupport2
+ * @run driver jdk.test.lib.helpers.ClassFileInstaller -jar app.jar
+ * AppUsesOldClass2 OldClass
+ * @run driver OldClassSupport2
+ */
+
+import jdk.jfr.Event;
+import jdk.test.lib.cds.CDSAppTester;
+import jdk.test.lib.helpers.ClassFileInstaller;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class OldClassSupport2 {
+ static final String appJar = ClassFileInstaller.getJarPath("app.jar");
+ static final String mainClass = "AppUsesOldClass2";
+
+ public static void main(String[] args) throws Exception {
+ // Explicitly disable
+ Tester tester1 = new Tester("-XX:-AOTClassLinking");
+ tester1.run(new String[] {"AOT", "--two-step-training"} );
+
+ // Full module graph caching is disabled with -Djdk.module.showModuleResolution=true.
+ // This will disable AOT class linking.
+ Tester tester2 = new Tester("-Djdk.module.showModuleResolution=true");
+ tester2.run(new String[] {"AOT", "--two-step-training"} );
+
+ // Heap archiving is disable with -XX:-UseCompressedClassPointers.
+ // This will disable AOT class linking.
+ Tester tester3 = new Tester("-XX:-UseCompressedClassPointers");
+ tester3.run(new String[] {"AOT", "--two-step-training"} );
+ }
+
+ static class Tester extends CDSAppTester {
+ String extraArg;
+ public Tester(String extraArg) {
+ super(mainClass);
+ this.extraArg = extraArg;
+ }
+
+ @Override
+ public String classpath(RunMode runMode) {
+ return appJar;
+ }
+
+ @Override
+ public String[] vmArgs(RunMode runMode) {
+ return new String[] {
+ "-Xlog:aot",
+ "-Xlog:aot+class=debug",
+ extraArg,
+ };
+ }
+
+ @Override
+ public String[] appCommandLine(RunMode runMode) {
+ return new String[] {mainClass};
+ }
+
+ @Override
+ public void checkExecution(OutputAnalyzer out, RunMode runMode) {
+ String prefix = "aot,class.* = 0x.* app *";
+ if (runMode == RunMode.ASSEMBLY) {
+ out.shouldMatch(prefix + "AppUsesOldClass2");
+ out.shouldNotMatch(prefix + "OldClass");
+ }
+ }
+ }
+}
+
+class AppUsesOldClass2 {
+ public static void main(String args[]) {
+ System.out.println("Old Class Instance: " + new OldClass());
+ }
+}
From 4a975637a144fa8aa449a1419e656721833513b5 Mon Sep 17 00:00:00 2001
From: Naoto Sato
Date: Tue, 18 Nov 2025 18:35:01 +0000
Subject: [PATCH 009/114] 8346944: Update Unicode Data Files to 17.0.0 8346947:
Update ICU4J to Version 78.1
Reviewed-by: joehw
---
.../share/classes/java/lang/Character.java | 459 +++--
.../java/text/CollationElementIterator.java | 6 +-
.../icu/impl/CharacterIteratorWrapper.java | 6 +-
.../jdk/internal/icu/impl/Norm2AllModes.java | 4 +-
.../impl/ReplaceableUCharacterIterator.java | 8 +-
.../jdk/internal/icu/impl/UBiDiProps.java | 4 +-
.../internal/icu/impl/UCharacterProperty.java | 4 +-
.../impl/data/{icudt76b => icudata}/nfc.nrm | Bin 36224 -> 36336 bytes
.../impl/data/{icudt76b => icudata}/nfkc.nrm | Bin 56032 -> 56128 bytes
.../impl/data/{icudt76b => icudata}/ubidi.icu | Bin 28464 -> 28768 bytes
.../internal/icu/impl/data/icudata/uprops.icu | Bin 0 -> 170864 bytes
.../icu/impl/data/icudt76b/uprops.icu | Bin 146880 -> 0 bytes
.../jdk/internal/icu/text/NormalizerBase.java | 6 +-
.../internal/icu/text/UCharacterIterator.java | 6 +-
.../jdk/internal/icu/text/UnicodeSet.java | 16 +-
.../jdk/internal/icu/util/VersionInfo.java | 4 +-
.../jdk/internal/util/regex/Grapheme.java | 7 +-
.../regex/IndicConjunctBreak.java.template | 7 +-
.../share/data/unicodedata/Blocks.txt | 14 +-
.../share/data/unicodedata/CaseFolding.txt | 42 +-
.../unicodedata/DerivedCoreProperties.txt | 599 ++++--
.../data/unicodedata/NormalizationTest.txt | 75 +-
.../share/data/unicodedata/PropList.txt | 72 +-
.../data/unicodedata/PropertyValueAliases.txt | 35 +-
.../share/data/unicodedata/ReadMe.txt | 19 +-
.../share/data/unicodedata/Scripts.txt | 142 +-
.../share/data/unicodedata/SpecialCasing.txt | 14 +-
.../share/data/unicodedata/UnicodeData.txt | 489 ++++-
.../auxiliary/GraphemeBreakProperty.txt | 28 +-
.../auxiliary/GraphemeBreakTest.txt | 1737 +++++++----------
.../data/unicodedata/emoji/emoji-data.txt | 148 +-
src/java.base/share/legal/icu.md | 4 +-
src/java.base/share/legal/unicode.md | 4 +-
33 files changed, 2327 insertions(+), 1632 deletions(-)
rename src/java.base/share/classes/jdk/internal/icu/impl/data/{icudt76b => icudata}/nfc.nrm (64%)
rename src/java.base/share/classes/jdk/internal/icu/impl/data/{icudt76b => icudata}/nfkc.nrm (90%)
rename src/java.base/share/classes/jdk/internal/icu/impl/data/{icudt76b => icudata}/ubidi.icu (74%)
create mode 100644 src/java.base/share/classes/jdk/internal/icu/impl/data/icudata/uprops.icu
delete mode 100644 src/java.base/share/classes/jdk/internal/icu/impl/data/icudt76b/uprops.icu
diff --git a/src/java.base/share/classes/java/lang/Character.java b/src/java.base/share/classes/java/lang/Character.java
index 72ff33651f9..d866202909c 100644
--- a/src/java.base/share/classes/java/lang/Character.java
+++ b/src/java.base/share/classes/java/lang/Character.java
@@ -63,7 +63,7 @@ import static java.lang.constant.ConstantDescs.DEFAULT_NAME;
* from the Unicode Consortium at
* http://www.unicode.org.
*
- * Character information is based on the Unicode Standard, version 16.0.
+ * Character information is based on the Unicode Standard, version 17.0.
*
* The Java platform has supported different versions of the Unicode
* Standard over time. Upgrades to newer versions of the Unicode Standard
@@ -75,6 +75,8 @@ import static java.lang.constant.ConstantDescs.DEFAULT_NAME;
*
Unicode version |
*
*
+ * | Java SE 26 |
+ * Unicode 17.0 |
* | Java SE 24 |
* Unicode 16.0 |
* | Java SE 22 |
@@ -745,7 +747,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
* It should be adjusted whenever the Unicode Character Database
* is upgraded.
*/
- private static final int NUM_ENTITIES = 782;
+ private static final int NUM_ENTITIES = 804;
private static Map map = HashMap.newHashMap(NUM_ENTITIES);
/**
@@ -3715,6 +3717,85 @@ class Character implements java.io.Serializable, Comparable, Constabl
"OL ONAL",
"OLONAL");
+ /**
+ * Constant for the "Sidetic" Unicode
+ * character block.
+ * @since 26
+ */
+ public static final UnicodeBlock SIDETIC =
+ new UnicodeBlock("SIDETIC");
+
+ /**
+ * Constant for the "Sharada Supplement" Unicode
+ * character block.
+ * @since 26
+ */
+ public static final UnicodeBlock SHARADA_SUPPLEMENT =
+ new UnicodeBlock("SHARADA_SUPPLEMENT",
+ "SHARADA SUPPLEMENT",
+ "SHARADASUPPLEMENT");
+
+ /**
+ * Constant for the "Tolong Siki" Unicode
+ * character block.
+ * @since 26
+ */
+ public static final UnicodeBlock TOLONG_SIKI =
+ new UnicodeBlock("TOLONG_SIKI",
+ "TOLONG SIKI",
+ "TOLONGSIKI");
+
+ /**
+ * Constant for the "Beria Erfe" Unicode
+ * character block.
+ * @since 26
+ */
+ public static final UnicodeBlock BERIA_ERFE =
+ new UnicodeBlock("BERIA_ERFE",
+ "BERIA ERFE",
+ "BERIAERFE");
+
+ /**
+ * Constant for the "Tangut Components Supplement" Unicode
+ * character block.
+ * @since 26
+ */
+ public static final UnicodeBlock TANGUT_COMPONENTS_SUPPLEMENT =
+ new UnicodeBlock("TANGUT_COMPONENTS_SUPPLEMENT",
+ "TANGUT COMPONENTS SUPPLEMENT",
+ "TANGUTCOMPONENTSSUPPLEMENT");
+
+ /**
+ * Constant for the "Miscellaneous Symbols Supplement" Unicode
+ * character block.
+ * @since 26
+ */
+ public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_SUPPLEMENT =
+ new UnicodeBlock("MISCELLANEOUS_SYMBOLS_SUPPLEMENT",
+ "MISCELLANEOUS SYMBOLS SUPPLEMENT",
+ "MISCELLANEOUSSYMBOLSSUPPLEMENT");
+
+ /**
+ * Constant for the "Tai Yo" Unicode
+ * character block.
+ * @since 26
+ */
+ public static final UnicodeBlock TAI_YO =
+ new UnicodeBlock("TAI_YO",
+ "TAI YO",
+ "TAIYO");
+
+ /**
+ * Constant for the "CJK Unified Ideographs Extension J" Unicode
+ * character block.
+ * @since 26
+ */
+ public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_J =
+ new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_J",
+ "CJK UNIFIED IDEOGRAPHS EXTENSION J",
+ "CJKUNIFIEDIDEOGRAPHSEXTENSIONJ");
+
+
private static final int[] blockStarts = {
0x0000, // 0000..007F; Basic Latin
0x0080, // 0080..00FF; Latin-1 Supplement
@@ -3916,7 +3997,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x108E0, // 108E0..108FF; Hatran
0x10900, // 10900..1091F; Phoenician
0x10920, // 10920..1093F; Lydian
- 0x10940, // unassigned
+ 0x10940, // 10940..1095F; Sidetic
+ 0x10960, // unassigned
0x10980, // 10980..1099F; Meroitic Hieroglyphs
0x109A0, // 109A0..109FF; Meroitic Cursive
0x10A00, // 10A00..10A5F; Kharoshthi
@@ -3977,14 +4059,16 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x11AB0, // 11AB0..11ABF; Unified Canadian Aboriginal Syllabics Extended-A
0x11AC0, // 11AC0..11AFF; Pau Cin Hau
0x11B00, // 11B00..11B5F; Devanagari Extended-A
- 0x11B60, // unassigned
+ 0x11B60, // 11B60..11B7F; Sharada Supplement
+ 0x11B80, // unassigned
0x11BC0, // 11BC0..11BFF; Sunuwar
0x11C00, // 11C00..11C6F; Bhaiksuki
0x11C70, // 11C70..11CBF; Marchen
0x11CC0, // unassigned
0x11D00, // 11D00..11D5F; Masaram Gondi
0x11D60, // 11D60..11DAF; Gunjala Gondi
- 0x11DB0, // unassigned
+ 0x11DB0, // 11DB0..11DEF; Tolong Siki
+ 0x11DF0, // unassigned
0x11EE0, // 11EE0..11EFF; Makasar
0x11F00, // 11F00..11F5F; Kawi
0x11F60, // unassigned
@@ -4011,7 +4095,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x16D40, // 16D40..16D7F; Kirat Rai
0x16D80, // unassigned
0x16E40, // 16E40..16E9F; Medefaidrin
- 0x16EA0, // unassigned
+ 0x16EA0, // 16EA0..16EDF; Beria Erfe
+ 0x16EE0, // unassigned
0x16F00, // 16F00..16F9F; Miao
0x16FA0, // unassigned
0x16FE0, // 16FE0..16FFF; Ideographic Symbols and Punctuation
@@ -4019,7 +4104,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x18800, // 18800..18AFF; Tangut Components
0x18B00, // 18B00..18CFF; Khitan Small Script
0x18D00, // 18D00..18D7F; Tangut Supplement
- 0x18D80, // unassigned
+ 0x18D80, // 18D80..18DFF; Tangut Components Supplement
+ 0x18E00, // unassigned
0x1AFF0, // 1AFF0..1AFFF; Kana Extended-B
0x1B000, // 1B000..1B0FF; Kana Supplement
0x1B100, // 1B100..1B12F; Kana Extended-A
@@ -4030,7 +4116,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x1BCA0, // 1BCA0..1BCAF; Shorthand Format Controls
0x1BCB0, // unassigned
0x1CC00, // 1CC00..1CEBF; Symbols for Legacy Computing Supplement
- 0x1CEC0, // unassigned
+ 0x1CEC0, // 1CEC0..1CEFF; Miscellaneous Symbols Supplement
0x1CF00, // 1CF00..1CFCF; Znamenny Musical Notation
0x1CFD0, // unassigned
0x1D000, // 1D000..1D0FF; Byzantine Musical Symbols
@@ -4058,6 +4144,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x1E500, // unassigned
0x1E5D0, // 1E5D0..1E5FF; Ol Onal
0x1E600, // unassigned
+ 0x1E6C0, // 1E6C0..1E6FF; Tai Yo
+ 0x1E700, // unassigned
0x1E7E0, // 1E7E0..1E7FF; Ethiopic Extended-B
0x1E800, // 1E800..1E8DF; Mende Kikakui
0x1E8E0, // unassigned
@@ -4098,7 +4186,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x2FA20, // unassigned
0x30000, // 30000..3134F; CJK Unified Ideographs Extension G
0x31350, // 31350..323AF; CJK Unified Ideographs Extension H
- 0x323B0, // unassigned
+ 0x323B0, // 323B0..3347F; CJK Unified Ideographs Extension J
+ 0x33480, // unassigned
0xE0000, // E0000..E007F; Tags
0xE0080, // unassigned
0xE0100, // E0100..E01EF; Variation Selectors Supplement
@@ -4308,6 +4397,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
HATRAN,
PHOENICIAN,
LYDIAN,
+ SIDETIC,
null,
MEROITIC_HIEROGLYPHS,
MEROITIC_CURSIVE,
@@ -4369,6 +4459,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A,
PAU_CIN_HAU,
DEVANAGARI_EXTENDED_A,
+ SHARADA_SUPPLEMENT,
null,
SUNUWAR,
BHAIKSUKI,
@@ -4376,6 +4467,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
null,
MASARAM_GONDI,
GUNJALA_GONDI,
+ TOLONG_SIKI,
null,
MAKASAR,
KAWI,
@@ -4403,6 +4495,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
KIRAT_RAI,
null,
MEDEFAIDRIN,
+ BERIA_ERFE,
null,
MIAO,
null,
@@ -4411,6 +4504,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
TANGUT_COMPONENTS,
KHITAN_SMALL_SCRIPT,
TANGUT_SUPPLEMENT,
+ TANGUT_COMPONENTS_SUPPLEMENT,
null,
KANA_EXTENDED_B,
KANA_SUPPLEMENT,
@@ -4422,7 +4516,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
SHORTHAND_FORMAT_CONTROLS,
null,
SYMBOLS_FOR_LEGACY_COMPUTING_SUPPLEMENT,
- null,
+ MISCELLANEOUS_SYMBOLS_SUPPLEMENT,
ZNAMENNY_MUSICAL_NOTATION,
null,
BYZANTINE_MUSICAL_SYMBOLS,
@@ -4450,6 +4544,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
null,
OL_ONAL,
null,
+ TAI_YO,
+ null,
ETHIOPIC_EXTENDED_B,
MENDE_KIKAKUI,
null,
@@ -4490,6 +4586,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
null,
CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G,
CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H,
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_J,
null,
TAGS,
null,
@@ -5547,6 +5644,30 @@ class Character implements java.io.Serializable, Comparable, Constabl
*/
OL_ONAL,
+ /**
+ * Unicode script "Sidetic".
+ * @since 26
+ */
+ SIDETIC,
+
+ /**
+ * Unicode script "Tolong Siki".
+ * @since 26
+ */
+ TOLONG_SIKI,
+
+ /**
+ * Unicode script "Beria Erfe".
+ * @since 26
+ */
+ BERIA_ERFE,
+
+ /**
+ * Unicode script "Tai Yo".
+ * @since 26
+ */
+ TAI_YO,
+
/**
* Unicode script "Unknown".
*/
@@ -5648,9 +5769,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x085F, // 085F ; UNKNOWN
0x0860, // 0860..086A; SYRIAC
0x086B, // 086B..086F; UNKNOWN
- 0x0870, // 0870..088E; ARABIC
- 0x088F, // 088F ; UNKNOWN
- 0x0890, // 0890..0891; ARABIC
+ 0x0870, // 0870..0891; ARABIC
0x0892, // 0892..0896; UNKNOWN
0x0897, // 0897..08E1; ARABIC
0x08E2, // 08E2 ; COMMON
@@ -5825,8 +5944,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x0C55, // 0C55..0C56; TELUGU
0x0C57, // 0C57 ; UNKNOWN
0x0C58, // 0C58..0C5A; TELUGU
- 0x0C5B, // 0C5B..0C5C; UNKNOWN
- 0x0C5D, // 0C5D ; TELUGU
+ 0x0C5B, // 0C5B ; UNKNOWN
+ 0x0C5C, // 0C5C..0C5D; TELUGU
0x0C5E, // 0C5E..0C5F; UNKNOWN
0x0C60, // 0C60..0C63; TELUGU
0x0C64, // 0C64..0C65; UNKNOWN
@@ -5850,8 +5969,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x0CCA, // 0CCA..0CCD; KANNADA
0x0CCE, // 0CCE..0CD4; UNKNOWN
0x0CD5, // 0CD5..0CD6; KANNADA
- 0x0CD7, // 0CD7..0CDC; UNKNOWN
- 0x0CDD, // 0CDD..0CDE; KANNADA
+ 0x0CD7, // 0CD7..0CDB; UNKNOWN
+ 0x0CDC, // 0CDC..0CDE; KANNADA
0x0CDF, // 0CDF ; UNKNOWN
0x0CE0, // 0CE0..0CE3; KANNADA
0x0CE4, // 0CE4..0CE5; UNKNOWN
@@ -6062,8 +6181,10 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x1A9A, // 1A9A..1A9F; UNKNOWN
0x1AA0, // 1AA0..1AAD; TAI_THAM
0x1AAE, // 1AAE..1AAF; UNKNOWN
- 0x1AB0, // 1AB0..1ACE; INHERITED
- 0x1ACF, // 1ACF..1AFF; UNKNOWN
+ 0x1AB0, // 1AB0..1ADD; INHERITED
+ 0x1ADE, // 1ADE..1ADF; UNKNOWN
+ 0x1AE0, // 1AE0..1AEB; INHERITED
+ 0x1AEC, // 1AEC..1AFF; UNKNOWN
0x1B00, // 1B00..1B4C; BALINESE
0x1B4D, // 1B4D ; UNKNOWN
0x1B4E, // 1B4E..1B7F; BALINESE
@@ -6155,8 +6276,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x208F, // 208F ; UNKNOWN
0x2090, // 2090..209C; LATIN
0x209D, // 209D..209F; UNKNOWN
- 0x20A0, // 20A0..20C0; COMMON
- 0x20C1, // 20C1..20CF; UNKNOWN
+ 0x20A0, // 20A0..20C1; COMMON
+ 0x20C2, // 20C2..20CF; UNKNOWN
0x20D0, // 20D0..20F0; INHERITED
0x20F1, // 20F1..20FF; UNKNOWN
0x2100, // 2100..2125; COMMON
@@ -6179,9 +6300,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x2800, // 2800..28FF; BRAILLE
0x2900, // 2900..2B73; COMMON
0x2B74, // 2B74..2B75; UNKNOWN
- 0x2B76, // 2B76..2B95; COMMON
- 0x2B96, // 2B96 ; UNKNOWN
- 0x2B97, // 2B97..2BFF; COMMON
+ 0x2B76, // 2B76..2BFF; COMMON
0x2C00, // 2C00..2C5F; GLAGOLITIC
0x2C60, // 2C60..2C7F; LATIN
0x2C80, // 2C80..2CF3; COPTIC
@@ -6282,15 +6401,9 @@ class Character implements java.io.Serializable, Comparable, Constabl
0xA700, // A700..A721; COMMON
0xA722, // A722..A787; LATIN
0xA788, // A788..A78A; COMMON
- 0xA78B, // A78B..A7CD; LATIN
- 0xA7CE, // A7CE..A7CF; UNKNOWN
- 0xA7D0, // A7D0..A7D1; LATIN
- 0xA7D2, // A7D2 ; UNKNOWN
- 0xA7D3, // A7D3 ; LATIN
- 0xA7D4, // A7D4 ; UNKNOWN
- 0xA7D5, // A7D5..A7DC; LATIN
- 0xA7DD, // A7DD..A7F1; UNKNOWN
- 0xA7F2, // A7F2..A7FF; LATIN
+ 0xA78B, // A78B..A7DC; LATIN
+ 0xA7DD, // A7DD..A7F0; UNKNOWN
+ 0xA7F1, // A7F1..A7FF; LATIN
0xA800, // A800..A82C; SYLOTI_NAGRI
0xA82D, // A82D..A82F; UNKNOWN
0xA830, // A830..A839; COMMON
@@ -6378,15 +6491,9 @@ class Character implements java.io.Serializable, Comparable, Constabl
0xFB43, // FB43..FB44; HEBREW
0xFB45, // FB45 ; UNKNOWN
0xFB46, // FB46..FB4F; HEBREW
- 0xFB50, // FB50..FBC2; ARABIC
- 0xFBC3, // FBC3..FBD2; UNKNOWN
- 0xFBD3, // FBD3..FD3D; ARABIC
+ 0xFB50, // FB50..FD3D; ARABIC
0xFD3E, // FD3E..FD3F; COMMON
- 0xFD40, // FD40..FD8F; ARABIC
- 0xFD90, // FD90..FD91; UNKNOWN
- 0xFD92, // FD92..FDC7; ARABIC
- 0xFDC8, // FDC8..FDCE; UNKNOWN
- 0xFDCF, // FDCF ; ARABIC
+ 0xFD40, // FD40..FDCF; ARABIC
0xFDD0, // FDD0..FDEF; UNKNOWN
0xFDF0, // FDF0..FDFF; ARABIC
0xFE00, // FE00..FE0F; INHERITED
@@ -6555,7 +6662,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x10920, // 10920..10939; LYDIAN
0x1093A, // 1093A..1093E; UNKNOWN
0x1093F, // 1093F ; LYDIAN
- 0x10940, // 10940..1097F; UNKNOWN
+ 0x10940, // 10940..10959; SIDETIC
+ 0x1095A, // 1095A..1097F; UNKNOWN
0x10980, // 10980..1099F; MEROITIC_HIEROGLYPHS
0x109A0, // 109A0..109B7; MEROITIC_CURSIVE
0x109B8, // 109B8..109BB; UNKNOWN
@@ -6625,9 +6733,11 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x10EAE, // 10EAE..10EAF; UNKNOWN
0x10EB0, // 10EB0..10EB1; YEZIDI
0x10EB2, // 10EB2..10EC1; UNKNOWN
- 0x10EC2, // 10EC2..10EC4; ARABIC
- 0x10EC5, // 10EC5..10EFB; UNKNOWN
- 0x10EFC, // 10EFC..10EFF; ARABIC
+ 0x10EC2, // 10EC2..10EC7; ARABIC
+ 0x10EC8, // 10EC8..10ECF; UNKNOWN
+ 0x10ED0, // 10ED0..10ED8; ARABIC
+ 0x10ED9, // 10ED9..10EF9; UNKNOWN
+ 0x10EFA, // 10EFA..10EFF; ARABIC
0x10F00, // 10F00..10F27; OLD_SOGDIAN
0x10F28, // 10F28..10F2F; UNKNOWN
0x10F30, // 10F30..10F59; SOGDIAN
@@ -6797,7 +6907,9 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x11AC0, // 11AC0..11AF8; PAU_CIN_HAU
0x11AF9, // 11AF9..11AFF; UNKNOWN
0x11B00, // 11B00..11B09; DEVANAGARI
- 0x11B0A, // 11B0A..11BBF; UNKNOWN
+ 0x11B0A, // 11B0A..11B5F; UNKNOWN
+ 0x11B60, // 11B60..11B67; SHARADA
+ 0x11B68, // 11B68..11BBF; UNKNOWN
0x11BC0, // 11BC0..11BE1; SUNUWAR
0x11BE2, // 11BE2..11BEF; UNKNOWN
0x11BF0, // 11BF0..11BF9; SUNUWAR
@@ -6841,7 +6953,11 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x11D93, // 11D93..11D98; GUNJALA_GONDI
0x11D99, // 11D99..11D9F; UNKNOWN
0x11DA0, // 11DA0..11DA9; GUNJALA_GONDI
- 0x11DAA, // 11DAA..11EDF; UNKNOWN
+ 0x11DAA, // 11DAA..11DAF; UNKNOWN
+ 0x11DB0, // 11DB0..11DDB; TOLONG_SIKI
+ 0x11DDC, // 11DDC..11DDF; UNKNOWN
+ 0x11DE0, // 11DE0..11DE9; TOLONG_SIKI
+ 0x11DEA, // 11DEA..11EDF; UNKNOWN
0x11EE0, // 11EE0..11EF8; MAKASAR
0x11EF9, // 11EF9..11EFF; UNKNOWN
0x11F00, // 11F00..11F10; KAWI
@@ -6901,7 +7017,11 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x16D40, // 16D40..16D79; KIRAT_RAI
0x16D7A, // 16D7A..16E3F; UNKNOWN
0x16E40, // 16E40..16E9A; MEDEFAIDRIN
- 0x16E9B, // 16E9B..16EFF; UNKNOWN
+ 0x16E9B, // 16E9B..16E9F; UNKNOWN
+ 0x16EA0, // 16EA0..16EB8; BERIA_ERFE
+ 0x16EB9, // 16EB9..16EBA; UNKNOWN
+ 0x16EBB, // 16EBB..16ED3; BERIA_ERFE
+ 0x16ED4, // 16ED4..16EFF; UNKNOWN
0x16F00, // 16F00..16F4A; MIAO
0x16F4B, // 16F4B..16F4E; UNKNOWN
0x16F4F, // 16F4F..16F87; MIAO
@@ -6913,16 +7033,16 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x16FE2, // 16FE2..16FE3; HAN
0x16FE4, // 16FE4 ; KHITAN_SMALL_SCRIPT
0x16FE5, // 16FE5..16FEF; UNKNOWN
- 0x16FF0, // 16FF0..16FF1; HAN
- 0x16FF2, // 16FF2..16FFF; UNKNOWN
- 0x17000, // 17000..187F7; TANGUT
- 0x187F8, // 187F8..187FF; UNKNOWN
- 0x18800, // 18800..18AFF; TANGUT
+ 0x16FF0, // 16FF0..16FF6; HAN
+ 0x16FF7, // 16FF7..16FFF; UNKNOWN
+ 0x17000, // 17000..18AFF; TANGUT
0x18B00, // 18B00..18CD5; KHITAN_SMALL_SCRIPT
0x18CD6, // 18CD6..18CFE; UNKNOWN
0x18CFF, // 18CFF ; KHITAN_SMALL_SCRIPT
- 0x18D00, // 18D00..18D08; TANGUT
- 0x18D09, // 18D09..1AFEF; UNKNOWN
+ 0x18D00, // 18D00..18D1E; TANGUT
+ 0x18D1F, // 18D1F..18D7F; UNKNOWN
+ 0x18D80, // 18D80..18DF2; TANGUT
+ 0x18DF3, // 18DF3..1AFEF; UNKNOWN
0x1AFF0, // 1AFF0..1AFF3; KATAKANA
0x1AFF4, // 1AFF4 ; UNKNOWN
0x1AFF5, // 1AFF5..1AFFB; KATAKANA
@@ -6954,10 +7074,14 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x1BC9C, // 1BC9C..1BC9F; DUPLOYAN
0x1BCA0, // 1BCA0..1BCA3; COMMON
0x1BCA4, // 1BCA4..1CBFF; UNKNOWN
- 0x1CC00, // 1CC00..1CCF9; COMMON
- 0x1CCFA, // 1CCFA..1CCFF; UNKNOWN
+ 0x1CC00, // 1CC00..1CCFC; COMMON
+ 0x1CCFD, // 1CCFD..1CCFF; UNKNOWN
0x1CD00, // 1CD00..1CEB3; COMMON
- 0x1CEB4, // 1CEB4..1CEFF; UNKNOWN
+ 0x1CEB4, // 1CEB4..1CEB9; UNKNOWN
+ 0x1CEBA, // 1CEBA..1CED0; COMMON
+ 0x1CED1, // 1CED1..1CEDF; UNKNOWN
+ 0x1CEE0, // 1CEE0..1CEF0; COMMON
+ 0x1CEF1, // 1CEF1..1CEFF; UNKNOWN
0x1CF00, // 1CF00..1CF2D; INHERITED
0x1CF2E, // 1CF2E..1CF2F; UNKNOWN
0x1CF30, // 1CF30..1CF46; INHERITED
@@ -7072,7 +7196,13 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x1E5D0, // 1E5D0..1E5FA; OL_ONAL
0x1E5FB, // 1E5FB..1E5FE; UNKNOWN
0x1E5FF, // 1E5FF ; OL_ONAL
- 0x1E600, // 1E600..1E7DF; UNKNOWN
+ 0x1E600, // 1E600..1E6BF; UNKNOWN
+ 0x1E6C0, // 1E6C0..1E6DE; TAI_YO
+ 0x1E6DF, // 1E6DF ; UNKNOWN
+ 0x1E6E0, // 1E6E0..1E6F5; TAI_YO
+ 0x1E6F6, // 1E6F6..1E6FD; UNKNOWN
+ 0x1E6FE, // 1E6FE..1E6FF; TAI_YO
+ 0x1E700, // 1E700..1E7DF; UNKNOWN
0x1E7E0, // 1E7E0..1E7E6; ETHIOPIC
0x1E7E7, // 1E7E7 ; UNKNOWN
0x1E7E8, // 1E7E8..1E7EB; ETHIOPIC
@@ -7189,15 +7319,13 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x1F252, // 1F252..1F25F; UNKNOWN
0x1F260, // 1F260..1F265; COMMON
0x1F266, // 1F266..1F2FF; UNKNOWN
- 0x1F300, // 1F300..1F6D7; COMMON
- 0x1F6D8, // 1F6D8..1F6DB; UNKNOWN
+ 0x1F300, // 1F300..1F6D8; COMMON
+ 0x1F6D9, // 1F6D9..1F6DB; UNKNOWN
0x1F6DC, // 1F6DC..1F6EC; COMMON
0x1F6ED, // 1F6ED..1F6EF; UNKNOWN
0x1F6F0, // 1F6F0..1F6FC; COMMON
0x1F6FD, // 1F6FD..1F6FF; UNKNOWN
- 0x1F700, // 1F700..1F776; COMMON
- 0x1F777, // 1F777..1F77A; UNKNOWN
- 0x1F77B, // 1F77B..1F7D9; COMMON
+ 0x1F700, // 1F700..1F7D9; COMMON
0x1F7DA, // 1F7DA..1F7DF; UNKNOWN
0x1F7E0, // 1F7E0..1F7EB; COMMON
0x1F7EC, // 1F7EC..1F7EF; UNKNOWN
@@ -7216,35 +7344,37 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x1F8B0, // 1F8B0..1F8BB; COMMON
0x1F8BC, // 1F8BC..1F8BF; UNKNOWN
0x1F8C0, // 1F8C0..1F8C1; COMMON
- 0x1F8C2, // 1F8C2..1F8FF; UNKNOWN
- 0x1F900, // 1F900..1FA53; COMMON
- 0x1FA54, // 1FA54..1FA5F; UNKNOWN
+ 0x1F8C2, // 1F8C2..1F8CF; UNKNOWN
+ 0x1F8D0, // 1F8D0..1F8D8; COMMON
+ 0x1F8D9, // 1F8D9..1F8FF; UNKNOWN
+ 0x1F900, // 1F900..1FA57; COMMON
+ 0x1FA58, // 1FA58..1FA5F; UNKNOWN
0x1FA60, // 1FA60..1FA6D; COMMON
0x1FA6E, // 1FA6E..1FA6F; UNKNOWN
0x1FA70, // 1FA70..1FA7C; COMMON
0x1FA7D, // 1FA7D..1FA7F; UNKNOWN
- 0x1FA80, // 1FA80..1FA89; COMMON
- 0x1FA8A, // 1FA8A..1FA8E; UNKNOWN
- 0x1FA8F, // 1FA8F..1FAC6; COMMON
- 0x1FAC7, // 1FAC7..1FACD; UNKNOWN
- 0x1FACE, // 1FACE..1FADC; COMMON
+ 0x1FA80, // 1FA80..1FA8A; COMMON
+ 0x1FA8B, // 1FA8B..1FA8D; UNKNOWN
+ 0x1FA8E, // 1FA8E..1FAC6; COMMON
+ 0x1FAC7, // 1FAC7 ; UNKNOWN
+ 0x1FAC8, // 1FAC8 ; COMMON
+ 0x1FAC9, // 1FAC9..1FACC; UNKNOWN
+ 0x1FACD, // 1FACD..1FADC; COMMON
0x1FADD, // 1FADD..1FADE; UNKNOWN
- 0x1FADF, // 1FADF..1FAE9; COMMON
- 0x1FAEA, // 1FAEA..1FAEF; UNKNOWN
- 0x1FAF0, // 1FAF0..1FAF8; COMMON
+ 0x1FADF, // 1FADF..1FAEA; COMMON
+ 0x1FAEB, // 1FAEB..1FAEE; UNKNOWN
+ 0x1FAEF, // 1FAEF..1FAF8; COMMON
0x1FAF9, // 1FAF9..1FAFF; UNKNOWN
0x1FB00, // 1FB00..1FB92; COMMON
0x1FB93, // 1FB93 ; UNKNOWN
- 0x1FB94, // 1FB94..1FBF9; COMMON
- 0x1FBFA, // 1FBFA..1FFFF; UNKNOWN
+ 0x1FB94, // 1FB94..1FBFA; COMMON
+ 0x1FBFB, // 1FBFB..1FFFF; UNKNOWN
0x20000, // 20000..2A6DF; HAN
0x2A6E0, // 2A6E0..2A6FF; UNKNOWN
- 0x2A700, // 2A700..2B739; HAN
- 0x2B73A, // 2B73A..2B73F; UNKNOWN
- 0x2B740, // 2B740..2B81D; HAN
+ 0x2A700, // 2A700..2B81D; HAN
0x2B81E, // 2B81E..2B81F; UNKNOWN
- 0x2B820, // 2B820..2CEA1; HAN
- 0x2CEA2, // 2CEA2..2CEAF; UNKNOWN
+ 0x2B820, // 2B820..2CEAD; HAN
+ 0x2CEAE, // 2CEAE..2CEAF; UNKNOWN
0x2CEB0, // 2CEB0..2EBE0; HAN
0x2EBE1, // 2EBE1..2EBEF; UNKNOWN
0x2EBF0, // 2EBF0..2EE5D; HAN
@@ -7253,8 +7383,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
0x2FA1E, // 2FA1E..2FFFF; UNKNOWN
0x30000, // 30000..3134A; HAN
0x3134B, // 3134B..3134F; UNKNOWN
- 0x31350, // 31350..323AF; HAN
- 0x323B0, // 323B0..E0000; UNKNOWN
+ 0x31350, // 31350..33479; HAN
+ 0x3347A, // 3347A..E0000; UNKNOWN
0xE0001, // E0001 ; COMMON
0xE0002, // E0002..E001F; UNKNOWN
0xE0020, // E0020..E007F; COMMON
@@ -7359,9 +7489,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
UNKNOWN, // 085F
SYRIAC, // 0860..086A
UNKNOWN, // 086B..086F
- ARABIC, // 0870..088E
- UNKNOWN, // 088F
- ARABIC, // 0890..0891
+ ARABIC, // 0870..0891
UNKNOWN, // 0892..0896
ARABIC, // 0897..08E1
COMMON, // 08E2
@@ -7536,8 +7664,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
TELUGU, // 0C55..0C56
UNKNOWN, // 0C57
TELUGU, // 0C58..0C5A
- UNKNOWN, // 0C5B..0C5C
- TELUGU, // 0C5D
+ UNKNOWN, // 0C5B
+ TELUGU, // 0C5C..0C5D
UNKNOWN, // 0C5E..0C5F
TELUGU, // 0C60..0C63
UNKNOWN, // 0C64..0C65
@@ -7561,8 +7689,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
KANNADA, // 0CCA..0CCD
UNKNOWN, // 0CCE..0CD4
KANNADA, // 0CD5..0CD6
- UNKNOWN, // 0CD7..0CDC
- KANNADA, // 0CDD..0CDE
+ UNKNOWN, // 0CD7..0CDB
+ KANNADA, // 0CDC..0CDE
UNKNOWN, // 0CDF
KANNADA, // 0CE0..0CE3
UNKNOWN, // 0CE4..0CE5
@@ -7773,8 +7901,10 @@ class Character implements java.io.Serializable, Comparable, Constabl
UNKNOWN, // 1A9A..1A9F
TAI_THAM, // 1AA0..1AAD
UNKNOWN, // 1AAE..1AAF
- INHERITED, // 1AB0..1ACE
- UNKNOWN, // 1ACF..1AFF
+ INHERITED, // 1AB0..1ADD
+ UNKNOWN, // 1ADE..1ADF
+ INHERITED, // 1AE0..1AEB
+ UNKNOWN, // 1AEC..1AFF
BALINESE, // 1B00..1B4C
UNKNOWN, // 1B4D
BALINESE, // 1B4E..1B7F
@@ -7866,8 +7996,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
UNKNOWN, // 208F
LATIN, // 2090..209C
UNKNOWN, // 209D..209F
- COMMON, // 20A0..20C0
- UNKNOWN, // 20C1..20CF
+ COMMON, // 20A0..20C1
+ UNKNOWN, // 20C2..20CF
INHERITED, // 20D0..20F0
UNKNOWN, // 20F1..20FF
COMMON, // 2100..2125
@@ -7890,9 +8020,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
BRAILLE, // 2800..28FF
COMMON, // 2900..2B73
UNKNOWN, // 2B74..2B75
- COMMON, // 2B76..2B95
- UNKNOWN, // 2B96
- COMMON, // 2B97..2BFF
+ COMMON, // 2B76..2BFF
GLAGOLITIC, // 2C00..2C5F
LATIN, // 2C60..2C7F
COPTIC, // 2C80..2CF3
@@ -7993,15 +8121,9 @@ class Character implements java.io.Serializable, Comparable, Constabl
COMMON, // A700..A721
LATIN, // A722..A787
COMMON, // A788..A78A
- LATIN, // A78B..A7CD
- UNKNOWN, // A7CE..A7CF
- LATIN, // A7D0..A7D1
- UNKNOWN, // A7D2
- LATIN, // A7D3
- UNKNOWN, // A7D4
- LATIN, // A7D5..A7DC
- UNKNOWN, // A7DD..A7F1
- LATIN, // A7F2..A7FF
+ LATIN, // A78B..A7DC
+ UNKNOWN, // A7DD..A7F0
+ LATIN, // A7F1..A7FF
SYLOTI_NAGRI, // A800..A82C
UNKNOWN, // A82D..A82F
COMMON, // A830..A839
@@ -8089,15 +8211,9 @@ class Character implements java.io.Serializable, Comparable, Constabl
HEBREW, // FB43..FB44
UNKNOWN, // FB45
HEBREW, // FB46..FB4F
- ARABIC, // FB50..FBC2
- UNKNOWN, // FBC3..FBD2
- ARABIC, // FBD3..FD3D
+ ARABIC, // FB50..FD3D
COMMON, // FD3E..FD3F
- ARABIC, // FD40..FD8F
- UNKNOWN, // FD90..FD91
- ARABIC, // FD92..FDC7
- UNKNOWN, // FDC8..FDCE
- ARABIC, // FDCF
+ ARABIC, // FD40..FDCF
UNKNOWN, // FDD0..FDEF
ARABIC, // FDF0..FDFF
INHERITED, // FE00..FE0F
@@ -8266,7 +8382,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
LYDIAN, // 10920..10939
UNKNOWN, // 1093A..1093E
LYDIAN, // 1093F
- UNKNOWN, // 10940..1097F
+ SIDETIC, // 10940..10959
+ UNKNOWN, // 1095A..1097F
MEROITIC_HIEROGLYPHS, // 10980..1099F
MEROITIC_CURSIVE, // 109A0..109B7
UNKNOWN, // 109B8..109BB
@@ -8336,9 +8453,11 @@ class Character implements java.io.Serializable, Comparable, Constabl
UNKNOWN, // 10EAE..10EAF
YEZIDI, // 10EB0..10EB1
UNKNOWN, // 10EB2..10EC1
- ARABIC, // 10EC2..10EC4
- UNKNOWN, // 10EC5..10EFB
- ARABIC, // 10EFC..10EFF
+ ARABIC, // 10EC2..10EC7
+ UNKNOWN, // 10EC8..10ECF
+ ARABIC, // 10ED0..10ED8
+ UNKNOWN, // 10ED9..10EF9
+ ARABIC, // 10EFA..10EFF
OLD_SOGDIAN, // 10F00..10F27
UNKNOWN, // 10F28..10F2F
SOGDIAN, // 10F30..10F59
@@ -8508,7 +8627,9 @@ class Character implements java.io.Serializable, Comparable, Constabl
PAU_CIN_HAU, // 11AC0..11AF8
UNKNOWN, // 11AF9..11AFF
DEVANAGARI, // 11B00..11B09
- UNKNOWN, // 11B0A..11BBF
+ UNKNOWN, // 11B0A..11B5F
+ SHARADA, // 11B60..11B67
+ UNKNOWN, // 11B68..11BBF
SUNUWAR, // 11BC0..11BE1
UNKNOWN, // 11BE2..11BEF
SUNUWAR, // 11BF0..11BF9
@@ -8552,7 +8673,11 @@ class Character implements java.io.Serializable, Comparable, Constabl
GUNJALA_GONDI, // 11D93..11D98
UNKNOWN, // 11D99..11D9F
GUNJALA_GONDI, // 11DA0..11DA9
- UNKNOWN, // 11DAA..11EDF
+ UNKNOWN, // 11DAA..11DAF
+ TOLONG_SIKI, // 11DB0..11DDB
+ UNKNOWN, // 11DDC..11DDF
+ TOLONG_SIKI, // 11DE0..11DE9
+ UNKNOWN, // 11DEA..11EDF
MAKASAR, // 11EE0..11EF8
UNKNOWN, // 11EF9..11EFF
KAWI, // 11F00..11F10
@@ -8612,7 +8737,11 @@ class Character implements java.io.Serializable, Comparable, Constabl
KIRAT_RAI, // 16D40..16D79
UNKNOWN, // 16D7A..16E3F
MEDEFAIDRIN, // 16E40..16E9A
- UNKNOWN, // 16E9B..16EFF
+ UNKNOWN, // 16E9B..16E9F
+ BERIA_ERFE, // 16EA0..16EB8
+ UNKNOWN, // 16EB9..16EBA
+ BERIA_ERFE, // 16EBB..16ED3
+ UNKNOWN, // 16ED4..16EFF
MIAO, // 16F00..16F4A
UNKNOWN, // 16F4B..16F4E
MIAO, // 16F4F..16F87
@@ -8624,16 +8753,16 @@ class Character implements java.io.Serializable, Comparable, Constabl
HAN, // 16FE2..16FE3
KHITAN_SMALL_SCRIPT, // 16FE4
UNKNOWN, // 16FE5..16FEF
- HAN, // 16FF0..16FF1
- UNKNOWN, // 16FF2..16FFF
- TANGUT, // 17000..187F7
- UNKNOWN, // 187F8..187FF
- TANGUT, // 18800..18AFF
+ HAN, // 16FF0..16FF6
+ UNKNOWN, // 16FF7..16FFF
+ TANGUT, // 17000..18AFF
KHITAN_SMALL_SCRIPT, // 18B00..18CD5
UNKNOWN, // 18CD6..18CFE
KHITAN_SMALL_SCRIPT, // 18CFF
- TANGUT, // 18D00..18D08
- UNKNOWN, // 18D09..1AFEF
+ TANGUT, // 18D00..18D1E
+ UNKNOWN, // 18D1F..18D7F
+ TANGUT, // 18D80..18DF2
+ UNKNOWN, // 18DF3..1AFEF
KATAKANA, // 1AFF0..1AFF3
UNKNOWN, // 1AFF4
KATAKANA, // 1AFF5..1AFFB
@@ -8665,10 +8794,14 @@ class Character implements java.io.Serializable, Comparable, Constabl
DUPLOYAN, // 1BC9C..1BC9F
COMMON, // 1BCA0..1BCA3
UNKNOWN, // 1BCA4..1CBFF
- COMMON, // 1CC00..1CCF9
- UNKNOWN, // 1CCFA..1CCFF
+ COMMON, // 1CC00..1CCFC
+ UNKNOWN, // 1CCFD..1CCFF
COMMON, // 1CD00..1CEB3
- UNKNOWN, // 1CEB4..1CEFF
+ UNKNOWN, // 1CEB4..1CEB9
+ COMMON, // 1CEBA..1CED0
+ UNKNOWN, // 1CED1..1CEDF
+ COMMON, // 1CEE0..1CEF0
+ UNKNOWN, // 1CEF1..1CEFF
INHERITED, // 1CF00..1CF2D
UNKNOWN, // 1CF2E..1CF2F
INHERITED, // 1CF30..1CF46
@@ -8783,7 +8916,13 @@ class Character implements java.io.Serializable, Comparable, Constabl
OL_ONAL, // 1E5D0..1E5FA
UNKNOWN, // 1E5FB..1E5FE
OL_ONAL, // 1E5FF
- UNKNOWN, // 1E600..1E7DF
+ UNKNOWN, // 1E600..1E6BF
+ TAI_YO, // 1E6C0..1E6DE
+ UNKNOWN, // 1E6DF
+ TAI_YO, // 1E6E0..1E6F5
+ UNKNOWN, // 1E6F6..1E6FD
+ TAI_YO, // 1E6FE..1E6FF
+ UNKNOWN, // 1E700..1E7DF
ETHIOPIC, // 1E7E0..1E7E6
UNKNOWN, // 1E7E7
ETHIOPIC, // 1E7E8..1E7EB
@@ -8900,15 +9039,13 @@ class Character implements java.io.Serializable, Comparable, Constabl
UNKNOWN, // 1F252..1F25F
COMMON, // 1F260..1F265
UNKNOWN, // 1F266..1F2FF
- COMMON, // 1F300..1F6D7
- UNKNOWN, // 1F6D8..1F6DB
+ COMMON, // 1F300..1F6D8
+ UNKNOWN, // 1F6D9..1F6DB
COMMON, // 1F6DC..1F6EC
UNKNOWN, // 1F6ED..1F6EF
COMMON, // 1F6F0..1F6FC
UNKNOWN, // 1F6FD..1F6FF
- COMMON, // 1F700..1F776
- UNKNOWN, // 1F777..1F77A
- COMMON, // 1F77B..1F7D9
+ COMMON, // 1F700..1F7D9
UNKNOWN, // 1F7DA..1F7DF
COMMON, // 1F7E0..1F7EB
UNKNOWN, // 1F7EC..1F7EF
@@ -8927,35 +9064,37 @@ class Character implements java.io.Serializable, Comparable, Constabl
COMMON, // 1F8B0..1F8BB
UNKNOWN, // 1F8BC..1F8BF
COMMON, // 1F8C0..1F8C1
- UNKNOWN, // 1F8C2..1F8FF
- COMMON, // 1F900..1FA53
- UNKNOWN, // 1FA54..1FA5F
+ UNKNOWN, // 1F8C2..1F8CF
+ COMMON, // 1F8D0..1F8D8
+ UNKNOWN, // 1F8D9..1F8FF
+ COMMON, // 1F900..1FA57
+ UNKNOWN, // 1FA58..1FA5F
COMMON, // 1FA60..1FA6D
UNKNOWN, // 1FA6E..1FA6F
COMMON, // 1FA70..1FA7C
UNKNOWN, // 1FA7D..1FA7F
- COMMON, // 1FA80..1FA89
- UNKNOWN, // 1FA8A..1FA8E
- COMMON, // 1FA8F..1FAC6
- UNKNOWN, // 1FAC7..1FACD
- COMMON, // 1FACE..1FADC
+ COMMON, // 1FA80..1FA8A
+ UNKNOWN, // 1FA8B..1FA8D
+ COMMON, // 1FA8E..1FAC6
+ UNKNOWN, // 1FAC7
+ COMMON, // 1FAC8
+ UNKNOWN, // 1FAC9..1FACC
+ COMMON, // 1FACD..1FADC
UNKNOWN, // 1FADD..1FADE
- COMMON, // 1FADF..1FAE9
- UNKNOWN, // 1FAEA..1FAEF
- COMMON, // 1FAF0..1FAF8
+ COMMON, // 1FADF..1FAEA
+ UNKNOWN, // 1FAEB..1FAEE
+ COMMON, // 1FAEF..1FAF8
UNKNOWN, // 1FAF9..1FAFF
COMMON, // 1FB00..1FB92
UNKNOWN, // 1FB93
- COMMON, // 1FB94..1FBF9
- UNKNOWN, // 1FBFA..1FFFF
+ COMMON, // 1FB94..1FBFA
+ UNKNOWN, // 1FBFB..1FFFF
HAN, // 20000..2A6DF
UNKNOWN, // 2A6E0..2A6FF
- HAN, // 2A700..2B739
- UNKNOWN, // 2B73A..2B73F
- HAN, // 2B740..2B81D
+ HAN, // 2A700..2B81D
UNKNOWN, // 2B81E..2B81F
- HAN, // 2B820..2CEA1
- UNKNOWN, // 2CEA2..2CEAF
+ HAN, // 2B820..2CEAD
+ UNKNOWN, // 2CEAE..2CEAF
HAN, // 2CEB0..2EBE0
UNKNOWN, // 2EBE1..2EBEF
HAN, // 2EBF0..2EE5D
@@ -8964,8 +9103,8 @@ class Character implements java.io.Serializable, Comparable, Constabl
UNKNOWN, // 2FA1E..2FFFF
HAN, // 30000..3134A
UNKNOWN, // 3134B..3134F
- HAN, // 31350..323AF
- UNKNOWN, // 323B0..E0000
+ HAN, // 31350..33479
+ UNKNOWN, // 3347A..E0000
COMMON, // E0001
UNKNOWN, // E0002..E001F
COMMON, // E0020..E007F
@@ -8989,6 +9128,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
aliases.put("BASS", BASSA_VAH);
aliases.put("BATK", BATAK);
aliases.put("BENG", BENGALI);
+ aliases.put("BERF", BERIA_ERFE);
aliases.put("BHKS", BHAIKSUKI);
aliases.put("BOPO", BOPOMOFO);
aliases.put("BRAH", BRAHMI);
@@ -9107,6 +9247,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
aliases.put("SHAW", SHAVIAN);
aliases.put("SHRD", SHARADA);
aliases.put("SIDD", SIDDHAM);
+ aliases.put("SIDT", SIDETIC);
aliases.put("SIND", KHUDAWADI);
aliases.put("SINH", SINHALA);
aliases.put("SOGD", SOGDIAN);
@@ -9124,6 +9265,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
aliases.put("TAML", TAMIL);
aliases.put("TANG", TANGUT);
aliases.put("TAVT", TAI_VIET);
+ aliases.put("TAYO", TAI_YO);
aliases.put("TELU", TELUGU);
aliases.put("TFNG", TIFINAGH);
aliases.put("TGLG", TAGALOG);
@@ -9133,6 +9275,7 @@ class Character implements java.io.Serializable, Comparable, Constabl
aliases.put("TIRH", TIRHUTA);
aliases.put("TNSA", TANGSA);
aliases.put("TODR", TODHRI);
+ aliases.put("TOLS", TOLONG_SIKI);
aliases.put("TOTO", TOTO);
aliases.put("TUTG", TULU_TIGALARI);
aliases.put("UGAR", UGARITIC);
diff --git a/src/java.base/share/classes/java/text/CollationElementIterator.java b/src/java.base/share/classes/java/text/CollationElementIterator.java
index 5469b95b11e..46fe80e1bda 100644
--- a/src/java.base/share/classes/java/text/CollationElementIterator.java
+++ b/src/java.base/share/classes/java/text/CollationElementIterator.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -661,7 +661,7 @@ public final class CollationElementIterator
// (the Normalizer is cloned here so that the seeking we do in the next loop
// won't affect our real position in the text)
- NormalizerBase tempText = (NormalizerBase)text.clone();
+ NormalizerBase tempText = text.clone();
// extract the next maxLength characters in the string (we have to do this using the
// Normalizer to ensure that our offsets correspond to those the rest of the
@@ -732,7 +732,7 @@ public final class CollationElementIterator
pair = list.lastElement();
int maxLength = pair.entryName.length();
- NormalizerBase tempText = (NormalizerBase)text.clone();
+ NormalizerBase tempText = text.clone();
tempText.next();
key.setLength(0);
diff --git a/src/java.base/share/classes/jdk/internal/icu/impl/CharacterIteratorWrapper.java b/src/java.base/share/classes/jdk/internal/icu/impl/CharacterIteratorWrapper.java
index 79a6264d16d..698f28ea2be 100644
--- a/src/java.base/share/classes/jdk/internal/icu/impl/CharacterIteratorWrapper.java
+++ b/src/java.base/share/classes/jdk/internal/icu/impl/CharacterIteratorWrapper.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -47,7 +47,7 @@ import jdk.internal.icu.text.UCharacterIterator;
* @author ram
*/
-public class CharacterIteratorWrapper extends UCharacterIterator {
+public class CharacterIteratorWrapper extends UCharacterIterator implements Cloneable {
private CharacterIterator iterator;
@@ -135,7 +135,7 @@ public class CharacterIteratorWrapper extends UCharacterIterator {
* Creates a clone of this iterator. Clones the underlying character iterator.
* @see UCharacterIterator#clone()
*/
- public Object clone(){
+ public CharacterIteratorWrapper clone(){
try {
CharacterIteratorWrapper result = (CharacterIteratorWrapper) super.clone();
result.iterator = (CharacterIterator)this.iterator.clone();
diff --git a/src/java.base/share/classes/jdk/internal/icu/impl/Norm2AllModes.java b/src/java.base/share/classes/jdk/internal/icu/impl/Norm2AllModes.java
index 7922bb46829..67c9eff6f34 100644
--- a/src/java.base/share/classes/jdk/internal/icu/impl/Norm2AllModes.java
+++ b/src/java.base/share/classes/jdk/internal/icu/impl/Norm2AllModes.java
@@ -269,8 +269,8 @@ public final class Norm2AllModes {
private Norm2AllModesSingleton(String name) {
try {
@SuppressWarnings("deprecation")
- String DATA_FILE_NAME = "/jdk/internal/icu/impl/data/icudt" +
- VersionInfo.ICU_DATA_VERSION_PATH + "/" + name + ".nrm";
+ String DATA_FILE_NAME = "/jdk/internal/icu/impl/data/icudata/" +
+ name + ".nrm";
NormalizerImpl impl=new NormalizerImpl().load(DATA_FILE_NAME);
allModes=new Norm2AllModes(impl);
} catch (RuntimeException e) {
diff --git a/src/java.base/share/classes/jdk/internal/icu/impl/ReplaceableUCharacterIterator.java b/src/java.base/share/classes/jdk/internal/icu/impl/ReplaceableUCharacterIterator.java
index cf58f614155..b44a0d7675c 100644
--- a/src/java.base/share/classes/jdk/internal/icu/impl/ReplaceableUCharacterIterator.java
+++ b/src/java.base/share/classes/jdk/internal/icu/impl/ReplaceableUCharacterIterator.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -51,7 +51,7 @@ import jdk.internal.icu.text.UCharacterIterator;
*
* What are first, last, and getBeginIndex doing here?!?!?!
*/
-public class ReplaceableUCharacterIterator extends UCharacterIterator {
+public class ReplaceableUCharacterIterator extends UCharacterIterator implements Cloneable {
// public constructor ------------------------------------------------------
@@ -86,9 +86,9 @@ public class ReplaceableUCharacterIterator extends UCharacterIterator {
* Replaceableobject
* @return copy of this iterator
*/
- public Object clone(){
+ public ReplaceableUCharacterIterator clone(){
try {
- return super.clone();
+ return (ReplaceableUCharacterIterator) super.clone();
} catch (CloneNotSupportedException e) {
return null; // never invoked
}
diff --git a/src/java.base/share/classes/jdk/internal/icu/impl/UBiDiProps.java b/src/java.base/share/classes/jdk/internal/icu/impl/UBiDiProps.java
index 287ac38c87b..e7e1e65c2a0 100644
--- a/src/java.base/share/classes/jdk/internal/icu/impl/UBiDiProps.java
+++ b/src/java.base/share/classes/jdk/internal/icu/impl/UBiDiProps.java
@@ -201,9 +201,7 @@ public final class UBiDiProps {
// data format constants ----------------------------------------------- ***
@SuppressWarnings("deprecation")
private static final String DATA_FILE_NAME =
- "/jdk/internal/icu/impl/data/icudt" +
- VersionInfo.ICU_DATA_VERSION_PATH +
- "/ubidi.icu";
+ "/jdk/internal/icu/impl/data/icudata/ubidi.icu";
/* format "BiDi" */
private static final int FMT=0x42694469;
diff --git a/src/java.base/share/classes/jdk/internal/icu/impl/UCharacterProperty.java b/src/java.base/share/classes/jdk/internal/icu/impl/UCharacterProperty.java
index f439ae23d0f..073ffe933df 100644
--- a/src/java.base/share/classes/jdk/internal/icu/impl/UCharacterProperty.java
+++ b/src/java.base/share/classes/jdk/internal/icu/impl/UCharacterProperty.java
@@ -330,9 +330,7 @@ public final class UCharacterProperty
*/
@SuppressWarnings("deprecation")
private static final String DATA_FILE_NAME_ =
- "/jdk/internal/icu/impl/data/icudt" +
- VersionInfo.ICU_DATA_VERSION_PATH +
- "/uprops.icu";
+ "/jdk/internal/icu/impl/data/icudata/uprops.icu";
/**
* Shift value for lead surrogate to form a supplementary character.
diff --git a/src/java.base/share/classes/jdk/internal/icu/impl/data/icudt76b/nfc.nrm b/src/java.base/share/classes/jdk/internal/icu/impl/data/icudata/nfc.nrm
similarity index 64%
rename from src/java.base/share/classes/jdk/internal/icu/impl/data/icudt76b/nfc.nrm
rename to src/java.base/share/classes/jdk/internal/icu/impl/data/icudata/nfc.nrm
index 114da46498df3ff787c0e42d58a4b309863f91c4..fa1d2917ef760977c7474f739ab8016201b9d61c 100644
GIT binary patch
delta 564
zcmZpe&Gcb5(*zM6K?W2M!NB16hJm5y1Or1a2A=3(&zvCtXk!yQ2md3sPwZUmn(TI9
z=rmb?$!_vBjyo~Z0ZeKTD4oFS4`N9dz(gQ4hb&mM0Vp#;dam?Jm@JD3P-Khr5vVF5
zn7H&62uu3@R?^Sl5+7w4I5lMWScGI`WOSI+WK3k7IO<`tGC}O8U~HgVl1w2`
zyA&HIhfJkR=VU!@F(#SGlc#WLGESI0fm@z&@#K447nwK790c(=FG6(k>jL%YOm^cD
znXJI1BPR0>VIYhp^8utpK<2+JzpSjR7L%H+nXHR!$mAJ3j;txNIkHug@A0HFwgMH&
zO-|vJVFN0d%6=KhRp6Ih3Nr*m%TC_NEk1b_uLFzxLHUco@U)q%#va&lE7#SG=5wxbEOH=SAbkiDA_C!W*7B-i*}TZ_hb`mF$+LT&a;$;^0K^}d*8l(j
delta 452
zcmew`o2g+o(*zM60R|Kh!NB0x!objzz`)RpfhRiHGyBRP+}Om$VM(8#yn#`~O8OdH;-T~hP7UdQEJ89oGBQkRGAc4g9Q80+87KBrFg8#wNG1`e
zU5bs9Lnc$Ea5Qd7MRJorZWeKiW7#~(tAb@SkN-DY#>~mgy-xvh$7^~3
diff --git a/src/java.base/share/classes/jdk/internal/icu/impl/data/icudt76b/nfkc.nrm b/src/java.base/share/classes/jdk/internal/icu/impl/data/icudata/nfkc.nrm
similarity index 90%
rename from src/java.base/share/classes/jdk/internal/icu/impl/data/icudt76b/nfkc.nrm
rename to src/java.base/share/classes/jdk/internal/icu/impl/data/icudata/nfkc.nrm
index 66421d6f29f65ae3e96ca6a5db716eb86da56a29..c78a9d9cac5e80594bcd617998d54e8e47a8f2ab 100644
GIT binary patch
delta 832
zcmZXQUr19?9LMjyyY616b2Gt%ZgjCv^4
zkP5Lnfmu)wioW%SyKIEjf+!G?6{56!@F7e^Xb;gJd#H20ZYrH0=bZ2PeSY5`oZtL2
zTYAiP)5FT8Eh{ET@g7OaR!Y+6|Msm&gKd8(_OwgWU5~Zb+N}0N_pF7N?@{WF8QmwJ
z3}h8*MPRw8&s2fce8#%gbvwQ_gqK7O^df=3jF$c3%OHSY1aQbyaM5$%wv
zgg(yQ?l8}}R8@;>{XFCDG!B-Z_VZM=-=C6XN&Y*zDN+SJElRQB2;K85)x*Zfk;Mu=
rMRlG&s_Md%GQ;R<>(Hvq9%h$~)5=(HW3l~&X4J)#=j0{+?bFgffQ0KN
delta 730
zcmZXSUr19?9LMjy+wQ&2&0TSvjjxP{`PeMn3F8tk#1)L{UUR
z1}0&DIFVpM4@#Cu%Fl>|usjjUI%;)}IHVAnB=dH)l$}!{L0-_jA4n&W|%c
zV_SJ{yX|F$w5_@&sXr)5AF`5E{BPcgAFwqww@hEvbk75AN?XuA>2i5EcvNXKm-T?$
zqdrk+WrT~4VM~R-Rh`PJA1}Lq6pEeLhnuR@o)pe*+_rHlQT1_WMd4#SBYXGZ)FwEM
zFV^(o>-Ge`haZXXQ#_}?+@yJ3uWG?Q;_o6JXsl_+KZ&gZobc~}rHGrqbrRXh*J^jj
zAs(z3ygR}T*B-uDM|j5NQEFbF4OWSYDZ7v;!%QsSz+
z{R&w}w?GF!x`FNkh8P@%ZZv>68iQUqiylG>uEAaKqCqr*CMv|r2vW&xBQOqGSb!z?
z46~4fB4l753a|n*@EVq33g#dWzo?x$sY(NMCv`_@oF-_Bo>8cy#cCk`;qH(x3)RSz
zbwPvP+}Z;=Dgg4+Njgh&v`9;Io$1WaFpIGc784LN*2PY+^Jst#DwK^_X*RL-4)%h*
zVei-%_B*0k|3W205nm+C`#f>6ZRM+;ERqW9s#K5)nyMjfucd@;IP$-0mkH+Ykon2e};Xmi(-tRoVbI+MO
zXLg-;UAW*{pO_b?-Sxz3TJvO0duls+vo+21X&O7Kxx^vO<>`g*)6-*?x_hctEFGt5
zo+`eoyK%Q`gxO>6G#bnUMyq*5&ohsaka+^v84_~DykK5|sqWm$KJ!7IJztIV_n3j_etuTYO&;_)fHqmG4O1hQ?>0`8$Zo=pmy3L6r<8}HT?jhLc&PduH
z^`htFaQ+wcYq;r73H(5RqPOX{j4;U(n3rX+9F|Y}9X^{7!Aa3B9b^wjaE60AVRP6#
zwvdEaLpY<|$%|w+u@?3sd%@v2Ap*YQTaj6WC2
zSjpFtw|S6vMh@R(HOF@7qu;V$-wg6D`(BL9XvGLA{C?QoUf4yZLvvDG?qS_OSomlB
z%c#xI@e{hAU$Sj}o!^G_-o$_)yk8^;86`O=Qgy$`61n;w#QQ~&m@1}=nW9Sf8#!XW
zSR@+tJh8%PwXaG%PeLMq_DiD8ZcB6+IZk_QhS;d*8Qn&k*n<9d#7?6WalYsY^A3n3
zB!CG~5ub~%!htiGa1n`D!qyFOC&~!h{evwMl5Qy+kBl+eWRgsg8R*4tHz0ECAbq^8
z%ThVnMog7{@iXp^!fIDyykY5ie6QH!@MW!>i#J=U%O!F-Dn&XwC|gl^#*{d&at*3e
zl~|4HE8$aLg|S0txHj1CPQsY|NcLjlF`Fb$
zItA@LY@f#?3KQjJa#miKx8+rGO5T(|%6|D5w&_zkQ52U)C8=~|Rwb&D%KmRcb}x=#
zbE{p+rr1Y9Y8LO!pPZkchY8W&u
z;c<_SIga*S)2I8*pju|XklC(UR4Z#z0dfi(dKp)6pgMg6ys70GojBz-HzI1IdehEU
zJ8*TY9(4eGsrRI|sUr$6O`TBZ{$XCSHFXWIVv1YcLRb}0w_;rCcUxlIj_72t#E7W>
zf5EIs(f>N!ickMjxGJpJ>;w-4YKFpQUncZr=Ru&_v_=e;y`eLU1QFql`Wptd|70>z`CZ(6cdu%J`#m}Nr2bOsMj@Ib-69{4aP84f@B
z4IIwIvc5EkSv&^X>xaR*h7s`4qFz{D&Y-5k3w?_+p}I5{&r^1OmK}%gf)+h@0g`5W64G0
U^1_wINml05rcSk``Ca(@4RK>6)&Kwi
delta 1792
zcmcIieN2^A7=JJ4ea|HyHzcNpsELT1UQAQ(mbjUs1Hr+fvP`YeXS?RE>;Uot`qfcoO+2*vS>pAax@5Ddqzusr(`8^-M=bY!9
z_qlS#(>?5I^9EClyFPHAqK2{Q1&9U=1N#kw_8A_2((ojGroPM0POM8f8h)m}*f5g9
zY<17(4?I&XiK135?yW>G&GbNMtt3$;aO#JhBn&W&M(izcE=X_!8N
zqI8{88FA}lyVTMK`Xb$;xpWVH2yn=)Ls7pr;DA;%3dsiA2KpfFh^Og0b{9$|%?-H4
zdOIGxgY-RZ({9?U(YgfZ?Q$X~T@F1%&*N2ez{wt=mx22;9Rp@E{S$Nm{J$Bp3Q&|0
zE1xC1RV+P*SuUceT_UcU%Zu1l7BD~jcVQ*0%+0bzYzbSzs@Pgq6N}Wdr%@-{#+(M>
zz`b@;O1t@ByS_edVQ=Vnv2x=l#yWT_hFz)~EmlqGsnfd6&_rRq?31|9&au;Gh+WV=
z8)74>EyLT)uCY;`!2XJpT;$vg@id;xGXM+t!~79GpD*N}Aj;f#_F8mZf>m~*dl)3zS@GBtc
zO|xt>$h!FZvD6B&6kf616jh=cj8c>Kih3{_uxNyuXTdDP9Ih<3?a#0A|=LsZ7zux)oQTx1FAQG4DZ9nGWXUG?^XGxhQk>
zUN9h%%K|ebi$P|?{|~5+47wpUwR&)1dU@W2S-5MO<$?(r%?{xfxkO(AN8~cOlGe&K
zXaJg653A-*2c%tPWGK
z35S0guK#F)>;rhYS@y|6+3(1Zbi_mxMgHJM|0jKa?9l((-cHND#XX63O5mO(d*7^4
zp-ybdRmnBk_MY-zi8>J4uBJbL?fI3jVU-xlQaO1(wKk7hiAJIkQ8I6i%~t+G)a9U0
zt*esuyftM=&0Z$e@o<{@eP)t6U!7!6e{#F2u5S2NrB)WH96z;hZY=Srn;Q$YQnjt$!hSi42W}exRk0R^ZaVxrXa+1Omow~-wdY()p)koo>@17
SJcjZ$%(24_mPy}@eg6PY&nM>q
diff --git a/src/java.base/share/classes/jdk/internal/icu/impl/data/icudata/uprops.icu b/src/java.base/share/classes/jdk/internal/icu/impl/data/icudata/uprops.icu
new file mode 100644
index 0000000000000000000000000000000000000000..b72fcd903e009ddba8f3c750bd152cd0f3aa3db5
GIT binary patch
literal 170864
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
|---|