mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-06 01:19:28 +01:00
Compare commits
36 Commits
8f8fda7c80
...
4d696d0d0e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d696d0d0e | ||
|
|
ee0b8a72c6 | ||
|
|
c09167df60 | ||
|
|
674cc3eeca | ||
|
|
7e91d34f3e | ||
|
|
15f2538943 | ||
|
|
13e32bf166 | ||
|
|
6db1c4f5b9 | ||
|
|
c8b30da7ef | ||
|
|
5ec5a6ea6c | ||
|
|
8e653d394e | ||
|
|
ef7532e7e6 | ||
|
|
b19163b107 | ||
|
|
c7aa10339a | ||
|
|
c55287d197 | ||
|
|
45dcc0e7e2 | ||
|
|
2735140147 | ||
|
|
33dda887d9 | ||
|
|
6f03c7808d | ||
|
|
c4ec983da5 | ||
|
|
bcbdf90fce | ||
|
|
b5970c97bd | ||
|
|
91c5bd550a | ||
|
|
df0165bd69 | ||
|
|
16699a394d | ||
|
|
14000a25e6 | ||
|
|
317daa3c00 | ||
|
|
bb867ed23e | ||
|
|
771253e285 | ||
|
|
63a10e0099 | ||
|
|
828498c54b | ||
|
|
dbf0742bf2 | ||
|
|
019df4d89c | ||
|
|
db2cd1a4e0 | ||
|
|
04c0f8d359 | ||
|
|
4856344668 |
@@ -1,7 +1,7 @@
|
||||
[general]
|
||||
project=jdk
|
||||
jbs=JDK
|
||||
version=26
|
||||
version=27
|
||||
|
||||
[checks]
|
||||
error=author,committer,reviewers,merge,issues,executable,symlink,message,hg-tag,whitespace,problemlists,copyright
|
||||
|
||||
@@ -1037,8 +1037,8 @@ running destructors at exit can lead to problems.</p>
|
||||
<p>Some of the approaches used in HotSpot to avoid dynamic
|
||||
initialization include:</p>
|
||||
<ul>
|
||||
<li><p>Use the <code>Deferred<T></code> class template. Add a call
|
||||
to its initialization function at an appropriate place during VM
|
||||
<li><p>Use the <code>DeferredStatic<T></code> class template. Add
|
||||
a call to its initialization function at an appropriate place during VM
|
||||
initialization. The underlying object is never destroyed.</p></li>
|
||||
<li><p>For objects of class type, use a variable whose value is a
|
||||
pointer to the class, initialized to <code>nullptr</code>. Provide an
|
||||
|
||||
@@ -954,7 +954,7 @@ destructors at exit can lead to problems.
|
||||
Some of the approaches used in HotSpot to avoid dynamic initialization
|
||||
include:
|
||||
|
||||
* Use the `Deferred<T>` class template. Add a call to its initialization
|
||||
* Use the `DeferredStatic<T>` class template. Add a call to its initialization
|
||||
function at an appropriate place during VM initialization. The underlying
|
||||
object is never destroyed.
|
||||
|
||||
|
||||
@@ -125,13 +125,6 @@ define SetupBundleFileBody
|
||||
&& $(TAR) cf - -$(TAR_INCLUDE_PARAM) $$($1_$$d_LIST_FILE) \
|
||||
$(TAR_IGNORE_EXIT_VALUE) ) \
|
||||
| ( $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) && $(TAR) xf - )$$(NEWLINE) )
|
||||
# Rename stripped pdb files
|
||||
ifeq ($(call isTargetOs, windows)+$(SHIP_DEBUG_SYMBOLS), true+public)
|
||||
for f in `$(FIND) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) -name "*.stripped.pdb"`; do \
|
||||
$(ECHO) Renaming $$$${f} to $$$${f%stripped.pdb}pdb $(LOG_INFO); \
|
||||
$(MV) $$$${f} $$$${f%stripped.pdb}pdb; \
|
||||
done
|
||||
endif
|
||||
# Unzip any zipped debuginfo files
|
||||
ifeq ($$($1_UNZIP_DEBUGINFO), true)
|
||||
for f in `$(FIND) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) -name "*.diz"`; do \
|
||||
@@ -222,14 +215,6 @@ ifneq ($(filter product-bundles% legacy-bundles, $(MAKECMDGOALS)), )
|
||||
ifeq ($(call isTargetOs, windows), true)
|
||||
ifeq ($(SHIP_DEBUG_SYMBOLS), )
|
||||
JDK_SYMBOLS_EXCLUDE_PATTERN := %.pdb
|
||||
else
|
||||
ifeq ($(SHIP_DEBUG_SYMBOLS), public)
|
||||
JDK_SYMBOLS_EXCLUDE_PATTERN := \
|
||||
$(filter-out \
|
||||
%.stripped.pdb, \
|
||||
$(filter %.pdb, $(ALL_JDK_FILES)) \
|
||||
)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -244,10 +229,7 @@ ifneq ($(filter product-bundles% legacy-bundles, $(MAKECMDGOALS)), )
|
||||
)
|
||||
|
||||
JDK_SYMBOLS_BUNDLE_FILES := \
|
||||
$(filter-out \
|
||||
%.stripped.pdb, \
|
||||
$(call FindFiles, $(SYMBOLS_IMAGE_DIR)) \
|
||||
)
|
||||
$(call FindFiles, $(SYMBOLS_IMAGE_DIR))
|
||||
|
||||
TEST_DEMOS_BUNDLE_FILES := $(filter $(JDK_DEMOS_IMAGE_HOMEDIR)/demo/%, \
|
||||
$(ALL_JDK_DEMOS_FILES))
|
||||
@@ -267,14 +249,6 @@ ifneq ($(filter product-bundles% legacy-bundles, $(MAKECMDGOALS)), )
|
||||
ifeq ($(call isTargetOs, windows), true)
|
||||
ifeq ($(SHIP_DEBUG_SYMBOLS), )
|
||||
JRE_SYMBOLS_EXCLUDE_PATTERN := %.pdb
|
||||
else
|
||||
ifeq ($(SHIP_DEBUG_SYMBOLS), public)
|
||||
JRE_SYMBOLS_EXCLUDE_PATTERN := \
|
||||
$(filter-out \
|
||||
%.stripped.pdb, \
|
||||
$(filter %.pdb, $(ALL_JRE_FILES)) \
|
||||
)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
@@ -282,29 +282,33 @@ else
|
||||
endif
|
||||
CMDS_TARGET_SUBDIR := bin
|
||||
|
||||
# Param 1 - either JDK or JRE
|
||||
# Copy debug info files into symbols bundle.
|
||||
# In case of Windows and --with-external-symbols-in-bundles=public, take care to remove *.stripped.pdb files
|
||||
SetupCopyDebuginfo = \
|
||||
$(foreach m, $(ALL_$1_MODULES), \
|
||||
$(eval dbgfiles := $(call FindDebuginfoFiles, $(SUPPORT_OUTPUTDIR)/modules_libs/$m)) \
|
||||
$(eval dbgfiles := $(if $(filter true+public,$(call isTargetOs,windows)+$(SHIP_DEBUG_SYMBOLS)), \
|
||||
$(filter-out %.stripped.pdb,$(dbgfiles)),$(dbgfiles)) \
|
||||
) \
|
||||
$(eval $(call SetupCopyFiles, COPY_$1_LIBS_DEBUGINFO_$m, \
|
||||
SRC := $(SUPPORT_OUTPUTDIR)/modules_libs/$m, \
|
||||
DEST := $($1_IMAGE_DIR)/$(LIBS_TARGET_SUBDIR), \
|
||||
FILES := $(call FindDebuginfoFiles, \
|
||||
$(SUPPORT_OUTPUTDIR)/modules_libs/$m), \
|
||||
FILES := $(dbgfiles), \
|
||||
)) \
|
||||
$(eval $1_TARGETS += $$(COPY_$1_LIBS_DEBUGINFO_$m)) \
|
||||
$(eval dbgfiles := $(call FindDebuginfoFiles, $(SUPPORT_OUTPUTDIR)/modules_cmds/$m)) \
|
||||
$(eval dbgfiles := $(if $(filter true+public,$(call isTargetOs,windows)+$(SHIP_DEBUG_SYMBOLS)), \
|
||||
$(filter-out %.stripped.pdb,$(dbgfiles)),$(dbgfiles)) \
|
||||
) \
|
||||
$(eval $(call SetupCopyFiles, COPY_$1_CMDS_DEBUGINFO_$m, \
|
||||
SRC := $(SUPPORT_OUTPUTDIR)/modules_cmds/$m, \
|
||||
DEST := $($1_IMAGE_DIR)/$(CMDS_TARGET_SUBDIR), \
|
||||
FILES := $(call FindDebuginfoFiles, \
|
||||
$(SUPPORT_OUTPUTDIR)/modules_cmds/$m), \
|
||||
FILES := $(dbgfiles), \
|
||||
)) \
|
||||
$(eval $1_TARGETS += $$(COPY_$1_CMDS_DEBUGINFO_$m)) \
|
||||
)
|
||||
|
||||
# No space before argument to avoid having to put $(strip ) everywhere in
|
||||
# implementation above.
|
||||
$(call SetupCopyDebuginfo,JDK)
|
||||
$(call SetupCopyDebuginfo,JRE)
|
||||
# No space before argument to avoid having to put $(strip ) everywhere in implementation above.
|
||||
$(call SetupCopyDebuginfo,SYMBOLS)
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -873,7 +873,7 @@ define SetupRunJtregTestBody
|
||||
$1_JTREG_BASIC_OPTIONS += -testThreadFactoryPath:$$(JTREG_TEST_THREAD_FACTORY_JAR)
|
||||
$1_JTREG_BASIC_OPTIONS += -testThreadFactory:$$(JTREG_TEST_THREAD_FACTORY)
|
||||
$1_JTREG_BASIC_OPTIONS += $$(addprefix $$(JTREG_PROBLEM_LIST_PREFIX), $$(wildcard \
|
||||
$$(addprefix $$($1_TEST_ROOT)/, ProblemList-$$(JTREG_TEST_THREAD_FACTORY).txt) \
|
||||
$$(addprefix $$($1_TEST_ROOT)/, ProblemList-$$(JTREG_TEST_THREAD_FACTORY).txt) \
|
||||
))
|
||||
endif
|
||||
|
||||
@@ -881,8 +881,8 @@ define SetupRunJtregTestBody
|
||||
AGENT := $$(LIBRARY_PREFIX)JvmtiStressAgent$$(SHARED_LIBRARY_SUFFIX)=$$(JTREG_JVMTI_STRESS_AGENT)
|
||||
$1_JTREG_BASIC_OPTIONS += -javaoption:'-agentpath:$(TEST_IMAGE_DIR)/hotspot/jtreg/native/$$(AGENT)'
|
||||
$1_JTREG_BASIC_OPTIONS += $$(addprefix $$(JTREG_PROBLEM_LIST_PREFIX), $$(wildcard \
|
||||
$$(addprefix $$($1_TEST_ROOT)/, ProblemList-jvmti-stress-agent.txt) \
|
||||
))
|
||||
$$(addprefix $$($1_TEST_ROOT)/, ProblemList-jvmti-stress-agent.txt) \
|
||||
))
|
||||
endif
|
||||
|
||||
|
||||
@@ -1092,7 +1092,7 @@ define SetupRunJtregTestBody
|
||||
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR) \
|
||||
$$($1_TEST_TMP_DIR))
|
||||
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/jtreg, \
|
||||
$$(COV_ENVIRONMENT) $$($1_COMMAND_LINE) \
|
||||
$$(COV_ENVIRONMENT) $$($1_COMMAND_LINE) \
|
||||
)
|
||||
|
||||
$1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/text/stats.txt
|
||||
@@ -1102,11 +1102,11 @@ define SetupRunJtregTestBody
|
||||
$$(call LogWarn, Test report is stored in $$(strip \
|
||||
$$(subst $$(TOPDIR)/, , $$($1_TEST_RESULTS_DIR))))
|
||||
|
||||
# Read jtreg documentation to learn on the test stats categories:
|
||||
# https://github.com/openjdk/jtreg/blob/master/src/share/doc/javatest/regtest/faq.md#what-do-all-those-numbers-in-the-test-results-line-mean
|
||||
# In jtreg, "skipped:" category accounts for tests that threw jtreg.SkippedException at runtime.
|
||||
# At the same time these tests contribute to "passed:" tests.
|
||||
# In here we don't want that and so we substract number of "skipped:" from "passed:".
|
||||
# Read jtreg documentation to learn on the test stats categories:
|
||||
# https://github.com/openjdk/jtreg/blob/master/src/share/doc/javatest/regtest/faq.md#what-do-all-those-numbers-in-the-test-results-line-mean
|
||||
# In jtreg, "skipped:" category accounts for tests that threw jtreg.SkippedException at runtime.
|
||||
# At the same time these tests contribute to "passed:" tests.
|
||||
# In here we don't want that and so we substract number of "skipped:" from "passed:".
|
||||
|
||||
$$(if $$(wildcard $$($1_RESULT_FILE)), \
|
||||
$$(eval $1_PASSED_AND_RUNTIME_SKIPPED := $$(shell $$(AWK) '{ gsub(/[,;]/, ""); \
|
||||
|
||||
@@ -229,6 +229,11 @@ define SetupLinkerFlags
|
||||
# TOOLCHAIN_TYPE plus OPENJDK_TARGET_OS
|
||||
ifeq ($$($1_LINK_TIME_OPTIMIZATION), true)
|
||||
$1_EXTRA_LDFLAGS += $(LDFLAGS_LTO)
|
||||
# Instruct the ld64 linker not to delete the temporary object file
|
||||
# generated during Link Time Optimization
|
||||
ifeq ($(call isTargetOs, macosx), true)
|
||||
$1_EXTRA_LDFLAGS += -Wl,-object_path_lto,$$($1_OBJECT_DIR)/$$($1_NAME)_lto_helper.o
|
||||
endif
|
||||
endif
|
||||
|
||||
$1_EXTRA_LDFLAGS += $$($1_LDFLAGS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LDFLAGS_$(OPENJDK_TARGET_OS)) \
|
||||
|
||||
@@ -26,17 +26,17 @@
|
||||
# Default version, product, and vendor information to use,
|
||||
# unless overridden by configure
|
||||
|
||||
DEFAULT_VERSION_FEATURE=26
|
||||
DEFAULT_VERSION_FEATURE=27
|
||||
DEFAULT_VERSION_INTERIM=0
|
||||
DEFAULT_VERSION_UPDATE=0
|
||||
DEFAULT_VERSION_PATCH=0
|
||||
DEFAULT_VERSION_EXTRA1=0
|
||||
DEFAULT_VERSION_EXTRA2=0
|
||||
DEFAULT_VERSION_EXTRA3=0
|
||||
DEFAULT_VERSION_DATE=2026-03-17
|
||||
DEFAULT_VERSION_CLASSFILE_MAJOR=70 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
||||
DEFAULT_VERSION_DATE=2026-09-15
|
||||
DEFAULT_VERSION_CLASSFILE_MAJOR=71 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
||||
DEFAULT_VERSION_CLASSFILE_MINOR=0
|
||||
DEFAULT_VERSION_DOCS_API_SINCE=11
|
||||
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="25 26"
|
||||
DEFAULT_JDK_SOURCE_TARGET_VERSION=26
|
||||
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="25 26 27"
|
||||
DEFAULT_JDK_SOURCE_TARGET_VERSION=27
|
||||
DEFAULT_PROMOTED_VERSION_PRE=ea
|
||||
|
||||
@@ -151,6 +151,12 @@ JVM_STRIPFLAGS ?= $(STRIPFLAGS)
|
||||
# This source set is reused so save in cache.
|
||||
$(call FillFindCache, $(JVM_SRC_DIRS))
|
||||
|
||||
ifeq ($(SHIP_DEBUG_SYMBOLS), full)
|
||||
CFLAGS_SHIP_DEBUGINFO := -DSHIP_DEBUGINFO_FULL
|
||||
else ifeq ($(SHIP_DEBUG_SYMBOLS), public)
|
||||
CFLAGS_SHIP_DEBUGINFO := -DSHIP_DEBUGINFO_PUBLIC
|
||||
endif
|
||||
|
||||
ifeq ($(call isTargetOs, windows), true)
|
||||
ifeq ($(STATIC_LIBS), true)
|
||||
WIN_EXPORT_FILE := $(JVM_OUTPUTDIR)/static-win-exports.def
|
||||
@@ -158,10 +164,6 @@ ifeq ($(call isTargetOs, windows), true)
|
||||
WIN_EXPORT_FILE := $(JVM_OUTPUTDIR)/win-exports.def
|
||||
endif
|
||||
|
||||
ifeq ($(SHIP_DEBUG_SYMBOLS), public)
|
||||
CFLAGS_STRIPPED_DEBUGINFO := -DHAS_STRIPPED_DEBUGINFO
|
||||
endif
|
||||
|
||||
JVM_LDFLAGS += -def:$(WIN_EXPORT_FILE)
|
||||
endif
|
||||
|
||||
@@ -187,7 +189,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJVM, \
|
||||
CFLAGS := $(JVM_CFLAGS), \
|
||||
abstract_vm_version.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
|
||||
arguments.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
|
||||
whitebox.cpp_CXXFLAGS := $(CFLAGS_STRIPPED_DEBUGINFO), \
|
||||
whitebox.cpp_CXXFLAGS := $(CFLAGS_SHIP_DEBUGINFO), \
|
||||
DISABLED_WARNINGS_gcc := $(DISABLED_WARNINGS_gcc), \
|
||||
DISABLED_WARNINGS_gcc_ad_$(HOTSPOT_TARGET_CPU_ARCH).cpp := nonnull, \
|
||||
DISABLED_WARNINGS_gcc_bytecodeInterpreter.cpp := unused-label, \
|
||||
|
||||
@@ -164,6 +164,24 @@ ifeq ($(ENABLE_HEADLESS_ONLY), false)
|
||||
|
||||
ifeq ($(USE_EXTERNAL_LIBPNG), false)
|
||||
LIBSPLASHSCREEN_HEADER_DIRS += libsplashscreen/libpng
|
||||
LIBSPLASHSCREEN_CFLAGS += -DPNG_NO_MMX_CODE -DPNG_ARM_NEON_OPT=0
|
||||
-DPNG_ARM_NEON_IMPLEMENTATION=0 -DPNG_LOONGARCH_LSX_OPT=0
|
||||
|
||||
ifeq ($(call isTargetOs, linux)+$(call isTargetCpuArch, ppc), true+true)
|
||||
LIBSPLASHSCREEN_CFLAGS += -DPNG_POWERPC_VSX_OPT=0
|
||||
endif
|
||||
|
||||
# The libpng bundled with jdk is a reduced version which does not
|
||||
# contain .png_init_filter_functions_vsx.
|
||||
# Therefore we need to disable PNG_POWERPC_VSX_OPT explicitly by setting
|
||||
# it to 0. If this define is not set, it would be automatically set to 2,
|
||||
# because
|
||||
# "#if defined(__PPC64__) && defined(__ALTIVEC__) && defined(__VSX__)"
|
||||
# expands to true. This would results in the fact that
|
||||
# .png_init_filter_functions_vsx is needed in libpng.
|
||||
ifeq ($(call isTargetOs, aix), true)
|
||||
LIBSPLASHSCREEN_CFLAGS += -DPNG_POWERPC_VSX_OPT=0
|
||||
endif
|
||||
else
|
||||
LIBSPLASHSCREEN_EXCLUDES += libpng
|
||||
endif
|
||||
@@ -176,25 +194,7 @@ ifeq ($(ENABLE_HEADLESS_ONLY), false)
|
||||
LIBSPLASHSCREEN_STATIC_LIB_EXCLUDE_OBJS += $(LIBZIP_OBJS)
|
||||
endif
|
||||
|
||||
LIBSPLASHSCREEN_CFLAGS += -DSPLASHSCREEN -DPNG_NO_MMX_CODE \
|
||||
-DPNG_ARM_NEON_OPT=0 -DPNG_ARM_NEON_IMPLEMENTATION=0 \
|
||||
-DPNG_LOONGARCH_LSX_OPT=0
|
||||
|
||||
ifeq ($(call isTargetOs, linux)+$(call isTargetCpuArch, ppc), true+true)
|
||||
LIBSPLASHSCREEN_CFLAGS += -DPNG_POWERPC_VSX_OPT=0
|
||||
endif
|
||||
|
||||
# The external libpng submitted in the jdk is a reduced version
|
||||
# which does not contain .png_init_filter_functions_vsx.
|
||||
# Therefore we need to disable PNG_POWERPC_VSX_OPT explicitly by setting
|
||||
# it to 0. If this define is not set, it would be automatically set to 2,
|
||||
# because
|
||||
# "#if defined(__PPC64__) && defined(__ALTIVEC__) && defined(__VSX__)"
|
||||
# expands to true. This would results in the fact that
|
||||
# .png_init_filter_functions_vsx is needed in libpng.
|
||||
ifeq ($(call isTargetOs, aix), true)
|
||||
LIBSPLASHSCREEN_CFLAGS += -DPNG_POWERPC_VSX_OPT=0
|
||||
endif
|
||||
LIBSPLASHSCREEN_CFLAGS += -DSPLASHSCREEN
|
||||
|
||||
ifeq ($(call isTargetOs, macosx), true)
|
||||
# libsplashscreen on macosx does not use the unix code
|
||||
|
||||
@@ -85,7 +85,7 @@ void Relocation::pd_set_call_destination(address x) {
|
||||
} else {
|
||||
MacroAssembler::pd_patch_instruction(addr(), x);
|
||||
}
|
||||
assert(pd_call_destination(addr()) == x, "fail in reloc");
|
||||
guarantee(pd_call_destination(addr()) == x, "fail in reloc");
|
||||
}
|
||||
|
||||
void trampoline_stub_Relocation::pd_fix_owner_after_move() {
|
||||
|
||||
@@ -2493,8 +2493,8 @@ class StubGenerator: public StubCodeGenerator {
|
||||
__ vsetivli(x0, 4, Assembler::e32, Assembler::m1);
|
||||
__ vle32_v(res, from);
|
||||
|
||||
__ mv(t2, 52);
|
||||
__ blt(keylen, t2, L_aes128);
|
||||
__ mv(t2, 52); // key length could be only {11, 13, 15} * 4 = {44, 52, 60}
|
||||
__ bltu(keylen, t2, L_aes128);
|
||||
__ beq(keylen, t2, L_aes192);
|
||||
// Else we fallthrough to the biggest case (256-bit key size)
|
||||
|
||||
@@ -2572,8 +2572,8 @@ class StubGenerator: public StubCodeGenerator {
|
||||
__ vsetivli(x0, 4, Assembler::e32, Assembler::m1);
|
||||
__ vle32_v(res, from);
|
||||
|
||||
__ mv(t2, 52);
|
||||
__ blt(keylen, t2, L_aes128);
|
||||
__ mv(t2, 52); // key length could be only {11, 13, 15} * 4 = {44, 52, 60}
|
||||
__ bltu(keylen, t2, L_aes128);
|
||||
__ beq(keylen, t2, L_aes192);
|
||||
// Else we fallthrough to the biggest case (256-bit key size)
|
||||
|
||||
@@ -2606,6 +2606,223 @@ class StubGenerator: public StubCodeGenerator {
|
||||
return start;
|
||||
}
|
||||
|
||||
// Load big-endian 128-bit from memory.
|
||||
void be_load_counter_128(Register counter_hi, Register counter_lo, Register counter) {
|
||||
__ ld(counter_lo, Address(counter, 8)); // Load 128-bits from counter
|
||||
__ ld(counter_hi, Address(counter));
|
||||
__ rev8(counter_lo, counter_lo); // Convert big-endian to little-endian
|
||||
__ rev8(counter_hi, counter_hi);
|
||||
}
|
||||
|
||||
// Little-endian 128-bit + 64-bit -> 128-bit addition.
|
||||
void add_counter_128(Register counter_hi, Register counter_lo) {
|
||||
assert_different_registers(counter_hi, counter_lo, t0);
|
||||
__ addi(counter_lo, counter_lo, 1);
|
||||
__ seqz(t0, counter_lo); // Check for result overflow
|
||||
__ add(counter_hi, counter_hi, t0); // Add 1 if overflow otherwise 0
|
||||
}
|
||||
|
||||
// Store big-endian 128-bit to memory.
|
||||
void be_store_counter_128(Register counter_hi, Register counter_lo, Register counter) {
|
||||
assert_different_registers(counter_hi, counter_lo, t0, t1);
|
||||
__ rev8(t0, counter_lo); // Convert little-endian to big-endian
|
||||
__ rev8(t1, counter_hi);
|
||||
__ sd(t0, Address(counter, 8)); // Store 128-bits to counter
|
||||
__ sd(t1, Address(counter));
|
||||
}
|
||||
|
||||
void counterMode_AESCrypt(int round, Register in, Register out, Register key, Register counter,
|
||||
Register input_len, Register saved_encrypted_ctr, Register used_ptr) {
|
||||
// Algorithm:
|
||||
//
|
||||
// generate_aes_loadkeys();
|
||||
// load_counter_128(counter_hi, counter_lo, counter);
|
||||
//
|
||||
// L_next:
|
||||
// if (used >= BLOCK_SIZE) goto L_main_loop;
|
||||
//
|
||||
// L_encrypt_next:
|
||||
// *out = *in ^ saved_encrypted_ctr[used]);
|
||||
// out++; in++; used++; len--;
|
||||
// if (len == 0) goto L_exit;
|
||||
// goto L_next;
|
||||
//
|
||||
// L_main_loop:
|
||||
// if (len == 0) goto L_exit;
|
||||
// saved_encrypted_ctr = generate_aes_encrypt(counter);
|
||||
//
|
||||
// add_counter_128(counter_hi, counter_lo);
|
||||
// be_store_counter_128(counter_hi, counter_lo, counter);
|
||||
// used = 0;
|
||||
//
|
||||
// if(len < BLOCK_SIZE) goto L_encrypt_next;
|
||||
//
|
||||
// v_in = load_16Byte(in);
|
||||
// v_out = load_16Byte(out);
|
||||
// v_saved_encrypted_ctr = load_16Byte(saved_encrypted_ctr);
|
||||
// v_out = v_in ^ v_saved_encrypted_ctr;
|
||||
// out += BLOCK_SIZE;
|
||||
// in += BLOCK_SIZE;
|
||||
// len -= BLOCK_SIZE;
|
||||
// used = BLOCK_SIZE;
|
||||
// goto L_main_loop;
|
||||
//
|
||||
//
|
||||
// L_exit:
|
||||
// store(used);
|
||||
// result = input_len
|
||||
// return result;
|
||||
|
||||
const Register used = x28;
|
||||
const Register len = x29;
|
||||
const Register counter_hi = x30;
|
||||
const Register counter_lo = x31;
|
||||
const Register block_size = t2;
|
||||
|
||||
const unsigned int BLOCK_SIZE = 16;
|
||||
|
||||
VectorRegister working_vregs[] = {
|
||||
v1, v2, v3, v4, v5, v6, v7, v8,
|
||||
v9, v10, v11, v12, v13, v14, v15
|
||||
};
|
||||
|
||||
__ vsetivli(x0, 4, Assembler::e32, Assembler::m1);
|
||||
|
||||
__ lwu(used, Address(used_ptr));
|
||||
__ mv(len, input_len);
|
||||
__ mv(block_size, BLOCK_SIZE);
|
||||
|
||||
// load keys to working_vregs according to round
|
||||
generate_aes_loadkeys(key, working_vregs, round);
|
||||
|
||||
// 128-bit big-endian load
|
||||
be_load_counter_128(counter_hi, counter_lo, counter);
|
||||
|
||||
Label L_next, L_encrypt_next, L_main_loop, L_exit;
|
||||
// Check the last saved_encrypted_ctr used value, we fall through
|
||||
// to L_encrypt_next when the used value lower than block_size
|
||||
__ bind(L_next);
|
||||
__ bgeu(used, block_size, L_main_loop);
|
||||
|
||||
// There is still data left fewer than block_size after L_main_loop
|
||||
// or last used, we encrypt them one by one.
|
||||
__ bind(L_encrypt_next);
|
||||
__ add(t0, saved_encrypted_ctr, used);
|
||||
__ lbu(t1, Address(t0));
|
||||
__ lbu(t0, Address(in));
|
||||
__ xorr(t1, t1, t0);
|
||||
__ sb(t1, Address(out));
|
||||
__ addi(in, in, 1);
|
||||
__ addi(out, out, 1);
|
||||
__ addi(used, used, 1);
|
||||
__ subi(len, len, 1);
|
||||
__ beqz(len, L_exit);
|
||||
__ j(L_next);
|
||||
|
||||
// We will calculate the next saved_encrypted_ctr and encrypt the blocks of data
|
||||
// one by one until there is less than a full block remaining if len not zero
|
||||
__ bind(L_main_loop);
|
||||
__ beqz(len, L_exit);
|
||||
__ vle32_v(v16, counter);
|
||||
|
||||
// encrypt counter according to round
|
||||
generate_aes_encrypt(v16, working_vregs, round);
|
||||
|
||||
__ vse32_v(v16, saved_encrypted_ctr);
|
||||
|
||||
// 128-bit little-endian increment
|
||||
add_counter_128(counter_hi, counter_lo);
|
||||
// 128-bit big-endian store
|
||||
be_store_counter_128(counter_hi, counter_lo, counter);
|
||||
|
||||
__ mv(used, 0);
|
||||
// Check if we have a full block_size
|
||||
__ bltu(len, block_size, L_encrypt_next);
|
||||
|
||||
// We have one full block to encrypt at least
|
||||
__ vle32_v(v17, in);
|
||||
__ vxor_vv(v16, v16, v17);
|
||||
__ vse32_v(v16, out);
|
||||
__ add(out, out, block_size);
|
||||
__ add(in, in, block_size);
|
||||
__ sub(len, len, block_size);
|
||||
__ mv(used, block_size);
|
||||
__ j(L_main_loop);
|
||||
|
||||
__ bind(L_exit);
|
||||
__ sw(used, Address(used_ptr));
|
||||
__ mv(x10, input_len);
|
||||
__ leave();
|
||||
__ ret();
|
||||
};
|
||||
|
||||
// CTR AES crypt.
|
||||
// Arguments:
|
||||
//
|
||||
// Inputs:
|
||||
// c_rarg0 - source byte array address
|
||||
// c_rarg1 - destination byte array address
|
||||
// c_rarg2 - K (key) in little endian int array
|
||||
// c_rarg3 - counter vector byte array address
|
||||
// c_rarg4 - input length
|
||||
// c_rarg5 - saved encryptedCounter start
|
||||
// c_rarg6 - saved used length
|
||||
//
|
||||
// Output:
|
||||
// x10 - input length
|
||||
//
|
||||
address generate_counterMode_AESCrypt() {
|
||||
assert(UseZvkn, "need AES instructions (Zvkned extension) support");
|
||||
assert(UseAESCTRIntrinsics, "need AES instructions (Zvkned extension) support");
|
||||
assert(UseZbb, "need basic bit manipulation (Zbb extension) support");
|
||||
|
||||
__ align(CodeEntryAlignment);
|
||||
StubId stub_id = StubId::stubgen_counterMode_AESCrypt_id;
|
||||
StubCodeMark mark(this, stub_id);
|
||||
|
||||
const Register in = c_rarg0;
|
||||
const Register out = c_rarg1;
|
||||
const Register key = c_rarg2;
|
||||
const Register counter = c_rarg3;
|
||||
const Register input_len = c_rarg4;
|
||||
const Register saved_encrypted_ctr = c_rarg5;
|
||||
const Register used_len_ptr = c_rarg6;
|
||||
|
||||
const Register keylen = c_rarg7; // temporary register
|
||||
|
||||
const address start = __ pc();
|
||||
__ enter();
|
||||
|
||||
Label L_exit;
|
||||
__ beqz(input_len, L_exit);
|
||||
|
||||
Label L_aes128, L_aes192;
|
||||
// Compute #rounds for AES based on the length of the key array
|
||||
__ lwu(keylen, Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)));
|
||||
__ mv(t0, 52); // key length could be only {11, 13, 15} * 4 = {44, 52, 60}
|
||||
__ bltu(keylen, t0, L_aes128);
|
||||
__ beq(keylen, t0, L_aes192);
|
||||
// Else we fallthrough to the biggest case (256-bit key size)
|
||||
|
||||
// Note: the following function performs crypt with key += 15*16
|
||||
counterMode_AESCrypt(15, in, out, key, counter, input_len, saved_encrypted_ctr, used_len_ptr);
|
||||
|
||||
// Note: the following function performs crypt with key += 13*16
|
||||
__ bind(L_aes192);
|
||||
counterMode_AESCrypt(13, in, out, key, counter, input_len, saved_encrypted_ctr, used_len_ptr);
|
||||
|
||||
// Note: the following function performs crypt with key += 11*16
|
||||
__ bind(L_aes128);
|
||||
counterMode_AESCrypt(11, in, out, key, counter, input_len, saved_encrypted_ctr, used_len_ptr);
|
||||
|
||||
__ bind(L_exit);
|
||||
__ mv(x10, input_len);
|
||||
__ leave();
|
||||
__ ret();
|
||||
|
||||
return start;
|
||||
}
|
||||
|
||||
// code for comparing 8 characters of strings with Latin1 and Utf16 encoding
|
||||
void compare_string_8_x_LU(Register tmpL, Register tmpU,
|
||||
Register strL, Register strU, Label& DIFF) {
|
||||
@@ -6826,6 +7043,10 @@ static const int64_t right_3_bits = right_n_bits(3);
|
||||
StubRoutines::_aescrypt_decryptBlock = generate_aescrypt_decryptBlock();
|
||||
}
|
||||
|
||||
if (UseAESCTRIntrinsics) {
|
||||
StubRoutines::_counterMode_AESCrypt = generate_counterMode_AESCrypt();
|
||||
}
|
||||
|
||||
if (UsePoly1305Intrinsics) {
|
||||
StubRoutines::_poly1305_processBlocks = generate_poly1305_processBlocks();
|
||||
}
|
||||
|
||||
@@ -434,6 +434,15 @@ void VM_Version::c2_initialize() {
|
||||
warning("UseAESIntrinsics enabled, but UseAES not, enabling");
|
||||
UseAES = true;
|
||||
}
|
||||
|
||||
if (FLAG_IS_DEFAULT(UseAESCTRIntrinsics) && UseZbb) {
|
||||
FLAG_SET_DEFAULT(UseAESCTRIntrinsics, true);
|
||||
}
|
||||
|
||||
if (UseAESCTRIntrinsics && !UseZbb) {
|
||||
warning("Cannot enable UseAESCTRIntrinsics on cpu without UseZbb support.");
|
||||
FLAG_SET_DEFAULT(UseAESCTRIntrinsics, false);
|
||||
}
|
||||
} else {
|
||||
if (UseAES) {
|
||||
warning("AES instructions are not available on this CPU");
|
||||
@@ -443,11 +452,10 @@ void VM_Version::c2_initialize() {
|
||||
warning("AES intrinsics are not available on this CPU");
|
||||
FLAG_SET_DEFAULT(UseAESIntrinsics, false);
|
||||
}
|
||||
}
|
||||
|
||||
if (UseAESCTRIntrinsics) {
|
||||
warning("AES/CTR intrinsics are not available on this CPU");
|
||||
FLAG_SET_DEFAULT(UseAESCTRIntrinsics, false);
|
||||
if (UseAESCTRIntrinsics) {
|
||||
warning("Cannot enable UseAESCTRIntrinsics on cpu without UseZvkn support.");
|
||||
FLAG_SET_DEFAULT(UseAESCTRIntrinsics, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3386,6 +3386,11 @@ bool Matcher::match_rule_supported_vector(int opcode, int vlen, BasicType bt) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case Op_VectorBlend:
|
||||
if (UseAVX == 0 && size_in_bits < 128) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case Op_VectorTest:
|
||||
if (UseSSE < 4) {
|
||||
return false; // Implementation limitation
|
||||
|
||||
@@ -90,7 +90,7 @@ typedef CodeBuffer::csize_t csize_t; // file-local definition
|
||||
|
||||
// External buffer, in a predefined CodeBlob.
|
||||
// Important: The code_start must be taken exactly, and not realigned.
|
||||
CodeBuffer::CodeBuffer(CodeBlob* blob) DEBUG_ONLY(: Scrubber(this, sizeof(*this))) {
|
||||
CodeBuffer::CodeBuffer(const CodeBlob* blob) DEBUG_ONLY(: Scrubber(this, sizeof(*this))) {
|
||||
// Provide code buffer with meaningful name
|
||||
initialize_misc(blob->name());
|
||||
initialize(blob->content_begin(), blob->content_size());
|
||||
|
||||
@@ -672,7 +672,7 @@ class CodeBuffer: public StackObj DEBUG_ONLY(COMMA private Scrubber) {
|
||||
}
|
||||
|
||||
// (2) CodeBuffer referring to pre-allocated CodeBlob.
|
||||
CodeBuffer(CodeBlob* blob);
|
||||
CodeBuffer(const CodeBlob* blob);
|
||||
|
||||
// (3) code buffer allocating codeBlob memory for code & relocation
|
||||
// info but with lazy initialization. The name must be something
|
||||
|
||||
@@ -149,6 +149,10 @@ public:
|
||||
assert(is_loaded(), "must be loaded");
|
||||
return _flags;
|
||||
}
|
||||
|
||||
// Fetch Klass::access_flags.
|
||||
jint access_flags() { return flags().as_int(); }
|
||||
|
||||
bool has_finalizer() {
|
||||
assert(is_loaded(), "must be loaded");
|
||||
return _has_finalizer; }
|
||||
|
||||
@@ -216,15 +216,6 @@ jint ciKlass::modifier_flags() {
|
||||
)
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// ciKlass::access_flags
|
||||
jint ciKlass::access_flags() {
|
||||
assert(is_loaded(), "not loaded");
|
||||
GUARDED_VM_ENTRY(
|
||||
return get_Klass()->access_flags().as_unsigned_short();
|
||||
)
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// ciKlass::misc_flags
|
||||
klass_flags_t ciKlass::misc_flags() {
|
||||
|
||||
@@ -122,9 +122,6 @@ public:
|
||||
// Fetch modifier flags.
|
||||
jint modifier_flags();
|
||||
|
||||
// Fetch Klass::access_flags.
|
||||
jint access_flags();
|
||||
|
||||
// Fetch Klass::misc_flags.
|
||||
klass_flags_t misc_flags();
|
||||
|
||||
|
||||
@@ -154,6 +154,8 @@
|
||||
|
||||
#define JAVA_26_VERSION 70
|
||||
|
||||
#define JAVA_27_VERSION 71
|
||||
|
||||
void ClassFileParser::set_class_bad_constant_seen(short bad_constant) {
|
||||
assert((bad_constant == JVM_CONSTANT_Module ||
|
||||
bad_constant == JVM_CONSTANT_Package) && _major_version >= JAVA_9_VERSION,
|
||||
|
||||
@@ -439,7 +439,7 @@ class MethodFamily : public ResourceObj {
|
||||
StreamIndentor si(str, indent * 2);
|
||||
str->print("Selected method: ");
|
||||
print_method(str, _selected_target);
|
||||
Klass* method_holder = _selected_target->method_holder();
|
||||
InstanceKlass* method_holder = _selected_target->method_holder();
|
||||
if (!method_holder->is_interface()) {
|
||||
str->print(" : in superclass");
|
||||
}
|
||||
|
||||
@@ -1091,10 +1091,6 @@ void java_lang_Class::allocate_mirror(Klass* k, bool is_scratch, Handle protecti
|
||||
// Set the modifiers flag.
|
||||
u2 computed_modifiers = k->compute_modifier_flags();
|
||||
set_modifiers(mirror(), computed_modifiers);
|
||||
// Set the raw access_flags, this is used by reflection instead of modifier flags.
|
||||
// The Java code for array classes gets the access flags from the element type.
|
||||
assert(!k->is_array_klass() || k->access_flags().as_unsigned_short() == 0, "access flags are not set for arrays");
|
||||
set_raw_access_flags(mirror(), k->access_flags().as_unsigned_short());
|
||||
|
||||
InstanceMirrorKlass* mk = InstanceMirrorKlass::cast(mirror->klass());
|
||||
assert(oop_size(mirror()) == mk->instance_size(k), "should have been set");
|
||||
@@ -1103,6 +1099,8 @@ void java_lang_Class::allocate_mirror(Klass* k, bool is_scratch, Handle protecti
|
||||
|
||||
// It might also have a component mirror. This mirror must already exist.
|
||||
if (k->is_array_klass()) {
|
||||
// The Java code for array classes gets the access flags from the element type.
|
||||
set_raw_access_flags(mirror(), 0);
|
||||
if (k->is_typeArray_klass()) {
|
||||
BasicType type = TypeArrayKlass::cast(k)->element_type();
|
||||
if (is_scratch) {
|
||||
@@ -1129,6 +1127,8 @@ void java_lang_Class::allocate_mirror(Klass* k, bool is_scratch, Handle protecti
|
||||
// and java_mirror in this klass.
|
||||
} else {
|
||||
assert(k->is_instance_klass(), "Must be");
|
||||
// Set the raw access_flags, this is used by reflection instead of modifier flags.
|
||||
set_raw_access_flags(mirror(), InstanceKlass::cast(k)->access_flags().as_unsigned_short());
|
||||
initialize_mirror_fields(InstanceKlass::cast(k), mirror, protection_domain, classData, THREAD);
|
||||
if (HAS_PENDING_EXCEPTION) {
|
||||
// If any of the fields throws an exception like OOM remove the klass field
|
||||
|
||||
@@ -1146,17 +1146,6 @@ void SystemDictionary::load_shared_class_misc(InstanceKlass* ik, ClassLoaderData
|
||||
}
|
||||
}
|
||||
|
||||
#if INCLUDE_JFR
|
||||
void SystemDictionary::post_class_load_event(EventClassLoad* event, const InstanceKlass* k, const ClassLoaderData* init_cld) {
|
||||
assert(event != nullptr, "invariant");
|
||||
assert(k != nullptr, "invariant");
|
||||
event->set_loadedClass(k);
|
||||
event->set_definingClassLoader(k->class_loader_data());
|
||||
event->set_initiatingClassLoader(init_cld);
|
||||
event->commit();
|
||||
}
|
||||
#endif // INCLUDE_JFR
|
||||
|
||||
// This is much more lightweight than SystemDictionary::resolve_or_null
|
||||
// - There's only a single Java thread at this point. No need for placeholder.
|
||||
// - All supertypes of ik have been loaded
|
||||
@@ -1217,6 +1206,17 @@ void SystemDictionary::preload_class(Handle class_loader, InstanceKlass* ik, TRA
|
||||
|
||||
#endif // INCLUDE_CDS
|
||||
|
||||
#if INCLUDE_JFR
|
||||
void SystemDictionary::post_class_load_event(EventClassLoad* event, const InstanceKlass* k, const ClassLoaderData* init_cld) {
|
||||
assert(event != nullptr, "invariant");
|
||||
assert(k != nullptr, "invariant");
|
||||
event->set_loadedClass(k);
|
||||
event->set_definingClassLoader(k->class_loader_data());
|
||||
event->set_initiatingClassLoader(init_cld);
|
||||
event->commit();
|
||||
}
|
||||
#endif // INCLUDE_JFR
|
||||
|
||||
InstanceKlass* SystemDictionary::load_instance_class_impl(Symbol* class_name, Handle class_loader, TRAPS) {
|
||||
|
||||
if (class_loader.is_null()) {
|
||||
@@ -2172,9 +2172,10 @@ static bool is_always_visible_class(oop mirror) {
|
||||
return true; // primitive array
|
||||
}
|
||||
assert(klass->is_instance_klass(), "%s", klass->external_name());
|
||||
return klass->is_public() &&
|
||||
(InstanceKlass::cast(klass)->is_same_class_package(vmClasses::Object_klass()) || // java.lang
|
||||
InstanceKlass::cast(klass)->is_same_class_package(vmClasses::MethodHandle_klass())); // java.lang.invoke
|
||||
InstanceKlass* ik = InstanceKlass::cast(klass);
|
||||
return ik->is_public() &&
|
||||
(ik->is_same_class_package(vmClasses::Object_klass()) || // java.lang
|
||||
ik->is_same_class_package(vmClasses::MethodHandle_klass())); // java.lang.invoke
|
||||
}
|
||||
|
||||
// Find or construct the Java mirror (java.lang.Class instance) for
|
||||
|
||||
@@ -1498,6 +1498,40 @@ nmethod::nmethod(const nmethod &nm) : CodeBlob(nm._name, nm._kind, nm._size, nm.
|
||||
// - OOP table
|
||||
memcpy(consts_begin(), nm.consts_begin(), nm.data_end() - nm.consts_begin());
|
||||
|
||||
// Fix relocation
|
||||
RelocIterator iter(this);
|
||||
CodeBuffer src(&nm);
|
||||
CodeBuffer dst(this);
|
||||
while (iter.next()) {
|
||||
#ifdef USE_TRAMPOLINE_STUB_FIX_OWNER
|
||||
// After an nmethod is moved, some direct call sites may end up out of range.
|
||||
// CallRelocation::fix_relocation_after_move() assumes the target is always
|
||||
// reachable and does not check branch range. Calling it without range checks
|
||||
// could cause us to write an offset too large for the instruction.
|
||||
//
|
||||
// If a call site has a trampoline, we skip the normal call relocation. The
|
||||
// associated trampoline_stub_Relocation will handle the call and the
|
||||
// trampoline, including range checks and updating the branch as needed.
|
||||
//
|
||||
// If no trampoline exists, we can assume the call target is always
|
||||
// reachable and therefore within direct branch range, so calling
|
||||
// CallRelocation::fix_relocation_after_move() is safe.
|
||||
if (iter.reloc()->is_call()) {
|
||||
address trampoline = trampoline_stub_Relocation::get_trampoline_for(iter.reloc()->addr(), this);
|
||||
if (trampoline != nullptr) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
iter.reloc()->fix_relocation_after_move(&src, &dst);
|
||||
}
|
||||
|
||||
{
|
||||
MutexLocker ml(NMethodState_lock, Mutex::_no_safepoint_check_flag);
|
||||
clear_inline_caches();
|
||||
}
|
||||
|
||||
post_init();
|
||||
}
|
||||
|
||||
@@ -1521,25 +1555,6 @@ nmethod* nmethod::relocate(CodeBlobType code_blob_type) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Fix relocation
|
||||
RelocIterator iter(nm_copy);
|
||||
CodeBuffer src(this);
|
||||
CodeBuffer dst(nm_copy);
|
||||
while (iter.next()) {
|
||||
#ifdef USE_TRAMPOLINE_STUB_FIX_OWNER
|
||||
// Direct calls may no longer be in range and the use of a trampoline may now be required.
|
||||
// Instead, allow trampoline relocations to update their owners and perform the necessary checks.
|
||||
if (iter.reloc()->is_call()) {
|
||||
address trampoline = trampoline_stub_Relocation::get_trampoline_for(iter.reloc()->addr(), nm_copy);
|
||||
if (trampoline != nullptr) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
iter.reloc()->fix_relocation_after_move(&src, &dst);
|
||||
}
|
||||
|
||||
// To make dependency checking during class loading fast, record
|
||||
// the nmethod dependencies in the classes it is dependent on.
|
||||
// This allows the dependency checking code to simply walk the
|
||||
@@ -1569,8 +1584,6 @@ nmethod* nmethod::relocate(CodeBlobType code_blob_type) {
|
||||
if (!is_marked_for_deoptimization() && is_in_use()) {
|
||||
assert(method() != nullptr && method()->code() == this, "should be if is in use");
|
||||
|
||||
nm_copy->clear_inline_caches();
|
||||
|
||||
// Attempt to start using the copy
|
||||
if (nm_copy->make_in_use()) {
|
||||
ICache::invalidate_range(nm_copy->code_begin(), nm_copy->code_size());
|
||||
@@ -1578,7 +1591,7 @@ nmethod* nmethod::relocate(CodeBlobType code_blob_type) {
|
||||
methodHandle mh(Thread::current(), nm_copy->method());
|
||||
nm_copy->method()->set_code(mh, nm_copy);
|
||||
|
||||
make_not_used();
|
||||
make_not_entrant(InvalidationReason::RELOCATED);
|
||||
|
||||
nm_copy->post_compiled_method_load_event();
|
||||
|
||||
|
||||
@@ -499,6 +499,7 @@ public:
|
||||
UNCOMMON_TRAP,
|
||||
WHITEBOX_DEOPTIMIZATION,
|
||||
ZOMBIE,
|
||||
RELOCATED,
|
||||
INVALIDATION_REASONS_COUNT
|
||||
};
|
||||
|
||||
@@ -543,6 +544,8 @@ public:
|
||||
return "whitebox deoptimization";
|
||||
case InvalidationReason::ZOMBIE:
|
||||
return "zombie";
|
||||
case InvalidationReason::RELOCATED:
|
||||
return "relocated";
|
||||
default: {
|
||||
assert(false, "Unhandled reason");
|
||||
return "Unknown";
|
||||
|
||||
@@ -83,16 +83,15 @@ public:
|
||||
return "PLAB";
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
// When ShenandoahElasticTLAB is enabled, the request cannot be made smaller than _min_size.
|
||||
size_t _min_size;
|
||||
size_t const _min_size;
|
||||
|
||||
// The size of the request in words.
|
||||
size_t _requested_size;
|
||||
size_t const _requested_size;
|
||||
|
||||
// The allocation may be increased for padding or decreased to fit in the remaining space of a region.
|
||||
size_t _actual_size;
|
||||
@@ -104,7 +103,7 @@ private:
|
||||
size_t _waste;
|
||||
|
||||
// This is the type of the request.
|
||||
Type _alloc_type;
|
||||
Type const _alloc_type;
|
||||
|
||||
#ifdef ASSERT
|
||||
// Check that this is set before being read.
|
||||
@@ -209,6 +208,10 @@ public:
|
||||
return (_alloc_type & bit_old_alloc) == 0;
|
||||
}
|
||||
|
||||
inline bool is_cds() const {
|
||||
return _alloc_type == _alloc_cds;
|
||||
}
|
||||
|
||||
inline ShenandoahAffiliation affiliation() const {
|
||||
return (_alloc_type & bit_old_alloc) == 0 ? YOUNG_GENERATION : OLD_GENERATION ;
|
||||
}
|
||||
|
||||
@@ -144,13 +144,12 @@ public:
|
||||
{
|
||||
ShenandoahReentrantLocker locker(nm_data->lock());
|
||||
|
||||
// Heal oops and disarm
|
||||
// Heal oops
|
||||
if (_bs->is_armed(nm)) {
|
||||
ShenandoahEvacOOMScope oom_evac_scope;
|
||||
ShenandoahNMethod::heal_nmethod_metadata(nm_data);
|
||||
// Code cache unloading needs to know about on-stack nmethods. Arm the nmethods to get
|
||||
// mark_as_maybe_on_stack() callbacks when they are used again.
|
||||
_bs->arm(nm);
|
||||
// Must remain armed to complete remaining work in nmethod entry barrier
|
||||
assert(_bs->is_armed(nm), "Should remain armed");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1369,7 +1369,7 @@ template<typename Iter>
|
||||
HeapWord* ShenandoahFreeSet::allocate_from_regions(Iter& iterator, ShenandoahAllocRequest &req, bool &in_new_region) {
|
||||
for (idx_t idx = iterator.current(); iterator.has_next(); idx = iterator.next()) {
|
||||
ShenandoahHeapRegion* r = _heap->get_region(idx);
|
||||
size_t min_size = (req.type() == ShenandoahAllocRequest::_alloc_tlab) ? req.min_size() : req.size();
|
||||
size_t min_size = req.is_lab_alloc() ? req.min_size() : req.size();
|
||||
if (alloc_capacity(r) >= min_size * HeapWordSize) {
|
||||
HeapWord* result = try_allocate_in(r, req, in_new_region);
|
||||
if (result != nullptr) {
|
||||
@@ -1501,7 +1501,7 @@ HeapWord* ShenandoahFreeSet::try_allocate_in(ShenandoahHeapRegion* r, Shenandoah
|
||||
|
||||
if (in_new_region) {
|
||||
log_debug(gc, free)("Using new region (%zu) for %s (" PTR_FORMAT ").",
|
||||
r->index(), ShenandoahAllocRequest::alloc_type_to_string(req.type()), p2i(&req));
|
||||
r->index(), req.type_string(), p2i(&req));
|
||||
assert(!r->is_affiliated(), "New region %zu should be unaffiliated", r->index());
|
||||
r->set_affiliation(req.affiliation());
|
||||
if (r->is_old()) {
|
||||
@@ -1520,7 +1520,7 @@ HeapWord* ShenandoahFreeSet::try_allocate_in(ShenandoahHeapRegion* r, Shenandoah
|
||||
assert(ctx->is_bitmap_range_within_region_clear(ctx->top_bitmap(r), r->end()), "Bitmap above top_bitmap() must be clear");
|
||||
#endif
|
||||
log_debug(gc, free)("Using new region (%zu) for %s (" PTR_FORMAT ").",
|
||||
r->index(), ShenandoahAllocRequest::alloc_type_to_string(req.type()), p2i(&req));
|
||||
r->index(), req.type_string(), p2i(&req));
|
||||
} else {
|
||||
assert(r->is_affiliated(), "Region %zu that is not new should be affiliated", r->index());
|
||||
if (r->affiliation() != req.affiliation()) {
|
||||
@@ -1534,8 +1534,8 @@ HeapWord* ShenandoahFreeSet::try_allocate_in(ShenandoahHeapRegion* r, Shenandoah
|
||||
if (req.is_lab_alloc()) {
|
||||
size_t adjusted_size = req.size();
|
||||
size_t free = r->free(); // free represents bytes available within region r
|
||||
if (req.type() == ShenandoahAllocRequest::_alloc_plab) {
|
||||
// This is a PLAB allocation
|
||||
if (req.is_old()) {
|
||||
// This is a PLAB allocation(lab alloc in old gen)
|
||||
assert(_heap->mode()->is_generational(), "PLABs are only for generational mode");
|
||||
assert(_partitions.in_free_set(ShenandoahFreeSetPartitionId::OldCollector, r->index()),
|
||||
"PLABS must be allocated in old_collector_free regions");
|
||||
@@ -1596,8 +1596,6 @@ HeapWord* ShenandoahFreeSet::try_allocate_in(ShenandoahHeapRegion* r, Shenandoah
|
||||
r->set_update_watermark(r->top());
|
||||
if (r->is_old()) {
|
||||
_partitions.increase_used(ShenandoahFreeSetPartitionId::OldCollector, (req.actual_size() + req.waste()) * HeapWordSize);
|
||||
assert(req.type() != ShenandoahAllocRequest::_alloc_gclab, "old-gen allocations use PLAB or shared allocation");
|
||||
// for plabs, we'll sort the difference between evac and promotion usage when we retire the plab
|
||||
} else {
|
||||
_partitions.increase_used(ShenandoahFreeSetPartitionId::Collector, (req.actual_size() + req.waste()) * HeapWordSize);
|
||||
}
|
||||
|
||||
@@ -985,7 +985,7 @@ HeapWord* ShenandoahHeap::allocate_memory(ShenandoahAllocRequest& req) {
|
||||
|
||||
assert (req.is_lab_alloc() || (requested == actual),
|
||||
"Only LAB allocations are elastic: %s, requested = %zu, actual = %zu",
|
||||
ShenandoahAllocRequest::alloc_type_to_string(req.type()), requested, actual);
|
||||
req.type_string(), requested, actual);
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -1014,8 +1014,9 @@ HeapWord* ShenandoahHeap::allocate_memory_under_lock(ShenandoahAllocRequest& req
|
||||
|
||||
// Record the plab configuration for this result and register the object.
|
||||
if (result != nullptr && req.is_old()) {
|
||||
old_generation()->configure_plab_for_current_thread(req);
|
||||
if (!req.is_lab_alloc()) {
|
||||
if (req.is_lab_alloc()) {
|
||||
old_generation()->configure_plab_for_current_thread(req);
|
||||
} else {
|
||||
// Register the newly allocated object while we're holding the global lock since there's no synchronization
|
||||
// built in to the implementation of register_object(). There are potential races when multiple independent
|
||||
// threads are allocating objects, some of which might span the same card region. For example, consider
|
||||
@@ -1035,6 +1036,13 @@ HeapWord* ShenandoahHeap::allocate_memory_under_lock(ShenandoahAllocRequest& req
|
||||
// last-start representing object b while first-start represents object c. This is why we need to require all
|
||||
// register_object() invocations to be "mutually exclusive" with respect to each card's memory range.
|
||||
old_generation()->card_scan()->register_object(result);
|
||||
|
||||
if (req.is_promotion()) {
|
||||
// Shared promotion.
|
||||
const size_t actual_size = req.actual_size() * HeapWordSize;
|
||||
log_debug(gc, plab)("Expend shared promotion of %zu bytes", actual_size);
|
||||
old_generation()->expend_promoted(actual_size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -447,7 +447,7 @@ public:
|
||||
return (bottom() <= p) && (p < top());
|
||||
}
|
||||
|
||||
inline void adjust_alloc_metadata(ShenandoahAllocRequest::Type type, size_t);
|
||||
inline void adjust_alloc_metadata(const ShenandoahAllocRequest &req, size_t);
|
||||
void reset_alloc_metadata();
|
||||
size_t get_shared_allocs() const;
|
||||
size_t get_tlab_allocs() const;
|
||||
|
||||
@@ -71,7 +71,7 @@ HeapWord* ShenandoahHeapRegion::allocate_aligned(size_t size, ShenandoahAllocReq
|
||||
}
|
||||
|
||||
make_regular_allocation(req.affiliation());
|
||||
adjust_alloc_metadata(req.type(), size);
|
||||
adjust_alloc_metadata(req, size);
|
||||
|
||||
HeapWord* new_top = aligned_obj + size;
|
||||
assert(new_top <= end(), "PLAB cannot span end of heap region");
|
||||
@@ -111,7 +111,7 @@ HeapWord* ShenandoahHeapRegion::allocate(size_t size, const ShenandoahAllocReque
|
||||
HeapWord* obj = top();
|
||||
if (pointer_delta(end(), obj) >= size) {
|
||||
make_regular_allocation(req.affiliation());
|
||||
adjust_alloc_metadata(req.type(), size);
|
||||
adjust_alloc_metadata(req, size);
|
||||
|
||||
HeapWord* new_top = obj + size;
|
||||
set_top(new_top);
|
||||
@@ -125,26 +125,16 @@ HeapWord* ShenandoahHeapRegion::allocate(size_t size, const ShenandoahAllocReque
|
||||
}
|
||||
}
|
||||
|
||||
inline void ShenandoahHeapRegion::adjust_alloc_metadata(ShenandoahAllocRequest::Type type, size_t size) {
|
||||
switch (type) {
|
||||
case ShenandoahAllocRequest::_alloc_shared:
|
||||
case ShenandoahAllocRequest::_alloc_shared_gc:
|
||||
case ShenandoahAllocRequest::_alloc_shared_gc_old:
|
||||
case ShenandoahAllocRequest::_alloc_shared_gc_promotion:
|
||||
case ShenandoahAllocRequest::_alloc_cds:
|
||||
// Counted implicitly by tlab/gclab allocs
|
||||
break;
|
||||
case ShenandoahAllocRequest::_alloc_tlab:
|
||||
inline void ShenandoahHeapRegion::adjust_alloc_metadata(const ShenandoahAllocRequest &req, size_t size) {
|
||||
// Only need to update alloc metadata for lab alloc, shared alloc is counted implicitly by tlab/gclab allocs
|
||||
if (req.is_lab_alloc()) {
|
||||
if (req.is_mutator_alloc()) {
|
||||
_tlab_allocs += size;
|
||||
break;
|
||||
case ShenandoahAllocRequest::_alloc_gclab:
|
||||
_gclab_allocs += size;
|
||||
break;
|
||||
case ShenandoahAllocRequest::_alloc_plab:
|
||||
} else if (req.is_old()) {
|
||||
_plab_allocs += size;
|
||||
break;
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
} else {
|
||||
_gclab_allocs += size;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ size_t ShenandoahOldGeneration::get_promoted_expended() const {
|
||||
}
|
||||
|
||||
bool ShenandoahOldGeneration::can_allocate(const ShenandoahAllocRequest &req) const {
|
||||
assert(req.type() != ShenandoahAllocRequest::_alloc_gclab, "GCLAB pertains only to young-gen memory");
|
||||
assert(req.is_old(), "Must be old allocation request");
|
||||
|
||||
const size_t requested_bytes = req.size() * HeapWordSize;
|
||||
// The promotion reserve may also be used for evacuations. If we can promote this object,
|
||||
@@ -180,7 +180,7 @@ bool ShenandoahOldGeneration::can_allocate(const ShenandoahAllocRequest &req) co
|
||||
return true;
|
||||
}
|
||||
|
||||
if (req.type() == ShenandoahAllocRequest::_alloc_plab) {
|
||||
if (req.is_lab_alloc()) {
|
||||
// The promotion reserve cannot accommodate this plab request. Check if we still have room for
|
||||
// evacuations. Note that we cannot really know how much of the plab will be used for evacuations,
|
||||
// so here we only check that some evacuation reserve still exists.
|
||||
@@ -195,37 +195,29 @@ bool ShenandoahOldGeneration::can_allocate(const ShenandoahAllocRequest &req) co
|
||||
|
||||
void
|
||||
ShenandoahOldGeneration::configure_plab_for_current_thread(const ShenandoahAllocRequest &req) {
|
||||
// Note: Even when a mutator is performing a promotion outside a LAB, we use a 'shared_gc' request.
|
||||
if (req.is_gc_alloc()) {
|
||||
const size_t actual_size = req.actual_size() * HeapWordSize;
|
||||
if (req.type() == ShenandoahAllocRequest::_alloc_plab) {
|
||||
// We've created a new plab. Now we configure it whether it will be used for promotions
|
||||
// and evacuations - or just evacuations.
|
||||
Thread* thread = Thread::current();
|
||||
ShenandoahThreadLocalData::reset_plab_promoted(thread);
|
||||
assert(req.is_gc_alloc() && req.is_old() && req.is_lab_alloc(), "Must be a plab alloc request");
|
||||
const size_t actual_size = req.actual_size() * HeapWordSize;
|
||||
// We've created a new plab. Now we configure it whether it will be used for promotions
|
||||
// and evacuations - or just evacuations.
|
||||
Thread* thread = Thread::current();
|
||||
ShenandoahThreadLocalData::reset_plab_promoted(thread);
|
||||
|
||||
// The actual size of the allocation may be larger than the requested bytes (due to alignment on card boundaries).
|
||||
// If this puts us over our promotion budget, we need to disable future PLAB promotions for this thread.
|
||||
if (can_promote(actual_size)) {
|
||||
// Assume the entirety of this PLAB will be used for promotion. This prevents promotion from overreach.
|
||||
// When we retire this plab, we'll unexpend what we don't really use.
|
||||
log_debug(gc, plab)("Thread can promote using PLAB of %zu bytes. Expended: %zu, available: %zu",
|
||||
actual_size, get_promoted_expended(), get_promoted_reserve());
|
||||
expend_promoted(actual_size);
|
||||
ShenandoahThreadLocalData::enable_plab_promotions(thread);
|
||||
ShenandoahThreadLocalData::set_plab_actual_size(thread, actual_size);
|
||||
} else {
|
||||
// Disable promotions in this thread because entirety of this PLAB must be available to hold old-gen evacuations.
|
||||
ShenandoahThreadLocalData::disable_plab_promotions(thread);
|
||||
ShenandoahThreadLocalData::set_plab_actual_size(thread, 0);
|
||||
log_debug(gc, plab)("Thread cannot promote using PLAB of %zu bytes. Expended: %zu, available: %zu, mixed evacuations? %s",
|
||||
actual_size, get_promoted_expended(), get_promoted_reserve(), BOOL_TO_STR(ShenandoahHeap::heap()->collection_set()->has_old_regions()));
|
||||
}
|
||||
} else if (req.is_promotion()) {
|
||||
// Shared promotion.
|
||||
log_debug(gc, plab)("Expend shared promotion of %zu bytes", actual_size);
|
||||
expend_promoted(actual_size);
|
||||
}
|
||||
// The actual size of the allocation may be larger than the requested bytes (due to alignment on card boundaries).
|
||||
// If this puts us over our promotion budget, we need to disable future PLAB promotions for this thread.
|
||||
if (can_promote(actual_size)) {
|
||||
// Assume the entirety of this PLAB will be used for promotion. This prevents promotion from overreach.
|
||||
// When we retire this plab, we'll unexpend what we don't really use.
|
||||
log_debug(gc, plab)("Thread can promote using PLAB of %zu bytes. Expended: %zu, available: %zu",
|
||||
actual_size, get_promoted_expended(), get_promoted_reserve());
|
||||
expend_promoted(actual_size);
|
||||
ShenandoahThreadLocalData::enable_plab_promotions(thread);
|
||||
ShenandoahThreadLocalData::set_plab_actual_size(thread, actual_size);
|
||||
} else {
|
||||
// Disable promotions in this thread because entirety of this PLAB must be available to hold old-gen evacuations.
|
||||
ShenandoahThreadLocalData::disable_plab_promotions(thread);
|
||||
ShenandoahThreadLocalData::set_plab_actual_size(thread, 0);
|
||||
log_debug(gc, plab)("Thread cannot promote using PLAB of %zu bytes. Expended: %zu, available: %zu, mixed evacuations? %s",
|
||||
actual_size, get_promoted_expended(), get_promoted_reserve(), BOOL_TO_STR(ShenandoahHeap::heap()->collection_set()->has_old_regions()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -335,7 +335,6 @@ HeapWord* ShenandoahCardCluster::first_object_start(const size_t card_index, con
|
||||
if (ctx->is_marked(p)) {
|
||||
oop obj = cast_to_oop(p);
|
||||
assert(oopDesc::is_oop(obj), "Should be an object");
|
||||
assert(Klass::is_valid(obj->klass()), "Not a valid klass ptr");
|
||||
assert(p + obj->size() > left, "This object should span start of card");
|
||||
assert(p < right, "Result must precede right");
|
||||
return p;
|
||||
@@ -362,15 +361,15 @@ HeapWord* ShenandoahCardCluster::first_object_start(const size_t card_index, con
|
||||
|
||||
// Recall that we already dealt with the co-initial object case above
|
||||
assert(p < left, "obj should start before left");
|
||||
// While it is safe to ask an object its size in the loop that
|
||||
// follows, the (ifdef'd out) loop should never be needed.
|
||||
// While it is safe to ask an object its size in the block that
|
||||
// follows, the (ifdef'd out) block should never be needed.
|
||||
// 1. we ask this question only for regions in the old generation, and those
|
||||
// that are not humongous regions
|
||||
// 2. there is no direct allocation ever by mutators in old generation
|
||||
// regions walked by this code. Only GC will ever allocate in old regions,
|
||||
// and then too only during promotion/evacuation phases. Thus there is no danger
|
||||
// of races between reading from and writing to the object start array,
|
||||
// or of asking partially initialized objects their size (in the loop below).
|
||||
// or of asking partially initialized objects their size (in the ifdef below).
|
||||
// Furthermore, humongous regions (and their dirty cards) are never processed
|
||||
// by this code.
|
||||
// 3. only GC asks this question during phases when it is not concurrently
|
||||
@@ -382,15 +381,6 @@ HeapWord* ShenandoahCardCluster::first_object_start(const size_t card_index, con
|
||||
#ifdef ASSERT
|
||||
oop obj = cast_to_oop(p);
|
||||
assert(oopDesc::is_oop(obj), "Should be an object");
|
||||
while (p + obj->size() < left) {
|
||||
p += obj->size();
|
||||
obj = cast_to_oop(p);
|
||||
assert(oopDesc::is_oop(obj), "Should be an object");
|
||||
assert(Klass::is_valid(obj->klass()), "Not a valid klass ptr");
|
||||
// Check assumptions in previous block comment if this assert fires
|
||||
fatal("Should never need forward walk in block start");
|
||||
}
|
||||
assert(p <= left, "p should start at or before left end of card");
|
||||
assert(p + obj->size() > left, "obj should end after left end of card");
|
||||
#endif // ASSERT
|
||||
return p;
|
||||
|
||||
@@ -173,6 +173,7 @@ bool Jfr::on_start_flight_recording_option(const JavaVMOption** option, char* de
|
||||
return JfrOptionSet::parse_start_flight_recording_option(option, delimiter);
|
||||
}
|
||||
|
||||
#if INCLUDE_CDS
|
||||
void Jfr::on_restoration(const Klass* k, JavaThread* jt) {
|
||||
assert(k != nullptr, "invariant");
|
||||
JfrTraceId::restore(k);
|
||||
@@ -180,3 +181,4 @@ void Jfr::on_restoration(const Klass* k, JavaThread* jt) {
|
||||
JfrClassDefineEvent::on_restoration(InstanceKlass::cast(k), jt);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -79,7 +79,7 @@ class Jfr : AllStatic {
|
||||
static void initialize_main_thread(JavaThread* jt);
|
||||
static bool has_sample_request(JavaThread* jt);
|
||||
static void check_and_process_sample_request(JavaThread* jt);
|
||||
static void on_restoration(const Klass* k, JavaThread* jt);
|
||||
CDS_ONLY(static void on_restoration(const Klass* k, JavaThread* jt);)
|
||||
};
|
||||
|
||||
#endif // SHARE_JFR_JFR_HPP
|
||||
|
||||
@@ -171,6 +171,7 @@ void JfrClassDefineEvent::on_creation(const InstanceKlass* ik, const ClassFilePa
|
||||
}
|
||||
}
|
||||
|
||||
#if INCLUDE_CDS
|
||||
void JfrClassDefineEvent::on_restoration(const InstanceKlass* ik, JavaThread* jt) {
|
||||
assert(ik != nullptr, "invariant");
|
||||
assert(ik->trace_id() != 0, "invariant");
|
||||
@@ -186,3 +187,4 @@ void JfrClassDefineEvent::on_restoration(const InstanceKlass* ik, JavaThread* jt
|
||||
send_event(ik, cl->is_modules_image() ? module_path(ik, jt) : get_source(cl, jt));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#define SHARE_JFR_SUPPORT_JFRCLASSDEFINEEVENT_HPP
|
||||
|
||||
#include "memory/allStatic.hpp"
|
||||
#include "utilities/macros.hpp"
|
||||
|
||||
class ClassFileParser;
|
||||
class InstanceKlass;
|
||||
@@ -34,7 +35,7 @@ class JavaThread;
|
||||
class JfrClassDefineEvent : AllStatic {
|
||||
public:
|
||||
static void on_creation(const InstanceKlass* ik, const ClassFileParser& parser, JavaThread* jt);
|
||||
static void on_restoration(const InstanceKlass* ik, JavaThread* jt);
|
||||
CDS_ONLY(static void on_restoration(const InstanceKlass* ik, JavaThread* jt);)
|
||||
};
|
||||
|
||||
#endif // SHARE_JFR_SUPPORT_JFRCLASSDEFINEEVENT_HPP
|
||||
|
||||
@@ -223,6 +223,7 @@
|
||||
volatile_nonstatic_field(InstanceKlass, _init_state, InstanceKlass::ClassState) \
|
||||
volatile_nonstatic_field(InstanceKlass, _init_thread, JavaThread*) \
|
||||
nonstatic_field(InstanceKlass, _misc_flags._flags, u2) \
|
||||
nonstatic_field(InstanceKlass, _access_flags, AccessFlags) \
|
||||
nonstatic_field(InstanceKlass, _annotations, Annotations*) \
|
||||
\
|
||||
volatile_nonstatic_field(JavaFrameAnchor, _last_Java_sp, intptr_t*) \
|
||||
@@ -282,7 +283,6 @@
|
||||
nonstatic_field(Klass, _name, Symbol*) \
|
||||
volatile_nonstatic_field(Klass, _next_sibling, Klass*) \
|
||||
nonstatic_field(Klass, _java_mirror, OopHandle) \
|
||||
nonstatic_field(Klass, _access_flags, AccessFlags) \
|
||||
nonstatic_field(Klass, _class_loader_data, ClassLoaderData*) \
|
||||
nonstatic_field(Klass, _secondary_supers_bitmap, uintx) \
|
||||
nonstatic_field(Klass, _hash_slot, uint8_t) \
|
||||
@@ -586,6 +586,7 @@
|
||||
declare_constant(nmethod::InvalidationReason::UNCOMMON_TRAP) \
|
||||
declare_constant(nmethod::InvalidationReason::WHITEBOX_DEOPTIMIZATION) \
|
||||
declare_constant(nmethod::InvalidationReason::ZOMBIE) \
|
||||
declare_constant(nmethod::InvalidationReason::RELOCATED) \
|
||||
\
|
||||
declare_constant(CodeInstaller::VERIFIED_ENTRY) \
|
||||
declare_constant(CodeInstaller::UNVERIFIED_ENTRY) \
|
||||
|
||||
@@ -544,7 +544,7 @@ void Universe::genesis(TRAPS) {
|
||||
// Only modify the global variable inside the mutex.
|
||||
// If we had a race to here, the other dummy_array instances
|
||||
// and their elements just get dropped on the floor, which is fine.
|
||||
MutexLocker ml(THREAD, FullGCALot_lock);
|
||||
MutexLocker ml(THREAD, FullGCALot_lock, Mutex::_no_safepoint_check_flag);
|
||||
if (_fullgc_alot_dummy_array.is_empty()) {
|
||||
_fullgc_alot_dummy_array = OopHandle(vm_global(), dummy_array());
|
||||
}
|
||||
@@ -1458,7 +1458,7 @@ uintptr_t Universe::verify_mark_bits() {
|
||||
#ifdef ASSERT
|
||||
// Release dummy object(s) at bottom of heap
|
||||
bool Universe::release_fullgc_alot_dummy() {
|
||||
MutexLocker ml(FullGCALot_lock);
|
||||
MutexLocker ml(FullGCALot_lock, Mutex::_no_safepoint_check_flag);
|
||||
objArrayOop fullgc_alot_dummy_array = (objArrayOop)_fullgc_alot_dummy_array.resolve();
|
||||
if (fullgc_alot_dummy_array != nullptr) {
|
||||
if (_fullgc_alot_dummy_next >= fullgc_alot_dummy_array->length()) {
|
||||
|
||||
@@ -99,7 +99,8 @@ ArrayKlass::ArrayKlass(Symbol* name, KlassKind kind) :
|
||||
set_name(name);
|
||||
set_super(Universe::is_bootstrapping() ? nullptr : vmClasses::Object_klass());
|
||||
set_layout_helper(Klass::_lh_neutral_value);
|
||||
set_is_cloneable(); // All arrays are considered to be cloneable (See JLS 20.1.5)
|
||||
// All arrays are considered to be cloneable (See JLS 20.1.5)
|
||||
set_is_cloneable_fast();
|
||||
JFR_ONLY(INIT_ID(this);)
|
||||
log_array_class_load(this);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
|
||||
#include "memory/allocation.hpp"
|
||||
#include "oops/typeArrayOop.hpp"
|
||||
#include "utilities/accessFlags.hpp"
|
||||
#include "utilities/unsigned5.hpp"
|
||||
#include "utilities/vmEnums.hpp"
|
||||
|
||||
|
||||
@@ -552,6 +552,17 @@ InstanceKlass::InstanceKlass(const ClassFileParser& parser, KlassKind kind, Refe
|
||||
assert(size_helper() == parser.layout_size(), "incorrect size_helper?");
|
||||
}
|
||||
|
||||
void InstanceKlass::set_is_cloneable() {
|
||||
if (name() == vmSymbols::java_lang_invoke_MemberName()) {
|
||||
assert(is_final(), "no subclasses allowed");
|
||||
// MemberName cloning should not be intrinsified and always happen in JVM_Clone.
|
||||
} else if (reference_type() != REF_NONE) {
|
||||
// Reference cloning should not be intrinsified and always happen in JVM_Clone.
|
||||
} else {
|
||||
set_is_cloneable_fast();
|
||||
}
|
||||
}
|
||||
|
||||
void InstanceKlass::deallocate_methods(ClassLoaderData* loader_data,
|
||||
Array<Method*>* methods) {
|
||||
if (methods != nullptr && methods != Universe::the_empty_method_array() &&
|
||||
|
||||
@@ -229,7 +229,9 @@ class InstanceKlass: public Klass {
|
||||
// _idnum_allocated_count.
|
||||
volatile ClassState _init_state; // state of class
|
||||
|
||||
u1 _reference_type; // reference type
|
||||
u1 _reference_type; // reference type
|
||||
|
||||
AccessFlags _access_flags; // Access flags. The class/interface distinction is stored here.
|
||||
|
||||
// State is set either at parse time or while executing, atomically to not disturb other state
|
||||
InstanceKlassFlags _misc_flags;
|
||||
@@ -305,6 +307,22 @@ class InstanceKlass: public Klass {
|
||||
// Sets finalization state
|
||||
static void set_finalization_enabled(bool val) { _finalization_enabled = val; }
|
||||
|
||||
// Access flags
|
||||
AccessFlags access_flags() const { return _access_flags; }
|
||||
void set_access_flags(AccessFlags flags) { _access_flags = flags; }
|
||||
|
||||
bool is_public() const { return _access_flags.is_public(); }
|
||||
bool is_final() const { return _access_flags.is_final(); }
|
||||
bool is_interface() const { return _access_flags.is_interface(); }
|
||||
bool is_abstract() const { return _access_flags.is_abstract(); }
|
||||
bool is_super() const { return _access_flags.is_super(); }
|
||||
bool is_synthetic() const { return _access_flags.is_synthetic(); }
|
||||
void set_is_synthetic() { _access_flags.set_is_synthetic(); }
|
||||
|
||||
static ByteSize access_flags_offset() { return byte_offset_of(InstanceKlass, _access_flags); }
|
||||
|
||||
void set_is_cloneable();
|
||||
|
||||
// Quick checks for the loader that defined this class (without switching on this->class_loader())
|
||||
bool defined_by_boot_loader() const { return _misc_flags.defined_by_boot_loader(); }
|
||||
bool defined_by_platform_loader() const { return _misc_flags.defined_by_platform_loader(); }
|
||||
|
||||
@@ -72,17 +72,6 @@ bool Klass::is_cloneable() const {
|
||||
is_subtype_of(vmClasses::Cloneable_klass());
|
||||
}
|
||||
|
||||
void Klass::set_is_cloneable() {
|
||||
if (name() == vmSymbols::java_lang_invoke_MemberName()) {
|
||||
assert(is_final(), "no subclasses allowed");
|
||||
// MemberName cloning should not be intrinsified and always happen in JVM_Clone.
|
||||
} else if (is_instance_klass() && InstanceKlass::cast(this)->reference_type() != REF_NONE) {
|
||||
// Reference cloning should not be intrinsified and always happen in JVM_Clone.
|
||||
} else {
|
||||
_misc_flags.set_is_cloneable_fast(true);
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t Klass::compute_hash_slot(Symbol* n) {
|
||||
uint hash_code;
|
||||
// Special cases for the two superclasses of all Array instances.
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
#include "oops/metadata.hpp"
|
||||
#include "oops/oop.hpp"
|
||||
#include "oops/oopHandle.hpp"
|
||||
#include "utilities/accessFlags.hpp"
|
||||
#include "utilities/macros.hpp"
|
||||
#if INCLUDE_JFR
|
||||
#include "jfr/support/jfrTraceIdExtension.hpp"
|
||||
@@ -120,9 +119,8 @@ class Klass : public Metadata {
|
||||
// - Various type checking in the JVM
|
||||
const KlassKind _kind;
|
||||
|
||||
AccessFlags _access_flags; // Access flags. The class/interface distinction is stored here.
|
||||
// Some flags created by the JVM, not in the class file itself,
|
||||
// are in _misc_flags below.
|
||||
// Some flags created by the JVM, not in the class file itself,
|
||||
// are in _misc_flags below.
|
||||
KlassFlags _misc_flags;
|
||||
|
||||
// The fields _super_check_offset, _secondary_super_cache, _secondary_supers
|
||||
@@ -453,7 +451,6 @@ protected:
|
||||
static ByteSize java_mirror_offset() { return byte_offset_of(Klass, _java_mirror); }
|
||||
static ByteSize class_loader_data_offset() { return byte_offset_of(Klass, _class_loader_data); }
|
||||
static ByteSize layout_helper_offset() { return byte_offset_of(Klass, _layout_helper); }
|
||||
static ByteSize access_flags_offset() { return byte_offset_of(Klass, _access_flags); }
|
||||
#if INCLUDE_JVMCI
|
||||
static ByteSize subklass_offset() { return byte_offset_of(Klass, _subklass); }
|
||||
static ByteSize next_sibling_offset() { return byte_offset_of(Klass, _next_sibling); }
|
||||
@@ -707,17 +704,10 @@ public:
|
||||
bool is_typeArray_klass() const { return assert_same_query( _kind == TypeArrayKlassKind, is_typeArray_klass_slow()); }
|
||||
#undef assert_same_query
|
||||
|
||||
// Access flags
|
||||
AccessFlags access_flags() const { return _access_flags; }
|
||||
void set_access_flags(AccessFlags flags) { _access_flags = flags; }
|
||||
|
||||
bool is_public() const { return _access_flags.is_public(); }
|
||||
bool is_final() const { return _access_flags.is_final(); }
|
||||
bool is_interface() const { return _access_flags.is_interface(); }
|
||||
bool is_abstract() const { return _access_flags.is_abstract(); }
|
||||
bool is_super() const { return _access_flags.is_super(); }
|
||||
bool is_synthetic() const { return _access_flags.is_synthetic(); }
|
||||
void set_is_synthetic() { _access_flags.set_is_synthetic(); }
|
||||
virtual bool is_interface() const { return false; }
|
||||
virtual bool is_abstract() const { return false; }
|
||||
|
||||
bool has_finalizer() const { return _misc_flags.has_finalizer(); }
|
||||
void set_has_finalizer() { _misc_flags.set_has_finalizer(true); }
|
||||
bool is_hidden() const { return _misc_flags.is_hidden_class(); }
|
||||
@@ -730,7 +720,7 @@ public:
|
||||
inline bool is_non_strong_hidden() const;
|
||||
|
||||
bool is_cloneable() const;
|
||||
void set_is_cloneable();
|
||||
void set_is_cloneable_fast() { _misc_flags.set_is_cloneable_fast(true); }
|
||||
|
||||
inline markWord prototype_header() const;
|
||||
inline void set_prototype_header(markWord header);
|
||||
|
||||
@@ -168,11 +168,17 @@ address Method::get_c2i_entry() {
|
||||
}
|
||||
|
||||
address Method::get_c2i_unverified_entry() {
|
||||
if (is_abstract()) {
|
||||
return SharedRuntime::get_handle_wrong_method_abstract_stub();
|
||||
}
|
||||
assert(adapter() != nullptr, "must have");
|
||||
return adapter()->get_c2i_unverified_entry();
|
||||
}
|
||||
|
||||
address Method::get_c2i_no_clinit_check_entry() {
|
||||
if (is_abstract()) {
|
||||
return nullptr;
|
||||
}
|
||||
assert(VM_Version::supports_fast_class_init_checks(), "");
|
||||
assert(adapter() != nullptr, "must have");
|
||||
return adapter()->get_c2i_no_clinit_check_entry();
|
||||
|
||||
@@ -420,7 +420,6 @@ bool LateInlineMHCallGenerator::do_late_inline_check(Compile* C, JVMState* jvms)
|
||||
}
|
||||
assert(!cg->is_late_inline() || cg->is_mh_late_inline() || AlwaysIncrementalInline || StressIncrementalInlining, "we're doing late inlining");
|
||||
_inline_cg = cg;
|
||||
C->dec_number_of_mh_late_inlines();
|
||||
return true;
|
||||
} else {
|
||||
// Method handle call which has a constant appendix argument should be either inlined or replaced with a direct call
|
||||
@@ -432,7 +431,7 @@ bool LateInlineMHCallGenerator::do_late_inline_check(Compile* C, JVMState* jvms)
|
||||
|
||||
CallGenerator* CallGenerator::for_mh_late_inline(ciMethod* caller, ciMethod* callee, bool input_not_const) {
|
||||
assert(IncrementalInlineMH, "required");
|
||||
Compile::current()->inc_number_of_mh_late_inlines();
|
||||
Compile::current()->mark_has_mh_late_inlines();
|
||||
CallGenerator* cg = new LateInlineMHCallGenerator(caller, callee, input_not_const);
|
||||
return cg;
|
||||
}
|
||||
|
||||
@@ -1145,7 +1145,6 @@ Node* CallStaticJavaNode::Ideal(PhaseGVN* phase, bool can_reshape) {
|
||||
assert(callee->has_member_arg(), "wrong type of call?");
|
||||
if (in(TypeFunc::Parms + callee->arg_size() - 1)->Opcode() == Op_ConP) {
|
||||
register_for_late_inline();
|
||||
phase->C->inc_number_of_mh_late_inlines();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -730,9 +730,10 @@ public:
|
||||
// for some macro nodes whose expansion does not have a safepoint on the fast path.
|
||||
virtual bool guaranteed_safepoint() { return true; }
|
||||
// For macro nodes, the JVMState gets modified during expansion. If calls
|
||||
// use MachConstantBase, it gets modified during matching. So when cloning
|
||||
// the node the JVMState must be deep cloned. Default is to shallow clone.
|
||||
virtual bool needs_deep_clone_jvms(Compile* C) { return C->needs_deep_clone_jvms(); }
|
||||
// use MachConstantBase, it gets modified during matching. If the call is
|
||||
// late inlined, it also needs the full JVMState. So when cloning the
|
||||
// node the JVMState must be deep cloned. Default is to shallow clone.
|
||||
virtual bool needs_deep_clone_jvms(Compile* C) { return _generator != nullptr || C->needs_deep_clone_jvms(); }
|
||||
|
||||
// Returns true if the call may modify n
|
||||
virtual bool may_modify(const TypeOopPtr* t_oop, PhaseValues* phase);
|
||||
|
||||
@@ -686,7 +686,7 @@ Compile::Compile(ciEnv* ci_env, ciMethod* target, int osr_bci,
|
||||
_boxing_late_inlines(comp_arena(), 2, 0, nullptr),
|
||||
_vector_reboxing_late_inlines(comp_arena(), 2, 0, nullptr),
|
||||
_late_inlines_pos(0),
|
||||
_number_of_mh_late_inlines(0),
|
||||
_has_mh_late_inlines(false),
|
||||
_oom(false),
|
||||
_replay_inline_data(nullptr),
|
||||
_inline_printer(this),
|
||||
@@ -948,7 +948,7 @@ Compile::Compile(ciEnv* ci_env,
|
||||
_igvn_worklist(nullptr),
|
||||
_types(nullptr),
|
||||
_node_hash(nullptr),
|
||||
_number_of_mh_late_inlines(0),
|
||||
_has_mh_late_inlines(false),
|
||||
_oom(false),
|
||||
_replay_inline_data(nullptr),
|
||||
_inline_printer(this),
|
||||
@@ -1726,8 +1726,6 @@ Compile::AliasType* Compile::find_alias_type(const TypePtr* adr_type, bool no_cr
|
||||
}
|
||||
if (flat->offset() == in_bytes(Klass::super_check_offset_offset()))
|
||||
alias_type(idx)->set_rewritable(false);
|
||||
if (flat->offset() == in_bytes(Klass::access_flags_offset()))
|
||||
alias_type(idx)->set_rewritable(false);
|
||||
if (flat->offset() == in_bytes(Klass::misc_flags_offset()))
|
||||
alias_type(idx)->set_rewritable(false);
|
||||
if (flat->offset() == in_bytes(Klass::java_mirror_offset()))
|
||||
@@ -1735,6 +1733,12 @@ Compile::AliasType* Compile::find_alias_type(const TypePtr* adr_type, bool no_cr
|
||||
if (flat->offset() == in_bytes(Klass::secondary_super_cache_offset()))
|
||||
alias_type(idx)->set_rewritable(false);
|
||||
}
|
||||
|
||||
if (flat->isa_instklassptr()) {
|
||||
if (flat->offset() == in_bytes(InstanceKlass::access_flags_offset())) {
|
||||
alias_type(idx)->set_rewritable(false);
|
||||
}
|
||||
}
|
||||
// %%% (We would like to finalize JavaThread::threadObj_offset(),
|
||||
// but the base pointer type is not distinctive enough to identify
|
||||
// references into JavaThread.)
|
||||
|
||||
@@ -478,7 +478,9 @@ private:
|
||||
GrowableArray<CallGenerator*> _vector_reboxing_late_inlines; // same but for vector reboxing operations
|
||||
|
||||
int _late_inlines_pos; // Where in the queue should the next late inlining candidate go (emulate depth first inlining)
|
||||
uint _number_of_mh_late_inlines; // number of method handle late inlining still pending
|
||||
bool _has_mh_late_inlines; // Can there still be a method handle late inlining pending?
|
||||
// false: there can't be one
|
||||
// true: we've enqueued one at some point so there may still be one
|
||||
|
||||
// "MemLimit" directive was specified and the memory limit was hit during compilation
|
||||
bool _oom;
|
||||
@@ -1096,9 +1098,8 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void inc_number_of_mh_late_inlines() { _number_of_mh_late_inlines++; }
|
||||
void dec_number_of_mh_late_inlines() { assert(_number_of_mh_late_inlines > 0, "_number_of_mh_late_inlines < 0 !"); _number_of_mh_late_inlines--; }
|
||||
bool has_mh_late_inlines() const { return _number_of_mh_late_inlines > 0; }
|
||||
void mark_has_mh_late_inlines() { _has_mh_late_inlines = true; }
|
||||
bool has_mh_late_inlines() const { return _has_mh_late_inlines; }
|
||||
|
||||
bool inline_incrementally_one();
|
||||
void inline_incrementally_cleanup(PhaseIterGVN& igvn);
|
||||
|
||||
@@ -4020,7 +4020,7 @@ Node* LibraryCallKit::generate_klass_flags_guard(Node* kls, int modifier_mask, i
|
||||
}
|
||||
Node* LibraryCallKit::generate_interface_guard(Node* kls, RegionNode* region) {
|
||||
return generate_klass_flags_guard(kls, JVM_ACC_INTERFACE, 0, region,
|
||||
Klass::access_flags_offset(), TypeInt::CHAR, T_CHAR);
|
||||
InstanceKlass::access_flags_offset(), TypeInt::CHAR, T_CHAR);
|
||||
}
|
||||
|
||||
// Use this for testing if Klass is_hidden, has_finalizer, and is_cloneable_fast.
|
||||
@@ -4132,12 +4132,16 @@ bool LibraryCallKit::inline_native_Class_query(vmIntrinsics::ID id) {
|
||||
// Arrays store an intermediate super as _super, but must report Object.
|
||||
// Other types can report the actual _super.
|
||||
// (To verify this code sequence, check the asserts in JVM_IsInterface.)
|
||||
if (generate_interface_guard(kls, region) != nullptr)
|
||||
// A guard was added. If the guard is taken, it was an interface.
|
||||
phi->add_req(null());
|
||||
if (generate_array_guard(kls, region) != nullptr)
|
||||
if (generate_array_guard(kls, region) != nullptr) {
|
||||
// A guard was added. If the guard is taken, it was an array.
|
||||
phi->add_req(makecon(TypeInstPtr::make(env()->Object_klass()->java_mirror())));
|
||||
}
|
||||
// Check for interface after array since this checks AccessFlags offset into InstanceKlass.
|
||||
// In other words, we are accessing subtype-specific information, so we need to determine the subtype first.
|
||||
if (generate_interface_guard(kls, region) != nullptr) {
|
||||
// A guard was added. If the guard is taken, it was an interface.
|
||||
phi->add_req(null());
|
||||
}
|
||||
// If we fall through, it's a plain class. Get its _super.
|
||||
p = basic_plus_adr(kls, in_bytes(Klass::super_offset()));
|
||||
kls = _gvn.transform(LoadKlassNode::make(_gvn, immutable_memory(), p, TypeRawPtr::BOTTOM, TypeInstKlassPtr::OBJECT_OR_NULL));
|
||||
|
||||
@@ -1979,10 +1979,12 @@ LoadNode::load_array_final_field(const TypeKlassPtr *tkls,
|
||||
ciKlass* klass) const {
|
||||
assert(!UseCompactObjectHeaders || tkls->offset() != in_bytes(Klass::prototype_header_offset()),
|
||||
"must not happen");
|
||||
if (tkls->offset() == in_bytes(Klass::access_flags_offset())) {
|
||||
// The field is Klass::_access_flags. Return its (constant) value.
|
||||
|
||||
if (tkls->isa_instklassptr() && tkls->offset() == in_bytes(InstanceKlass::access_flags_offset())) {
|
||||
// The field is InstanceKlass::_access_flags. Return its (constant) value.
|
||||
assert(Opcode() == Op_LoadUS, "must load an unsigned short from _access_flags");
|
||||
return TypeInt::make(klass->access_flags());
|
||||
ciInstanceKlass* iklass = tkls->is_instklassptr()->instance_klass();
|
||||
return TypeInt::make(iklass->access_flags());
|
||||
}
|
||||
if (tkls->offset() == in_bytes(Klass::misc_flags_offset())) {
|
||||
// The field is Klass::_misc_flags. Return its (constant) value.
|
||||
|
||||
@@ -508,8 +508,16 @@ WB_ENTRY(jboolean, WB_ConcurrentGCRunTo(JNIEnv* env, jobject o, jobject at))
|
||||
return ConcurrentGCBreakpoints::run_to(c_name);
|
||||
WB_END
|
||||
|
||||
WB_ENTRY(jboolean, WB_HasExternalSymbolsStripped(JNIEnv* env, jobject o))
|
||||
#if defined(HAS_STRIPPED_DEBUGINFO)
|
||||
WB_ENTRY(jboolean, WB_ShipDebugInfoFull(JNIEnv* env, jobject o))
|
||||
#if defined(SHIP_DEBUGINFO_FULL)
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
WB_END
|
||||
|
||||
WB_ENTRY(jboolean, WB_ShipDebugInfoPublic(JNIEnv* env, jobject o))
|
||||
#if defined(SHIP_DEBUGINFO_PUBLIC)
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
@@ -1678,7 +1686,7 @@ WB_ENTRY(void, WB_RelocateNMethodFromAddr(JNIEnv* env, jobject o, jlong addr, ji
|
||||
CodeBlob* blob = CodeCache::find_blob(address);
|
||||
if (blob != nullptr && blob->is_nmethod()) {
|
||||
nmethod* code = blob->as_nmethod();
|
||||
if (code->is_in_use()) {
|
||||
if (code->is_in_use() && !code->is_unloading()) {
|
||||
CompiledICLocker ic_locker(code);
|
||||
code->relocate(static_cast<CodeBlobType>(blob_type));
|
||||
}
|
||||
@@ -2840,7 +2848,8 @@ static JNINativeMethod methods[] = {
|
||||
{CC"getVMLargePageSize", CC"()J", (void*)&WB_GetVMLargePageSize},
|
||||
{CC"getHeapSpaceAlignment", CC"()J", (void*)&WB_GetHeapSpaceAlignment},
|
||||
{CC"getHeapAlignment", CC"()J", (void*)&WB_GetHeapAlignment},
|
||||
{CC"hasExternalSymbolsStripped", CC"()Z", (void*)&WB_HasExternalSymbolsStripped},
|
||||
{CC"shipsFullDebugInfo", CC"()Z", (void*)&WB_ShipDebugInfoFull},
|
||||
{CC"shipsPublicDebugInfo", CC"()Z", (void*)&WB_ShipDebugInfoPublic},
|
||||
{CC"countAliveClasses0", CC"(Ljava/lang/String;)I", (void*)&WB_CountAliveClasses },
|
||||
{CC"getSymbolRefcount", CC"(Ljava/lang/String;)I", (void*)&WB_GetSymbolRefcount },
|
||||
{CC"parseCommandLine0",
|
||||
|
||||
@@ -711,7 +711,7 @@ void JVMFlag::printFlags(outputStream* out, bool withComments, bool printRanges,
|
||||
for (size_t i = 0; i < length; i++) {
|
||||
const bool skip = (skipDefaults && flagTable[i].is_default());
|
||||
const bool visited = iteratorMarkers.at(i);
|
||||
if (!visited && flagTable[i].is_unlocked() && !skip) {
|
||||
if (!visited && !skip) {
|
||||
if ((bestFlag == nullptr) || (strcmp(bestFlag->name(), flagTable[i].name()) > 0)) {
|
||||
bestFlag = &flagTable[i];
|
||||
bestFlagIndex = i;
|
||||
|
||||
@@ -244,7 +244,7 @@ void mutex_init() {
|
||||
MUTEX_DEFN(SymbolArena_lock , PaddedMutex , nosafepoint);
|
||||
MUTEX_DEFN(ExceptionCache_lock , PaddedMutex , safepoint);
|
||||
#ifndef PRODUCT
|
||||
MUTEX_DEFN(FullGCALot_lock , PaddedMutex , safepoint); // a lock to make FullGCALot MT safe
|
||||
MUTEX_DEFN(FullGCALot_lock , PaddedMutex , nosafepoint); // a lock to make FullGCALot MT safe
|
||||
#endif
|
||||
MUTEX_DEFN(BeforeExit_lock , PaddedMonitor, safepoint);
|
||||
|
||||
|
||||
@@ -216,6 +216,7 @@
|
||||
nonstatic_field(InstanceKlass, _annotations, Annotations*) \
|
||||
nonstatic_field(InstanceKlass, _method_ordering, Array<int>*) \
|
||||
nonstatic_field(InstanceKlass, _default_vtable_indices, Array<int>*) \
|
||||
nonstatic_field(InstanceKlass, _access_flags, AccessFlags) \
|
||||
nonstatic_field(Klass, _super_check_offset, juint) \
|
||||
nonstatic_field(Klass, _secondary_super_cache, Klass*) \
|
||||
nonstatic_field(Klass, _secondary_supers, Array<Klass*>*) \
|
||||
@@ -225,7 +226,6 @@
|
||||
volatile_nonstatic_field(Klass, _subklass, Klass*) \
|
||||
nonstatic_field(Klass, _layout_helper, jint) \
|
||||
nonstatic_field(Klass, _name, Symbol*) \
|
||||
nonstatic_field(Klass, _access_flags, AccessFlags) \
|
||||
volatile_nonstatic_field(Klass, _next_sibling, Klass*) \
|
||||
nonstatic_field(Klass, _next_link, Klass*) \
|
||||
nonstatic_field(Klass, _vtable_len, int) \
|
||||
|
||||
@@ -67,7 +67,7 @@ class AccessFlags {
|
||||
void set_flags(u2 flags) { _flags = flags; }
|
||||
|
||||
private:
|
||||
friend class Klass;
|
||||
friend class InstanceKlass;
|
||||
friend class ClassFileParser;
|
||||
// the functions below should only be called on the _access_flags inst var directly,
|
||||
// otherwise they are just changing a copy of the flags
|
||||
|
||||
@@ -1038,6 +1038,14 @@ public sealed interface ClassFile
|
||||
*/
|
||||
int JAVA_26_VERSION = 70;
|
||||
|
||||
/**
|
||||
* The class major version introduced by Java SE 27, {@value}.
|
||||
*
|
||||
* @see ClassFileFormatVersion#RELEASE_27
|
||||
* @since 27
|
||||
*/
|
||||
int JAVA_27_VERSION = 71;
|
||||
|
||||
/**
|
||||
* A minor version number {@value} indicating a class uses preview features
|
||||
* of a Java SE release since 12, for major versions {@value
|
||||
@@ -1049,7 +1057,7 @@ public sealed interface ClassFile
|
||||
* {@return the latest class major version supported by the current runtime}
|
||||
*/
|
||||
static int latestMajorVersion() {
|
||||
return JAVA_26_VERSION;
|
||||
return JAVA_27_VERSION;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -383,6 +383,18 @@ public enum ClassFileFormatVersion {
|
||||
* <cite>The Java Virtual Machine Specification, Java SE 26 Edition</cite></a>
|
||||
*/
|
||||
RELEASE_26(70),
|
||||
|
||||
/**
|
||||
* The version introduced by the Java Platform, Standard Edition
|
||||
* 27.
|
||||
*
|
||||
* @since 27
|
||||
*
|
||||
* @see <a
|
||||
* href="https://docs.oracle.com/en/java/javase/27/docs/specs/jvms/index.html">
|
||||
* <cite>The Java Virtual Machine Specification, Java SE 27 Edition</cite></a>
|
||||
*/
|
||||
RELEASE_27(71),
|
||||
; // Reduce code churn when appending new constants
|
||||
|
||||
// Note to maintainers: when adding constants for newer releases,
|
||||
@@ -398,7 +410,7 @@ public enum ClassFileFormatVersion {
|
||||
* {@return the latest class file format version}
|
||||
*/
|
||||
public static ClassFileFormatVersion latest() {
|
||||
return RELEASE_26;
|
||||
return RELEASE_27;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -86,7 +86,8 @@ public enum SourceVersion {
|
||||
* (primitive Types in Patterns, instanceof, and switch in
|
||||
* third preview)
|
||||
* 26: no changes (primitive Types in Patterns, instanceof, and
|
||||
* switch in in fourth preview)
|
||||
* switch in fourth preview)
|
||||
* 27: tbd
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -484,6 +485,18 @@ public enum SourceVersion {
|
||||
* <cite>The Java Language Specification, Java SE 26 Edition</cite></a>
|
||||
*/
|
||||
RELEASE_26,
|
||||
|
||||
/**
|
||||
* The version introduced by the Java Platform, Standard Edition
|
||||
* 27.
|
||||
*
|
||||
* @since 27
|
||||
*
|
||||
* @see <a
|
||||
* href="https://docs.oracle.com/en/java/javase/27/docs/specs/jls/index.html">
|
||||
* <cite>The Java Language Specification, Java SE 27 Edition</cite></a>
|
||||
*/
|
||||
RELEASE_27,
|
||||
; // Reduce code churn when appending new constants
|
||||
|
||||
// Note that when adding constants for newer releases, the
|
||||
@@ -493,7 +506,7 @@ public enum SourceVersion {
|
||||
* {@return the latest source version that can be modeled}
|
||||
*/
|
||||
public static SourceVersion latest() {
|
||||
return RELEASE_26;
|
||||
return RELEASE_27;
|
||||
}
|
||||
|
||||
private static final SourceVersion latestSupported = getLatestSupported();
|
||||
@@ -508,7 +521,7 @@ public enum SourceVersion {
|
||||
private static SourceVersion getLatestSupported() {
|
||||
int intVersion = Runtime.version().feature();
|
||||
return (intVersion >= 11) ?
|
||||
valueOf("RELEASE_" + Math.min(26, intVersion)):
|
||||
valueOf("RELEASE_" + Math.min(27, intVersion)):
|
||||
RELEASE_10;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ import javax.annotation.processing.SupportedSourceVersion;
|
||||
* @see AbstractAnnotationValueVisitor9
|
||||
* @since 14
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
public abstract class AbstractAnnotationValueVisitor14<R, P> extends AbstractAnnotationValueVisitor9<R, P> {
|
||||
|
||||
/**
|
||||
|
||||
@@ -50,7 +50,7 @@ import javax.annotation.processing.ProcessingEnvironment;
|
||||
* @see AbstractAnnotationValueVisitor14
|
||||
* @since 23
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
@PreviewFeature(feature=PreviewFeature.Feature.LANGUAGE_MODEL, reflective=true)
|
||||
public abstract class AbstractAnnotationValueVisitorPreview<R, P> extends AbstractAnnotationValueVisitor14<R, P> {
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ import static javax.lang.model.SourceVersion.*;
|
||||
* @see AbstractElementVisitor9
|
||||
* @since 16
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
public abstract class AbstractElementVisitor14<R, P> extends AbstractElementVisitor9<R, P> {
|
||||
/**
|
||||
* Constructor for concrete subclasses to call.
|
||||
|
||||
@@ -53,7 +53,7 @@ import static javax.lang.model.SourceVersion.*;
|
||||
* @see AbstractElementVisitor14
|
||||
* @since 23
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
@PreviewFeature(feature=PreviewFeature.Feature.LANGUAGE_MODEL, reflective=true)
|
||||
public abstract class AbstractElementVisitorPreview<R, P> extends AbstractElementVisitor14<R, P> {
|
||||
/**
|
||||
|
||||
@@ -47,7 +47,7 @@ import static javax.lang.model.SourceVersion.*;
|
||||
* @see AbstractTypeVisitor9
|
||||
* @since 14
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
public abstract class AbstractTypeVisitor14<R, P> extends AbstractTypeVisitor9<R, P> {
|
||||
/**
|
||||
* Constructor for concrete subclasses to call.
|
||||
|
||||
@@ -53,7 +53,7 @@ import static javax.lang.model.SourceVersion.*;
|
||||
* @see AbstractTypeVisitor14
|
||||
* @since 23
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
@PreviewFeature(feature=PreviewFeature.Feature.LANGUAGE_MODEL, reflective=true)
|
||||
public abstract class AbstractTypeVisitorPreview<R, P> extends AbstractTypeVisitor14<R, P> {
|
||||
/**
|
||||
|
||||
@@ -61,7 +61,7 @@ import javax.lang.model.SourceVersion;
|
||||
* @see ElementKindVisitor9
|
||||
* @since 16
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
public class ElementKindVisitor14<R, P> extends ElementKindVisitor9<R, P> {
|
||||
/**
|
||||
* Constructor for concrete subclasses; uses {@code null} for the
|
||||
|
||||
@@ -67,7 +67,7 @@ import static javax.lang.model.SourceVersion.*;
|
||||
* @see ElementKindVisitor14
|
||||
* @since 23
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
@PreviewFeature(feature=PreviewFeature.Feature.LANGUAGE_MODEL, reflective=true)
|
||||
public class ElementKindVisitorPreview<R, P> extends ElementKindVisitor14<R, P> {
|
||||
/**
|
||||
|
||||
@@ -77,7 +77,7 @@ import static javax.lang.model.SourceVersion.*;
|
||||
* @see ElementScanner9
|
||||
* @since 16
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
public class ElementScanner14<R, P> extends ElementScanner9<R, P> {
|
||||
/**
|
||||
* Constructor for concrete subclasses; uses {@code null} for the
|
||||
|
||||
@@ -81,7 +81,7 @@ import static javax.lang.model.SourceVersion.*;
|
||||
* @see ElementScanner14
|
||||
* @since 23
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
@PreviewFeature(feature=PreviewFeature.Feature.LANGUAGE_MODEL, reflective=true)
|
||||
public class ElementScannerPreview<R, P> extends ElementScanner14<R, P> {
|
||||
/**
|
||||
|
||||
@@ -52,7 +52,7 @@ import static javax.lang.model.SourceVersion.*;
|
||||
* @see SimpleAnnotationValueVisitor9
|
||||
* @since 14
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
public class SimpleAnnotationValueVisitor14<R, P> extends SimpleAnnotationValueVisitor9<R, P> {
|
||||
/**
|
||||
* Constructor for concrete subclasses; uses {@code null} for the
|
||||
|
||||
@@ -58,7 +58,7 @@ import static javax.lang.model.SourceVersion.*;
|
||||
* @see SimpleAnnotationValueVisitor14
|
||||
* @since 23
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
@PreviewFeature(feature=PreviewFeature.Feature.LANGUAGE_MODEL, reflective=true)
|
||||
public class SimpleAnnotationValueVisitorPreview<R, P> extends SimpleAnnotationValueVisitor14<R, P> {
|
||||
/**
|
||||
|
||||
@@ -58,7 +58,7 @@ import static javax.lang.model.SourceVersion.*;
|
||||
* @see SimpleElementVisitor9
|
||||
* @since 16
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
public class SimpleElementVisitor14<R, P> extends SimpleElementVisitor9<R, P> {
|
||||
/**
|
||||
* Constructor for concrete subclasses; uses {@code null} for the
|
||||
|
||||
@@ -61,7 +61,7 @@ import static javax.lang.model.SourceVersion.*;
|
||||
* @see SimpleElementVisitor14
|
||||
* @since 23
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
@PreviewFeature(feature=PreviewFeature.Feature.LANGUAGE_MODEL, reflective=true)
|
||||
public class SimpleElementVisitorPreview<R, P> extends SimpleElementVisitor14<R, P> {
|
||||
/**
|
||||
|
||||
@@ -56,7 +56,7 @@ import static javax.lang.model.SourceVersion.*;
|
||||
* @see SimpleTypeVisitor9
|
||||
* @since 14
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
public class SimpleTypeVisitor14<R, P> extends SimpleTypeVisitor9<R, P> {
|
||||
/**
|
||||
* Constructor for concrete subclasses; uses {@code null} for the
|
||||
|
||||
@@ -62,7 +62,7 @@ import static javax.lang.model.SourceVersion.*;
|
||||
* @see SimpleTypeVisitor14
|
||||
* @since 23
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
@PreviewFeature(feature=PreviewFeature.Feature.LANGUAGE_MODEL, reflective=true)
|
||||
public class SimpleTypeVisitorPreview<R, P> extends SimpleTypeVisitor14<R, P> {
|
||||
/**
|
||||
|
||||
@@ -61,7 +61,7 @@ import static javax.lang.model.SourceVersion.*;
|
||||
* @see TypeKindVisitor9
|
||||
* @since 14
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
public class TypeKindVisitor14<R, P> extends TypeKindVisitor9<R, P> {
|
||||
/**
|
||||
* Constructor for concrete subclasses to call; uses {@code null}
|
||||
|
||||
@@ -66,7 +66,7 @@ import static javax.lang.model.SourceVersion.*;
|
||||
* @see TypeKindVisitor14
|
||||
* @since 23
|
||||
*/
|
||||
@SupportedSourceVersion(RELEASE_26)
|
||||
@SupportedSourceVersion(RELEASE_27)
|
||||
@PreviewFeature(feature=PreviewFeature.Feature.LANGUAGE_MODEL, reflective=true)
|
||||
public class TypeKindVisitorPreview<R, P> extends TypeKindVisitor14<R, P> {
|
||||
/**
|
||||
|
||||
@@ -68,6 +68,11 @@ static jclass sjc_CAccessibility = NULL;
|
||||
sjm_getCurrentAccessiblePopupMenu,
|
||||
fAccessible, fComponent);
|
||||
|
||||
CHECK_EXCEPTION();
|
||||
if (axComponent == nil) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
CommonComponentAccessibility *currentElement = [CommonComponentAccessibility createWithAccessible:axComponent
|
||||
withEnv:env withView:self->fView isCurrent:YES];
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 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
|
||||
@@ -777,10 +777,10 @@ public class JTree extends JComponent implements Scrollable, Accessible
|
||||
updateInProgress = true;
|
||||
|
||||
try {
|
||||
setUI((TreeUI)UIManager.getUI(this));
|
||||
|
||||
SwingUtilities.updateRendererOrEditorUI(getCellRenderer());
|
||||
SwingUtilities.updateRendererOrEditorUI(getCellEditor());
|
||||
|
||||
setUI((TreeUI)UIManager.getUI(this));
|
||||
} finally {
|
||||
updateInProgress = false;
|
||||
}
|
||||
|
||||
@@ -138,8 +138,6 @@ import sun.awt.X11GraphicsDevice;
|
||||
import sun.awt.X11GraphicsEnvironment;
|
||||
import sun.awt.XSettings;
|
||||
import sun.awt.datatransfer.DataTransferer;
|
||||
import sun.awt.screencast.ScreencastHelper;
|
||||
import sun.awt.screencast.XdgDesktopPortal;
|
||||
import sun.awt.util.PerformanceLogger;
|
||||
import sun.awt.util.ThreadGroupUtils;
|
||||
import sun.font.FontConfigManager;
|
||||
@@ -1523,21 +1521,16 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
|
||||
awtLock();
|
||||
try {
|
||||
if (numberOfButtons == 0) {
|
||||
if (XdgDesktopPortal.isRemoteDesktop()
|
||||
&& ScreencastHelper.isAvailable()) {
|
||||
numberOfButtons = getNumberOfButtonsImpl();
|
||||
numberOfButtons = (numberOfButtons > MAX_BUTTONS_SUPPORTED) ? MAX_BUTTONS_SUPPORTED : numberOfButtons;
|
||||
//4th and 5th buttons are for wheel and shouldn't be reported as buttons.
|
||||
//If we have more than 3 physical buttons and a wheel, we report N-2 buttons.
|
||||
//If we have 3 physical buttons and a wheel, we report 3 buttons.
|
||||
//If we have 1,2,3 physical buttons, we report it as is i.e. 1,2 or 3 respectively.
|
||||
if (numberOfButtons >= 5) {
|
||||
numberOfButtons -= 2;
|
||||
} else if (numberOfButtons == 4 || numberOfButtons == 5) {
|
||||
numberOfButtons = 3;
|
||||
} else {
|
||||
numberOfButtons = getNumberOfButtonsImpl();
|
||||
numberOfButtons = (numberOfButtons > MAX_BUTTONS_SUPPORTED) ? MAX_BUTTONS_SUPPORTED : numberOfButtons;
|
||||
//4th and 5th buttons are for wheel and shouldn't be reported as buttons.
|
||||
//If we have more than 3 physical buttons and a wheel, we report N-2 buttons.
|
||||
//If we have 3 physical buttons and a wheel, we report 3 buttons.
|
||||
//If we have 1,2,3 physical buttons, we report it as is i.e. 1,2 or 3 respectively.
|
||||
if (numberOfButtons >= 5) {
|
||||
numberOfButtons -= 2;
|
||||
} else if (numberOfButtons == 4 || numberOfButtons == 5) {
|
||||
numberOfButtons = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
//Assume don't have to re-query the number again and again.
|
||||
|
||||
@@ -312,10 +312,22 @@ public abstract class HttpClient implements AutoCloseable {
|
||||
* need to be established, for example if a connection can be reused
|
||||
* from a previous request, then this timeout duration has no effect.
|
||||
*
|
||||
* @implSpec
|
||||
* A connection timeout applies to the entire connection phase, from the
|
||||
* moment a connection is requested until it is established.
|
||||
* Implementations are recommended to ensure that the connection timeout
|
||||
* covers any SSL/TLS handshakes.
|
||||
*
|
||||
* @implNote
|
||||
* The built-in JDK implementation of the connection timeout covers any
|
||||
* SSL/TLS handshakes.
|
||||
*
|
||||
* @param duration the duration to allow the underlying connection to be
|
||||
* established
|
||||
* @return this builder
|
||||
* @throws IllegalArgumentException if the duration is non-positive
|
||||
* @see HttpRequest.Builder#timeout(Duration) Configuring timeout for
|
||||
* request execution
|
||||
*/
|
||||
public Builder connectTimeout(Duration duration);
|
||||
|
||||
|
||||
@@ -258,12 +258,28 @@ public abstract class HttpRequest {
|
||||
* {@link HttpClient#sendAsync(java.net.http.HttpRequest,
|
||||
* java.net.http.HttpResponse.BodyHandler) HttpClient::sendAsync}
|
||||
* completes exceptionally with an {@code HttpTimeoutException}. The effect
|
||||
* of not setting a timeout is the same as setting an infinite Duration,
|
||||
* i.e. block forever.
|
||||
* of not setting a timeout is the same as setting an infinite
|
||||
* {@code Duration}, i.e., block forever.
|
||||
*
|
||||
* @implSpec
|
||||
* A timeout applies to the duration measured from the instant the
|
||||
* request execution starts to, <em>at least</em>, the instant an
|
||||
* {@link HttpResponse} is constructed. The elapsed time includes
|
||||
* obtaining a connection for transport and retrieving the response
|
||||
* headers.
|
||||
*
|
||||
* @implNote
|
||||
* The JDK built-in implementation applies timeout over the duration
|
||||
* measured from the instant the request execution starts to <b>the
|
||||
* instant the response body is consumed</b>, if present. This is
|
||||
* implemented by stopping the timer after the response body subscriber
|
||||
* completion.
|
||||
*
|
||||
* @param duration the timeout duration
|
||||
* @return this builder
|
||||
* @throws IllegalArgumentException if the duration is non-positive
|
||||
* @see HttpClient.Builder#connectTimeout(Duration) Configuring
|
||||
* timeout for connection establishment
|
||||
*/
|
||||
public abstract Builder timeout(Duration duration);
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 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
|
||||
@@ -144,6 +144,16 @@ public interface WebSocket {
|
||||
* {@link HttpTimeoutException}. If this method is not invoked then the
|
||||
* infinite timeout is assumed.
|
||||
*
|
||||
* @implSpec
|
||||
* A connection timeout applies to the entire connection phase, from the
|
||||
* moment a connection is requested until it is established.
|
||||
* Implementations are recommended to ensure that the connection timeout
|
||||
* covers any WebSocket and SSL/TLS handshakes.
|
||||
*
|
||||
* @implNote
|
||||
* The built-in JDK implementation of the connection timeout covers any
|
||||
* WebSocket and SSL/TLS handshakes.
|
||||
*
|
||||
* @param timeout
|
||||
* the timeout, non-{@linkplain Duration#isNegative() negative},
|
||||
* non-{@linkplain Duration#ZERO ZERO}
|
||||
|
||||
@@ -581,6 +581,18 @@ abstract class ExchangeImpl<T> {
|
||||
// Needed for HTTP/2 to subscribe a dummy subscriber and close the stream
|
||||
}
|
||||
|
||||
/**
|
||||
* {@return {@code true}, if it is allowed to cancel the request timer on
|
||||
* response body subscriber termination; {@code false}, otherwise}
|
||||
*
|
||||
* @param webSocket indicates if the associated request is a WebSocket handshake
|
||||
* @param statusCode the status code of the associated response
|
||||
*/
|
||||
static boolean cancelTimerOnResponseBodySubscriberTermination(
|
||||
boolean webSocket, int statusCode) {
|
||||
return webSocket || statusCode < 100 || statusCode >= 200;
|
||||
}
|
||||
|
||||
/* The following methods have separate HTTP/1.1 and HTTP/2 implementations */
|
||||
|
||||
abstract CompletableFuture<ExchangeImpl<T>> sendHeadersAsync();
|
||||
|
||||
@@ -206,8 +206,15 @@ class Http1Exchange<T> extends ExchangeImpl<T> {
|
||||
*/
|
||||
static final class Http1ResponseBodySubscriber<U> extends HttpBodySubscriberWrapper<U> {
|
||||
final Http1Exchange<U> exchange;
|
||||
Http1ResponseBodySubscriber(BodySubscriber<U> userSubscriber, Http1Exchange<U> exchange) {
|
||||
|
||||
private final boolean cancelTimerOnTermination;
|
||||
|
||||
Http1ResponseBodySubscriber(
|
||||
BodySubscriber<U> userSubscriber,
|
||||
boolean cancelTimerOnTermination,
|
||||
Http1Exchange<U> exchange) {
|
||||
super(userSubscriber);
|
||||
this.cancelTimerOnTermination = cancelTimerOnTermination;
|
||||
this.exchange = exchange;
|
||||
}
|
||||
|
||||
@@ -220,6 +227,14 @@ class Http1Exchange<T> extends ExchangeImpl<T> {
|
||||
protected void unregister() {
|
||||
exchange.unregisterResponseSubscriber(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onTermination() {
|
||||
if (cancelTimerOnTermination) {
|
||||
exchange.exchange.multi.cancelTimer();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -459,9 +474,10 @@ class Http1Exchange<T> extends ExchangeImpl<T> {
|
||||
@Override
|
||||
Http1ResponseBodySubscriber<T> createResponseSubscriber(BodyHandler<T> handler, ResponseInfo response) {
|
||||
BodySubscriber<T> subscriber = handler.apply(response);
|
||||
Http1ResponseBodySubscriber<T> bs =
|
||||
new Http1ResponseBodySubscriber<T>(subscriber, this);
|
||||
return bs;
|
||||
var cancelTimerOnTermination =
|
||||
cancelTimerOnResponseBodySubscriberTermination(
|
||||
exchange.request().isWebSocket(), response.statusCode());
|
||||
return new Http1ResponseBodySubscriber<>(subscriber, cancelTimerOnTermination, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -554,8 +554,12 @@ final class Http3ExchangeImpl<T> extends Http3Stream<T> {
|
||||
}
|
||||
|
||||
final class Http3StreamResponseSubscriber<U> extends HttpBodySubscriberWrapper<U> {
|
||||
Http3StreamResponseSubscriber(BodySubscriber<U> subscriber) {
|
||||
|
||||
private final boolean cancelTimerOnTermination;
|
||||
|
||||
Http3StreamResponseSubscriber(BodySubscriber<U> subscriber, boolean cancelTimerOnTermination) {
|
||||
super(subscriber);
|
||||
this.cancelTimerOnTermination = cancelTimerOnTermination;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -568,6 +572,13 @@ final class Http3ExchangeImpl<T> extends Http3Stream<T> {
|
||||
registerResponseSubscriber(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onTermination() {
|
||||
if (cancelTimerOnTermination) {
|
||||
exchange.multi.cancelTimer();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void logComplete(Throwable error) {
|
||||
if (error == null) {
|
||||
@@ -590,9 +601,10 @@ final class Http3ExchangeImpl<T> extends Http3Stream<T> {
|
||||
Http3StreamResponseSubscriber<T> createResponseSubscriber(BodyHandler<T> handler,
|
||||
ResponseInfo response) {
|
||||
if (debug.on()) debug.log("Creating body subscriber");
|
||||
Http3StreamResponseSubscriber<T> subscriber =
|
||||
new Http3StreamResponseSubscriber<>(handler.apply(response));
|
||||
return subscriber;
|
||||
var cancelTimerOnTermination =
|
||||
cancelTimerOnResponseBodySubscriberTermination(
|
||||
exchange.request().isWebSocket(), response.statusCode());
|
||||
return new Http3StreamResponseSubscriber<>(handler.apply(response), cancelTimerOnTermination);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1880,6 +1880,13 @@ final class HttpClientImpl extends HttpClient implements Trackable {
|
||||
}
|
||||
}
|
||||
|
||||
// Visible for tests
|
||||
List<TimeoutEvent> timers() {
|
||||
synchronized (this) {
|
||||
return new ArrayList<>(timeouts);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Purges ( handles ) timer events that have passed their deadline, and
|
||||
* returns the amount of time, in milliseconds, until the next earliest
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
|
||||
package jdk.internal.net.http;
|
||||
|
||||
import java.io.IOError;
|
||||
import java.io.IOException;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.net.ConnectException;
|
||||
@@ -254,7 +253,7 @@ class MultiExchange<T> implements Cancelable {
|
||||
.map(ConnectTimeoutTracker::getRemaining);
|
||||
}
|
||||
|
||||
private void cancelTimer() {
|
||||
void cancelTimer() {
|
||||
if (responseTimerEvent != null) {
|
||||
client.cancelTimer(responseTimerEvent);
|
||||
responseTimerEvent = null;
|
||||
@@ -404,6 +403,8 @@ class MultiExchange<T> implements Cancelable {
|
||||
processAltSvcHeader(r, client(), currentreq);
|
||||
Exchange<T> exch = getExchange();
|
||||
if (bodyNotPermitted(r)) {
|
||||
// No response body consumption is expected, we can cancel the timer right away
|
||||
cancelTimer();
|
||||
if (bodyIsPresent(r)) {
|
||||
IOException ioe = new IOException(
|
||||
"unexpected content length header with 204 response");
|
||||
@@ -467,6 +468,8 @@ class MultiExchange<T> implements Cancelable {
|
||||
|
||||
private CompletableFuture<Response> responseAsyncImpl(final boolean applyReqFilters) {
|
||||
if (currentreq.timeout().isPresent()) {
|
||||
// Retried/Forwarded requests should reset the timer, if present
|
||||
cancelTimer();
|
||||
responseTimerEvent = ResponseTimerEvent.of(this);
|
||||
client.registerTimer(responseTimerEvent);
|
||||
}
|
||||
@@ -502,7 +505,6 @@ class MultiExchange<T> implements Cancelable {
|
||||
}
|
||||
return completedFuture(response);
|
||||
} else {
|
||||
cancelTimer();
|
||||
setNewResponse(currentreq, response, null, exch);
|
||||
if (currentreq.isWebSocket()) {
|
||||
// need to close the connection and open a new one.
|
||||
@@ -520,11 +522,18 @@ class MultiExchange<T> implements Cancelable {
|
||||
} })
|
||||
.handle((response, ex) -> {
|
||||
// 5. handle errors and cancel any timer set
|
||||
cancelTimer();
|
||||
if (ex == null) {
|
||||
assert response != null;
|
||||
return completedFuture(response);
|
||||
}
|
||||
|
||||
// Cancel the timer. Note that we only do so if the
|
||||
// response has completed exceptionally. That is, we don't
|
||||
// cancel the timer if there are no exceptions, since the
|
||||
// response body might still get consumed, and it is
|
||||
// still subject to the response timer.
|
||||
cancelTimer();
|
||||
|
||||
// all exceptions thrown are handled here
|
||||
final RetryContext retryCtx = checkRetryEligible(ex, exch);
|
||||
assert retryCtx != null : "retry context is null";
|
||||
|
||||
@@ -390,9 +390,10 @@ class Stream<T> extends ExchangeImpl<T> {
|
||||
|
||||
@Override
|
||||
Http2StreamResponseSubscriber<T> createResponseSubscriber(BodyHandler<T> handler, ResponseInfo response) {
|
||||
Http2StreamResponseSubscriber<T> subscriber =
|
||||
new Http2StreamResponseSubscriber<>(handler.apply(response));
|
||||
return subscriber;
|
||||
var cancelTimerOnTermination =
|
||||
cancelTimerOnResponseBodySubscriberTermination(
|
||||
exchange.request().isWebSocket(), response.statusCode());
|
||||
return new Http2StreamResponseSubscriber<>(handler.apply(response), cancelTimerOnTermination);
|
||||
}
|
||||
|
||||
// The Http2StreamResponseSubscriber is registered with the HttpClient
|
||||
@@ -1694,6 +1695,11 @@ class Stream<T> extends ExchangeImpl<T> {
|
||||
.whenComplete((v, t) -> pushGroup.pushError(t));
|
||||
}
|
||||
|
||||
@Override
|
||||
Http2StreamResponseSubscriber<T> createResponseSubscriber(BodyHandler<T> handler, ResponseInfo response) {
|
||||
return new Http2StreamResponseSubscriber<T>(handler.apply(response), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
void completeResponse(Response r) {
|
||||
Log.logResponse(r::toString);
|
||||
@@ -1924,8 +1930,12 @@ class Stream<T> extends ExchangeImpl<T> {
|
||||
}
|
||||
|
||||
final class Http2StreamResponseSubscriber<U> extends HttpBodySubscriberWrapper<U> {
|
||||
Http2StreamResponseSubscriber(BodySubscriber<U> subscriber) {
|
||||
|
||||
private final boolean cancelTimerOnTermination;
|
||||
|
||||
Http2StreamResponseSubscriber(BodySubscriber<U> subscriber, boolean cancelTimerOnTermination) {
|
||||
super(subscriber);
|
||||
this.cancelTimerOnTermination = cancelTimerOnTermination;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1938,6 +1948,13 @@ class Stream<T> extends ExchangeImpl<T> {
|
||||
unregisterResponseSubscriber(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onTermination() {
|
||||
if (cancelTimerOnTermination) {
|
||||
exchange.multi.cancelTimer();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static final VarHandle DEREGISTERED;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2022, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -33,7 +33,6 @@ import java.util.Objects;
|
||||
import java.util.concurrent.CompletionStage;
|
||||
import java.util.concurrent.Flow;
|
||||
import java.util.concurrent.Flow.Subscription;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
@@ -51,7 +50,6 @@ public class HttpBodySubscriberWrapper<T> implements TrustedSubscriber<T> {
|
||||
public static final Comparator<HttpBodySubscriberWrapper<?>> COMPARE_BY_ID
|
||||
= Comparator.comparing(HttpBodySubscriberWrapper::id);
|
||||
|
||||
|
||||
public static final Flow.Subscription NOP = new Flow.Subscription() {
|
||||
@Override
|
||||
public void request(long n) { }
|
||||
@@ -75,7 +73,18 @@ public class HttpBodySubscriberWrapper<T> implements TrustedSubscriber<T> {
|
||||
this.userSubscriber = userSubscriber;
|
||||
}
|
||||
|
||||
private class SubscriptionWrapper implements Subscription {
|
||||
/**
|
||||
* A callback to be invoked <em>before</em> termination, whether due to the
|
||||
* completion or failure of the subscriber, or cancellation of the
|
||||
* subscription. To be precise, this method is called before
|
||||
* {@link #onComplete()}, {@link #onError(Throwable) onError()}, or
|
||||
* {@link #onCancel()}.
|
||||
*/
|
||||
protected void onTermination() {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
private final class SubscriptionWrapper implements Subscription {
|
||||
final Subscription subscription;
|
||||
SubscriptionWrapper(Subscription s) {
|
||||
this.subscription = Objects.requireNonNull(s);
|
||||
@@ -92,6 +101,7 @@ public class HttpBodySubscriberWrapper<T> implements TrustedSubscriber<T> {
|
||||
subscription.cancel();
|
||||
} finally {
|
||||
if (markCancelled()) {
|
||||
onTermination();
|
||||
onCancel();
|
||||
}
|
||||
}
|
||||
@@ -284,6 +294,7 @@ public class HttpBodySubscriberWrapper<T> implements TrustedSubscriber<T> {
|
||||
*/
|
||||
public final void complete(Throwable t) {
|
||||
if (markCompleted()) {
|
||||
onTermination();
|
||||
logComplete(t);
|
||||
tryUnregister();
|
||||
t = withError = Utils.getCompletionCause(t);
|
||||
|
||||
@@ -158,6 +158,11 @@ public enum Source {
|
||||
* 26, tbd
|
||||
*/
|
||||
JDK26("26"),
|
||||
|
||||
/**
|
||||
* 27, tbd
|
||||
*/
|
||||
JDK27("27"),
|
||||
; // Reduce code churn when appending new constants
|
||||
|
||||
private static final Context.Key<Source> sourceKey = new Context.Key<>();
|
||||
@@ -210,6 +215,7 @@ public enum Source {
|
||||
|
||||
public Target requiredTarget() {
|
||||
return switch(this) {
|
||||
case JDK27 -> Target.JDK1_27;
|
||||
case JDK26 -> Target.JDK1_26;
|
||||
case JDK25 -> Target.JDK1_25;
|
||||
case JDK24 -> Target.JDK1_24;
|
||||
@@ -366,6 +372,7 @@ public enum Source {
|
||||
case JDK24 -> RELEASE_24;
|
||||
case JDK25 -> RELEASE_25;
|
||||
case JDK26 -> RELEASE_26;
|
||||
case JDK27 -> RELEASE_27;
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -130,6 +130,7 @@ public class ClassFile {
|
||||
V68(68, 0), // JDK 24
|
||||
V69(69, 0), // JDK 25
|
||||
V70(70, 0), // JDK 26
|
||||
V71(71, 0), // JDK 27
|
||||
; // Reduce code churn when appending new constants
|
||||
Version(int major, int minor) {
|
||||
this.major = major;
|
||||
|
||||
@@ -113,6 +113,9 @@ public enum Target {
|
||||
|
||||
/** JDK 26. */
|
||||
JDK1_26("26", 70, 0),
|
||||
|
||||
/** JDK 27. */
|
||||
JDK1_27("27", 71, 0),
|
||||
; // Reduce code churn when appending new constants
|
||||
|
||||
private static final Context.Key<Target> targetKey = new Context.Key<>();
|
||||
|
||||
@@ -55,7 +55,7 @@ import com.sun.tools.javac.util.StringUtils;
|
||||
* deletion without notice.</b>
|
||||
*/
|
||||
@SupportedAnnotationTypes("*")
|
||||
@SupportedSourceVersion(SourceVersion.RELEASE_26)
|
||||
@SupportedSourceVersion(SourceVersion.RELEASE_27)
|
||||
public class PrintingProcessor extends AbstractProcessor {
|
||||
PrintWriter writer;
|
||||
|
||||
|
||||
558
src/jdk.compiler/share/data/symbols/java.base-Q.sym.txt
Normal file
558
src/jdk.compiler/share/data/symbols/java.base-Q.sym.txt
Normal file
@@ -0,0 +1,558 @@
|
||||
#
|
||||
# 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. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# ##########################################################
|
||||
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
|
||||
# ##########################################################
|
||||
#
|
||||
module name java.base
|
||||
header exports java/io,java/lang,java/lang/annotation,java/lang/classfile,java/lang/classfile/attribute,java/lang/classfile/constantpool,java/lang/classfile/instruction,java/lang/constant,java/lang/foreign,java/lang/invoke,java/lang/module,java/lang/ref,java/lang/reflect,java/lang/runtime,java/math,java/net,java/net/spi,java/nio,java/nio/channels,java/nio/channels/spi,java/nio/charset,java/nio/charset/spi,java/nio/file,java/nio/file/attribute,java/nio/file/spi,java/security,java/security/cert,java/security/interfaces,java/security/spec,java/text,java/text/spi,java/time,java/time/chrono,java/time/format,java/time/temporal,java/time/zone,java/util,java/util/concurrent,java/util/concurrent/atomic,java/util/concurrent/locks,java/util/function,java/util/jar,java/util/random,java/util/regex,java/util/spi,java/util/stream,java/util/zip,javax/crypto,javax/crypto/interfaces,javax/crypto/spec,javax/net,javax/net/ssl,javax/security/auth,javax/security/auth/callback,javax/security/auth/login,javax/security/auth/spi,javax/security/auth/x500,javax/security/cert,jdk/internal/event[jdk.jfr],jdk/internal/javac[java.compiler\u005C;u002C;jdk.compiler],jdk/internal/vm/vector[jdk.incubator.vector] extraModulePackages jdk/internal/access/foreign,jdk/internal/classfile/impl,jdk/internal/constant,jdk/internal/foreign/abi,jdk/internal/foreign/abi/aarch64/linux,jdk/internal/foreign/abi/aarch64/macos,jdk/internal/foreign/abi/aarch64/windows,jdk/internal/foreign/abi/fallback,jdk/internal/foreign/abi/ppc64/aix,jdk/internal/foreign/abi/ppc64/linux,jdk/internal/foreign/abi/riscv64/linux,jdk/internal/foreign/abi/s390/linux,jdk/internal/foreign/abi/x64/sysv,jdk/internal/foreign/abi/x64/windows,jdk/internal/foreign/layout,jdk/internal/lang,sun/nio,sun/nio/ch,sun/net,jdk/internal/foreign,jdk/internal/foreign,sun/net,sun/nio/ch uses java/lang/System$LoggerFinder,java/net/ContentHandlerFactory,java/net/spi/InetAddressResolverProvider,java/net/spi/URLStreamHandlerProvider,java/nio/channels/spi/AsynchronousChannelProvider,java/nio/channels/spi/SelectorProvider,java/nio/charset/spi/CharsetProvider,java/nio/file/spi/FileSystemProvider,java/nio/file/spi/FileTypeDetector,java/security/Provider,java/text/spi/BreakIteratorProvider,java/text/spi/CollatorProvider,java/text/spi/DateFormatProvider,java/text/spi/DateFormatSymbolsProvider,java/text/spi/DecimalFormatSymbolsProvider,java/text/spi/NumberFormatProvider,java/time/chrono/AbstractChronology,java/time/chrono/Chronology,java/time/zone/ZoneRulesProvider,java/util/spi/CalendarDataProvider,java/util/spi/CalendarNameProvider,java/util/spi/CurrencyNameProvider,java/util/spi/LocaleNameProvider,java/util/spi/ResourceBundleControlProvider,java/util/spi/ResourceBundleProvider,java/util/spi/TimeZoneNameProvider,java/util/spi/ToolProvider,javax/security/auth/spi/LoginModule,jdk/internal/io/JdkConsoleProvider,jdk/internal/logger/DefaultLoggerFinder,sun/text/spi/JavaTimeDateTimePatternProvider,sun/util/locale/provider/LocaleDataMetaInfo,sun/util/resources/LocaleData$LocaleDataResourceBundleProvider,sun/util/spi/CalendarProvider provides interface\u0020;java/nio/file/spi/FileSystemProvider\u0020;impls\u0020;jdk/internal/jrtfs/JrtFileSystemProvider target macos-aarch64 flags 8000
|
||||
|
||||
class name java/lang/Character$UnicodeBlock
|
||||
field name SIDETIC descriptor Ljava/lang/Character$UnicodeBlock; flags 19
|
||||
field name SHARADA_SUPPLEMENT descriptor Ljava/lang/Character$UnicodeBlock; flags 19
|
||||
field name TOLONG_SIKI descriptor Ljava/lang/Character$UnicodeBlock; flags 19
|
||||
field name BERIA_ERFE descriptor Ljava/lang/Character$UnicodeBlock; flags 19
|
||||
field name TANGUT_COMPONENTS_SUPPLEMENT descriptor Ljava/lang/Character$UnicodeBlock; flags 19
|
||||
field name MISCELLANEOUS_SYMBOLS_SUPPLEMENT descriptor Ljava/lang/Character$UnicodeBlock; flags 19
|
||||
field name TAI_YO descriptor Ljava/lang/Character$UnicodeBlock; flags 19
|
||||
field name CJK_UNIFIED_IDEOGRAPHS_EXTENSION_J descriptor Ljava/lang/Character$UnicodeBlock; flags 19
|
||||
|
||||
class name java/lang/Character$UnicodeScript
|
||||
field name SIDETIC descriptor Ljava/lang/Character$UnicodeScript; flags 4019
|
||||
field name TOLONG_SIKI descriptor Ljava/lang/Character$UnicodeScript; flags 4019
|
||||
field name BERIA_ERFE descriptor Ljava/lang/Character$UnicodeScript; flags 4019
|
||||
field name TAI_YO descriptor Ljava/lang/Character$UnicodeScript; flags 4019
|
||||
|
||||
class name java/lang/Class
|
||||
header extends java/lang/Object implements java/io/Serializable,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor$OfField,java/lang/constant/Constable flags 31 signature <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/reflect/GenericDeclaration;Ljava/lang/reflect/Type;Ljava/lang/reflect/AnnotatedElement;Ljava/lang/invoke/TypeDescriptor$OfField<Ljava/lang/Class<*>;>;Ljava/lang/constant/Constable; runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/reflect/AccessFlag$Location outerClass java/lang/reflect/AccessFlag innerClassName Location flags 4019
|
||||
innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609
|
||||
innerclass innerClass java/lang/invoke/TypeDescriptor$OfField outerClass java/lang/invoke/TypeDescriptor innerClassName OfField flags 609
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
|
||||
class name java/lang/ClassLoader
|
||||
header extends java/lang/Object flags 421 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
|
||||
class name java/lang/LazyConstant
|
||||
header extends java/lang/Object implements java/util/function/Supplier sealed true permittedSubclasses jdk/internal/lang/LazyConstantImpl flags 601 signature <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/function/Supplier<TT;>; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LAZY_CONSTANTS;)
|
||||
method name orElse descriptor (Ljava/lang/Object;)Ljava/lang/Object; flags 401 signature (TT;)TT;
|
||||
method name get descriptor ()Ljava/lang/Object; flags 401 signature ()TT;
|
||||
method name isInitialized descriptor ()Z flags 401
|
||||
method name equals descriptor (Ljava/lang/Object;)Z flags 401
|
||||
method name hashCode descriptor ()I flags 401
|
||||
method name toString descriptor ()Ljava/lang/String; flags 401
|
||||
method name of descriptor (Ljava/util/function/Supplier;)Ljava/lang/LazyConstant; flags 9 signature <T:Ljava/lang/Object;>(Ljava/util/function/Supplier<+TT;>;)Ljava/lang/LazyConstant<TT;>;
|
||||
|
||||
class name java/lang/Math
|
||||
-method name sinh descriptor (D)D
|
||||
method name sinh descriptor (D)D flags 9 runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate;
|
||||
|
||||
class name java/lang/Object
|
||||
header flags 21 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
|
||||
class name java/lang/Process
|
||||
header extends java/lang/Object implements java/io/Closeable flags 421
|
||||
innerclass innerClass java/util/concurrent/ForkJoinPool$ManagedBlocker outerClass java/util/concurrent/ForkJoinPool innerClassName ManagedBlocker flags 609
|
||||
innerclass innerClass java/lang/ProcessHandle$Info outerClass java/lang/ProcessHandle innerClassName Info flags 609
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
method name close descriptor ()V thrownTypes java/io/IOException flags 1
|
||||
|
||||
-class name java/lang/StableValue
|
||||
|
||||
class name java/lang/Thread
|
||||
-method name stop descriptor ()V
|
||||
|
||||
class name java/lang/classfile/ClassFile
|
||||
field name JAVA_26_VERSION descriptor I constantValue 70 flags 19
|
||||
|
||||
class name java/lang/classfile/Signature$ClassTypeSig
|
||||
-method name of descriptor (Ljava/lang/classfile/Signature$ClassTypeSig;Ljava/lang/constant/ClassDesc;[Ljava/lang/classfile/Signature$TypeArg;)Ljava/lang/classfile/Signature$ClassTypeSig;
|
||||
method name of descriptor (Ljava/lang/classfile/Signature$ClassTypeSig;Ljava/lang/constant/ClassDesc;[Ljava/lang/classfile/Signature$TypeArg;)Ljava/lang/classfile/Signature$ClassTypeSig; flags 89 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="26")
|
||||
|
||||
-class name java/lang/constant/AsTypeMethodHandleDesc
|
||||
|
||||
class name java/lang/constant/ConstantDescs
|
||||
header extends java/lang/Object flags 31 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/constant/DirectMethodHandleDesc$Kind outerClass java/lang/constant/DirectMethodHandleDesc innerClassName Kind flags 4019
|
||||
|
||||
class name java/lang/constant/DynamicConstantDesc
|
||||
header extends java/lang/Object implements java/lang/constant/ConstantDesc flags 421 signature <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/lang/constant/ConstantDesc; runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
innerclass innerClass java/lang/Enum$EnumDesc outerClass java/lang/Enum innerClassName EnumDesc flags 19
|
||||
innerclass innerClass java/lang/invoke/VarHandle$VarHandleDesc outerClass java/lang/invoke/VarHandle innerClassName VarHandleDesc flags 19
|
||||
|
||||
class name java/lang/constant/MethodHandleDesc
|
||||
header extends java/lang/Object implements java/lang/constant/ConstantDesc sealed true permittedSubclasses jdk/internal/constant/AsTypeMethodHandleDesc,java/lang/constant/DirectMethodHandleDesc flags 601
|
||||
innerclass innerClass java/lang/constant/DirectMethodHandleDesc$Kind outerClass java/lang/constant/DirectMethodHandleDesc innerClassName Kind flags 4019
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
|
||||
class name java/lang/invoke/BoundMethodHandle
|
||||
header extends java/lang/invoke/MethodHandle flags 420 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
|
||||
class name java/lang/invoke/DelegatingMethodHandle
|
||||
header extends java/lang/invoke/MethodHandle sealed true permittedSubclasses java/lang/invoke/MethodHandleImpl$AsVarargsCollector,java/lang/invoke/MethodHandleImpl$WrappedMember,java/lang/invoke/MethodHandleImpl$IntrinsicMethodHandle,java/lang/invoke/MethodHandleImpl$CountingWrapper flags 420 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/invoke/MethodHandleImpl$AsVarargsCollector outerClass java/lang/invoke/MethodHandleImpl innerClassName AsVarargsCollector flags 18
|
||||
innerclass innerClass java/lang/invoke/MethodHandleImpl$WrappedMember outerClass java/lang/invoke/MethodHandleImpl innerClassName WrappedMember flags 18
|
||||
innerclass innerClass java/lang/invoke/MethodHandleImpl$IntrinsicMethodHandle outerClass java/lang/invoke/MethodHandleImpl innerClassName IntrinsicMethodHandle flags 18
|
||||
innerclass innerClass java/lang/invoke/MethodHandleImpl$CountingWrapper outerClass java/lang/invoke/MethodHandleImpl innerClassName CountingWrapper flags 18
|
||||
|
||||
class name java/lang/invoke/DirectMethodHandle
|
||||
header extends java/lang/invoke/MethodHandle nestMembers java/lang/invoke/DirectMethodHandle$StaticAccessor,java/lang/invoke/DirectMethodHandle$Accessor,java/lang/invoke/DirectMethodHandle$Constructor,java/lang/invoke/DirectMethodHandle$Interface,java/lang/invoke/DirectMethodHandle$Special sealed true permittedSubclasses java/lang/invoke/DirectMethodHandle$Special,java/lang/invoke/DirectMethodHandle$Interface,java/lang/invoke/DirectMethodHandle$Constructor,java/lang/invoke/DirectMethodHandle$Accessor,java/lang/invoke/DirectMethodHandle$StaticAccessor flags 20 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/invoke/DirectMethodHandle$Special outerClass java/lang/invoke/DirectMethodHandle innerClassName Special flags 18
|
||||
innerclass innerClass java/lang/invoke/DirectMethodHandle$Interface outerClass java/lang/invoke/DirectMethodHandle innerClassName Interface flags 18
|
||||
innerclass innerClass java/lang/invoke/DirectMethodHandle$StaticAccessor outerClass java/lang/invoke/DirectMethodHandle innerClassName StaticAccessor flags 18
|
||||
innerclass innerClass java/lang/invoke/DirectMethodHandle$Accessor outerClass java/lang/invoke/DirectMethodHandle innerClassName Accessor flags 18
|
||||
innerclass innerClass java/lang/invoke/DirectMethodHandle$Constructor outerClass java/lang/invoke/DirectMethodHandle innerClassName Constructor flags 18
|
||||
|
||||
class name java/lang/invoke/DirectMethodHandle$Constructor
|
||||
header extends java/lang/invoke/DirectMethodHandle nestHost java/lang/invoke/DirectMethodHandle flags 30 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/invoke/DirectMethodHandle$Constructor outerClass java/lang/invoke/DirectMethodHandle innerClassName Constructor flags 18
|
||||
|
||||
class name java/lang/invoke/LambdaForm
|
||||
header extends java/lang/Object flags 20 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
|
||||
class name java/lang/invoke/LambdaMetafactory
|
||||
header extends java/lang/Object flags 31 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
|
||||
class name java/lang/invoke/MethodHandle
|
||||
header extends java/lang/Object implements java/lang/constant/Constable sealed true permittedSubclasses java/lang/invoke/NativeMethodHandle,java/lang/invoke/DirectMethodHandle,java/lang/invoke/DelegatingMethodHandle,java/lang/invoke/BoundMethodHandle flags 421 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
innerclass innerClass java/lang/constant/DirectMethodHandleDesc$Kind outerClass java/lang/constant/DirectMethodHandleDesc innerClassName Kind flags 4019
|
||||
|
||||
class name java/lang/invoke/MethodHandleImpl
|
||||
header extends java/lang/Object nestMembers java/lang/invoke/MethodHandleImpl$IntrinsicMethodHandle,java/lang/invoke/MethodHandleImpl$WrappedMember,java/lang/invoke/MethodHandleImpl$CountingWrapper,java/lang/invoke/MethodHandleImpl$AsVarargsCollector flags 420 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609
|
||||
innerclass innerClass java/lang/invoke/MethodHandleImpl$AsVarargsCollector outerClass java/lang/invoke/MethodHandleImpl innerClassName AsVarargsCollector flags 18
|
||||
innerclass innerClass java/lang/invoke/MethodHandleImpl$CountingWrapper outerClass java/lang/invoke/MethodHandleImpl innerClassName CountingWrapper flags 18
|
||||
innerclass innerClass java/lang/invoke/MethodHandleImpl$WrappedMember outerClass java/lang/invoke/MethodHandleImpl innerClassName WrappedMember flags 18
|
||||
innerclass innerClass java/lang/invoke/MethodHandleImpl$IntrinsicMethodHandle outerClass java/lang/invoke/MethodHandleImpl innerClassName IntrinsicMethodHandle flags 18
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
|
||||
class name java/lang/invoke/MethodHandleImpl$AsVarargsCollector
|
||||
header extends java/lang/invoke/DelegatingMethodHandle nestHost java/lang/invoke/MethodHandleImpl flags 30 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/invoke/MethodHandleImpl$AsVarargsCollector outerClass java/lang/invoke/MethodHandleImpl innerClassName AsVarargsCollector flags 18
|
||||
|
||||
class name java/lang/invoke/MethodHandleImpl$CountingWrapper
|
||||
header extends java/lang/invoke/DelegatingMethodHandle nestHost java/lang/invoke/MethodHandleImpl flags 30 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/invoke/MethodHandleImpl$CountingWrapper outerClass java/lang/invoke/MethodHandleImpl innerClassName CountingWrapper flags 18
|
||||
|
||||
class name java/lang/invoke/MethodHandleImpl$IntrinsicMethodHandle
|
||||
header extends java/lang/invoke/DelegatingMethodHandle nestHost java/lang/invoke/MethodHandleImpl flags 30 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/invoke/MethodHandleImpl$IntrinsicMethodHandle outerClass java/lang/invoke/MethodHandleImpl innerClassName IntrinsicMethodHandle flags 18
|
||||
|
||||
class name java/lang/invoke/MethodHandleImpl$WrappedMember
|
||||
header extends java/lang/invoke/DelegatingMethodHandle nestHost java/lang/invoke/MethodHandleImpl flags 30 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/invoke/MethodHandleImpl$WrappedMember outerClass java/lang/invoke/MethodHandleImpl innerClassName WrappedMember flags 18
|
||||
|
||||
class name java/lang/invoke/MethodHandles
|
||||
header extends java/lang/Object nestMembers java/lang/invoke/MethodHandles$Lookup,java/lang/invoke/MethodHandles$Lookup$ClassOption flags 31 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
innerclass innerClass java/lang/invoke/VarHandle$AccessMode outerClass java/lang/invoke/VarHandle innerClassName AccessMode flags 4019
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup$ClassOption outerClass java/lang/invoke/MethodHandles$Lookup innerClassName ClassOption flags 4019
|
||||
|
||||
class name java/lang/invoke/StringConcatFactory
|
||||
header extends java/lang/Object flags 31 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
|
||||
class name java/lang/module/ModuleDescriptor
|
||||
header extends java/lang/Object implements java/lang/Comparable nestMembers java/lang/module/ModuleDescriptor$Builder,java/lang/module/ModuleDescriptor$Version,java/lang/module/ModuleDescriptor$Provides,java/lang/module/ModuleDescriptor$Opens,java/lang/module/ModuleDescriptor$Opens$Modifier,java/lang/module/ModuleDescriptor$Exports,java/lang/module/ModuleDescriptor$Exports$Modifier,java/lang/module/ModuleDescriptor$Requires,java/lang/module/ModuleDescriptor$Requires$Modifier,java/lang/module/ModuleDescriptor$Modifier flags 31 signature Ljava/lang/Object;Ljava/lang/Comparable<Ljava/lang/module/ModuleDescriptor;>; runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/module/ModuleDescriptor$Version outerClass java/lang/module/ModuleDescriptor innerClassName Version flags 19
|
||||
innerclass innerClass java/lang/module/ModuleDescriptor$Modifier outerClass java/lang/module/ModuleDescriptor innerClassName Modifier flags 4019
|
||||
innerclass innerClass java/lang/reflect/AccessFlag$Location outerClass java/lang/reflect/AccessFlag innerClassName Location flags 4019
|
||||
innerclass innerClass java/lang/module/ModuleDescriptor$Builder outerClass java/lang/module/ModuleDescriptor innerClassName Builder flags 19
|
||||
innerclass innerClass java/lang/module/ModuleDescriptor$Provides outerClass java/lang/module/ModuleDescriptor innerClassName Provides flags 19
|
||||
innerclass innerClass java/lang/module/ModuleDescriptor$Opens outerClass java/lang/module/ModuleDescriptor innerClassName Opens flags 19
|
||||
innerclass innerClass java/lang/module/ModuleDescriptor$Exports outerClass java/lang/module/ModuleDescriptor innerClassName Exports flags 19
|
||||
innerclass innerClass java/lang/module/ModuleDescriptor$Requires outerClass java/lang/module/ModuleDescriptor innerClassName Requires flags 19
|
||||
innerclass innerClass java/lang/module/ModuleDescriptor$Opens$Modifier outerClass java/lang/module/ModuleDescriptor$Opens innerClassName Modifier flags 4019
|
||||
innerclass innerClass java/lang/module/ModuleDescriptor$Exports$Modifier outerClass java/lang/module/ModuleDescriptor$Exports innerClassName Modifier flags 4019
|
||||
innerclass innerClass java/lang/module/ModuleDescriptor$Requires$Modifier outerClass java/lang/module/ModuleDescriptor$Requires innerClassName Modifier flags 4019
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
|
||||
class name java/lang/ref/PhantomReference
|
||||
header extends java/lang/ref/Reference flags 21 signature <T:Ljava/lang/Object;>Ljava/lang/ref/Reference<TT;>; runtimeTypeAnnotations @Ljdk/internal/RequiresIdentity;{typeParameterIndex=I0,targetType="CLASS_TYPE_PARAMETER"}
|
||||
|
||||
class name java/lang/ref/Reference
|
||||
header extends java/lang/Object sealed true permittedSubclasses java/lang/ref/PhantomReference,java/lang/ref/SoftReference,java/lang/ref/WeakReference,java/lang/ref/FinalReference flags 421 signature <T:Ljava/lang/Object;>Ljava/lang/Object; runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer; runtimeTypeAnnotations @Ljdk/internal/RequiresIdentity;{typeParameterIndex=I0,targetType="CLASS_TYPE_PARAMETER"}
|
||||
-method name get descriptor ()Ljava/lang/Object;
|
||||
method name get descriptor ()Ljava/lang/Object; flags 1 signature ()TT;
|
||||
|
||||
class name java/lang/ref/ReferenceQueue
|
||||
header extends java/lang/Object flags 21 signature <T:Ljava/lang/Object;>Ljava/lang/Object; runtimeTypeAnnotations @Ljdk/internal/RequiresIdentity;{typeParameterIndex=I0,targetType="CLASS_TYPE_PARAMETER"}
|
||||
|
||||
class name java/lang/ref/SoftReference
|
||||
header extends java/lang/ref/Reference flags 21 signature <T:Ljava/lang/Object;>Ljava/lang/ref/Reference<TT;>; runtimeTypeAnnotations @Ljdk/internal/RequiresIdentity;{typeParameterIndex=I0,targetType="CLASS_TYPE_PARAMETER"}
|
||||
|
||||
class name java/lang/ref/WeakReference
|
||||
header extends java/lang/ref/Reference flags 21 signature <T:Ljava/lang/Object;>Ljava/lang/ref/Reference<TT;>; runtimeTypeAnnotations @Ljdk/internal/RequiresIdentity;{typeParameterIndex=I0,targetType="CLASS_TYPE_PARAMETER"}
|
||||
|
||||
class name java/lang/reflect/ClassFileFormatVersion
|
||||
field name RELEASE_26 descriptor Ljava/lang/reflect/ClassFileFormatVersion; flags 4019
|
||||
|
||||
class name java/lang/reflect/Field
|
||||
header extends java/lang/reflect/AccessibleObject implements java/lang/reflect/Member flags 31
|
||||
innerclass innerClass java/lang/reflect/AccessFlag$Location outerClass java/lang/reflect/AccessFlag innerClassName Location flags 4019
|
||||
innerclass innerClass java/lang/StackWalker$Option outerClass java/lang/StackWalker innerClassName Option flags 4019
|
||||
innerclass innerClass java/lang/StackWalker$StackFrame outerClass java/lang/StackWalker innerClassName StackFrame flags 609
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
|
||||
class name java/lang/runtime/ObjectMethods
|
||||
header extends java/lang/Object flags 31
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
innerclass innerClass java/lang/classfile/ClassFile$Option outerClass java/lang/classfile/ClassFile innerClassName Option flags 609
|
||||
innerclass innerClass java/lang/classfile/ClassFile$ClassHierarchyResolverOption outerClass java/lang/classfile/ClassFile innerClassName ClassHierarchyResolverOption flags 609
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup$ClassOption outerClass java/lang/invoke/MethodHandles$Lookup innerClassName ClassOption flags 4019
|
||||
|
||||
class name java/math/BigInteger
|
||||
method name rootn descriptor (I)Ljava/math/BigInteger; flags 1
|
||||
method name rootnAndRemainder descriptor (I)[Ljava/math/BigInteger; flags 1
|
||||
|
||||
class name java/net/DatagramSocketImpl
|
||||
-method name setTTL descriptor (B)V
|
||||
-method name getTTL descriptor ()B
|
||||
|
||||
class name java/net/MulticastSocket
|
||||
-method name setTTL descriptor (B)V
|
||||
-method name getTTL descriptor ()B
|
||||
-method name send descriptor (Ljava/net/DatagramPacket;B)V
|
||||
|
||||
class name java/net/ServerSocket
|
||||
-method name setPerformancePreferences descriptor (III)V
|
||||
method name setPerformancePreferences descriptor (III)V flags 1 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="26")
|
||||
|
||||
class name java/net/Socket
|
||||
-method name setPerformancePreferences descriptor (III)V
|
||||
method name setPerformancePreferences descriptor (III)V flags 1 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="26")
|
||||
|
||||
class name java/net/SocketImpl
|
||||
-method name setPerformancePreferences descriptor (III)V
|
||||
method name setPerformancePreferences descriptor (III)V flags 4 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="26")
|
||||
|
||||
class name java/net/SocketPermission
|
||||
header extends java/security/Permission implements java/io/Serializable flags 31 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="26")
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
|
||||
class name java/net/URI
|
||||
header extends java/lang/Object implements java/lang/Comparable,java/io/Serializable flags 31 signature Ljava/lang/Object;Ljava/lang/Comparable<Ljava/net/URI;>;Ljava/io/Serializable; runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/text/Normalizer$Form outerClass java/text/Normalizer innerClassName Form flags 4019
|
||||
|
||||
class name java/net/URL
|
||||
header extends java/lang/Object implements java/io/Serializable flags 31 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/ScopedValue$Carrier outerClass java/lang/ScopedValue innerClassName Carrier flags 19
|
||||
innerclass innerClass java/lang/ScopedValue$CallableOp outerClass java/lang/ScopedValue innerClassName CallableOp flags 609
|
||||
innerclass innerClass java/io/ObjectInputStream$GetField outerClass java/io/ObjectInputStream innerClassName GetField flags 409
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
|
||||
class name java/nio/ByteOrder
|
||||
header extends java/lang/Enum flags 4031 signature Ljava/lang/Enum<Ljava/nio/ByteOrder;>;
|
||||
-field name BIG_ENDIAN descriptor Ljava/nio/ByteOrder;
|
||||
-field name LITTLE_ENDIAN descriptor Ljava/nio/ByteOrder;
|
||||
-method name toString descriptor ()Ljava/lang/String;
|
||||
field name LITTLE_ENDIAN descriptor Ljava/nio/ByteOrder; flags 4019
|
||||
field name BIG_ENDIAN descriptor Ljava/nio/ByteOrder; flags 4019
|
||||
method name values descriptor ()[Ljava/nio/ByteOrder; flags 9
|
||||
method name valueOf descriptor (Ljava/lang/String;)Ljava/nio/ByteOrder; flags 9 methodParameters 8000:null
|
||||
|
||||
class name java/nio/DirectByteBuffer
|
||||
-method name cleaner descriptor ()Ljdk/internal/ref/Cleaner;
|
||||
method name cleaner descriptor ()Lsun/nio/Cleaner; flags 1
|
||||
|
||||
class name java/nio/DirectCharBufferS
|
||||
-method name cleaner descriptor ()Ljdk/internal/ref/Cleaner;
|
||||
method name cleaner descriptor ()Lsun/nio/Cleaner; flags 1
|
||||
|
||||
class name java/nio/DirectCharBufferU
|
||||
-method name cleaner descriptor ()Ljdk/internal/ref/Cleaner;
|
||||
method name cleaner descriptor ()Lsun/nio/Cleaner; flags 1
|
||||
|
||||
class name java/nio/DirectDoubleBufferS
|
||||
-method name cleaner descriptor ()Ljdk/internal/ref/Cleaner;
|
||||
method name cleaner descriptor ()Lsun/nio/Cleaner; flags 1
|
||||
|
||||
class name java/nio/DirectDoubleBufferU
|
||||
-method name cleaner descriptor ()Ljdk/internal/ref/Cleaner;
|
||||
method name cleaner descriptor ()Lsun/nio/Cleaner; flags 1
|
||||
|
||||
class name java/nio/DirectFloatBufferS
|
||||
-method name cleaner descriptor ()Ljdk/internal/ref/Cleaner;
|
||||
method name cleaner descriptor ()Lsun/nio/Cleaner; flags 1
|
||||
|
||||
class name java/nio/DirectFloatBufferU
|
||||
-method name cleaner descriptor ()Ljdk/internal/ref/Cleaner;
|
||||
method name cleaner descriptor ()Lsun/nio/Cleaner; flags 1
|
||||
|
||||
class name java/nio/DirectIntBufferS
|
||||
-method name cleaner descriptor ()Ljdk/internal/ref/Cleaner;
|
||||
method name cleaner descriptor ()Lsun/nio/Cleaner; flags 1
|
||||
|
||||
class name java/nio/DirectIntBufferU
|
||||
-method name cleaner descriptor ()Ljdk/internal/ref/Cleaner;
|
||||
method name cleaner descriptor ()Lsun/nio/Cleaner; flags 1
|
||||
|
||||
class name java/nio/DirectLongBufferS
|
||||
-method name cleaner descriptor ()Ljdk/internal/ref/Cleaner;
|
||||
method name cleaner descriptor ()Lsun/nio/Cleaner; flags 1
|
||||
|
||||
class name java/nio/DirectLongBufferU
|
||||
-method name cleaner descriptor ()Ljdk/internal/ref/Cleaner;
|
||||
method name cleaner descriptor ()Lsun/nio/Cleaner; flags 1
|
||||
|
||||
class name java/nio/DirectShortBufferS
|
||||
-method name cleaner descriptor ()Ljdk/internal/ref/Cleaner;
|
||||
method name cleaner descriptor ()Lsun/nio/Cleaner; flags 1
|
||||
|
||||
class name java/nio/DirectShortBufferU
|
||||
-method name cleaner descriptor ()Ljdk/internal/ref/Cleaner;
|
||||
method name cleaner descriptor ()Lsun/nio/Cleaner; flags 1
|
||||
|
||||
class name java/nio/charset/Charset
|
||||
header extends java/lang/Object implements java/lang/Comparable flags 421 signature Ljava/lang/Object;Ljava/lang/Comparable<Ljava/nio/charset/Charset;>;
|
||||
innerclass innerClass java/lang/ScopedValue$Carrier outerClass java/lang/ScopedValue innerClassName Carrier flags 19
|
||||
innerclass innerClass java/lang/ScopedValue$CallableOp outerClass java/lang/ScopedValue innerClassName CallableOp flags 609
|
||||
|
||||
class name java/security/DEREncodable
|
||||
header extends java/lang/Object sealed true permittedSubclasses java/security/AsymmetricKey,java/security/KeyPair,java/security/spec/PKCS8EncodedKeySpec,java/security/spec/X509EncodedKeySpec,javax/crypto/EncryptedPrivateKeyInfo,java/security/cert/X509Certificate,java/security/cert/X509CRL,java/security/PEM flags 601 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;)
|
||||
|
||||
class name java/security/PEM
|
||||
header extends java/lang/Record implements java/security/DEREncodable record true flags 31 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;)
|
||||
recordcomponent name type descriptor Ljava/lang/String;
|
||||
recordcomponent name content descriptor Ljava/lang/String;
|
||||
recordcomponent name leadingData descriptor [B
|
||||
innerclass innerClass java/util/Base64$Decoder outerClass java/util/Base64 innerClassName Decoder flags 9
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
method name <init> descriptor (Ljava/lang/String;Ljava/lang/String;[B)V flags 1 methodParameters 8000:type,8000:content,8000:leadingData
|
||||
method name <init> descriptor (Ljava/lang/String;Ljava/lang/String;)V flags 1
|
||||
method name toString descriptor ()Ljava/lang/String; flags 11
|
||||
method name decode descriptor ()[B flags 11
|
||||
method name hashCode descriptor ()I flags 11
|
||||
method name equals descriptor (Ljava/lang/Object;)Z flags 11
|
||||
method name type descriptor ()Ljava/lang/String; flags 1
|
||||
method name content descriptor ()Ljava/lang/String; flags 1
|
||||
method name leadingData descriptor ()[B flags 1
|
||||
|
||||
class name java/security/PEMDecoder
|
||||
header extends java/lang/Object flags 31 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;)
|
||||
innerclass innerClass java/lang/ref/Cleaner$Cleanable outerClass java/lang/ref/Cleaner innerClassName Cleanable flags 609
|
||||
innerclass innerClass java/util/Base64$Decoder outerClass java/util/Base64 innerClassName Decoder flags 9
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
|
||||
-class name java/security/PEMRecord
|
||||
|
||||
class name java/security/SecureRandom
|
||||
method name nextLong descriptor ()J flags 1
|
||||
|
||||
class name java/time/Duration
|
||||
field name MIN descriptor Ljava/time/Duration; flags 19
|
||||
field name MAX descriptor Ljava/time/Duration; flags 19
|
||||
|
||||
class name java/time/Instant
|
||||
method name plusSaturating descriptor (Ljava/time/Duration;)Ljava/time/Instant; flags 1
|
||||
|
||||
class name java/util/AbstractMap
|
||||
header extends java/lang/Object implements java/util/Map nestMembers java/util/AbstractMap$SimpleImmutableEntry,java/util/AbstractMap$SimpleEntry flags 421 signature <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map<TK;TV;>; runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609
|
||||
innerclass innerClass java/util/AbstractMap$SimpleImmutableEntry outerClass java/util/AbstractMap innerClassName SimpleImmutableEntry flags 9
|
||||
innerclass innerClass java/util/AbstractMap$SimpleEntry outerClass java/util/AbstractMap innerClassName SimpleEntry flags 9
|
||||
|
||||
class name java/util/Collections
|
||||
header extends java/lang/Object flags 31 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
|
||||
class name java/util/Comparator
|
||||
method name max descriptor (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature <U:TT;>(TU;TU;)TU;
|
||||
method name min descriptor (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature <U:TT;>(TU;TU;)TU;
|
||||
|
||||
class name java/util/List
|
||||
method name ofLazy descriptor (ILjava/util/function/IntFunction;)Ljava/util/List; flags 9 signature <E:Ljava/lang/Object;>(ILjava/util/function/IntFunction<+TE;>;)Ljava/util/List<TE;>; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LAZY_CONSTANTS;)
|
||||
|
||||
class name java/util/Locale
|
||||
header extends java/lang/Object implements java/lang/Cloneable,java/io/Serializable nestMembers java/util/Locale$LanguageRange,java/util/Locale$FilteringMode,java/util/Locale$Builder,java/util/Locale$Category,java/util/Locale$IsoCountryCode flags 31
|
||||
innerclass innerClass java/util/Locale$Category outerClass java/util/Locale innerClassName Category flags 4019
|
||||
innerclass innerClass java/util/Locale$IsoCountryCode outerClass java/util/Locale innerClassName IsoCountryCode flags 4019
|
||||
innerclass innerClass java/io/ObjectOutputStream$PutField outerClass java/io/ObjectOutputStream innerClassName PutField flags 409
|
||||
innerclass innerClass java/io/ObjectInputStream$GetField outerClass java/io/ObjectInputStream innerClassName GetField flags 409
|
||||
innerclass innerClass java/util/Locale$FilteringMode outerClass java/util/Locale innerClassName FilteringMode flags 4019
|
||||
innerclass innerClass java/util/Locale$LanguageRange outerClass java/util/Locale innerClassName LanguageRange flags 19
|
||||
innerclass innerClass java/util/Locale$Builder outerClass java/util/Locale innerClassName Builder flags 19
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
|
||||
class name java/util/Locale$IsoCountryCode
|
||||
header extends java/lang/Enum nestHost java/util/Locale flags 4031 signature Ljava/lang/Enum<Ljava/util/Locale$IsoCountryCode;>;
|
||||
innerclass innerClass java/util/Locale$IsoCountryCode outerClass java/util/Locale innerClassName IsoCountryCode flags 4019
|
||||
|
||||
class name java/util/Map
|
||||
method name ofLazy descriptor (Ljava/util/Set;Ljava/util/function/Function;)Ljava/util/Map; flags 9 signature <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Set<+TK;>;Ljava/util/function/Function<-TK;+TV;>;)Ljava/util/Map<TK;TV;>; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LAZY_CONSTANTS;)
|
||||
|
||||
class name java/util/UUID
|
||||
method name ofEpochMillis descriptor (J)Ljava/util/UUID; flags 9
|
||||
|
||||
class name java/util/WeakHashMap
|
||||
header extends java/util/AbstractMap implements java/util/Map flags 21 signature <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/Map<TK;TV;>; runtimeTypeAnnotations @Ljdk/internal/RequiresIdentity;{typeParameterIndex=I0,targetType="CLASS_TYPE_PARAMETER"}
|
||||
innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609
|
||||
|
||||
class name java/util/concurrent/ConcurrentHashMap
|
||||
header extends java/util/AbstractMap implements java/util/concurrent/ConcurrentMap,java/io/Serializable nestMembers java/util/concurrent/ConcurrentHashMap$EntrySetView,java/util/concurrent/ConcurrentHashMap$ValuesView,java/util/concurrent/ConcurrentHashMap$KeySetView,java/util/concurrent/ConcurrentHashMap$CollectionView flags 21 signature <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/concurrent/ConcurrentMap<TK;TV;>;Ljava/io/Serializable; runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609
|
||||
innerclass innerClass java/util/concurrent/ConcurrentHashMap$KeySetView outerClass java/util/concurrent/ConcurrentHashMap innerClassName KeySetView flags 19
|
||||
innerclass innerClass java/util/concurrent/ConcurrentHashMap$ValuesView outerClass java/util/concurrent/ConcurrentHashMap innerClassName ValuesView flags 18
|
||||
innerclass innerClass java/util/concurrent/ConcurrentHashMap$EntrySetView outerClass java/util/concurrent/ConcurrentHashMap innerClassName EntrySetView flags 18
|
||||
innerclass innerClass java/io/ObjectOutputStream$PutField outerClass java/io/ObjectOutputStream innerClassName PutField flags 409
|
||||
innerclass innerClass java/util/AbstractMap$SimpleImmutableEntry outerClass java/util/AbstractMap innerClassName SimpleImmutableEntry flags 9
|
||||
innerclass innerClass java/util/concurrent/ConcurrentHashMap$CollectionView outerClass java/util/concurrent/ConcurrentHashMap innerClassName CollectionView flags 408
|
||||
|
||||
class name java/util/concurrent/StructuredTaskScope
|
||||
-method name open descriptor (Ljava/util/concurrent/StructuredTaskScope$Joiner;Ljava/util/function/Function;)Ljava/util/concurrent/StructuredTaskScope;
|
||||
method name open descriptor (Ljava/util/concurrent/StructuredTaskScope$Joiner;Ljava/util/function/UnaryOperator;)Ljava/util/concurrent/StructuredTaskScope; flags 9 signature <T:Ljava/lang/Object;R:Ljava/lang/Object;>(Ljava/util/concurrent/StructuredTaskScope$Joiner<-TT;+TR;>;Ljava/util/function/UnaryOperator<Ljava/util/concurrent/StructuredTaskScope$Configuration;>;)Ljava/util/concurrent/StructuredTaskScope<TT;TR;>;
|
||||
|
||||
class name java/util/concurrent/StructuredTaskScope$Joiner
|
||||
header extends java/lang/Object nestHost java/util/concurrent/StructuredTaskScope flags 601 signature <T:Ljava/lang/Object;R:Ljava/lang/Object;>Ljava/lang/Object; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;STRUCTURED_CONCURRENCY;)
|
||||
innerclass innerClass java/util/concurrent/StructuredTaskScope$Subtask outerClass java/util/concurrent/StructuredTaskScope innerClassName Subtask flags 609
|
||||
innerclass innerClass java/util/concurrent/StructuredTaskScope$Subtask$State outerClass java/util/concurrent/StructuredTaskScope$Subtask innerClassName State flags 4019
|
||||
innerclass innerClass java/util/concurrent/StructuredTaskScope$TimeoutException outerClass java/util/concurrent/StructuredTaskScope innerClassName TimeoutException flags 19
|
||||
innerclass innerClass java/util/concurrent/StructuredTaskScope$Joiner outerClass java/util/concurrent/StructuredTaskScope innerClassName Joiner flags 609
|
||||
-method name onFork descriptor (Ljava/util/concurrent/StructuredTaskScope$Subtask;)Z
|
||||
-method name onComplete descriptor (Ljava/util/concurrent/StructuredTaskScope$Subtask;)Z
|
||||
-method name allSuccessfulOrThrow descriptor ()Ljava/util/concurrent/StructuredTaskScope$Joiner;
|
||||
-method name anySuccessfulResultOrThrow descriptor ()Ljava/util/concurrent/StructuredTaskScope$Joiner;
|
||||
-method name allUntil descriptor (Ljava/util/function/Predicate;)Ljava/util/concurrent/StructuredTaskScope$Joiner;
|
||||
method name onFork descriptor (Ljava/util/concurrent/StructuredTaskScope$Subtask;)Z flags 1 signature (Ljava/util/concurrent/StructuredTaskScope$Subtask<TT;>;)Z
|
||||
method name onComplete descriptor (Ljava/util/concurrent/StructuredTaskScope$Subtask;)Z flags 1 signature (Ljava/util/concurrent/StructuredTaskScope$Subtask<TT;>;)Z
|
||||
method name onTimeout descriptor ()V flags 1
|
||||
method name allSuccessfulOrThrow descriptor ()Ljava/util/concurrent/StructuredTaskScope$Joiner; flags 9 signature <T:Ljava/lang/Object;>()Ljava/util/concurrent/StructuredTaskScope$Joiner<TT;Ljava/util/List<TT;>;>;
|
||||
method name anySuccessfulOrThrow descriptor ()Ljava/util/concurrent/StructuredTaskScope$Joiner; flags 9 signature <T:Ljava/lang/Object;>()Ljava/util/concurrent/StructuredTaskScope$Joiner<TT;TT;>;
|
||||
method name allUntil descriptor (Ljava/util/function/Predicate;)Ljava/util/concurrent/StructuredTaskScope$Joiner; flags 9 signature <T:Ljava/lang/Object;>(Ljava/util/function/Predicate<Ljava/util/concurrent/StructuredTaskScope$Subtask<TT;>;>;)Ljava/util/concurrent/StructuredTaskScope$Joiner<TT;Ljava/util/List<Ljava/util/concurrent/StructuredTaskScope$Subtask<TT;>;>;>;
|
||||
|
||||
class name java/util/concurrent/StructuredTaskScopeImpl
|
||||
header extends java/lang/Object implements java/util/concurrent/StructuredTaskScope nestMembers java/util/concurrent/StructuredTaskScopeImpl$ConfigImpl,java/util/concurrent/StructuredTaskScopeImpl$SubtaskImpl flags 30 signature <T:Ljava/lang/Object;R:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/concurrent/StructuredTaskScope<TT;TR;>;
|
||||
innerclass innerClass java/util/concurrent/StructuredTaskScope$Joiner outerClass java/util/concurrent/StructuredTaskScope innerClassName Joiner flags 609
|
||||
innerclass innerClass java/util/concurrent/StructuredTaskScopeImpl$ConfigImpl outerClass java/util/concurrent/StructuredTaskScopeImpl innerClassName ConfigImpl flags 18
|
||||
innerclass innerClass java/util/concurrent/StructuredTaskScope$Configuration outerClass java/util/concurrent/StructuredTaskScope innerClassName Configuration flags 609
|
||||
innerclass innerClass java/util/concurrent/StructuredTaskScopeImpl$SubtaskImpl outerClass java/util/concurrent/StructuredTaskScopeImpl innerClassName SubtaskImpl flags 18
|
||||
innerclass innerClass java/util/concurrent/StructuredTaskScope$Subtask outerClass java/util/concurrent/StructuredTaskScope innerClassName Subtask flags 609
|
||||
innerclass innerClass java/util/concurrent/StructuredTaskScope$Subtask$State outerClass java/util/concurrent/StructuredTaskScope$Subtask innerClassName State flags 4019
|
||||
innerclass innerClass java/util/concurrent/StructuredTaskScope$FailedException outerClass java/util/concurrent/StructuredTaskScope innerClassName FailedException flags 19
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
|
||||
class name java/util/concurrent/StructuredTaskScopeImpl$SubtaskImpl
|
||||
header extends java/lang/Object implements java/util/concurrent/StructuredTaskScope$Subtask,java/lang/Runnable nestHost java/util/concurrent/StructuredTaskScopeImpl flags 30 signature <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/concurrent/StructuredTaskScope$Subtask<TT;>;Ljava/lang/Runnable;
|
||||
innerclass innerClass java/util/concurrent/StructuredTaskScopeImpl$SubtaskImpl outerClass java/util/concurrent/StructuredTaskScopeImpl innerClassName SubtaskImpl flags 18
|
||||
innerclass innerClass java/lang/Thread$State outerClass java/lang/Thread innerClassName State flags 4019
|
||||
innerclass innerClass java/util/concurrent/StructuredTaskScope$Subtask outerClass java/util/concurrent/StructuredTaskScope innerClassName Subtask flags 609
|
||||
innerclass innerClass java/util/concurrent/StructuredTaskScope$Subtask$State outerClass java/util/concurrent/StructuredTaskScope$Subtask innerClassName State flags 4019
|
||||
|
||||
class name java/util/stream/Collectors
|
||||
header extends java/lang/Object flags 31 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/util/stream/Collector$Characteristics outerClass java/util/stream/Collector innerClassName Characteristics flags 4019
|
||||
innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
|
||||
class name javax/crypto/EncryptedPrivateKeyInfo
|
||||
header extends java/lang/Object implements java/security/DEREncodable flags 21
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
-method name encryptKey descriptor (Ljava/security/PrivateKey;[CLjava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/Provider;)Ljavax/crypto/EncryptedPrivateKeyInfo;
|
||||
-method name encryptKey descriptor (Ljava/security/PrivateKey;[C)Ljavax/crypto/EncryptedPrivateKeyInfo;
|
||||
-method name encryptKey descriptor (Ljava/security/PrivateKey;Ljava/security/Key;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/Provider;Ljava/security/SecureRandom;)Ljavax/crypto/EncryptedPrivateKeyInfo;
|
||||
-method name getKey descriptor ([C)Ljava/security/PrivateKey;
|
||||
-method name getKey descriptor (Ljava/security/Key;Ljava/security/Provider;)Ljava/security/PrivateKey;
|
||||
method name encrypt descriptor (Ljava/security/DEREncodable;[CLjava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/Provider;)Ljavax/crypto/EncryptedPrivateKeyInfo; flags 9 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;)
|
||||
method name encrypt descriptor (Ljava/security/DEREncodable;[C)Ljavax/crypto/EncryptedPrivateKeyInfo; flags 9 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;)
|
||||
method name encrypt descriptor (Ljava/security/DEREncodable;Ljava/security/Key;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/Provider;Ljava/security/SecureRandom;)Ljavax/crypto/EncryptedPrivateKeyInfo; flags 9 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;)
|
||||
method name getKey descriptor ([C)Ljava/security/PrivateKey; thrownTypes java/security/NoSuchAlgorithmException,java/security/InvalidKeyException flags 1 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;)
|
||||
method name getKey descriptor (Ljava/security/Key;Ljava/security/Provider;)Ljava/security/PrivateKey; thrownTypes java/security/NoSuchAlgorithmException,java/security/InvalidKeyException flags 1 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;)
|
||||
method name getKeyPair descriptor ([C)Ljava/security/KeyPair; thrownTypes java/security/NoSuchAlgorithmException,java/security/InvalidKeyException flags 1 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;)
|
||||
method name getKeyPair descriptor (Ljava/security/Key;Ljava/security/Provider;)Ljava/security/KeyPair; thrownTypes java/security/NoSuchAlgorithmException,java/security/InvalidKeyException flags 1 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;)
|
||||
|
||||
class name jdk/internal/classfile/impl/DirectCodeBuilder
|
||||
header extends jdk/internal/classfile/impl/AbstractDirectBuilder implements jdk/internal/classfile/impl/TerminalCodeBuilder flags 31 signature Ljdk/internal/classfile/impl/AbstractDirectBuilder<Ljava/lang/classfile/CodeModel;>;Ljdk/internal/classfile/impl/TerminalCodeBuilder;
|
||||
innerclass innerClass jdk/internal/classfile/impl/AbstractPseudoInstruction$ExceptionCatchImpl outerClass jdk/internal/classfile/impl/AbstractPseudoInstruction innerClassName ExceptionCatchImpl flags 19
|
||||
innerclass innerClass java/lang/classfile/Opcode$Kind outerClass java/lang/classfile/Opcode innerClassName Kind flags 4019
|
||||
|
||||
class name jdk/internal/classfile/impl/SignaturesImpl
|
||||
method name nextIdentifierEnd descriptor (Ljava/lang/String;I)I flags 9
|
||||
method name validateIdentifier descriptor (Ljava/lang/String;)Ljava/lang/String; flags 9
|
||||
method name validatePackageSpecifierPlusIdentifier descriptor (Ljava/lang/String;)Ljava/lang/String; flags 9
|
||||
method name validateNonVoid descriptor (Ljava/lang/classfile/Signature;)Ljava/lang/classfile/Signature; flags 9
|
||||
method name validateArgumentList descriptor ([Ljava/lang/classfile/Signature;)Ljava/util/List; flags 9 signature ([Ljava/lang/classfile/Signature;)Ljava/util/List<Ljava/lang/classfile/Signature;>;
|
||||
method name validateArgumentList descriptor (Ljava/util/List;)Ljava/util/List; flags 9 signature (Ljava/util/List<Ljava/lang/classfile/Signature;>;)Ljava/util/List<Ljava/lang/classfile/Signature;>;
|
||||
|
||||
class name jdk/internal/classfile/impl/Util
|
||||
header extends java/lang/Object nestMembers jdk/internal/classfile/impl/Util$WritableLocalVariable,jdk/internal/classfile/impl/Util$Writable flags 31
|
||||
innerclass innerClass java/lang/classfile/AttributeMapper$AttributeStability outerClass java/lang/classfile/AttributeMapper innerClassName AttributeStability flags 4019
|
||||
innerclass innerClass java/lang/classfile/ClassFile$AttributesProcessingOption outerClass java/lang/classfile/ClassFile innerClassName AttributesProcessingOption flags 4019
|
||||
innerclass innerClass java/lang/classfile/Opcode$Kind outerClass java/lang/classfile/Opcode innerClassName Kind flags 4019
|
||||
innerclass innerClass jdk/internal/classfile/impl/AbstractPoolEntry$Utf8EntryImpl outerClass jdk/internal/classfile/impl/AbstractPoolEntry innerClassName Utf8EntryImpl flags 19
|
||||
innerclass innerClass jdk/internal/classfile/impl/Util$Writable outerClass jdk/internal/classfile/impl/Util innerClassName Writable flags 608
|
||||
innerclass innerClass jdk/internal/classfile/impl/Util$WritableLocalVariable outerClass jdk/internal/classfile/impl/Util innerClassName WritableLocalVariable flags 608
|
||||
innerclass innerClass java/lang/reflect/AccessFlag$Location outerClass java/lang/reflect/AccessFlag innerClassName Location flags 4019
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
method name sanitizeU1List descriptor (Ljava/util/List;)Ljava/util/List; flags 9 signature <T:Ljava/lang/Object;>(Ljava/util/List<TT;>;)Ljava/util/List<TT;>;
|
||||
method name sanitizeU2List descriptor (Ljava/util/Collection;)Ljava/util/List; flags 9 signature <T:Ljava/lang/Object;>(Ljava/util/Collection<TT;>;)Ljava/util/List<TT;>;
|
||||
method name sanitizeParameterAnnotations descriptor (Ljava/util/List;)Ljava/util/List; flags 9 signature (Ljava/util/List<Ljava/util/List<Ljava/lang/classfile/Annotation;>;>;)Ljava/util/List<Ljava/util/List<Ljava/lang/classfile/Annotation;>;>;
|
||||
method name checkU1 descriptor (ILjava/lang/String;)I flags 9
|
||||
method name checkU2 descriptor (ILjava/lang/String;)C flags 9
|
||||
method name outOfRangeException descriptor (ILjava/lang/String;Ljava/lang/String;)Ljava/lang/IllegalArgumentException; flags 9
|
||||
method name checkFlags descriptor (I)C flags 9
|
||||
|
||||
class name jdk/internal/constant/AsTypeMethodHandleDesc
|
||||
header extends java/lang/constant/DynamicConstantDesc implements java/lang/constant/MethodHandleDesc flags 31 signature Ljava/lang/constant/DynamicConstantDesc<Ljava/lang/invoke/MethodHandle;>;Ljava/lang/constant/MethodHandleDesc;
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
innerclass innerClass java/lang/constant/DirectMethodHandleDesc$Kind outerClass java/lang/constant/DirectMethodHandleDesc innerClassName Kind flags 4019
|
||||
method name <init> descriptor (Ljava/lang/constant/MethodHandleDesc;Ljava/lang/constant/MethodTypeDesc;)V flags 1
|
||||
method name invocationType descriptor ()Ljava/lang/constant/MethodTypeDesc; flags 1
|
||||
method name resolveConstantDesc descriptor (Ljava/lang/invoke/MethodHandles$Lookup;)Ljava/lang/invoke/MethodHandle; thrownTypes java/lang/ReflectiveOperationException flags 1
|
||||
method name toString descriptor ()Ljava/lang/String; flags 1
|
||||
method name resolveConstantDesc descriptor (Ljava/lang/invoke/MethodHandles$Lookup;)Ljava/lang/Object; thrownTypes java/lang/ReflectiveOperationException flags 1041 methodParameters 1000:null
|
||||
|
||||
class name jdk/internal/constant/PrimitiveClassDescImpl
|
||||
header extends java/lang/constant/DynamicConstantDesc implements java/lang/constant/ClassDesc flags 31 signature Ljava/lang/constant/DynamicConstantDesc<Ljava/lang/Class<*>;>;Ljava/lang/constant/ClassDesc; runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
|
||||
innerclass innerClass java/lang/invoke/TypeDescriptor$OfField outerClass java/lang/invoke/TypeDescriptor innerClassName OfField flags 609
|
||||
|
||||
class name jdk/internal/lang/LazyConstantImpl
|
||||
header extends java/lang/Object implements java/lang/LazyConstant flags 31 signature <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/lang/LazyConstant<TT;>; runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer;
|
||||
method name get descriptor ()Ljava/lang/Object; flags 1 signature ()TT; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline;
|
||||
method name orElse descriptor (Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature (TT;)TT; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline;
|
||||
method name isInitialized descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline;
|
||||
method name toString descriptor ()Ljava/lang/String; flags 1
|
||||
method name ofLazy descriptor (Ljava/util/function/Supplier;)Ljdk/internal/lang/LazyConstantImpl; flags 9 signature <T:Ljava/lang/Object;>(Ljava/util/function/Supplier<+TT;>;)Ljdk/internal/lang/LazyConstantImpl<TT;>;
|
||||
|
||||
-class name jdk/internal/lang/stable/StableValueImpl
|
||||
|
||||
class name jdk/internal/vm/vector/VectorSupport
|
||||
-method name loadWithMap descriptor (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Class;Ljava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljava/lang/Object;I[IILjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$LoadVectorOperationWithMap;)Ljdk/internal/vm/vector/VectorSupport$Vector;
|
||||
-method name storeWithMap descriptor (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Class;Ljava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljava/lang/Object;I[IILjdk/internal/vm/vector/VectorSupport$StoreVectorOperationWithMap;)V
|
||||
method name loadWithMap descriptor (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Class;ILjava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljava/lang/Object;I[IILjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$LoadVectorOperationWithMap;)Ljdk/internal/vm/vector/VectorSupport$Vector; flags 9 signature <C:Ljava/lang/Object;V:Ljdk/internal/vm/vector/VectorSupport$Vector<*>;W:Ljdk/internal/vm/vector/VectorSupport$Vector<Ljava/lang/Integer;>;S:Ljdk/internal/vm/vector/VectorSupport$VectorSpecies<TE;>;M:Ljdk/internal/vm/vector/VectorSupport$VectorMask<TE;>;E:Ljava/lang/Object;>(Ljava/lang/Class<+TV;>;Ljava/lang/Class<TM;>;Ljava/lang/Class<TE;>;ILjava/lang/Class<+Ljdk/internal/vm/vector/VectorSupport$Vector<Ljava/lang/Integer;>;>;ILjava/lang/Object;JTW;TW;TW;TW;TM;TC;I[IITS;Ljdk/internal/vm/vector/VectorSupport$LoadVectorOperationWithMap<TC;TV;TS;TM;>;)TV; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate;
|
||||
method name storeWithMap descriptor (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Class;ILjava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljava/lang/Object;I[IILjdk/internal/vm/vector/VectorSupport$StoreVectorOperationWithMap;)V flags 9 signature <C:Ljava/lang/Object;V:Ljdk/internal/vm/vector/VectorSupport$Vector<TE;>;W:Ljdk/internal/vm/vector/VectorSupport$Vector<Ljava/lang/Integer;>;M:Ljdk/internal/vm/vector/VectorSupport$VectorMask<TE;>;E:Ljava/lang/Object;>(Ljava/lang/Class<+TV;>;Ljava/lang/Class<TM;>;Ljava/lang/Class<TE;>;ILjava/lang/Class<+Ljdk/internal/vm/vector/VectorSupport$Vector<Ljava/lang/Integer;>;>;ILjava/lang/Object;JTW;TV;TM;TC;I[IILjdk/internal/vm/vector/VectorSupport$StoreVectorOperationWithMap<TC;TV;TM;>;)V runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate;
|
||||
|
||||
class name sun/nio/Cleaner
|
||||
header extends java/lang/Object flags 601
|
||||
method name clean descriptor ()V flags 401
|
||||
|
||||
class name sun/nio/ch/DirectBuffer
|
||||
-method name cleaner descriptor ()Ljdk/internal/ref/Cleaner;
|
||||
method name cleaner descriptor ()Lsun/nio/Cleaner; flags 401
|
||||
|
||||
85
src/jdk.compiler/share/data/symbols/java.compiler-Q.sym.txt
Normal file
85
src/jdk.compiler/share/data/symbols/java.compiler-Q.sym.txt
Normal file
@@ -0,0 +1,85 @@
|
||||
#
|
||||
# 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. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# ##########################################################
|
||||
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
|
||||
# ##########################################################
|
||||
#
|
||||
class name javax/lang/model/SourceVersion
|
||||
field name RELEASE_26 descriptor Ljavax/lang/model/SourceVersion; flags 4019
|
||||
|
||||
class name javax/lang/model/util/AbstractAnnotationValueVisitor14
|
||||
header extends javax/lang/model/util/AbstractAnnotationValueVisitor9 flags 421 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/AbstractAnnotationValueVisitor9<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/AbstractAnnotationValueVisitorPreview
|
||||
header extends javax/lang/model/util/AbstractAnnotationValueVisitor14 flags 421 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/AbstractAnnotationValueVisitor14<TR;TP;>; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/AbstractElementVisitor14
|
||||
header extends javax/lang/model/util/AbstractElementVisitor9 flags 421 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/AbstractElementVisitor9<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/AbstractElementVisitorPreview
|
||||
header extends javax/lang/model/util/AbstractElementVisitor14 flags 421 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/AbstractElementVisitor14<TR;TP;>; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/AbstractTypeVisitor14
|
||||
header extends javax/lang/model/util/AbstractTypeVisitor9 flags 421 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/AbstractTypeVisitor9<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/AbstractTypeVisitorPreview
|
||||
header extends javax/lang/model/util/AbstractTypeVisitor14 flags 421 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/AbstractTypeVisitor14<TR;TP;>; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/ElementKindVisitor14
|
||||
header extends javax/lang/model/util/ElementKindVisitor9 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/ElementKindVisitor9<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/ElementKindVisitorPreview
|
||||
header extends javax/lang/model/util/ElementKindVisitor14 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/ElementKindVisitor14<TR;TP;>; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/ElementScanner14
|
||||
header extends javax/lang/model/util/ElementScanner9 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/ElementScanner9<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/ElementScannerPreview
|
||||
header extends javax/lang/model/util/ElementScanner14 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/ElementScanner14<TR;TP;>; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/SimpleAnnotationValueVisitor14
|
||||
header extends javax/lang/model/util/SimpleAnnotationValueVisitor9 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/SimpleAnnotationValueVisitor9<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/SimpleAnnotationValueVisitorPreview
|
||||
header extends javax/lang/model/util/SimpleAnnotationValueVisitor14 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/SimpleAnnotationValueVisitor14<TR;TP;>; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/SimpleElementVisitor14
|
||||
header extends javax/lang/model/util/SimpleElementVisitor9 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/SimpleElementVisitor9<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/SimpleElementVisitorPreview
|
||||
header extends javax/lang/model/util/SimpleElementVisitor14 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/SimpleElementVisitor14<TR;TP;>; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/SimpleTypeVisitor14
|
||||
header extends javax/lang/model/util/SimpleTypeVisitor9 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/SimpleTypeVisitor9<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/SimpleTypeVisitorPreview
|
||||
header extends javax/lang/model/util/SimpleTypeVisitor14 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/SimpleTypeVisitor14<TR;TP;>; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/TypeKindVisitor14
|
||||
header extends javax/lang/model/util/TypeKindVisitor9 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/TypeKindVisitor9<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
class name javax/lang/model/util/TypeKindVisitorPreview
|
||||
header extends javax/lang/model/util/TypeKindVisitor14 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/TypeKindVisitor14<TR;TP;>; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_26;)
|
||||
|
||||
90
src/jdk.compiler/share/data/symbols/java.desktop-Q.sym.txt
Normal file
90
src/jdk.compiler/share/data/symbols/java.desktop-Q.sym.txt
Normal file
@@ -0,0 +1,90 @@
|
||||
#
|
||||
# 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. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# ##########################################################
|
||||
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
|
||||
# ##########################################################
|
||||
#
|
||||
module name java.desktop
|
||||
header exports java/awt,java/awt/color,java/awt/desktop,java/awt/dnd,java/awt/event,java/awt/font,java/awt/geom,java/awt/im,java/awt/im/spi,java/awt/image,java/awt/image/renderable,java/awt/print,java/beans,java/beans/beancontext,javax/accessibility,javax/imageio,javax/imageio/event,javax/imageio/metadata,javax/imageio/plugins/bmp,javax/imageio/plugins/jpeg,javax/imageio/plugins/tiff,javax/imageio/spi,javax/imageio/stream,javax/print,javax/print/attribute,javax/print/attribute/standard,javax/print/event,javax/sound,javax/sound/midi,javax/sound/midi/spi,javax/sound/sampled,javax/sound/sampled/spi,javax/swing,javax/swing/border,javax/swing/colorchooser,javax/swing/event,javax/swing/filechooser,javax/swing/plaf,javax/swing/plaf/basic,javax/swing/plaf/metal,javax/swing/plaf/multi,javax/swing/plaf/nimbus,javax/swing/plaf/synth,javax/swing/table,javax/swing/text,javax/swing/text/html,javax/swing/text/html/parser,javax/swing/text/rtf,javax/swing/tree,javax/swing/undo extraModulePackages sun/print requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.prefs\u0020;flags\u0020;0,name\u0020;java.datatransfer\u0020;flags\u0020;20,name\u0020;java.xml\u0020;flags\u0020;20 uses java/awt/im/spi/InputMethodDescriptor,javax/accessibility/AccessibilityProvider,javax/imageio/spi/ImageInputStreamSpi,javax/imageio/spi/ImageOutputStreamSpi,javax/imageio/spi/ImageReaderSpi,javax/imageio/spi/ImageTranscoderSpi,javax/imageio/spi/ImageWriterSpi,javax/print/PrintServiceLookup,javax/print/StreamPrintServiceFactory,javax/sound/midi/spi/MidiDeviceProvider,javax/sound/midi/spi/MidiFileReader,javax/sound/midi/spi/MidiFileWriter,javax/sound/midi/spi/SoundbankReader,javax/sound/sampled/spi/AudioFileReader,javax/sound/sampled/spi/AudioFileWriter,javax/sound/sampled/spi/FormatConversionProvider,javax/sound/sampled/spi/MixerProvider,sun/swing/InteropProvider provides interface\u0020;sun/datatransfer/DesktopDatatransferService\u0020;impls\u0020;sun/awt/datatransfer/DesktopDatatransferServiceImpl,interface\u0020;java/net/ContentHandlerFactory\u0020;impls\u0020;sun/awt/www/content/MultimediaContentHandlers,interface\u0020;javax/print/PrintServiceLookup\u0020;impls\u0020;sun/print/PrintServiceLookupProvider,interface\u0020;javax/print/StreamPrintServiceFactory\u0020;impls\u0020;sun/print/PSStreamPrinterFactory,interface\u0020;javax/sound/midi/spi/MidiDeviceProvider\u0020;impls\u0020;com/sun/media/sound/MidiInDeviceProvider\u005C;u002C;com/sun/media/sound/MidiOutDeviceProvider\u005C;u002C;com/sun/media/sound/RealTimeSequencerProvider\u005C;u002C;com/sun/media/sound/SoftProvider,interface\u0020;javax/sound/midi/spi/MidiFileReader\u0020;impls\u0020;com/sun/media/sound/StandardMidiFileReader,interface\u0020;javax/sound/midi/spi/MidiFileWriter\u0020;impls\u0020;com/sun/media/sound/StandardMidiFileWriter,interface\u0020;javax/sound/midi/spi/SoundbankReader\u0020;impls\u0020;com/sun/media/sound/AudioFileSoundbankReader\u005C;u002C;com/sun/media/sound/DLSSoundbankReader\u005C;u002C;com/sun/media/sound/JARSoundbankReader\u005C;u002C;com/sun/media/sound/SF2SoundbankReader,interface\u0020;javax/sound/sampled/spi/AudioFileReader\u0020;impls\u0020;com/sun/media/sound/AiffFileReader\u005C;u002C;com/sun/media/sound/AuFileReader\u005C;u002C;com/sun/media/sound/SoftMidiAudioFileReader\u005C;u002C;com/sun/media/sound/WaveFileReader\u005C;u002C;com/sun/media/sound/WaveFloatFileReader\u005C;u002C;com/sun/media/sound/WaveExtensibleFileReader,interface\u0020;javax/sound/sampled/spi/AudioFileWriter\u0020;impls\u0020;com/sun/media/sound/AiffFileWriter\u005C;u002C;com/sun/media/sound/AuFileWriter\u005C;u002C;com/sun/media/sound/WaveFileWriter\u005C;u002C;com/sun/media/sound/WaveFloatFileWriter,interface\u0020;javax/sound/sampled/spi/FormatConversionProvider\u0020;impls\u0020;com/sun/media/sound/AlawCodec\u005C;u002C;com/sun/media/sound/AudioFloatFormatConverter\u005C;u002C;com/sun/media/sound/PCMtoPCMCodec\u005C;u002C;com/sun/media/sound/UlawCodec,interface\u0020;javax/sound/sampled/spi/MixerProvider\u0020;impls\u0020;com/sun/media/sound/DirectAudioDeviceProvider\u005C;u002C;com/sun/media/sound/PortMixerProvider target macos-aarch64 flags 8000
|
||||
|
||||
-class name java/applet/Applet
|
||||
|
||||
-class name java/applet/Applet$AccessibleApplet
|
||||
|
||||
-class name java/applet/AppletContext
|
||||
|
||||
-class name java/applet/AppletStub
|
||||
|
||||
-class name java/applet/AudioClip
|
||||
|
||||
class name java/awt/Robot
|
||||
field name DEFAULT_DELAY descriptor I constantValue 20 flags 19
|
||||
field name DEFAULT_STEP_LENGTH descriptor I constantValue 2 flags 19
|
||||
method name click descriptor (I)V flags 1
|
||||
method name click descriptor ()V flags 1
|
||||
method name waitForIdle descriptor (I)V flags 1
|
||||
method name glide descriptor (II)V flags 1
|
||||
method name glide descriptor (IIII)V flags 1
|
||||
method name glide descriptor (IIIIII)V flags 1
|
||||
method name type descriptor (I)V flags 21
|
||||
method name type descriptor (C)V flags 21
|
||||
|
||||
-class name java/beans/AppletInitializer
|
||||
|
||||
class name java/beans/Beans
|
||||
-method name instantiate descriptor (Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/beans/beancontext/BeanContext;Ljava/beans/AppletInitializer;)Ljava/lang/Object;
|
||||
|
||||
class name javax/imageio/spi/ServiceRegistry
|
||||
-method name finalize descriptor ()V
|
||||
|
||||
class name javax/imageio/stream/FileCacheImageInputStream
|
||||
-method name finalize descriptor ()V
|
||||
|
||||
class name javax/imageio/stream/FileImageInputStream
|
||||
-method name finalize descriptor ()V
|
||||
|
||||
class name javax/imageio/stream/FileImageOutputStream
|
||||
-method name finalize descriptor ()V
|
||||
|
||||
class name javax/imageio/stream/ImageInputStreamImpl
|
||||
-method name finalize descriptor ()V
|
||||
|
||||
class name javax/imageio/stream/MemoryCacheImageInputStream
|
||||
-method name finalize descriptor ()V
|
||||
|
||||
-class name javax/swing/JApplet
|
||||
|
||||
-class name javax/swing/JApplet$AccessibleJApplet
|
||||
|
||||
class name javax/swing/JTable
|
||||
-method name setShowGrid descriptor (Z)V
|
||||
method name setShowGrid descriptor (Z)V flags 1 runtimeAnnotations @Ljava/beans/BeanProperty;(description="Whether\u005C;u0020;grid\u005C;u0020;lines\u005C;u0020;are\u005C;u0020;drawn\u005C;u0020;around\u005C;u0020;the\u005C;u0020;cells.")
|
||||
|
||||
class name javax/swing/RepaintManager
|
||||
-method name addDirtyRegion descriptor (Ljava/applet/Applet;IIII)V
|
||||
|
||||
class name javax/swing/plaf/synth/SynthPasswordFieldUI
|
||||
-method name installKeyboardActions descriptor ()V
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
#
|
||||
# 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. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# ##########################################################
|
||||
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
|
||||
# ##########################################################
|
||||
#
|
||||
class name java/lang/management/MemoryMXBean
|
||||
method name getTotalGcCpuTime descriptor ()J flags 1
|
||||
|
||||
class name javax/management/modelmbean/DescriptorSupport
|
||||
-method name <init> descriptor (Ljava/lang/String;)V
|
||||
-method name toXMLString descriptor ()Ljava/lang/String;
|
||||
|
||||
-class name javax/management/modelmbean/XMLParseException
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user