Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
01bfd42
8381382: Shenandoah: assert(capacity > 0) failed: free regions must h…
Apr 16, 2026
8688c0b
8379129: C2 crash in LoadNode::can_split_through_phi_base during Esca…
anton-seoane Apr 16, 2026
04bb3a9
8381176: Utilities.expectedNegoAppProtocol chooses client ALPN protoc…
Apr 16, 2026
26df25e
8382045: Increase AOT C strings table size in not product VM
Apr 16, 2026
91cde7f
8382327: Disable some SA tests for mixed jstack on musl C
YaSuenag Apr 16, 2026
35ad47b
8373922: Enhance Taglet API to support relative URLs
hns Apr 16, 2026
8aafaf0
8356223: ProblemList-AotJdk.txt should be added automatically if AOT …
lmesnik Apr 16, 2026
0ca24c0
8382267: VectorMathLibrary uses locale-sensitive String.format to con…
ChrisHegarty Apr 16, 2026
74c3d42
8382103: Shenandoah: Optimize ShenandoahLock size for release build
pf0n Apr 16, 2026
d6a255d
8381933: Possible memory leak in src/hotspot/share/gc/shenandoah/shen…
pf0n Apr 16, 2026
70d0651
8316439: Several jvmti tests fail with -Xcheck:jni
shivshah-oracle Apr 16, 2026
2c30f12
8347248: Rename arg_count to arg_size
Apr 16, 2026
17ee366
8382150: Shenandoah: Clean up nmethod entry barrier support
shipilev Apr 16, 2026
10e23dd
8382257: Shenandoah: Clean up stack watermark barrier support
shipilev Apr 16, 2026
1150750
8382199: Remove unused parameter "dst" from CardTableBarrierSetAssemb…
RealFYang Apr 17, 2026
93aa646
8367761: [VectorAPI] AssertionError with several vector API mathlib t…
Apr 17, 2026
cbb85a5
8382211: Shenandoah: Clean up and wire up final verification
shipilev Apr 17, 2026
2999731
8382295: Shenandoah: wrong denominator in full gc summary
Apr 17, 2026
5c403a8
8380912: "Trailing white space will be removed" incorrectly triggered…
dbalek Apr 17, 2026
15a7eab
8381924: Fix include guard in lambdaProxyClassDictionary.hpp
dev-jonghoonpark Apr 17, 2026
ca64301
8382242: JFR: Metadata reconstruction invalidates ConstantMap for jav…
Apr 17, 2026
787ff67
8379620: G1: Typing error in jvmFlagConstraintsG1.cpp
Apr 17, 2026
877425a
8380989: HttpRequest.Builder#headers() throws an exception if an empt…
vy Apr 17, 2026
8a710ae
8372526: Add support for ZLIB TLS Certificate Compression
artur-oracle Apr 17, 2026
5ddc367
8382095: GenShen: Do not clamp young reserve unnecessarily
kdnilsen Apr 17, 2026
b418cbc
8381418: Clarifying the identity Parameter in the Java Stream.reduce(…
Apr 17, 2026
c3c5941
8378966: C2: PhaseIdealLoop::pin_nodes_dependent_on must not be calle…
merykitty Apr 17, 2026
26ccc2e
8380651: [ubsan] gc/logging/TestGCId.java triggers runtime error: div…
kdnilsen Apr 17, 2026
7f90efd
8381145: Missing ResourceMark in Mutex::print_on()
coleenp Apr 17, 2026
0a8dbed
8370656: Re-examine use of InterruptedIOException in sun.security.ssl…
artur-oracle Apr 17, 2026
2ce2d58
8074292: nsk/jdb/kill/kill001: generateOopMap.cpp assert(bb->is_reach…
coleenp Apr 17, 2026
e95beac
8382146: jdk/jfr/event/compiler/TestCodeCacheFull.java fails when C2 …
Apr 17, 2026
2325c36
8378891: Problemlist TestStaticCallStub on Windows AArch64
Apr 17, 2026
804ecc1
8382436: Build failures after JDK-8326205
shipilev Apr 17, 2026
0dd0108
8377936: VoiceOver Reads Button Incorrectly
Apr 17, 2026
d71f070
8382368: Warning that @Deprecated "has no effect" is suppressed by @D…
archiecobbs Apr 19, 2026
35b0de3
8382043: Add missing @Override annotations in "javax.print.attribute"…
mrserb Apr 19, 2026
8d79d47
8382391: Cleanup unnecessary storestore() in stringStream::as_string
Apr 19, 2026
35f623b
8382090: Remove .rej and .orig from .gitignore
Domest0s Apr 20, 2026
444e6f6
8382312: Cleanup instanceKlass dead code
dev-jonghoonpark Apr 20, 2026
da0a7b1
8382315: RISC-V: TestMultiplyReductionByte.java fails with guarantee(…
DingliZhang Apr 20, 2026
e4076b0
8375905: Add a missing bailout check in PhaseCFG::schedule_late and a…
Apr 20, 2026
f1eac21
8378462: Build fails with --enable-linktime-gc set when using some de…
MBaesken Apr 20, 2026
5b8ac19
8382420: [macos] remove java/awt/Modal/ToBack/ tests from problemlist
Apr 20, 2026
48b6da7
8382422: G1: G1GCPhaseTimes::record_merge_heap_roots() uses += instea…
Apr 20, 2026
62bd83a
8382423: G1: Remove unused G1GCPhaseTimes::_external_accounted_time_ms
Apr 20, 2026
952f9aa
8382418: G1: Remove some stale comments about time accounting
Apr 20, 2026
61849f4
8381935: Improve numChunks range in the PPC64 CallAranger
minborg Apr 20, 2026
eac3968
8381012: Add warning for == for MemorySegment.NULL
minborg Apr 20, 2026
9a689b0
8382393: Enable VectorStoreMaskIdentityTest.java IR tests for RISC-V
DingliZhang Apr 20, 2026
abd3d46
8382401: Remove return type parameters from FREE_ and REALLOC_ macros
stefank Apr 20, 2026
f65c177
8365147: AArch64: Replace DMB + LD + DMB with LDAR for C1 volatile fi…
ruben-arm Apr 20, 2026
9a3588b
8379744: Add a way to update the key of a red-black tree node
caspernorrbin Apr 20, 2026
d8e3813
8382054: TestLoopPeelingDisabled.java fails with -DVerifyIR=false
raneashay Apr 20, 2026
b854ba1
8382441: Problemlist TestStressAllocationGCEventsWithShenandoah and T…
Apr 20, 2026
ae5b765
8382430: Extend output format of -XX:+PrintCompilation2 diagnostic flag
Apr 20, 2026
78e9625
8381617: vm_version_windows_aarch64.cpp: PF_ARM_SVE_INSTRUCTIONS_AVAI…
raneashay Apr 20, 2026
7c4c044
8375177: Gtest os_linux.decoder_get_source_info_valid_vm fails with -…
MBaesken Apr 20, 2026
1536c82
8379531: Shenandoah: Allow safepoint preemption during allocation of …
Apr 20, 2026
ff77538
8381985: Shenandoah: allocation rate sample could be wrong in some ra…
Apr 20, 2026
be85091
8380971: New -Werror syntax does not exclude categories
archiecobbs Apr 20, 2026
b96473c
8382396: RepaintManager throws NPE when painting detached JPanel with…
Apr 20, 2026
0993467
8382306: Remove JvmtiTagMap::check_hashmap
lmesnik Apr 20, 2026
35a499e
8335355: Shenandoah: Fix race condition in gc/shenandoah/mxbeans/Test…
Apr 20, 2026
3d72318
8382359: Align 32-bit data in AOT Code Cache to sizeof(uint)
Apr 21, 2026
1f782b7
8382395: Disable stringop-overflow in shenandoahGenerationalHeap.cpp
Apr 21, 2026
e7ee8cd
8382419: Add missed @key randomness after JDK-8370489
GoeLin Apr 21, 2026
7d1ce05
8382277: Shenandoah: Improve mutator runtime entry points
shipilev Apr 21, 2026
3dcd365
8382166: [AOT Cache] CRC was not checked on Code Region
Apr 21, 2026
a37fd2b
8367330: Loosen container detection to include soft limits
caspernorrbin Apr 21, 2026
96f2cba
8381642: javac provides the wrong line number for an error in a lambd…
dbalek Apr 21, 2026
5586f40
8382499: G1: Let non young cset choice time also use Ticks API for me…
Apr 21, 2026
8353f2e
8307537: Print blobs/nmethods/adapters stats per code heap in CodeCac…
Apr 21, 2026
14a7f92
8261289: Incorrect cleanup in LDAP TLS handling
jaikiran Apr 21, 2026
217ca62
8376587: Fatal "dead path discovered by TypeNode during igvn" after C…
rwestrel Apr 21, 2026
4242ae2
8382609: G1: Remove outdated comments in do_full_collection
albertnetymk Apr 21, 2026
e3e7ecd
8378901: Test "java/foreign/TestSegmentOffset.java timed out
minborg Apr 21, 2026
53d0e4c
8372688: Test out-of-bounds indexing for List.ofLazy()::get
minborg Apr 21, 2026
d9c2268
8364148: Test java/foreign/StdLibTest.java timed out after passing on…
minborg Apr 21, 2026
aa314b8
8382617: Test runtime/cds/appcds/aotCache/AOTCacheConsistency.java fa…
Apr 21, 2026
a1dee68
8382625: G1: Constify G1Policy::need_to_start_conc_mark()
Apr 21, 2026
1ba7825
8382620: G1: Remove unused G1RefineRegionClosure::_num_collections_at…
albertnetymk Apr 21, 2026
dac06a3
8359166: C2 asserts in Assembler::addr_nop_5 with -XX:-UseAddressNop
Apr 21, 2026
97ccabb
8379567: URL documentation about encoding/decoding is hard to read
jtnord Apr 21, 2026
16ad67e
8382487: Remove unnecessary SuppressWarnings annotations in java.desktop
prrace Apr 21, 2026
2311078
8382681: GenShen: ProblemList TestThreadFailure
Apr 21, 2026
b64d23d
8382588: AArch64: Sync aarch64_vector.ad with aarch64_vector_ad.m4 af…
Apr 22, 2026
624739e
8382684: jpackage: assorted fixes of the test lib
Apr 22, 2026
76a44b3
8378180: Compiling OpenJDK with C23 C-Compiler gives warning: initial…
jaskarth Apr 22, 2026
f97effa
8381993: Simplify MetaspaceClosure handling of Array and GrowableArray
iklam Apr 22, 2026
3f24212
8348014: Enhance certificate processing
Oct 3, 2025
152a497
8367463: Improved Arena allocations
minborg Oct 29, 2025
ba8b995
8364373: Transform Affine transformations
jayathirthrao Nov 5, 2025
d3f664e
8370529: Enhance Path Factories Redux
JoeWang-Java Nov 13, 2025
4f56990
8364465: Enhance behavior of some intrinsics
mhaessig Dec 15, 2025
1ac37c4
8370615: Improve Kerberos credentialing
wangweij Dec 15, 2025
0fa512e
8371830: Enhance certificate chain validation
artur-oracle Dec 16, 2025
99e854c
8369575: Enhance crypto algorithm support
slumericanB Dec 17, 2025
9866650
8371935: Enhance key generation
slumericanB Dec 23, 2025
16548cd
8370986: Enhance Zip file reading
Jan 3, 2026
d0d4b1a
8374557: Enhance TLS connection handling
djelinski Jan 23, 2026
f9d15b8
8370995: Enhance ZipFile usage
jaikiran Jan 25, 2026
99c2cd0
8374888: Implement internal test cache to help UserIterCount test per…
coffeys Jan 28, 2026
2deae27
8382501: Rename occurrences of com.sun.hotspot.perfdata in HotSpot so…
hextriclosan Apr 22, 2026
af40ceb
8382529: Tests com/sun/jdi/RedefineCrossEvent.java and com/sun/jdi/Cl…
jsikstro Apr 22, 2026
94adc66
8382522: Disable stringop-overflow in safepointMechanism.cpp
DingliZhang Apr 22, 2026
3e1d0b8
8359665: JFR: Specification should use long and boolean, not Long and…
egahlin Apr 22, 2026
c796ed1
Merge
jaikiran Apr 22, 2026
21b9a50
8370102: Print method signatures in edge cases when using TraceBytecodes
Arraying Apr 22, 2026
7e26bc6
8381829: Obsolete AggressiveHeap
jsikstro Apr 22, 2026
832bd9c
8373298: Test java/foreign/TestBufferStackStress.java timed out then …
minborg Apr 22, 2026
2091488
8380849: VoiceOver Fails to Activate Custom Button
Apr 22, 2026
135451e
8381771: Add a check for DNS label not to end with a hyphen
artur-oracle Apr 22, 2026
fc5fabf
8382634: Remove redundant TLABRefillWasteFraction zero check
albertnetymk Apr 22, 2026
03996ff
8382843: Update ProblemList comments for preview features
Apr 22, 2026
8bef687
8369327: On macOS List loses selection when added to Frame
mrserb Apr 22, 2026
f20994b
8378894: AOT training run crashes with jcmd VM.native_memory
iklam Apr 22, 2026
6d69e71
8382690: aarch64: Clean up redundant restore_locals() in TemplateTabl…
zifeihan Apr 23, 2026
613e616
8382691: RISC-V: Clean up redundant restore_locals() in TemplateTable…
zifeihan Apr 23, 2026
7e1ed28
8382606: Enable VectorMinMaxTransforms.java IR tests for RISC-V
DingliZhang Apr 23, 2026
6b6f299
8382316: Unused xtmp in long_to_maskLE8_avx
galderz Apr 23, 2026
2fe7ae9
8381362: C2: assert(_late_inlines.length() == 0 || IncrementalInlineM…
dafedafe Apr 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@ NashornProfile.txt
/.gdbinit
/.lldbinit
**/core.[0-9]*
*.rej
*.orig
test/benchmarks/**/target
/src/hotspot/CMakeLists.txt
/src/hotspot/compile_commands.json
Expand Down
9 changes: 3 additions & 6 deletions make/Docs.gmk
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 1997, 2026, 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
Expand Down Expand Up @@ -93,19 +93,16 @@ JAVADOC_DISABLED_DOCLINT_WARNINGS := missing
JAVADOC_DISABLED_DOCLINT_PACKAGES := org.w3c.* javax.smartcardio

# The initial set of options for javadoc
# -XDaccessInternalAPI is a temporary workaround, see 8373909
JAVADOC_OPTIONS := -use -keywords -notimestamp \
-serialwarn -encoding utf-8 -docencoding utf-8 -breakiterator \
-splitIndex --system none -javafx --expand-requires transitive \
--override-methods=summary \
-XDaccessInternalAPI
--override-methods=summary

# The reference options must stay stable to allow for comparisons across the
# development cycle.
REFERENCE_OPTIONS := -XDignore.symbol.file=true -use -keywords -notimestamp \
-serialwarn -encoding utf-8 -breakiterator -splitIndex --system none \
-html5 -javafx --expand-requires transitive \
-XDaccessInternalAPI
-html5 -javafx --expand-requires transitive

# Should we add DRAFT stamps to the generated javadoc?
ifeq ($(VERSION_IS_GA), true)
Expand Down
3 changes: 3 additions & 0 deletions make/RunTests.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -1020,6 +1020,9 @@ define SetupRunJtregTestBody
VM_OPTIONS := $$(JTREG_ALL_OPTIONS) ))
$$(call LogWarn, AOT_JDK_CACHE=$$($1_AOT_JDK_CACHE))
$1_JTREG_BASIC_OPTIONS += -vmoption:-XX:AOTCache="$$($1_AOT_JDK_CACHE)"
$1_JTREG_BASIC_OPTIONS += $$(addprefix $$(JTREG_PROBLEM_LIST_PREFIX), $$(wildcard \
$$(addprefix $$($1_TEST_ROOT)/, ProblemList-AotJdk.txt) \
))
endif


Expand Down
11 changes: 10 additions & 1 deletion make/hotspot/lib/CompileGtest.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@ else
GTEST_COPY_DEBUG_SYMBOLS := false
endif

GTEST_LIBJVM_CFLAGS := $(JVM_CFLAGS)
# Decoder does not work with debuginfo of the gtest libjvm when sections are used,
# so we get wrong file names. That's why we filter out the section flags.
ifeq ($(ENABLE_LINKTIME_GC), true)
ifeq ($(TOOLCHAIN_TYPE), gcc)
GTEST_LIBJVM_CFLAGS := $(filter-out -ffunction-sections -fdata-sections, $(JVM_CFLAGS))
endif
endif

################################################################################
## Build libgtest
################################################################################
Expand Down Expand Up @@ -99,7 +108,7 @@ $(eval $(call SetupJdkLibrary, BUILD_GTEST_LIBJVM, \
EXCLUDE_PATTERNS := $(JVM_EXCLUDE_PATTERNS), \
EXTRA_OBJECT_FILES := $(BUILD_LIBJVM_ALL_OBJS), \
DEFAULT_CFLAGS := false, \
CFLAGS := $(JVM_CFLAGS) \
CFLAGS := $(GTEST_LIBJVM_CFLAGS) \
-DHOTSPOT_GTEST \
-I$(GTEST_FRAMEWORK_SRC)/googletest/include \
-I$(GTEST_FRAMEWORK_SRC)/googlemock/include \
Expand Down
2 changes: 2 additions & 0 deletions make/hotspot/lib/CompileJvm.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,8 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJVM, \
DISABLED_WARNINGS_gcc_jvmtiTagMap.cpp := stringop-overflow, \
DISABLED_WARNINGS_gcc_macroAssembler_ppc_sha.cpp := unused-const-variable, \
DISABLED_WARNINGS_gcc_postaloc.cpp := address, \
DISABLED_WARNINGS_gcc_safepointMechanism.cpp := stringop-overflow, \
DISABLED_WARNINGS_gcc_shenandoahGenerationalHeap.cpp := stringop-overflow, \
DISABLED_WARNINGS_gcc_shenandoahLock.cpp := stringop-overflow, \
DISABLED_WARNINGS_gcc_stubGenerator_s390.cpp := unused-const-variable, \
DISABLED_WARNINGS_gcc_synchronizer.cpp := stringop-overflow, \
Expand Down
26 changes: 7 additions & 19 deletions make/jdk/src/classes/build/tools/taglet/JSpec.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@

package build.tools.taglet;

import java.net.URI;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.lang.reflect.Field;

import javax.lang.model.element.Element;

Expand Down Expand Up @@ -141,6 +141,11 @@ public String getName() {

@Override
public String toString(List<? extends DocTree> tags, Element elem) {
throw new UnsupportedOperationException();
}

// @Override - requires JDK-8373922 in build JDK
public String toString(List<? extends DocTree> tags, Element elem, URI docRoot) {

if (tags.isEmpty())
return "";
Expand Down Expand Up @@ -177,7 +182,7 @@ public String toString(List<? extends DocTree> tags, Element elem) {
String preview = m.group("preview"); // null if no preview feature
String chapter = m.group("chapter");
String section = m.group("section");
String rootParent = currentPath().replaceAll("[^/]+", "..");
String rootParent = docRoot.resolve("..").toString();

String url = preview == null ?
String.format("%1$s/specs/%2$s/%2$s-%3$s.html#%2$s-%3$s%4$s",
Expand Down Expand Up @@ -230,23 +235,6 @@ public String toString(List<? extends DocTree> tags, Element elem) {
return sb.toString();
}

private static ThreadLocal<String> CURRENT_PATH = null;

private String currentPath() {
if (CURRENT_PATH == null) {
try {
Field f = Class.forName("jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter")
.getField("CURRENT_PATH");
@SuppressWarnings("unchecked")
ThreadLocal<String> tl = (ThreadLocal<String>) f.get(null);
CURRENT_PATH = tl;
} catch (ReflectiveOperationException e) {
throw new RuntimeException("Cannot determine current path", e);
}
}
return CURRENT_PATH.get();
}

private String expand(List<? extends DocTree> trees) {
return (new SimpleDocTreeVisitor<StringBuilder, StringBuilder>() {
public StringBuilder defaultAction(DocTree tree, StringBuilder sb) {
Expand Down
60 changes: 28 additions & 32 deletions make/jdk/src/classes/build/tools/taglet/SealedGraph.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@

import javax.lang.model.element.*;
import javax.lang.model.type.DeclaredType;
import javax.lang.model.util.Elements;
import java.io.IOException;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.*;
Expand Down Expand Up @@ -78,16 +80,27 @@ public void init(DocletEnvironment env, Doclet doclet) {

@Override
public String toString(List<? extends DocTree> tags, Element element) {
throw new UnsupportedOperationException();
}

// @Override - requires JDK-8373922 in build JDK
public String toString(List<? extends DocTree> tags, Element element, URI docRoot) {
if (sealedDotOutputDir == null || sealedDotOutputDir.isEmpty()) {
return "";
}
if (docletEnvironment == null || !(element instanceof TypeElement typeElement)) {
return "";
}

ModuleElement module = docletEnvironment.getElementUtils().getModuleOf(element);
Elements util = docletEnvironment.getElementUtils();
ModuleElement module = util.getModuleOf(element);

// '.' in .DOT file name is converted to '/' in .SVG path, so we use '-' as separator for nested classes.
// module_package.subpackage.Outer-Inner.dot => module/package/subpackage/Outer-Inner-sealed-graph.svg
Path dotFile = Path.of(sealedDotOutputDir,
module.getQualifiedName() + "_" + typeElement.getQualifiedName() + ".dot");
module.getQualifiedName() + "_"
+ util.getPackageOf(element).getQualifiedName() + "."
+ packagelessCanonicalName(typeElement).replace(".", "-") + ".dot");

Set<String> exports = module.getDirectives().stream()
.filter(ModuleElement.ExportsDirective.class::isInstance)
Expand All @@ -99,16 +112,16 @@ public String toString(List<? extends DocTree> tags, Element element) {
.map(Objects::toString)
.collect(Collectors.toUnmodifiableSet());

String dotContent = new Renderer().graph(typeElement, exports);
String dotContent = new Renderer().graph(typeElement, exports, docRoot);

try {
Files.writeString(dotFile, dotContent, WRITE, CREATE, TRUNCATE_EXISTING);
} catch (IOException e) {
throw new RuntimeException(e);
}

String simpleTypeName = packagelessCanonicalName(typeElement).replace('.', '/');
String imageFile = simpleTypeName + "-sealed-graph.svg";
String simpleTypeName = packagelessCanonicalName(typeElement);
String imageFile = simpleTypeName.replace(".", "-") + "-sealed-graph.svg";
int thumbnailHeight = 100; // also appears in the stylesheet
String hoverImage = "<span>"
+ getImage(simpleTypeName, imageFile, -1, true)
Expand Down Expand Up @@ -137,12 +150,12 @@ private String getImage(String typeName, String file, int height, boolean useBor
private final class Renderer {

// Generates a graph in DOT format
String graph(TypeElement rootClass, Set<String> exports) {
String graph(TypeElement rootClass, Set<String> exports, URI pathToRoot) {
if (!isInPublicApi(rootClass, exports)) {
// Alternatively we can return "" for the graph since there is no single root to render
throw new IllegalArgumentException("Root not in public API: " + rootClass.getQualifiedName());
}
final State state = new State(rootClass);
final State state = new State(pathToRoot);
traverse(state, rootClass, exports);
return state.render();
}
Expand All @@ -168,7 +181,7 @@ private final class State {
private static final String TOOLTIP = "tooltip";
private static final String LINK = "href";

private final TypeElement rootNode;
private final URI pathToRoot;

private final StringBuilder builder;

Expand All @@ -193,8 +206,8 @@ public String valueString() {
}
}

public State(TypeElement rootNode) {
this.rootNode = rootNode;
public State(URI pathToRoot) {
this.pathToRoot = pathToRoot;
nodeStyleMap = new LinkedHashMap<>();
builder = new StringBuilder()
.append("digraph G {")
Expand All @@ -217,24 +230,15 @@ public void addNode(TypeElement node) {
var styles = nodeStyleMap.computeIfAbsent(id(node), n -> new LinkedHashMap<>());
styles.put(LABEL, new StyleItem.PlainString(node.getSimpleName().toString()));
styles.put(TOOLTIP, new StyleItem.PlainString(node.getQualifiedName().toString()));
styles.put(LINK, new StyleItem.PlainString(relativeLink(node)));
styles.put(LINK, new StyleItem.PlainString(pathToRoot.resolve(relativeLink(node)).toString()));
}

// A permitted class must be in the same package or in the same module.
// This implies the module is always the same.
private String relativeLink(TypeElement node) {
var util = SealedGraph.this.docletEnvironment.getElementUtils();
var nodePackage = util.getPackageOf(node);
// 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());
var forwardNavigator = nodePackage.getQualifiedName().toString()
.replace(".", "/");

return backNavigator + forwardNavigator + "/" + packagelessCanonicalName(node) + ".html";
var path = util.getModuleOf(node).getQualifiedName().toString() + "/"
+ util.getPackageOf(node).getQualifiedName().toString().replace(".", "/");

return path + "/" + packagelessCanonicalName(node) + ".html";
}

public void addEdge(TypeElement node, TypeElement subNode) {
Expand Down Expand Up @@ -286,14 +290,6 @@ private String id(TypeElement node) {
private String quotedId(TypeElement node) {
return "\"" + id(node) + "\"";
}

private String simpleName(String name) {
int lastDot = name.lastIndexOf('.');
return lastDot < 0
? name
: name.substring(lastDot);
}

}

private static List<TypeElement> permittedSubclasses(TypeElement node, Set<String> exports) {
Expand Down
29 changes: 8 additions & 21 deletions make/jdk/src/classes/build/tools/taglet/ToolGuide.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017, 2025, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2017, 2026, 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
Expand All @@ -25,13 +25,13 @@

package build.tools.taglet;

import java.net.URI;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.lang.reflect.Field;

import javax.lang.model.element.Element;

Expand Down Expand Up @@ -91,6 +91,11 @@ public String getName() {

@Override
public String toString(List<? extends DocTree> tags, Element elem) {
throw new UnsupportedOperationException();
}

// @Override - requires JDK-8373922 in build JDK
public String toString(List<? extends DocTree> tags, Element elem, URI docRoot) {

if (tags.isEmpty())
return "";
Expand Down Expand Up @@ -118,7 +123,7 @@ public String toString(List<? extends DocTree> tags, Element elem) {
if (label.isEmpty()) {
label = name;
}
String rootParent = currentPath().replaceAll("[^/]+", "..");
String rootParent = docRoot.resolve("..").toString();

String url = String.format("%s/%s/%s.html",
rootParent, BASE_URL, name);
Expand All @@ -141,22 +146,4 @@ public String toString(List<? extends DocTree> tags, Element elem) {

return sb.toString();
}

private static ThreadLocal<String> CURRENT_PATH = null;

private String currentPath() {
if (CURRENT_PATH == null) {
try {
Field f = Class.forName("jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter")
.getField("CURRENT_PATH");
@SuppressWarnings("unchecked")
ThreadLocal<String> tl = (ThreadLocal<String>) f.get(null);
CURRENT_PATH = tl;
} catch (ReflectiveOperationException e) {
throw new RuntimeException("Cannot determine current path", e);
}
}
return CURRENT_PATH.get();
}

}
2 changes: 2 additions & 0 deletions make/modules/java.desktop/lib/ClientLibraries.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,8 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \
AccelGlyphCache.c, \
CFLAGS := $(LIBFONTMANAGER_CFLAGS), \
CXXFLAGS := $(LIBFONTMANAGER_CFLAGS), \
CXXFLAGS_gcc := -fno-rtti -fno-exceptions, \
CXXFLAGS_clang := -fno-rtti -fno-exceptions, \
OPTIMIZATION := HIGHEST, \
CFLAGS_windows = -DCC_NOEX, \
EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS), \
Expand Down
3 changes: 2 additions & 1 deletion src/hotspot/cpu/aarch64/aarch64.ad
Original file line number Diff line number Diff line change
Expand Up @@ -7708,10 +7708,11 @@ instruct bytes_reverse_unsigned_short(iRegINoSp dst, iRegIorL2I src) %{
match(Set dst (ReverseBytesUS src));

ins_cost(INSN_COST);
format %{ "rev16w $dst, $src" %}
format %{ "rev16w $dst, $src\t# $dst -> unsigned short" %}

ins_encode %{
__ rev16w(as_Register($dst$$reg), as_Register($src$$reg));
__ narrow_subword_type(as_Register($dst$$reg), T_CHAR);
%}

ins_pipe(ialu_reg);
Expand Down
8 changes: 2 additions & 6 deletions src/hotspot/cpu/aarch64/aarch64_vector_ad.m4
Original file line number Diff line number Diff line change
Expand Up @@ -567,13 +567,9 @@ instruct vloadcon(vReg dst, immI0 src) %{
BasicType bt = Matcher::vector_element_basic_type(this);
if (UseSVE == 0) {
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
int entry_idx = __ vector_iota_entry_index(bt);
assert(length_in_bytes <= 16, "must be");
// The iota indices are ordered by type B/S/I/L/F/D, and the offset between two types is 16.
int offset = exact_log2(type2aelembytes(bt)) << 4;
if (is_floating_point_type(bt)) {
offset += 32;
}
__ lea(rscratch1, ExternalAddress(StubRoutines::aarch64::vector_iota_indices() + offset));
__ lea(rscratch1, ExternalAddress(StubRoutines::aarch64::vector_iota_indices(entry_idx)));
if (length_in_bytes == 16) {
__ ldrq($dst$$FloatRegister, rscratch1);
} else {
Expand Down
Loading
Loading