From 9e0cb7e816bb723ddd5120618b7bd21ec76fd248 Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Thu, 7 Aug 2025 15:47:56 +0000 Subject: [PATCH 01/19] refresh --- src/hotspot/share/precompiled/precompiled.hpp | 53 +++++-------------- 1 file changed, 13 insertions(+), 40 deletions(-) diff --git a/src/hotspot/share/precompiled/precompiled.hpp b/src/hotspot/share/precompiled/precompiled.hpp index a5f42a0fe8688..edcbb17b264cb 100644 --- a/src/hotspot/share/precompiled/precompiled.hpp +++ b/src/hotspot/share/precompiled/precompiled.hpp @@ -25,53 +25,26 @@ // Precompiled headers are turned off if the user passes // --disable-precompiled-headers to configure. -// These header files are included in at least 130 C++ files, as of -// measurements made in November 2018. This list excludes files named -// *.inline.hpp, since including them decreased build performance. - -#include "classfile/classLoaderData.hpp" -#include "classfile/javaClasses.hpp" -#include "classfile/systemDictionary.hpp" -#include "gc/shared/collectedHeap.hpp" -#include "gc/shared/gcCause.hpp" +#include "classfile/vmSymbols.hpp" +#include "interpreter/interpreter.hpp" #include "logging/log.hpp" -#include "memory/allocation.hpp" -#include "memory/iterator.hpp" -#include "memory/memRegion.hpp" -#include "memory/resourceArea.hpp" +#include "logging/logStream.hpp" +#include "memory/allStatic.hpp" +#include "memory/allocation.inline.hpp" #include "memory/universe.hpp" -#include "nmt/memTracker.hpp" -#include "oops/instanceKlass.hpp" -#include "oops/klass.hpp" -#include "oops/method.hpp" -#include "oops/objArrayKlass.hpp" -#include "oops/objArrayOop.hpp" -#include "oops/oop.hpp" -#include "oops/oopsHierarchy.hpp" +#include "oops/oop.inline.hpp" #include "runtime/atomic.hpp" +#include "runtime/frame.inline.hpp" #include "runtime/globals.hpp" -#include "runtime/handles.hpp" -#include "runtime/javaThread.hpp" -#include "runtime/mutex.hpp" -#include "runtime/orderAccess.hpp" -#include "runtime/os.hpp" -#include "runtime/timer.hpp" +#include "runtime/handles.inline.hpp" +#include "runtime/interfaceSupport.inline.hpp" +#include "runtime/mutexLocker.hpp" +#include "runtime/sharedRuntime.hpp" +#include "runtime/stubRoutines.hpp" #include "utilities/align.hpp" -#include "utilities/bitMap.hpp" -#include "utilities/copy.hpp" #include "utilities/debug.hpp" -#include "utilities/exceptions.hpp" #include "utilities/globalDefinitions.hpp" #include "utilities/growableArray.hpp" #include "utilities/macros.hpp" #include "utilities/ostream.hpp" -#include "utilities/ticks.hpp" - -#ifdef TARGET_COMPILER_visCPP -// For Visual Studio, including the *.inline.hpp files actually -// increased performance. -#include "memory/allocation.inline.hpp" -#include "oops/access.inline.hpp" -#include "oops/oop.inline.hpp" -#include "runtime/handles.inline.hpp" -#endif // TARGET_COMPILER_visCPP +#include "utilities/powerOfTwo.hpp" From a75494f10f47a032f01e7e967c3b937166d8780d Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Thu, 7 Aug 2025 18:45:28 +0000 Subject: [PATCH 02/19] keep comment --- src/hotspot/share/precompiled/precompiled.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/hotspot/share/precompiled/precompiled.hpp b/src/hotspot/share/precompiled/precompiled.hpp index edcbb17b264cb..894adb6afb926 100644 --- a/src/hotspot/share/precompiled/precompiled.hpp +++ b/src/hotspot/share/precompiled/precompiled.hpp @@ -25,6 +25,9 @@ // Precompiled headers are turned off if the user passes // --disable-precompiled-headers to configure. +// These header files are included in at least 130 C++ files, as of +// measurements made in August 2025. + #include "classfile/vmSymbols.hpp" #include "interpreter/interpreter.hpp" #include "logging/log.hpp" From d6cd068bf6535b532f1d190c86a49e0ad1a8659b Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Fri, 8 Aug 2025 00:38:02 +0000 Subject: [PATCH 03/19] script. update --- src/hotspot/share/precompiled/precompiled.hpp | 10 ++ .../PrecompiledHeaders.java | 134 ++++++++++++++++++ src/utils/PrecompiledHeaders/README.md | 23 +++ 3 files changed, 167 insertions(+) create mode 100644 src/utils/PrecompiledHeaders/PrecompiledHeaders.java create mode 100644 src/utils/PrecompiledHeaders/README.md diff --git a/src/hotspot/share/precompiled/precompiled.hpp b/src/hotspot/share/precompiled/precompiled.hpp index 894adb6afb926..e5849d6c77fdb 100644 --- a/src/hotspot/share/precompiled/precompiled.hpp +++ b/src/hotspot/share/precompiled/precompiled.hpp @@ -28,20 +28,30 @@ // These header files are included in at least 130 C++ files, as of // measurements made in August 2025. +#include "asm/assembler.hpp" +#include "asm/macroAssembler.hpp" +#include "classfile/javaClasses.hpp" #include "classfile/vmSymbols.hpp" +#include "gc/shared/collectedHeap.hpp" #include "interpreter/interpreter.hpp" #include "logging/log.hpp" #include "logging/logStream.hpp" #include "memory/allStatic.hpp" #include "memory/allocation.inline.hpp" +#include "memory/iterator.hpp" +#include "memory/resourceArea.hpp" #include "memory/universe.hpp" +#include "oops/klass.hpp" +#include "oops/method.hpp" #include "oops/oop.inline.hpp" #include "runtime/atomic.hpp" #include "runtime/frame.inline.hpp" #include "runtime/globals.hpp" #include "runtime/handles.inline.hpp" #include "runtime/interfaceSupport.inline.hpp" +#include "runtime/javaThread.hpp" #include "runtime/mutexLocker.hpp" +#include "runtime/os.hpp" #include "runtime/sharedRuntime.hpp" #include "runtime/stubRoutines.hpp" #include "utilities/align.hpp" diff --git a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java new file mode 100644 index 0000000000000..9de6779c02178 --- /dev/null +++ b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java @@ -0,0 +1,134 @@ + +/* + * 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. + */ + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.function.Predicate; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public final class PrecompiledHeaders { + + private static final Pattern INCLUDE_PATTERN = Pattern.compile("^#\\s*include \"([^\"]+)\"$"); + private static final String HOTSPOT_PATH = "src/hotspot"; + private static final String PRECOMPILED_HPP = "src/hotspot/share/precompiled/precompiled.hpp"; + private static final String INLINE_HPP_SUFFIX = ".inline.hpp"; + + private PrecompiledHeaders() { + throw new UnsupportedOperationException("Instances not allowed"); + } + + public static void main(String[] args) throws IOException { + if (args.length == 0 || args.length > 2) { + System.err.println("Usage: min_inclusion_count [jdk_root=.]"); + System.exit(1); + } + + int minInclusionCount = Integer.parseInt(args[0]); + Path jdkRoot = Path.of(args.length == 2 ? args[1] : ".").toAbsolutePath(); + if (!Files.isDirectory(jdkRoot)) { + throw new IllegalArgumentException("jdk_root is not a directory: " + jdkRoot); + } + Path hotspotPath = jdkRoot.resolve(HOTSPOT_PATH); + if (!Files.isDirectory(hotspotPath)) { + throw new IllegalArgumentException("Invalid hotspot directory: " + hotspotPath); + } + + // Count inclusion times for each header + Map occurrences = new HashMap<>(); + try (Stream paths = Files.walk(hotspotPath)) { + paths.filter(Files::isRegularFile) + .filter(path -> { + String name = path.getFileName().toString(); + return name.endsWith(".cpp") || name.endsWith(".hpp"); + }) + .flatMap(path -> { + try { + return Files.lines(path); + } catch (IOException exception) { + throw new UncheckedIOException(exception); + } + }) + .map(INCLUDE_PATTERN::matcher) + .filter(Matcher::matches) + .map(matcher -> matcher.group(1)) + .forEach(include -> occurrences.compute(include, + (k, old) -> Objects.requireNonNullElse(old, 0) + 1)); + } + + List inlineIncludes = occurrences.keySet().stream() + .filter(s -> s.endsWith(INLINE_HPP_SUFFIX)) + .toList(); + + // Each .inline.hpp pulls in the non-inline version too, so we can increase its counter + for (String inlineInclude : inlineIncludes) { + int inlineCount = occurrences.get(inlineInclude); + String noInlineInclude = inlineInclude.replace(INLINE_HPP_SUFFIX, ".hpp"); + int noInlineCount = Objects.requireNonNullElse( + occurrences.get(noInlineInclude), 0); + occurrences.put(noInlineInclude, inlineCount + noInlineCount); + } + + // Keep only the headers which are included at least 'minInclusionCount' times + Set headers = occurrences.entrySet().stream() + .filter(entry -> entry.getValue() > minInclusionCount) + .map(Map.Entry::getKey) + .collect(Collectors.toSet()); + + // If both inline and non-inline headers are to be included, prefer the inline header + for (String inlineInclude : inlineIncludes) { + if (headers.contains(inlineInclude)) { + String noInlineInclude = inlineInclude.replace(INLINE_HPP_SUFFIX, ".hpp"); + headers.remove(noInlineInclude); + } + } + + Path precompiledHpp = jdkRoot.resolve(PRECOMPILED_HPP); + try (Stream lines = Files.lines(precompiledHpp)) { + String precompiledHppHeader = lines + .takeWhile(Predicate.not(s -> INCLUDE_PATTERN.matcher(s).matches())) + .collect(Collectors.joining(System.lineSeparator())); + Files.write(precompiledHpp, precompiledHppHeader.getBytes()); + } + + String headerLines = headers.stream() + .sorted() + .map(header -> String.format("#include \"%s\"", header)) + .collect(Collectors.joining(System.lineSeparator())); + Files.write(precompiledHpp, + (System.lineSeparator() + headerLines + System.lineSeparator()).getBytes(), + StandardOpenOption.APPEND); + } + +} diff --git a/src/utils/PrecompiledHeaders/README.md b/src/utils/PrecompiledHeaders/README.md new file mode 100644 index 0000000000000..e493e9987eb89 --- /dev/null +++ b/src/utils/PrecompiledHeaders/README.md @@ -0,0 +1,23 @@ +# Hotspot precompiled headers + +This directory contains a simple tool to refresh the current set of precompiled headers +in `src/hotspot`. The headers are selected according to how frequently they are included +in Hotspot source code. + +## Usage + +The script requires a parameter which determines the minimum inclusion count a header +must reach in order to be precompiled. Optionally, the root path to the JDK project can +be specified as the second parameter. + +```bash +$ javac src/utils/PrecompiledHeaders/PrecompiledHeaders.java +$ java -cp src/utils/PrecompiledHeaders PrecompiledHeaders min_inclusion_count [jdk_root=.] +``` + +The script will write to `src/hotspot/share/precompiled/precompiled.hpp` the new set of +headers selected to be precompiled. + +## Related tickets +- [JDK-8213339](https://bugs.openjdk.org/browse/JDK-8213339) +- [JDK-8365053](https://bugs.openjdk.org/browse/JDK-8365053) From 5672a1b18893d25b55cb213bb31d870a318db19f Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Fri, 8 Aug 2025 11:24:00 +0000 Subject: [PATCH 04/19] use .d files --- .../PrecompiledHeaders.java | 65 +++++++++---------- src/utils/PrecompiledHeaders/README.md | 11 ++-- 2 files changed, 37 insertions(+), 39 deletions(-) diff --git a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java index 9de6779c02178..d254ad1565a95 100644 --- a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java +++ b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java @@ -27,11 +27,10 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; -import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Set; +import java.util.function.Function; import java.util.function.Predicate; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -40,72 +39,68 @@ public final class PrecompiledHeaders { + private static final Pattern DEPENDENCY_LINE_PATTERN = Pattern.compile("\\s*(\\S+)\\s*\\\\?"); private static final Pattern INCLUDE_PATTERN = Pattern.compile("^#\\s*include \"([^\"]+)\"$"); - private static final String HOTSPOT_PATH = "src/hotspot"; + private static final String OBJS_PATH = "hotspot/variant-server/libjvm/objs"; private static final String PRECOMPILED_HPP = "src/hotspot/share/precompiled/precompiled.hpp"; private static final String INLINE_HPP_SUFFIX = ".inline.hpp"; + private static final String HOTSPOT_SOURCE_PREFIX = "/jdk/src/hotspot/share/"; private PrecompiledHeaders() { throw new UnsupportedOperationException("Instances not allowed"); } public static void main(String[] args) throws IOException { - if (args.length == 0 || args.length > 2) { - System.err.println("Usage: min_inclusion_count [jdk_root=.]"); + if (args.length < 2 || args.length > 3) { + System.err.println("Usage: min_inclusion_count build_root [jdk_root=.]"); System.exit(1); } int minInclusionCount = Integer.parseInt(args[0]); - Path jdkRoot = Path.of(args.length == 2 ? args[1] : ".").toAbsolutePath(); + Path buildRoot = Path.of(args[1]).toAbsolutePath(); + if (!Files.isDirectory(buildRoot)) { + throw new IllegalArgumentException("build_root is not a directory: " + buildRoot); + } + Path jdkRoot = Path.of(args.length == 3 ? args[2] : ".").toAbsolutePath(); if (!Files.isDirectory(jdkRoot)) { throw new IllegalArgumentException("jdk_root is not a directory: " + jdkRoot); } - Path hotspotPath = jdkRoot.resolve(HOTSPOT_PATH); - if (!Files.isDirectory(hotspotPath)) { - throw new IllegalArgumentException("Invalid hotspot directory: " + hotspotPath); + + Path objsPath = buildRoot.resolve(OBJS_PATH); + if (!Files.isDirectory(objsPath)) { + throw new IllegalArgumentException("Could not find 'objs' directory: " + objsPath); } // Count inclusion times for each header - Map occurrences = new HashMap<>(); - try (Stream paths = Files.walk(hotspotPath)) { - paths.filter(Files::isRegularFile) - .filter(path -> { - String name = path.getFileName().toString(); - return name.endsWith(".cpp") || name.endsWith(".hpp"); - }) - .flatMap(path -> { + Map occurrences; + try (Stream files = Files.list(objsPath)) { + occurrences = files.filter(file -> file.getFileName().toString().endsWith(".d")) + .flatMap(file -> { try { - return Files.lines(path); + return Files.lines(file); } catch (IOException exception) { throw new UncheckedIOException(exception); } }) - .map(INCLUDE_PATTERN::matcher) + // The first line contains the object name + .skip(1) + .map(DEPENDENCY_LINE_PATTERN::matcher) .filter(Matcher::matches) .map(matcher -> matcher.group(1)) - .forEach(include -> occurrences.compute(include, - (k, old) -> Objects.requireNonNullElse(old, 0) + 1)); - } - - List inlineIncludes = occurrences.keySet().stream() - .filter(s -> s.endsWith(INLINE_HPP_SUFFIX)) - .toList(); - - // Each .inline.hpp pulls in the non-inline version too, so we can increase its counter - for (String inlineInclude : inlineIncludes) { - int inlineCount = occurrences.get(inlineInclude); - String noInlineInclude = inlineInclude.replace(INLINE_HPP_SUFFIX, ".hpp"); - int noInlineCount = Objects.requireNonNullElse( - occurrences.get(noInlineInclude), 0); - occurrences.put(noInlineInclude, inlineCount + noInlineCount); + .filter(dependency -> dependency.startsWith(HOTSPOT_SOURCE_PREFIX)) + .map(dependency -> dependency.replace(HOTSPOT_SOURCE_PREFIX, "")) + .collect(Collectors.toMap(Function.identity(), s -> 1, Integer::sum)); } // Keep only the headers which are included at least 'minInclusionCount' times Set headers = occurrences.entrySet().stream() - .filter(entry -> entry.getValue() > minInclusionCount) + .filter(entry -> entry.getValue() >= minInclusionCount) .map(Map.Entry::getKey) .collect(Collectors.toSet()); + List inlineIncludes = occurrences.keySet().stream() + .filter(s -> s.endsWith(INLINE_HPP_SUFFIX)) + .toList(); // If both inline and non-inline headers are to be included, prefer the inline header for (String inlineInclude : inlineIncludes) { if (headers.contains(inlineInclude)) { diff --git a/src/utils/PrecompiledHeaders/README.md b/src/utils/PrecompiledHeaders/README.md index e493e9987eb89..83fe991ad220a 100644 --- a/src/utils/PrecompiledHeaders/README.md +++ b/src/utils/PrecompiledHeaders/README.md @@ -6,18 +6,21 @@ in Hotspot source code. ## Usage -The script requires a parameter which determines the minimum inclusion count a header -must reach in order to be precompiled. Optionally, the root path to the JDK project can -be specified as the second parameter. +The script requires two parameters: +- The minimum inclusion count a header must reach in order to be precompiled; +- The path to a build, which will be used to extract dependency information for each Hotspot + source file. +Optionally, the root path to the JDK project can be specified as the second parameter. ```bash $ javac src/utils/PrecompiledHeaders/PrecompiledHeaders.java -$ java -cp src/utils/PrecompiledHeaders PrecompiledHeaders min_inclusion_count [jdk_root=.] +$ java -cp src/utils/PrecompiledHeaders PrecompiledHeaders min_inclusion_count build_root [jdk_root=.] ``` The script will write to `src/hotspot/share/precompiled/precompiled.hpp` the new set of headers selected to be precompiled. ## Related tickets + - [JDK-8213339](https://bugs.openjdk.org/browse/JDK-8213339) - [JDK-8365053](https://bugs.openjdk.org/browse/JDK-8365053) From 310694da26ada270f2e4d37972700bddb8708001 Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Fri, 8 Aug 2025 11:28:29 +0000 Subject: [PATCH 05/19] refresh. not needed --- src/hotspot/share/precompiled/precompiled.hpp | 419 +++++++++++++++++- .../PrecompiledHeaders.java | 2 +- 2 files changed, 414 insertions(+), 7 deletions(-) diff --git a/src/hotspot/share/precompiled/precompiled.hpp b/src/hotspot/share/precompiled/precompiled.hpp index e5849d6c77fdb..f4ea219db432c 100644 --- a/src/hotspot/share/precompiled/precompiled.hpp +++ b/src/hotspot/share/precompiled/precompiled.hpp @@ -29,35 +29,442 @@ // measurements made in August 2025. #include "asm/assembler.hpp" +#include "asm/codeBuffer.hpp" #include "asm/macroAssembler.hpp" -#include "classfile/javaClasses.hpp" +#include "asm/register.hpp" +#include "c1/c1_globals.hpp" +#include "cds/aotLinkedClassBulkLoader.hpp" +#include "cds/cds_globals.hpp" +#include "classfile/classLoaderData.inline.hpp" +#include "classfile/compactHashtable.hpp" +#include "classfile/javaClasses.inline.hpp" +#include "classfile/vmClassID.hpp" +#include "classfile/vmClassMacros.hpp" +#include "classfile/vmClasses.hpp" +#include "classfile/vmIntrinsics.hpp" #include "classfile/vmSymbols.hpp" +#include "code/codeBlob.inline.hpp" +#include "code/codeCache.inline.hpp" +#include "code/compressedStream.hpp" +#include "code/debugInfo.hpp" +#include "code/location.hpp" +#include "code/nativeInst.hpp" +#include "code/nmethod.inline.hpp" +#include "code/oopRecorder.hpp" +#include "code/pcDesc.hpp" +#include "code/relocInfo.hpp" +#include "code/stubs.hpp" +#include "code/vmreg.inline.hpp" +#include "code/vmregTypes.hpp" +#include "compiler/compilerDefinitions.hpp" +#include "compiler/compiler_globals.hpp" +#include "compiler/compiler_globals_pd.hpp" +#include "compiler/oopMap.inline.hpp" +#include "gc/epsilon/epsilonBarrierSet.hpp" +#include "gc/epsilon/epsilon_globals.hpp" +#include "gc/g1/g1BarrierSet.inline.hpp" +#include "gc/g1/g1BlockOffsetTable.hpp" +#include "gc/g1/g1CardTable.hpp" +#include "gc/g1/g1ConcurrentRefineStats.hpp" +#include "gc/g1/g1DirtyCardQueue.hpp" +#include "gc/g1/g1FreeIdSet.hpp" +#include "gc/g1/g1HeapRegion.hpp" +#include "gc/g1/g1HeapRegionTraceType.hpp" +#include "gc/g1/g1HeapRegionTracer.hpp" +#include "gc/g1/g1HeapRegionType.hpp" +#include "gc/g1/g1PageBasedVirtualSpace.hpp" +#include "gc/g1/g1Predictions.hpp" +#include "gc/g1/g1RegionPinCache.hpp" +#include "gc/g1/g1RegionToSpaceMapper.hpp" +#include "gc/g1/g1SATBMarkQueueSet.hpp" +#include "gc/g1/g1SurvRateGroup.hpp" +#include "gc/g1/g1ThreadLocalData.hpp" +#include "gc/g1/g1_globals.hpp" +#include "gc/parallel/parallel_globals.hpp" +#include "gc/serial/serial_globals.hpp" +#include "gc/shared/accessBarrierSupport.inline.hpp" +#include "gc/shared/ageTable.hpp" +#include "gc/shared/barrierSet.inline.hpp" +#include "gc/shared/barrierSetConfig.inline.hpp" +#include "gc/shared/barrierSetStackChunk.hpp" +#include "gc/shared/blockOffsetTable.hpp" +#include "gc/shared/bufferNode.hpp" +#include "gc/shared/bufferNodeList.hpp" +#include "gc/shared/cardTable.hpp" +#include "gc/shared/cardTableBarrierSet.inline.hpp" #include "gc/shared/collectedHeap.hpp" +#include "gc/shared/collectorCounters.hpp" +#include "gc/shared/concurrentGCThread.hpp" +#include "gc/shared/continuationGCSupport.inline.hpp" +#include "gc/shared/copyFailedInfo.hpp" +#include "gc/shared/freeListAllocator.hpp" +#include "gc/shared/gcBehaviours.hpp" +#include "gc/shared/gcCause.hpp" +#include "gc/shared/gcId.hpp" +#include "gc/shared/gcName.hpp" +#include "gc/shared/gcThreadLocalData.hpp" +#include "gc/shared/gcTimer.hpp" +#include "gc/shared/gcTrace.hpp" +#include "gc/shared/gcUtil.hpp" +#include "gc/shared/gcVMOperations.hpp" +#include "gc/shared/gcWhen.hpp" +#include "gc/shared/gc_globals.hpp" +#include "gc/shared/markBitMap.inline.hpp" +#include "gc/shared/modRefBarrierSet.inline.hpp" +#include "gc/shared/oopStorage.inline.hpp" +#include "gc/shared/plab.hpp" +#include "gc/shared/ptrQueue.hpp" +#include "gc/shared/referenceDiscoverer.hpp" +#include "gc/shared/referencePolicy.hpp" +#include "gc/shared/referenceProcessor.hpp" +#include "gc/shared/referenceProcessorStats.hpp" +#include "gc/shared/satbMarkQueue.hpp" +#include "gc/shared/softRefPolicy.hpp" +#include "gc/shared/spaceDecorator.hpp" +#include "gc/shared/suspendibleThreadSet.hpp" +#include "gc/shared/taskTerminator.hpp" +#include "gc/shared/taskqueue.hpp" +#include "gc/shared/threadLocalAllocBuffer.inline.hpp" +#include "gc/shared/tlab_globals.hpp" +#include "gc/shared/verifyOption.hpp" +#include "gc/shared/workerThread.hpp" +#include "gc/shenandoah/heuristics/shenandoahHeuristics.hpp" +#include "gc/shenandoah/heuristics/shenandoahOldHeuristics.hpp" +#include "gc/shenandoah/heuristics/shenandoahSpaceInfo.hpp" +#include "gc/shenandoah/mode/shenandoahMode.hpp" +#include "gc/shenandoah/shenandoahAffiliation.hpp" +#include "gc/shenandoah/shenandoahAgeCensus.hpp" +#include "gc/shenandoah/shenandoahAllocRequest.hpp" +#include "gc/shenandoah/shenandoahAsserts.hpp" +#include "gc/shenandoah/shenandoahBarrierSet.inline.hpp" +#include "gc/shenandoah/shenandoahCardStats.hpp" +#include "gc/shenandoah/shenandoahCardTable.hpp" +#include "gc/shenandoah/shenandoahCodeRoots.hpp" +#include "gc/shenandoah/shenandoahCollectionSet.inline.hpp" +#include "gc/shenandoah/shenandoahController.hpp" +#include "gc/shenandoah/shenandoahEvacOOMHandler.inline.hpp" +#include "gc/shenandoah/shenandoahEvacTracker.hpp" +#include "gc/shenandoah/shenandoahForwarding.inline.hpp" +#include "gc/shenandoah/shenandoahGeneration.hpp" +#include "gc/shenandoah/shenandoahGenerationSizer.hpp" +#include "gc/shenandoah/shenandoahGenerationType.hpp" +#include "gc/shenandoah/shenandoahGenerationalHeap.hpp" +#include "gc/shenandoah/shenandoahHeap.inline.hpp" +#include "gc/shenandoah/shenandoahHeapRegion.inline.hpp" +#include "gc/shenandoah/shenandoahHeapRegionSet.inline.hpp" +#include "gc/shenandoah/shenandoahLock.hpp" +#include "gc/shenandoah/shenandoahMarkBitMap.inline.hpp" +#include "gc/shenandoah/shenandoahMarkingContext.inline.hpp" +#include "gc/shenandoah/shenandoahMmuTracker.hpp" +#include "gc/shenandoah/shenandoahNumberSeq.hpp" +#include "gc/shenandoah/shenandoahOldGeneration.hpp" +#include "gc/shenandoah/shenandoahPadding.hpp" +#include "gc/shenandoah/shenandoahSATBMarkQueueSet.hpp" +#include "gc/shenandoah/shenandoahScanRemembered.hpp" +#include "gc/shenandoah/shenandoahSharedVariables.hpp" +#include "gc/shenandoah/shenandoahTaskqueue.hpp" +#include "gc/shenandoah/shenandoahThreadLocalData.hpp" +#include "gc/shenandoah/shenandoahUnload.hpp" +#include "gc/shenandoah/shenandoahWorkGroup.hpp" +#include "gc/shenandoah/shenandoah_globals.hpp" +#include "gc/z/zAbort.inline.hpp" +#include "gc/z/zAddress.inline.hpp" +#include "gc/z/zAllocationFlags.hpp" +#include "gc/z/zArray.inline.hpp" +#include "gc/z/zAttachedArray.inline.hpp" +#include "gc/z/zBarrier.inline.hpp" +#include "gc/z/zBarrierSet.inline.hpp" +#include "gc/z/zBitField.hpp" +#include "gc/z/zBitMap.inline.hpp" +#include "gc/z/zDeferredConstructed.hpp" +#include "gc/z/zForwarding.inline.hpp" +#include "gc/z/zForwardingAllocator.inline.hpp" +#include "gc/z/zForwardingEntry.hpp" +#include "gc/z/zForwardingTable.inline.hpp" +#include "gc/z/zGeneration.inline.hpp" +#include "gc/z/zGenerationId.hpp" +#include "gc/z/zGlobals.hpp" +#include "gc/z/zGranuleMap.inline.hpp" +#include "gc/z/zHash.inline.hpp" +#include "gc/z/zHeap.inline.hpp" +#include "gc/z/zIndexDistributor.inline.hpp" +#include "gc/z/zIterator.inline.hpp" +#include "gc/z/zList.hpp" +#include "gc/z/zLiveMap.inline.hpp" +#include "gc/z/zLock.inline.hpp" +#include "gc/z/zMappedCache.hpp" +#include "gc/z/zMark.inline.hpp" +#include "gc/z/zMarkStack.inline.hpp" +#include "gc/z/zMarkStackEntry.hpp" +#include "gc/z/zMarkTerminate.inline.hpp" +#include "gc/z/zMarkingSMR.hpp" +#include "gc/z/zMetronome.hpp" +#include "gc/z/zNMethod.hpp" +#include "gc/z/zObjectAllocator.hpp" +#include "gc/z/zPage.inline.hpp" +#include "gc/z/zPageAge.hpp" +#include "gc/z/zPageAllocator.inline.hpp" +#include "gc/z/zPageTable.inline.hpp" +#include "gc/z/zPageType.hpp" +#include "gc/z/zPhysicalMemoryManager.hpp" +#include "gc/z/zRange.inline.hpp" +#include "gc/z/zRangeRegistry.hpp" +#include "gc/z/zReferenceProcessor.hpp" +#include "gc/z/zRelocate.hpp" +#include "gc/z/zRelocationSet.hpp" +#include "gc/z/zRelocationSetSelector.hpp" +#include "gc/z/zRemembered.inline.hpp" +#include "gc/z/zRememberedSet.inline.hpp" +#include "gc/z/zResurrection.inline.hpp" +#include "gc/z/zSafeDelete.hpp" +#include "gc/z/zServiceability.hpp" +#include "gc/z/zStat.hpp" +#include "gc/z/zStoreBarrierBuffer.hpp" +#include "gc/z/zTLABUsage.hpp" +#include "gc/z/zThread.hpp" +#include "gc/z/zThreadLocalData.hpp" +#include "gc/z/zTracer.hpp" +#include "gc/z/zUncommitter.hpp" +#include "gc/z/zUnload.hpp" +#include "gc/z/zUtils.inline.hpp" +#include "gc/z/zValue.hpp" +#include "gc/z/zVerify.hpp" +#include "gc/z/zVirtualMemory.inline.hpp" +#include "gc/z/zVirtualMemoryManager.hpp" +#include "gc/z/zWeakRootsProcessor.hpp" +#include "gc/z/zWorkers.inline.hpp" +#include "gc/z/z_globals.hpp" +#include "include/jvm_constants.h" +#include "include/jvm_io.h" +#include "interpreter/abstractInterpreter.hpp" +#include "interpreter/bootstrapInfo.hpp" +#include "interpreter/bytecodes.hpp" +#include "interpreter/interp_masm.hpp" #include "interpreter/interpreter.hpp" +#include "interpreter/invocationCounter.hpp" +#include "interpreter/linkResolver.hpp" +#include "interpreter/templateInterpreter.hpp" +#include "interpreter/templateTable.hpp" +#include "interpreter/zero/zeroInterpreter.hpp" +#include "jfr/jfr.inline.hpp" +#include "jfr/periodic/sampling/jfrCPUTimeThreadSampler.hpp" +#include "jfr/periodic/sampling/jfrSampleRequest.hpp" +#include "jfr/periodic/sampling/jfrThreadSampling.hpp" +#include "jfr/recorder/checkpoint/types/traceid/jfrTraceId.hpp" +#include "jfr/recorder/checkpoint/types/traceid/jfrTraceIdMacros.hpp" +#include "jfr/recorder/storage/jfrBuffer.hpp" +#include "jfr/support/jfrIntrinsics.hpp" +#include "jfr/support/jfrKlassExtension.hpp" +#include "jfr/support/jfrThreadExtension.hpp" +#include "jfr/support/jfrThreadId.hpp" +#include "jfr/support/jfrThreadLocal.hpp" +#include "jfr/support/jfrTraceIdExtension.hpp" +#include "jfr/utilities/jfrAllocation.hpp" +#include "jfr/utilities/jfrBlob.hpp" +#include "jfr/utilities/jfrRefCountPointer.hpp" +#include "jfr/utilities/jfrTime.hpp" +#include "jfr/utilities/jfrTypes.hpp" +#include "jvmci/jvmci_globals.hpp" +#include "jvmci/vmSymbols_jvmci.hpp" #include "logging/log.hpp" +#include "logging/logDecorations.hpp" +#include "logging/logDecorators.hpp" +#include "logging/logHandle.hpp" +#include "logging/logLevel.hpp" +#include "logging/logMessage.hpp" +#include "logging/logMessageBuffer.hpp" +#include "logging/logOutputList.hpp" +#include "logging/logPrefix.hpp" +#include "logging/logSelection.hpp" #include "logging/logStream.hpp" +#include "logging/logTag.hpp" +#include "logging/logTagSet.hpp" #include "memory/allStatic.hpp" #include "memory/allocation.inline.hpp" -#include "memory/iterator.hpp" +#include "memory/arena.hpp" +#include "memory/classLoaderMetaspace.hpp" +#include "memory/heap.hpp" +#include "memory/iterator.inline.hpp" +#include "memory/memRegion.hpp" +#include "memory/metadataFactory.hpp" +#include "memory/metaspace.hpp" +#include "memory/metaspaceClosure.hpp" +#include "memory/padded.hpp" +#include "memory/referenceType.hpp" +#include "memory/reservedSpace.hpp" #include "memory/resourceArea.hpp" #include "memory/universe.hpp" -#include "oops/klass.hpp" -#include "oops/method.hpp" +#include "memory/virtualspace.hpp" +#include "metaprogramming/enableIf.hpp" +#include "metaprogramming/primitiveConversions.hpp" +#include "nmt/memTag.hpp" +#include "oops/access.inline.hpp" +#include "oops/accessBackend.inline.hpp" +#include "oops/accessDecorators.hpp" +#include "oops/annotations.hpp" +#include "oops/array.inline.hpp" +#include "oops/arrayKlass.hpp" +#include "oops/arrayOop.hpp" +#include "oops/compressedKlass.inline.hpp" +#include "oops/compressedOops.inline.hpp" +#include "oops/constMethod.hpp" +#include "oops/constMethodFlags.hpp" +#include "oops/constantPool.hpp" +#include "oops/cpCache.hpp" +#include "oops/fieldInfo.inline.hpp" +#include "oops/instanceClassLoaderKlass.inline.hpp" +#include "oops/instanceKlass.inline.hpp" +#include "oops/instanceKlassFlags.hpp" +#include "oops/instanceMirrorKlass.inline.hpp" +#include "oops/instanceOop.hpp" +#include "oops/instanceRefKlass.inline.hpp" +#include "oops/instanceStackChunkKlass.inline.hpp" +#include "oops/klass.inline.hpp" +#include "oops/klassFlags.hpp" +#include "oops/klassVtable.hpp" +#include "oops/markWord.inline.hpp" +#include "oops/metadata.hpp" +#include "oops/method.inline.hpp" +#include "oops/methodCounters.hpp" +#include "oops/methodData.inline.hpp" +#include "oops/methodFlags.hpp" +#include "oops/objArrayKlass.inline.hpp" +#include "oops/objArrayOop.inline.hpp" +#include "oops/objLayout.inline.hpp" #include "oops/oop.inline.hpp" +#include "oops/oopHandle.inline.hpp" +#include "oops/oopsHierarchy.hpp" +#include "oops/stackChunkOop.inline.hpp" +#include "oops/symbol.hpp" +#include "oops/typeArrayKlass.inline.hpp" +#include "oops/typeArrayOop.inline.hpp" +#include "oops/weakHandle.inline.hpp" +#include "opto/adlcVMDeps.hpp" +#include "opto/c2_globals.hpp" +#include "prims/jvmtiExport.hpp" +#include "prims/vectorSupport.hpp" +#include "runtime/abstract_vm_version.hpp" #include "runtime/atomic.hpp" +#include "runtime/basicLock.hpp" +#include "runtime/continuation.hpp" +#include "runtime/continuationEntry.inline.hpp" +#include "runtime/continuationJavaClasses.inline.hpp" +#include "runtime/deoptimization.hpp" +#include "runtime/flags/allFlags.hpp" +#include "runtime/flags/debug_globals.hpp" +#include "runtime/flags/flagSetting.hpp" +#include "runtime/flags/jvmFlag.hpp" +#include "runtime/flags/jvmFlagAccess.hpp" #include "runtime/frame.inline.hpp" #include "runtime/globals.hpp" +#include "runtime/globals_extension.hpp" +#include "runtime/globals_shared.hpp" #include "runtime/handles.inline.hpp" +#include "runtime/handshake.hpp" +#include "runtime/icache.hpp" #include "runtime/interfaceSupport.inline.hpp" -#include "runtime/javaThread.hpp" +#include "runtime/java.hpp" +#include "runtime/javaFrameAnchor.hpp" +#include "runtime/javaThread.inline.hpp" +#include "runtime/lightweightSynchronizer.hpp" +#include "runtime/lockStack.inline.hpp" +#include "runtime/monitorChunk.hpp" +#include "runtime/mutex.hpp" #include "runtime/mutexLocker.hpp" -#include "runtime/os.hpp" +#include "runtime/nonJavaThread.hpp" +#include "runtime/objectMonitor.inline.hpp" +#include "runtime/orderAccess.hpp" +#include "runtime/os.inline.hpp" +#include "runtime/osInfo.hpp" +#include "runtime/osThread.hpp" +#include "runtime/osThreadBase.hpp" +#include "runtime/park.hpp" +#include "runtime/perfData.hpp" +#include "runtime/perfDataTypes.hpp" +#include "runtime/perfMemory.hpp" +#include "runtime/prefetch.inline.hpp" +#include "runtime/registerMap.hpp" +#include "runtime/safepoint.hpp" +#include "runtime/safepointMechanism.inline.hpp" +#include "runtime/safepointVerifiers.hpp" +#include "runtime/semaphore.hpp" #include "runtime/sharedRuntime.hpp" +#include "runtime/smallRegisterMap.inline.hpp" +#include "runtime/stackChunkFrameStream.hpp" +#include "runtime/stackOverflow.hpp" +#include "runtime/stackWatermark.hpp" +#include "runtime/stackWatermarkKind.hpp" +#include "runtime/stackWatermarkSet.inline.hpp" +#include "runtime/stubCodeGenerator.hpp" +#include "runtime/stubDeclarations.hpp" +#include "runtime/stubInfo.hpp" #include "runtime/stubRoutines.hpp" +#include "runtime/suspendResumeManager.hpp" +#include "runtime/synchronizer.hpp" +#include "runtime/task.hpp" +#include "runtime/thread.inline.hpp" +#include "runtime/threadHeapSampler.hpp" +#include "runtime/threadIdentifier.hpp" +#include "runtime/threadLocalStorage.hpp" +#include "runtime/threadSMR.hpp" +#include "runtime/threadStatisticalInfo.hpp" +#include "runtime/threadWXSetters.inline.hpp" +#include "runtime/timer.hpp" +#include "runtime/unhandledOops.hpp" +#include "runtime/vmOperation.hpp" +#include "runtime/vmOperations.hpp" +#include "runtime/vmThread.hpp" +#include "runtime/vm_version.hpp" +#include "services/memoryManager.hpp" +#include "services/memoryPool.hpp" +#include "services/memoryService.hpp" +#include "services/memoryUsage.hpp" +#include "utilities/accessFlags.hpp" #include "utilities/align.hpp" +#include "utilities/autoRestore.hpp" +#include "utilities/bitMap.inline.hpp" +#include "utilities/breakpoint.hpp" +#include "utilities/bytes.hpp" +#include "utilities/byteswap.hpp" +#include "utilities/checkedCast.hpp" +#include "utilities/compilerWarnings.hpp" +#include "utilities/compilerWarnings_gcc.hpp" +#include "utilities/constantTag.hpp" +#include "utilities/copy.hpp" +#include "utilities/count_leading_zeros.hpp" +#include "utilities/count_trailing_zeros.hpp" #include "utilities/debug.hpp" +#include "utilities/devirtualizer.inline.hpp" +#include "utilities/enumIterator.hpp" +#include "utilities/exceptions.hpp" +#include "utilities/fakeRttiSupport.hpp" +#include "utilities/filterQueue.hpp" +#include "utilities/forbiddenFunctions.hpp" +#include "utilities/formatBuffer.hpp" #include "utilities/globalDefinitions.hpp" +#include "utilities/globalDefinitions_gcc.hpp" #include "utilities/growableArray.hpp" +#include "utilities/linkedlist.hpp" +#include "utilities/lockFreeStack.hpp" #include "utilities/macros.hpp" +#include "utilities/nonblockingQueue.hpp" +#include "utilities/numberSeq.hpp" #include "utilities/ostream.hpp" +#include "utilities/pair.hpp" +#include "utilities/population_count.hpp" #include "utilities/powerOfTwo.hpp" +#include "utilities/preserveException.hpp" +#include "utilities/rbTree.hpp" +#include "utilities/resizeableResourceHash.hpp" +#include "utilities/resourceHash.hpp" +#include "utilities/rotate_bits.hpp" +#include "utilities/singleWriterSynchronizer.hpp" +#include "utilities/sizes.hpp" +#include "utilities/stack.hpp" +#include "utilities/tableStatistics.hpp" +#include "utilities/ticks.hpp" +#include "utilities/unsigned5.hpp" +#include "utilities/utf8.hpp" +#include "utilities/vmEnums.hpp" +#include "utilities/waitBarrier.hpp" +#include "utilities/waitBarrier_generic.hpp" \ No newline at end of file diff --git a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java index d254ad1565a95..94cc5b61f85f3 100644 --- a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java +++ b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java @@ -122,7 +122,7 @@ public static void main(String[] args) throws IOException { .map(header -> String.format("#include \"%s\"", header)) .collect(Collectors.joining(System.lineSeparator())); Files.write(precompiledHpp, - (System.lineSeparator() + headerLines + System.lineSeparator()).getBytes(), + (System.lineSeparator() + headerLines).getBytes(), StandardOpenOption.APPEND); } From 5c8179d86a75ea1fc89f23d90a2df2a211e470da Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Fri, 8 Aug 2025 11:32:40 +0000 Subject: [PATCH 06/19] nl --- src/utils/PrecompiledHeaders/PrecompiledHeaders.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java index 94cc5b61f85f3..1503659dff327 100644 --- a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java +++ b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java @@ -74,7 +74,8 @@ public static void main(String[] args) throws IOException { // Count inclusion times for each header Map occurrences; try (Stream files = Files.list(objsPath)) { - occurrences = files.filter(file -> file.getFileName().toString().endsWith(".d")) + occurrences = files + .filter(file -> file.getFileName().toString().endsWith(".d")) .flatMap(file -> { try { return Files.lines(file); From 5bdafcfa2ab6a1541d3543455333c693408a2fa1 Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Fri, 8 Aug 2025 13:57:18 +0000 Subject: [PATCH 07/19] exclude BUILD, cpp, compiler specific --- src/utils/PrecompiledHeaders/PrecompiledHeaders.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java index 1503659dff327..f6a5c1939cac6 100644 --- a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java +++ b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java @@ -27,6 +27,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Set; @@ -39,7 +40,7 @@ public final class PrecompiledHeaders { - private static final Pattern DEPENDENCY_LINE_PATTERN = Pattern.compile("\\s*(\\S+)\\s*\\\\?"); + private static final Pattern DEPENDENCY_LINE_PATTERN = Pattern.compile("\\s*(\\S+.hpp)\\s*\\\\?"); private static final Pattern INCLUDE_PATTERN = Pattern.compile("^#\\s*include \"([^\"]+)\"$"); private static final String OBJS_PATH = "hotspot/variant-server/libjvm/objs"; private static final String PRECOMPILED_HPP = "src/hotspot/share/precompiled/precompiled.hpp"; @@ -76,6 +77,7 @@ public static void main(String[] args) throws IOException { try (Stream files = Files.list(objsPath)) { occurrences = files .filter(file -> file.getFileName().toString().endsWith(".d")) + .filter(Predicate.not(file -> file.getFileName().toString().startsWith("BUILD_LIBJVM"))) .flatMap(file -> { try { return Files.lines(file); @@ -89,6 +91,9 @@ public static void main(String[] args) throws IOException { .filter(Matcher::matches) .map(matcher -> matcher.group(1)) .filter(dependency -> dependency.startsWith(HOTSPOT_SOURCE_PREFIX)) + // Avoid compiler specific headers + .filter(Predicate.not(dependency -> dependency.endsWith("_gcc.hpp"))) + .filter(Predicate.not(dependency -> dependency.endsWith("_visCPP.hpp"))) .map(dependency -> dependency.replace(HOTSPOT_SOURCE_PREFIX, "")) .collect(Collectors.toMap(Function.identity(), s -> 1, Integer::sum)); } @@ -123,7 +128,7 @@ public static void main(String[] args) throws IOException { .map(header -> String.format("#include \"%s\"", header)) .collect(Collectors.joining(System.lineSeparator())); Files.write(precompiledHpp, - (System.lineSeparator() + headerLines).getBytes(), + (System.lineSeparator() + headerLines + System.lineSeparator()).getBytes(), StandardOpenOption.APPEND); } From 6c9351a164d7e34700d6bfce8899f5c6a8329536 Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Fri, 8 Aug 2025 13:57:29 +0000 Subject: [PATCH 08/19] nn --- src/utils/PrecompiledHeaders/PrecompiledHeaders.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java index f6a5c1939cac6..19a1e832e5dc3 100644 --- a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java +++ b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java @@ -27,7 +27,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; -import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Set; From 93e41909e28e68900b201ef6bfb6de087af5a92d Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Fri, 8 Aug 2025 14:04:03 +0000 Subject: [PATCH 09/19] exclude precompiled --- src/utils/PrecompiledHeaders/PrecompiledHeaders.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java index 19a1e832e5dc3..c9ab01f4ea88a 100644 --- a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java +++ b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java @@ -42,7 +42,8 @@ public final class PrecompiledHeaders { private static final Pattern DEPENDENCY_LINE_PATTERN = Pattern.compile("\\s*(\\S+.hpp)\\s*\\\\?"); private static final Pattern INCLUDE_PATTERN = Pattern.compile("^#\\s*include \"([^\"]+)\"$"); private static final String OBJS_PATH = "hotspot/variant-server/libjvm/objs"; - private static final String PRECOMPILED_HPP = "src/hotspot/share/precompiled/precompiled.hpp"; + private static final String PRECOMPILED_HPP_NAME = "precompiled.hpp"; + private static final String PRECOMPILED_HPP_PATH = "src/hotspot/share/precompiled/" + PRECOMPILED_HPP_NAME; private static final String INLINE_HPP_SUFFIX = ".inline.hpp"; private static final String HOTSPOT_SOURCE_PREFIX = "/jdk/src/hotspot/share/"; @@ -77,6 +78,8 @@ public static void main(String[] args) throws IOException { occurrences = files .filter(file -> file.getFileName().toString().endsWith(".d")) .filter(Predicate.not(file -> file.getFileName().toString().startsWith("BUILD_LIBJVM"))) + .filter(Predicate.not(file -> file.getFileName().toString().startsWith("BUILD_LIBJVM"))) + .filter(Predicate.not(file -> file.getFileName().toString().contains(PRECOMPILED_HPP_NAME))) .flatMap(file -> { try { return Files.lines(file); @@ -93,6 +96,7 @@ public static void main(String[] args) throws IOException { // Avoid compiler specific headers .filter(Predicate.not(dependency -> dependency.endsWith("_gcc.hpp"))) .filter(Predicate.not(dependency -> dependency.endsWith("_visCPP.hpp"))) + .filter(Predicate.not(dependency -> dependency.endsWith("/" + PRECOMPILED_HPP_NAME))) .map(dependency -> dependency.replace(HOTSPOT_SOURCE_PREFIX, "")) .collect(Collectors.toMap(Function.identity(), s -> 1, Integer::sum)); } @@ -114,7 +118,7 @@ public static void main(String[] args) throws IOException { } } - Path precompiledHpp = jdkRoot.resolve(PRECOMPILED_HPP); + Path precompiledHpp = jdkRoot.resolve(PRECOMPILED_HPP_PATH); try (Stream lines = Files.lines(precompiledHpp)) { String precompiledHppHeader = lines .takeWhile(Predicate.not(s -> INCLUDE_PATTERN.matcher(s).matches())) From edb73e3e2d427896e772575255c00d4f0df2391f Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Fri, 8 Aug 2025 14:04:11 +0000 Subject: [PATCH 10/19] refresh --- src/hotspot/share/precompiled/precompiled.hpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/hotspot/share/precompiled/precompiled.hpp b/src/hotspot/share/precompiled/precompiled.hpp index f4ea219db432c..9e8b7c3a04401 100644 --- a/src/hotspot/share/precompiled/precompiled.hpp +++ b/src/hotspot/share/precompiled/precompiled.hpp @@ -234,8 +234,6 @@ #include "gc/z/zWeakRootsProcessor.hpp" #include "gc/z/zWorkers.inline.hpp" #include "gc/z/z_globals.hpp" -#include "include/jvm_constants.h" -#include "include/jvm_io.h" #include "interpreter/abstractInterpreter.hpp" #include "interpreter/bootstrapInfo.hpp" #include "interpreter/bytecodes.hpp" @@ -428,7 +426,6 @@ #include "utilities/byteswap.hpp" #include "utilities/checkedCast.hpp" #include "utilities/compilerWarnings.hpp" -#include "utilities/compilerWarnings_gcc.hpp" #include "utilities/constantTag.hpp" #include "utilities/copy.hpp" #include "utilities/count_leading_zeros.hpp" @@ -442,7 +439,6 @@ #include "utilities/forbiddenFunctions.hpp" #include "utilities/formatBuffer.hpp" #include "utilities/globalDefinitions.hpp" -#include "utilities/globalDefinitions_gcc.hpp" #include "utilities/growableArray.hpp" #include "utilities/linkedlist.hpp" #include "utilities/lockFreeStack.hpp" @@ -467,4 +463,4 @@ #include "utilities/utf8.hpp" #include "utilities/vmEnums.hpp" #include "utilities/waitBarrier.hpp" -#include "utilities/waitBarrier_generic.hpp" \ No newline at end of file +#include "utilities/waitBarrier_generic.hpp" From dba3a6aab8bd829754368fa8a1d53f83a40171e9 Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Fri, 8 Aug 2025 14:18:05 +0000 Subject: [PATCH 11/19] refresh --- src/hotspot/share/precompiled/precompiled.hpp | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/hotspot/share/precompiled/precompiled.hpp b/src/hotspot/share/precompiled/precompiled.hpp index 9e8b7c3a04401..f815a0f2dc121 100644 --- a/src/hotspot/share/precompiled/precompiled.hpp +++ b/src/hotspot/share/precompiled/precompiled.hpp @@ -38,6 +38,7 @@ #include "classfile/classLoaderData.inline.hpp" #include "classfile/compactHashtable.hpp" #include "classfile/javaClasses.inline.hpp" +#include "classfile/systemDictionary.hpp" #include "classfile/vmClassID.hpp" #include "classfile/vmClassMacros.hpp" #include "classfile/vmClasses.hpp" @@ -244,10 +245,9 @@ #include "interpreter/templateInterpreter.hpp" #include "interpreter/templateTable.hpp" #include "interpreter/zero/zeroInterpreter.hpp" -#include "jfr/jfr.inline.hpp" +#include "jfr/jfr.hpp" #include "jfr/periodic/sampling/jfrCPUTimeThreadSampler.hpp" #include "jfr/periodic/sampling/jfrSampleRequest.hpp" -#include "jfr/periodic/sampling/jfrThreadSampling.hpp" #include "jfr/recorder/checkpoint/types/traceid/jfrTraceId.hpp" #include "jfr/recorder/checkpoint/types/traceid/jfrTraceIdMacros.hpp" #include "jfr/recorder/storage/jfrBuffer.hpp" @@ -287,6 +287,7 @@ #include "memory/metadataFactory.hpp" #include "memory/metaspace.hpp" #include "memory/metaspaceClosure.hpp" +#include "memory/metaspaceStats.hpp" #include "memory/padded.hpp" #include "memory/referenceType.hpp" #include "memory/reservedSpace.hpp" @@ -295,7 +296,22 @@ #include "memory/virtualspace.hpp" #include "metaprogramming/enableIf.hpp" #include "metaprogramming/primitiveConversions.hpp" +#include "nmt/allocationSite.hpp" +#include "nmt/arrayWithFreeList.hpp" +#include "nmt/mallocHeader.hpp" +#include "nmt/mallocSiteTable.hpp" +#include "nmt/mallocTracker.hpp" +#include "nmt/memBaseline.hpp" #include "nmt/memTag.hpp" +#include "nmt/memTracker.hpp" +#include "nmt/memoryFileTracker.hpp" +#include "nmt/nmtCommon.hpp" +#include "nmt/nmtNativeCallStackStorage.hpp" +#include "nmt/nmtTreap.hpp" +#include "nmt/regionsTree.hpp" +#include "nmt/threadStackTracker.hpp" +#include "nmt/virtualMemoryTracker.hpp" +#include "nmt/vmatree.hpp" #include "oops/access.inline.hpp" #include "oops/accessBackend.inline.hpp" #include "oops/accessDecorators.hpp" @@ -360,7 +376,6 @@ #include "runtime/handles.inline.hpp" #include "runtime/handshake.hpp" #include "runtime/icache.hpp" -#include "runtime/interfaceSupport.inline.hpp" #include "runtime/java.hpp" #include "runtime/javaFrameAnchor.hpp" #include "runtime/javaThread.inline.hpp" @@ -383,10 +398,10 @@ #include "runtime/prefetch.inline.hpp" #include "runtime/registerMap.hpp" #include "runtime/safepoint.hpp" -#include "runtime/safepointMechanism.inline.hpp" -#include "runtime/safepointVerifiers.hpp" +#include "runtime/safepointMechanism.hpp" #include "runtime/semaphore.hpp" #include "runtime/sharedRuntime.hpp" +#include "runtime/signature.hpp" #include "runtime/smallRegisterMap.inline.hpp" #include "runtime/stackChunkFrameStream.hpp" #include "runtime/stackOverflow.hpp" @@ -404,13 +419,11 @@ #include "runtime/threadHeapSampler.hpp" #include "runtime/threadIdentifier.hpp" #include "runtime/threadLocalStorage.hpp" -#include "runtime/threadSMR.hpp" #include "runtime/threadStatisticalInfo.hpp" #include "runtime/threadWXSetters.inline.hpp" #include "runtime/timer.hpp" #include "runtime/unhandledOops.hpp" #include "runtime/vmOperation.hpp" -#include "runtime/vmOperations.hpp" #include "runtime/vmThread.hpp" #include "runtime/vm_version.hpp" #include "services/memoryManager.hpp" @@ -431,6 +444,7 @@ #include "utilities/count_leading_zeros.hpp" #include "utilities/count_trailing_zeros.hpp" #include "utilities/debug.hpp" +#include "utilities/deferredStatic.hpp" #include "utilities/devirtualizer.inline.hpp" #include "utilities/enumIterator.hpp" #include "utilities/exceptions.hpp" @@ -443,13 +457,13 @@ #include "utilities/linkedlist.hpp" #include "utilities/lockFreeStack.hpp" #include "utilities/macros.hpp" +#include "utilities/nativeCallStack.hpp" #include "utilities/nonblockingQueue.hpp" #include "utilities/numberSeq.hpp" #include "utilities/ostream.hpp" #include "utilities/pair.hpp" #include "utilities/population_count.hpp" #include "utilities/powerOfTwo.hpp" -#include "utilities/preserveException.hpp" #include "utilities/rbTree.hpp" #include "utilities/resizeableResourceHash.hpp" #include "utilities/resourceHash.hpp" From 3546dd187b347f108da81b11d45f4ce034c8b9da Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Fri, 8 Aug 2025 14:32:06 +0000 Subject: [PATCH 12/19] refresh --- src/hotspot/share/precompiled/precompiled.hpp | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/src/hotspot/share/precompiled/precompiled.hpp b/src/hotspot/share/precompiled/precompiled.hpp index f815a0f2dc121..2e1f7fb6fc5b4 100644 --- a/src/hotspot/share/precompiled/precompiled.hpp +++ b/src/hotspot/share/precompiled/precompiled.hpp @@ -38,7 +38,6 @@ #include "classfile/classLoaderData.inline.hpp" #include "classfile/compactHashtable.hpp" #include "classfile/javaClasses.inline.hpp" -#include "classfile/systemDictionary.hpp" #include "classfile/vmClassID.hpp" #include "classfile/vmClassMacros.hpp" #include "classfile/vmClasses.hpp" @@ -287,7 +286,6 @@ #include "memory/metadataFactory.hpp" #include "memory/metaspace.hpp" #include "memory/metaspaceClosure.hpp" -#include "memory/metaspaceStats.hpp" #include "memory/padded.hpp" #include "memory/referenceType.hpp" #include "memory/reservedSpace.hpp" @@ -296,22 +294,7 @@ #include "memory/virtualspace.hpp" #include "metaprogramming/enableIf.hpp" #include "metaprogramming/primitiveConversions.hpp" -#include "nmt/allocationSite.hpp" -#include "nmt/arrayWithFreeList.hpp" -#include "nmt/mallocHeader.hpp" -#include "nmt/mallocSiteTable.hpp" -#include "nmt/mallocTracker.hpp" -#include "nmt/memBaseline.hpp" #include "nmt/memTag.hpp" -#include "nmt/memTracker.hpp" -#include "nmt/memoryFileTracker.hpp" -#include "nmt/nmtCommon.hpp" -#include "nmt/nmtNativeCallStackStorage.hpp" -#include "nmt/nmtTreap.hpp" -#include "nmt/regionsTree.hpp" -#include "nmt/threadStackTracker.hpp" -#include "nmt/virtualMemoryTracker.hpp" -#include "nmt/vmatree.hpp" #include "oops/access.inline.hpp" #include "oops/accessBackend.inline.hpp" #include "oops/accessDecorators.hpp" @@ -401,7 +384,6 @@ #include "runtime/safepointMechanism.hpp" #include "runtime/semaphore.hpp" #include "runtime/sharedRuntime.hpp" -#include "runtime/signature.hpp" #include "runtime/smallRegisterMap.inline.hpp" #include "runtime/stackChunkFrameStream.hpp" #include "runtime/stackOverflow.hpp" @@ -444,7 +426,6 @@ #include "utilities/count_leading_zeros.hpp" #include "utilities/count_trailing_zeros.hpp" #include "utilities/debug.hpp" -#include "utilities/deferredStatic.hpp" #include "utilities/devirtualizer.inline.hpp" #include "utilities/enumIterator.hpp" #include "utilities/exceptions.hpp" @@ -457,7 +438,6 @@ #include "utilities/linkedlist.hpp" #include "utilities/lockFreeStack.hpp" #include "utilities/macros.hpp" -#include "utilities/nativeCallStack.hpp" #include "utilities/nonblockingQueue.hpp" #include "utilities/numberSeq.hpp" #include "utilities/ostream.hpp" From 3d78b32f6b502e59080a4486509e1bacf3dc281b Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Fri, 8 Aug 2025 14:45:43 +0000 Subject: [PATCH 13/19] ops --- src/hotspot/share/precompiled/precompiled.hpp | 2 +- src/utils/PrecompiledHeaders/PrecompiledHeaders.java | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/hotspot/share/precompiled/precompiled.hpp b/src/hotspot/share/precompiled/precompiled.hpp index 2e1f7fb6fc5b4..f2276bab8fd8a 100644 --- a/src/hotspot/share/precompiled/precompiled.hpp +++ b/src/hotspot/share/precompiled/precompiled.hpp @@ -335,7 +335,7 @@ #include "oops/symbol.hpp" #include "oops/typeArrayKlass.inline.hpp" #include "oops/typeArrayOop.inline.hpp" -#include "oops/weakHandle.inline.hpp" +#include "oops/weakHandle.hpp" #include "opto/adlcVMDeps.hpp" #include "opto/c2_globals.hpp" #include "prims/jvmtiExport.hpp" diff --git a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java index c9ab01f4ea88a..e34aa780f3bbb 100644 --- a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java +++ b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java @@ -82,13 +82,12 @@ public static void main(String[] args) throws IOException { .filter(Predicate.not(file -> file.getFileName().toString().contains(PRECOMPILED_HPP_NAME))) .flatMap(file -> { try { - return Files.lines(file); + // The first line contains the object name + return Files.lines(file).skip(1); } catch (IOException exception) { throw new UncheckedIOException(exception); } }) - // The first line contains the object name - .skip(1) .map(DEPENDENCY_LINE_PATTERN::matcher) .filter(Matcher::matches) .map(matcher -> matcher.group(1)) From 71950aedacb3bf523c461b76ca1db2bed5816348 Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Fri, 8 Aug 2025 14:46:23 +0000 Subject: [PATCH 14/19] two times might be too much --- src/utils/PrecompiledHeaders/PrecompiledHeaders.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java index e34aa780f3bbb..db4faa628e516 100644 --- a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java +++ b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java @@ -78,7 +78,6 @@ public static void main(String[] args) throws IOException { occurrences = files .filter(file -> file.getFileName().toString().endsWith(".d")) .filter(Predicate.not(file -> file.getFileName().toString().startsWith("BUILD_LIBJVM"))) - .filter(Predicate.not(file -> file.getFileName().toString().startsWith("BUILD_LIBJVM"))) .filter(Predicate.not(file -> file.getFileName().toString().contains(PRECOMPILED_HPP_NAME))) .flatMap(file -> { try { From 3116b39c5dc812c1bfb0994bda3a82c9f66870af Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Fri, 8 Aug 2025 21:38:19 +0000 Subject: [PATCH 15/19] distinct --- src/utils/PrecompiledHeaders/PrecompiledHeaders.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java index db4faa628e516..fdecc296f058a 100644 --- a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java +++ b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java @@ -82,7 +82,7 @@ public static void main(String[] args) throws IOException { .flatMap(file -> { try { // The first line contains the object name - return Files.lines(file).skip(1); + return Files.lines(file).skip(1).distinct(); } catch (IOException exception) { throw new UncheckedIOException(exception); } From fbdb011bd6a6a767d30c002ee499547578c7e91e Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Fri, 8 Aug 2025 21:39:11 +0000 Subject: [PATCH 16/19] inline --- src/hotspot/share/precompiled/precompiled.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hotspot/share/precompiled/precompiled.hpp b/src/hotspot/share/precompiled/precompiled.hpp index f2276bab8fd8a..2e1f7fb6fc5b4 100644 --- a/src/hotspot/share/precompiled/precompiled.hpp +++ b/src/hotspot/share/precompiled/precompiled.hpp @@ -335,7 +335,7 @@ #include "oops/symbol.hpp" #include "oops/typeArrayKlass.inline.hpp" #include "oops/typeArrayOop.inline.hpp" -#include "oops/weakHandle.hpp" +#include "oops/weakHandle.inline.hpp" #include "opto/adlcVMDeps.hpp" #include "opto/c2_globals.hpp" #include "prims/jvmtiExport.hpp" From be25d3413b432b56e9789eae55920f1862008911 Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Fri, 8 Aug 2025 22:08:06 +0000 Subject: [PATCH 17/19] magic number: 400 --- src/hotspot/share/precompiled/precompiled.hpp | 198 +----------------- 1 file changed, 11 insertions(+), 187 deletions(-) diff --git a/src/hotspot/share/precompiled/precompiled.hpp b/src/hotspot/share/precompiled/precompiled.hpp index 2e1f7fb6fc5b4..49df00e4929de 100644 --- a/src/hotspot/share/precompiled/precompiled.hpp +++ b/src/hotspot/share/precompiled/precompiled.hpp @@ -42,7 +42,6 @@ #include "classfile/vmClassMacros.hpp" #include "classfile/vmClasses.hpp" #include "classfile/vmIntrinsics.hpp" -#include "classfile/vmSymbols.hpp" #include "code/codeBlob.inline.hpp" #include "code/codeCache.inline.hpp" #include "code/compressedStream.hpp" @@ -60,180 +59,30 @@ #include "compiler/compiler_globals.hpp" #include "compiler/compiler_globals_pd.hpp" #include "compiler/oopMap.inline.hpp" -#include "gc/epsilon/epsilonBarrierSet.hpp" -#include "gc/epsilon/epsilon_globals.hpp" -#include "gc/g1/g1BarrierSet.inline.hpp" -#include "gc/g1/g1BlockOffsetTable.hpp" -#include "gc/g1/g1CardTable.hpp" -#include "gc/g1/g1ConcurrentRefineStats.hpp" -#include "gc/g1/g1DirtyCardQueue.hpp" -#include "gc/g1/g1FreeIdSet.hpp" -#include "gc/g1/g1HeapRegion.hpp" -#include "gc/g1/g1HeapRegionTraceType.hpp" -#include "gc/g1/g1HeapRegionTracer.hpp" -#include "gc/g1/g1HeapRegionType.hpp" -#include "gc/g1/g1PageBasedVirtualSpace.hpp" -#include "gc/g1/g1Predictions.hpp" -#include "gc/g1/g1RegionPinCache.hpp" -#include "gc/g1/g1RegionToSpaceMapper.hpp" -#include "gc/g1/g1SATBMarkQueueSet.hpp" -#include "gc/g1/g1SurvRateGroup.hpp" -#include "gc/g1/g1ThreadLocalData.hpp" -#include "gc/g1/g1_globals.hpp" -#include "gc/parallel/parallel_globals.hpp" #include "gc/serial/serial_globals.hpp" -#include "gc/shared/accessBarrierSupport.inline.hpp" -#include "gc/shared/ageTable.hpp" #include "gc/shared/barrierSet.inline.hpp" #include "gc/shared/barrierSetConfig.inline.hpp" #include "gc/shared/barrierSetStackChunk.hpp" -#include "gc/shared/blockOffsetTable.hpp" -#include "gc/shared/bufferNode.hpp" -#include "gc/shared/bufferNodeList.hpp" #include "gc/shared/cardTable.hpp" #include "gc/shared/cardTableBarrierSet.inline.hpp" #include "gc/shared/collectedHeap.hpp" -#include "gc/shared/collectorCounters.hpp" -#include "gc/shared/concurrentGCThread.hpp" -#include "gc/shared/continuationGCSupport.inline.hpp" -#include "gc/shared/copyFailedInfo.hpp" -#include "gc/shared/freeListAllocator.hpp" #include "gc/shared/gcBehaviours.hpp" #include "gc/shared/gcCause.hpp" #include "gc/shared/gcId.hpp" -#include "gc/shared/gcName.hpp" #include "gc/shared/gcThreadLocalData.hpp" -#include "gc/shared/gcTimer.hpp" -#include "gc/shared/gcTrace.hpp" #include "gc/shared/gcUtil.hpp" -#include "gc/shared/gcVMOperations.hpp" #include "gc/shared/gcWhen.hpp" #include "gc/shared/gc_globals.hpp" -#include "gc/shared/markBitMap.inline.hpp" #include "gc/shared/modRefBarrierSet.inline.hpp" #include "gc/shared/oopStorage.inline.hpp" -#include "gc/shared/plab.hpp" -#include "gc/shared/ptrQueue.hpp" #include "gc/shared/referenceDiscoverer.hpp" #include "gc/shared/referencePolicy.hpp" #include "gc/shared/referenceProcessor.hpp" #include "gc/shared/referenceProcessorStats.hpp" -#include "gc/shared/satbMarkQueue.hpp" #include "gc/shared/softRefPolicy.hpp" -#include "gc/shared/spaceDecorator.hpp" -#include "gc/shared/suspendibleThreadSet.hpp" -#include "gc/shared/taskTerminator.hpp" -#include "gc/shared/taskqueue.hpp" -#include "gc/shared/threadLocalAllocBuffer.inline.hpp" -#include "gc/shared/tlab_globals.hpp" +#include "gc/shared/threadLocalAllocBuffer.hpp" #include "gc/shared/verifyOption.hpp" #include "gc/shared/workerThread.hpp" -#include "gc/shenandoah/heuristics/shenandoahHeuristics.hpp" -#include "gc/shenandoah/heuristics/shenandoahOldHeuristics.hpp" -#include "gc/shenandoah/heuristics/shenandoahSpaceInfo.hpp" -#include "gc/shenandoah/mode/shenandoahMode.hpp" -#include "gc/shenandoah/shenandoahAffiliation.hpp" -#include "gc/shenandoah/shenandoahAgeCensus.hpp" -#include "gc/shenandoah/shenandoahAllocRequest.hpp" -#include "gc/shenandoah/shenandoahAsserts.hpp" -#include "gc/shenandoah/shenandoahBarrierSet.inline.hpp" -#include "gc/shenandoah/shenandoahCardStats.hpp" -#include "gc/shenandoah/shenandoahCardTable.hpp" -#include "gc/shenandoah/shenandoahCodeRoots.hpp" -#include "gc/shenandoah/shenandoahCollectionSet.inline.hpp" -#include "gc/shenandoah/shenandoahController.hpp" -#include "gc/shenandoah/shenandoahEvacOOMHandler.inline.hpp" -#include "gc/shenandoah/shenandoahEvacTracker.hpp" -#include "gc/shenandoah/shenandoahForwarding.inline.hpp" -#include "gc/shenandoah/shenandoahGeneration.hpp" -#include "gc/shenandoah/shenandoahGenerationSizer.hpp" -#include "gc/shenandoah/shenandoahGenerationType.hpp" -#include "gc/shenandoah/shenandoahGenerationalHeap.hpp" -#include "gc/shenandoah/shenandoahHeap.inline.hpp" -#include "gc/shenandoah/shenandoahHeapRegion.inline.hpp" -#include "gc/shenandoah/shenandoahHeapRegionSet.inline.hpp" -#include "gc/shenandoah/shenandoahLock.hpp" -#include "gc/shenandoah/shenandoahMarkBitMap.inline.hpp" -#include "gc/shenandoah/shenandoahMarkingContext.inline.hpp" -#include "gc/shenandoah/shenandoahMmuTracker.hpp" -#include "gc/shenandoah/shenandoahNumberSeq.hpp" -#include "gc/shenandoah/shenandoahOldGeneration.hpp" -#include "gc/shenandoah/shenandoahPadding.hpp" -#include "gc/shenandoah/shenandoahSATBMarkQueueSet.hpp" -#include "gc/shenandoah/shenandoahScanRemembered.hpp" -#include "gc/shenandoah/shenandoahSharedVariables.hpp" -#include "gc/shenandoah/shenandoahTaskqueue.hpp" -#include "gc/shenandoah/shenandoahThreadLocalData.hpp" -#include "gc/shenandoah/shenandoahUnload.hpp" -#include "gc/shenandoah/shenandoahWorkGroup.hpp" -#include "gc/shenandoah/shenandoah_globals.hpp" -#include "gc/z/zAbort.inline.hpp" -#include "gc/z/zAddress.inline.hpp" -#include "gc/z/zAllocationFlags.hpp" -#include "gc/z/zArray.inline.hpp" -#include "gc/z/zAttachedArray.inline.hpp" -#include "gc/z/zBarrier.inline.hpp" -#include "gc/z/zBarrierSet.inline.hpp" -#include "gc/z/zBitField.hpp" -#include "gc/z/zBitMap.inline.hpp" -#include "gc/z/zDeferredConstructed.hpp" -#include "gc/z/zForwarding.inline.hpp" -#include "gc/z/zForwardingAllocator.inline.hpp" -#include "gc/z/zForwardingEntry.hpp" -#include "gc/z/zForwardingTable.inline.hpp" -#include "gc/z/zGeneration.inline.hpp" -#include "gc/z/zGenerationId.hpp" -#include "gc/z/zGlobals.hpp" -#include "gc/z/zGranuleMap.inline.hpp" -#include "gc/z/zHash.inline.hpp" -#include "gc/z/zHeap.inline.hpp" -#include "gc/z/zIndexDistributor.inline.hpp" -#include "gc/z/zIterator.inline.hpp" -#include "gc/z/zList.hpp" -#include "gc/z/zLiveMap.inline.hpp" -#include "gc/z/zLock.inline.hpp" -#include "gc/z/zMappedCache.hpp" -#include "gc/z/zMark.inline.hpp" -#include "gc/z/zMarkStack.inline.hpp" -#include "gc/z/zMarkStackEntry.hpp" -#include "gc/z/zMarkTerminate.inline.hpp" -#include "gc/z/zMarkingSMR.hpp" -#include "gc/z/zMetronome.hpp" -#include "gc/z/zNMethod.hpp" -#include "gc/z/zObjectAllocator.hpp" -#include "gc/z/zPage.inline.hpp" -#include "gc/z/zPageAge.hpp" -#include "gc/z/zPageAllocator.inline.hpp" -#include "gc/z/zPageTable.inline.hpp" -#include "gc/z/zPageType.hpp" -#include "gc/z/zPhysicalMemoryManager.hpp" -#include "gc/z/zRange.inline.hpp" -#include "gc/z/zRangeRegistry.hpp" -#include "gc/z/zReferenceProcessor.hpp" -#include "gc/z/zRelocate.hpp" -#include "gc/z/zRelocationSet.hpp" -#include "gc/z/zRelocationSetSelector.hpp" -#include "gc/z/zRemembered.inline.hpp" -#include "gc/z/zRememberedSet.inline.hpp" -#include "gc/z/zResurrection.inline.hpp" -#include "gc/z/zSafeDelete.hpp" -#include "gc/z/zServiceability.hpp" -#include "gc/z/zStat.hpp" -#include "gc/z/zStoreBarrierBuffer.hpp" -#include "gc/z/zTLABUsage.hpp" -#include "gc/z/zThread.hpp" -#include "gc/z/zThreadLocalData.hpp" -#include "gc/z/zTracer.hpp" -#include "gc/z/zUncommitter.hpp" -#include "gc/z/zUnload.hpp" -#include "gc/z/zUtils.inline.hpp" -#include "gc/z/zValue.hpp" -#include "gc/z/zVerify.hpp" -#include "gc/z/zVirtualMemory.inline.hpp" -#include "gc/z/zVirtualMemoryManager.hpp" -#include "gc/z/zWeakRootsProcessor.hpp" -#include "gc/z/zWorkers.inline.hpp" -#include "gc/z/z_globals.hpp" #include "interpreter/abstractInterpreter.hpp" #include "interpreter/bootstrapInfo.hpp" #include "interpreter/bytecodes.hpp" @@ -262,7 +111,6 @@ #include "jfr/utilities/jfrTime.hpp" #include "jfr/utilities/jfrTypes.hpp" #include "jvmci/jvmci_globals.hpp" -#include "jvmci/vmSymbols_jvmci.hpp" #include "logging/log.hpp" #include "logging/logDecorations.hpp" #include "logging/logDecorators.hpp" @@ -277,7 +125,7 @@ #include "logging/logTag.hpp" #include "logging/logTagSet.hpp" #include "memory/allStatic.hpp" -#include "memory/allocation.inline.hpp" +#include "memory/allocation.hpp" #include "memory/arena.hpp" #include "memory/classLoaderMetaspace.hpp" #include "memory/heap.hpp" @@ -321,9 +169,8 @@ #include "oops/klassVtable.hpp" #include "oops/markWord.inline.hpp" #include "oops/metadata.hpp" -#include "oops/method.inline.hpp" -#include "oops/methodCounters.hpp" -#include "oops/methodData.inline.hpp" +#include "oops/method.hpp" +#include "oops/methodData.hpp" #include "oops/methodFlags.hpp" #include "oops/objArrayKlass.inline.hpp" #include "oops/objArrayOop.inline.hpp" @@ -338,47 +185,34 @@ #include "oops/weakHandle.inline.hpp" #include "opto/adlcVMDeps.hpp" #include "opto/c2_globals.hpp" -#include "prims/jvmtiExport.hpp" #include "prims/vectorSupport.hpp" #include "runtime/abstract_vm_version.hpp" #include "runtime/atomic.hpp" #include "runtime/basicLock.hpp" #include "runtime/continuation.hpp" -#include "runtime/continuationEntry.inline.hpp" +#include "runtime/continuationEntry.hpp" #include "runtime/continuationJavaClasses.inline.hpp" #include "runtime/deoptimization.hpp" -#include "runtime/flags/allFlags.hpp" -#include "runtime/flags/debug_globals.hpp" #include "runtime/flags/flagSetting.hpp" -#include "runtime/flags/jvmFlag.hpp" -#include "runtime/flags/jvmFlagAccess.hpp" #include "runtime/frame.inline.hpp" #include "runtime/globals.hpp" -#include "runtime/globals_extension.hpp" #include "runtime/globals_shared.hpp" #include "runtime/handles.inline.hpp" #include "runtime/handshake.hpp" #include "runtime/icache.hpp" -#include "runtime/java.hpp" #include "runtime/javaFrameAnchor.hpp" -#include "runtime/javaThread.inline.hpp" -#include "runtime/lightweightSynchronizer.hpp" -#include "runtime/lockStack.inline.hpp" +#include "runtime/javaThread.hpp" +#include "runtime/lockStack.hpp" #include "runtime/monitorChunk.hpp" #include "runtime/mutex.hpp" #include "runtime/mutexLocker.hpp" #include "runtime/nonJavaThread.hpp" -#include "runtime/objectMonitor.inline.hpp" +#include "runtime/objectMonitor.hpp" #include "runtime/orderAccess.hpp" -#include "runtime/os.inline.hpp" +#include "runtime/os.hpp" #include "runtime/osInfo.hpp" -#include "runtime/osThread.hpp" -#include "runtime/osThreadBase.hpp" #include "runtime/park.hpp" -#include "runtime/perfData.hpp" #include "runtime/perfDataTypes.hpp" -#include "runtime/perfMemory.hpp" -#include "runtime/prefetch.inline.hpp" #include "runtime/registerMap.hpp" #include "runtime/safepoint.hpp" #include "runtime/safepointMechanism.hpp" @@ -387,17 +221,15 @@ #include "runtime/smallRegisterMap.inline.hpp" #include "runtime/stackChunkFrameStream.hpp" #include "runtime/stackOverflow.hpp" -#include "runtime/stackWatermark.hpp" #include "runtime/stackWatermarkKind.hpp" -#include "runtime/stackWatermarkSet.inline.hpp" +#include "runtime/stackWatermarkSet.hpp" #include "runtime/stubCodeGenerator.hpp" #include "runtime/stubDeclarations.hpp" #include "runtime/stubInfo.hpp" #include "runtime/stubRoutines.hpp" #include "runtime/suspendResumeManager.hpp" -#include "runtime/synchronizer.hpp" #include "runtime/task.hpp" -#include "runtime/thread.inline.hpp" +#include "runtime/thread.hpp" #include "runtime/threadHeapSampler.hpp" #include "runtime/threadIdentifier.hpp" #include "runtime/threadLocalStorage.hpp" @@ -408,9 +240,6 @@ #include "runtime/vmOperation.hpp" #include "runtime/vmThread.hpp" #include "runtime/vm_version.hpp" -#include "services/memoryManager.hpp" -#include "services/memoryPool.hpp" -#include "services/memoryService.hpp" #include "services/memoryUsage.hpp" #include "utilities/accessFlags.hpp" #include "utilities/align.hpp" @@ -436,21 +265,16 @@ #include "utilities/globalDefinitions.hpp" #include "utilities/growableArray.hpp" #include "utilities/linkedlist.hpp" -#include "utilities/lockFreeStack.hpp" #include "utilities/macros.hpp" -#include "utilities/nonblockingQueue.hpp" #include "utilities/numberSeq.hpp" #include "utilities/ostream.hpp" -#include "utilities/pair.hpp" #include "utilities/population_count.hpp" #include "utilities/powerOfTwo.hpp" -#include "utilities/rbTree.hpp" #include "utilities/resizeableResourceHash.hpp" #include "utilities/resourceHash.hpp" #include "utilities/rotate_bits.hpp" #include "utilities/singleWriterSynchronizer.hpp" #include "utilities/sizes.hpp" -#include "utilities/stack.hpp" #include "utilities/tableStatistics.hpp" #include "utilities/ticks.hpp" #include "utilities/unsigned5.hpp" From 9cae4f5c37ef0b6325e571e4a81c6c2c57a45fe7 Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Mon, 11 Aug 2025 09:18:32 +0000 Subject: [PATCH 18/19] variants --- .../PrecompiledHeaders.java | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java index fdecc296f058a..addbc49dffa49 100644 --- a/src/utils/PrecompiledHeaders/PrecompiledHeaders.java +++ b/src/utils/PrecompiledHeaders/PrecompiledHeaders.java @@ -24,11 +24,13 @@ import java.io.IOException; import java.io.UncheckedIOException; +import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.function.Function; import java.util.function.Predicate; @@ -41,7 +43,6 @@ public final class PrecompiledHeaders { private static final Pattern DEPENDENCY_LINE_PATTERN = Pattern.compile("\\s*(\\S+.hpp)\\s*\\\\?"); private static final Pattern INCLUDE_PATTERN = Pattern.compile("^#\\s*include \"([^\"]+)\"$"); - private static final String OBJS_PATH = "hotspot/variant-server/libjvm/objs"; private static final String PRECOMPILED_HPP_NAME = "precompiled.hpp"; private static final String PRECOMPILED_HPP_PATH = "src/hotspot/share/precompiled/" + PRECOMPILED_HPP_NAME; private static final String INLINE_HPP_SUFFIX = ".inline.hpp"; @@ -67,14 +68,15 @@ public static void main(String[] args) throws IOException { throw new IllegalArgumentException("jdk_root is not a directory: " + jdkRoot); } - Path objsPath = buildRoot.resolve(OBJS_PATH); - if (!Files.isDirectory(objsPath)) { - throw new IllegalArgumentException("Could not find 'objs' directory: " + objsPath); + Path hotspotBuild = buildRoot.resolve("hotspot"); + if (!Files.isDirectory(hotspotBuild)) { + throw new IllegalArgumentException("Could not find 'hotspot' directory: " + hotspotBuild); } + Path objs = getVariantDirectory(hotspotBuild).resolve("objs"); // Count inclusion times for each header Map occurrences; - try (Stream files = Files.list(objsPath)) { + try (Stream files = Files.list(objs)) { occurrences = files .filter(file -> file.getFileName().toString().endsWith(".d")) .filter(Predicate.not(file -> file.getFileName().toString().startsWith("BUILD_LIBJVM"))) @@ -133,4 +135,18 @@ public static void main(String[] args) throws IOException { StandardOpenOption.APPEND); } + private static Path getVariantDirectory(Path hotspotBuild) { + try (DirectoryStream stream = Files.newDirectoryStream(hotspotBuild, "variant-*")) { + for (Path variant : stream) { + Path libjvmDirectory = variant.resolve("libjvm"); + if (Files.isDirectory(libjvmDirectory)) { + return libjvmDirectory; + } + } + } catch (IOException exception) { + throw new UncheckedIOException(exception); + } + throw new IllegalArgumentException("'variant-*/libjvm' not found in " + hotspotBuild); + } + } From c0b8c27739a8d442d8fdb59685cc950487e6e9dc Mon Sep 17 00:00:00 2001 From: Francesco Andreuzzi Date: Tue, 12 Aug 2025 11:29:27 +0000 Subject: [PATCH 19/19] conditional includes --- src/hotspot/share/precompiled/precompiled.hpp | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/src/hotspot/share/precompiled/precompiled.hpp b/src/hotspot/share/precompiled/precompiled.hpp index 49df00e4929de..6750ad0877efa 100644 --- a/src/hotspot/share/precompiled/precompiled.hpp +++ b/src/hotspot/share/precompiled/precompiled.hpp @@ -282,3 +282,100 @@ #include "utilities/vmEnums.hpp" #include "utilities/waitBarrier.hpp" #include "utilities/waitBarrier_generic.hpp" + +#ifdef COMPILER2 +#include "asm/assembler.hpp" +#include "asm/codeBuffer.hpp" +#include "cds/cds_globals.hpp" +#include "classfile/vmIntrinsics.hpp" +#include "code/codeBlob.hpp" +#include "code/debugInfo.hpp" +#include "code/location.hpp" +#include "code/nmethod.hpp" +#include "code/oopRecorder.hpp" +#include "code/pcDesc.hpp" +#include "code/relocInfo.hpp" +#include "compiler/compiler_globals.hpp" +#include "jfr/support/jfrIntrinsics.hpp" +#include "logging/logDecorations.hpp" +#include "logging/logHandle.hpp" +#include "logging/logMessage.hpp" +#include "logging/logMessageBuffer.hpp" +#include "logging/logStream.hpp" +#include "opto/adlcVMDeps.hpp" +#include "opto/c2_globals.hpp" +#include "runtime/nonJavaThread.hpp" +#include "runtime/stubDeclarations.hpp" +#include "runtime/stubInfo.hpp" +#include "utilities/resizeableResourceHash.hpp" +#endif + +#if INCLUDE_JFR +#include "asm/assembler.hpp" +#include "asm/codeBuffer.hpp" +#include "cds/cds_globals.hpp" +#include "classfile/vmIntrinsics.hpp" +#include "code/codeBlob.hpp" +#include "code/nmethod.hpp" +#include "code/oopRecorder.hpp" +#include "code/pcDesc.hpp" +#include "code/relocInfo.hpp" +#include "code/vmreg.inline.hpp" +#include "compiler/compiler_globals.hpp" +#include "gc/epsilon/epsilon_globals.hpp" +#include "gc/shared/gc_globals.hpp" +#include "jfr/jfr.hpp" +#include "jfr/periodic/sampling/jfrCPUTimeThreadSampler.hpp" +#include "jfr/periodic/sampling/jfrSampleRequest.hpp" +#include "jfr/recorder/checkpoint/types/traceid/jfrTraceId.hpp" +#include "jfr/recorder/checkpoint/types/traceid/jfrTraceIdMacros.hpp" +#include "jfr/recorder/storage/jfrBuffer.hpp" +#include "jfr/support/jfrIntrinsics.hpp" +#include "jfr/support/jfrKlassExtension.hpp" +#include "jfr/support/jfrThreadExtension.hpp" +#include "jfr/support/jfrThreadId.hpp" +#include "jfr/support/jfrThreadLocal.hpp" +#include "jfr/support/jfrTraceIdExtension.hpp" +#include "jfr/utilities/jfrAllocation.hpp" +#include "jfr/utilities/jfrBlob.hpp" +#include "jfr/utilities/jfrRefCountPointer.hpp" +#include "jfr/utilities/jfrTime.hpp" +#include "jfr/utilities/jfrTypes.hpp" +#include "logging/logDecorations.hpp" +#include "logging/logHandle.hpp" +#include "logging/logMessage.hpp" +#include "logging/logMessageBuffer.hpp" +#include "logging/logStream.hpp" +#include "runtime/nonJavaThread.hpp" +#include "runtime/stubDeclarations.hpp" +#include "runtime/stubInfo.hpp" +#include "utilities/resizeableResourceHash.hpp" +#endif + +#if INCLUDE_G1GC +#include "asm/codeBuffer.hpp" +#include "code/oopRecorder.hpp" +#include "code/relocInfo.hpp" +#include "compiler/compiler_globals.hpp" +#include "logging/logDecorations.hpp" +#include "logging/logMessageBuffer.hpp" +#include "utilities/resizeableResourceHash.hpp" +#endif + +#if INCLUDE_SHENANDOAHGC +#include "asm/codeBuffer.hpp" +#include "code/codeBlob.hpp" +#include "code/oopRecorder.hpp" +#include "code/relocInfo.hpp" +#include "compiler/compiler_globals.hpp" +#include "logging/logDecorations.hpp" +#include "logging/logHandle.hpp" +#include "logging/logMessage.hpp" +#include "logging/logMessageBuffer.hpp" +#include "logging/logStream.hpp" +#include "utilities/resizeableResourceHash.hpp" +#endif + +#if INCLUDE_ZGC +#include "compiler/compiler_globals.hpp" +#endif