Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
ca405d0
8376400: C2: folding ifs may cause incorrect execution when trap is t…
rwestrel Apr 30, 2026
c8bb46b
8381650: Vector rotate operations on AArch64 with NEON
raneashay Apr 30, 2026
e6582b2
8377991: TestLimitsUpdating.java fails with runtime exception even af…
caspernorrbin Apr 30, 2026
100c500
8373016: Passes instead of skips/ignoring the platform in sun/securit…
myankelev Apr 30, 2026
fbb50f5
8383564: Avoid reloading klass when transforming stack chunks
albertnetymk Apr 30, 2026
9cc01a9
8380447: Fix linter warnings in compiler testlibrary
sstremler Apr 30, 2026
c2a4966
8382264: Refactor java.logging TestNG tests to use JUnit
dfuch Apr 30, 2026
91a4910
8382403: Enhance Kerberos DNS KDC discovery logging to expose sanitiz…
Apr 30, 2026
d88d476
8382546: Missing AOT external address initialization for string_index…
adinn Apr 30, 2026
bdf95ba
8379122: Test java/lang/ProcessBuilder/Basic.java fails with 'Excepti…
Apr 30, 2026
f56e5c9
8382548: serviceability/sa/TestJhsdbJstackMixedWithXComp.java#xcomp-d…
YaSuenag Apr 30, 2026
631d0e9
8383601: RISC-V: ShenandoahBarrierSetAssembler::load_reference_barrie…
shipilev Apr 30, 2026
bf72998
8382537: Invalid JDWP command set number or command number can result…
plummercj Apr 30, 2026
4b45849
8381154: Shenandoah: Region states could be read in wrong order for c…
Apr 30, 2026
41a5c03
8382700: C2: Delay inlining instead of giving up when hit NodeCountIn…
merykitty Apr 30, 2026
edff559
8379968: Test crashed: assert(cl._thread_status != JavaThreadStatus:…
pchilano Apr 30, 2026
02ad071
8382636: Shenandoah: Use self-forwarding to handle OOM during evacuation
rkennke Apr 30, 2026
7ecd0ea
8383550: AsyncExceptionHandshakeClosure::do_thread() should not be pa…
YaSuenag Apr 30, 2026
59b437a
8383634: AOTCodeTest fails intermittently with Parallel
adinn May 1, 2026
87fdbc5
8372817: Remove test/jdk/sun/security/rsa silent skips
myankelev May 1, 2026
f99a62a
8381380: Test host wildcard matching as part of a TLS validation of t…
artur-oracle May 1, 2026
4507ab8
8379973: Provide means to customize localized patterns in DateTimeFor…
naotoj May 1, 2026
0e86b9c
8376610: Test javax/net/ssl/TLS/TestJSSEClientDefaultProtocol.java ti…
myankelev May 2, 2026
f74a447
8374524: Investigate and cleanup test/jdk/sun/security/provider/Secur…
myankelev May 3, 2026
5ccf99b
8383414: Exhaustiveness rejects a type pattern that covers all permit…
lahodaj May 4, 2026
0588209
8379706: Cleanup and clarify BarrierSetAssembler::try_resolve_weak_ha…
xmas92 May 4, 2026
6b8ad8b
8382920: Shenandoah: Do fewer implicit narrowing conversions
lkorinth May 4, 2026
e914f73
8383650: Shenandoah: Missing card table updates for pinned regions
shipilev May 4, 2026
3c69c96
8383196: Shenandoah: Interpreter barriers clobber interpreter registers
shipilev May 4, 2026
3b50c48
8177841: Some java/awt/Robot tests can be improved
TheSarveshJain May 4, 2026
9fe2766
8376218: Improve KeyUtil::getKeySize coverage
myankelev May 4, 2026
3a65764
8382089: G1: Refactor concurrent refinement state machine
albertnetymk May 4, 2026
4d316a8
8379621: Compiler produces unverifiable class-file when using primiti…
biboudis May 4, 2026
fa874fa
8374629: Type test pattern with array type in switch fails to parse
biboudis May 4, 2026
f5460ce
8367342: Doclet documentation is incomplete
hns May 4, 2026
b221cb6
8347112: Copy nested directories in doc-files by default
hns May 4, 2026
3ba94ae
8379867: C2 VectorAPI: Rename TypeVectMask -> TypePVectMask for clarity
dev-jonghoonpark May 4, 2026
14bdfeb
8383772: runtime/reflect/ReflectOutOfMemoryError.java can fail interm…
May 4, 2026
13a8c8e
8383503: Test runtime/cds/MetaspaceAllocGaps.java failed
iklam May 4, 2026
b485729
8377568: DataBuffer constructors and methods do not specify required …
prrace May 4, 2026
06e6539
8374839: Improve jpackage information messages
May 4, 2026
6e5e4f6
8377938: VoiceOver Uses Mouse to Activate JButtons in German
May 4, 2026
c2074e4
8383824: TestCopyFiles.java fails after JDK-8347112
hns May 4, 2026
ebb3d68
8382201: Transparent Window is Opaque w/o Volatile Buffering
May 4, 2026
d8d881b
6328248: JProgessBar doesn't show if printed on paper with PrintJob (…
prsadhuk May 5, 2026
87525af
8380105: Test vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFram…
toxaart May 5, 2026
fad2e08
8383541: Safefetch should return the error value when accessing pages…
May 5, 2026
1581b06
8380457: Cleanup ShortRSAKeyWithinTLS test and remove hardcoded debug
myankelev May 5, 2026
65670ba
8383794: G1: Rename refinement sweep duration helper to reflect SwapG…
albertnetymk May 5, 2026
ea40bca
8383639: JConsole unnecessary classloading for MBean types
kevinjwalls May 5, 2026
75cf337
8381872: C2: assert before block local scheduling failed with UseComp…
rkennke May 5, 2026
1be2fc4
8383243: Make objcopy configurable to compress debug info
MBaesken May 5, 2026
91933ed
8381862: Refactor remaining TestNG tests under jdk/net/ExtendedSocket…
PeyaPeyaPeyang May 5, 2026
70f20f9
8383770: Remove flags from AOTCodeCache::Config already covered by cp…
May 5, 2026
19e8663
8383642: Additional Shenandoah clone barrier tests
olivergillespie May 5, 2026
2bef1d3
8383525: DateTimeFormatterBuilder.getLocalizedDateTimePattern() concu…
naotoj May 5, 2026
20694d2
8378443: ACVP testing should include LMS signature verification
May 5, 2026
b553ae4
8383873: SNIWildcardMatching test logs an error instead of failing
artur-oracle May 5, 2026
08eb5df
8383526: Update warning messages to be consistent in the naming the i…
May 5, 2026
601c1fe
8383743: Use RAII pattern to find matching compiler directive
May 5, 2026
b8189ae
8381984: Test jdk/nio/zipfs/ZipFSTester.java fails with mismatched ti…
May 5, 2026
8480d12
8383629: JNI exception pending in -[TabButtonAccessibility accessibil…
May 5, 2026
dab7414
8383830: Vector API: internal AbstractVector helper methods exposed i…
May 5, 2026
f646ace
8383570: Test DisabledAlgorithms.java intermittently timed out
May 6, 2026
3a91372
8383834: x86_64: Client build fails after JDK-8379706
xmas92 May 6, 2026
bb9a094
8378102: Validly imported symbols of unresolved types do not have the…
lahodaj May 6, 2026
1abd828
8382311: 30% Performance regression in Philosophers benchmark
fbredber May 6, 2026
e44bda9
8381434: Convert hard coded debug to Boolean.getBoolean in security l…
myankelev May 6, 2026
4f3edc3
8380109: Implement JEP 533: Structured Concurrency (Seventh Preview)
May 6, 2026
795f994
8383643: Serial: Avoid reloading klass when checking string dedup can…
albertnetymk May 6, 2026
c53a98c
8383850: Move TestLargeUTF8Length.java to resourcehogs
jsikstro May 6, 2026
f5624e6
8379667: C2: Deep recursion with cmovP_regNode::bottom_type
merykitty May 6, 2026
d171f37
8382871: Completion failure during diagnostic formatting
cushon May 6, 2026
b337599
8383810: Shenandoah: Simplify native CAS barriers
shipilev May 6, 2026
e324174
8383825: Incorrect handling of Hawaii_Aleutian metazone
naotoj May 6, 2026
7bf1de5
8384042: [BACKOUT] Incorrect handling of Hawaii_Aleutian metazone
naotoj May 6, 2026
4e1dd4d
8383851: TypeInstPtr::get_const_boxed_value is unused since JDK-8149813
marc-chevalier May 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 9 additions & 1 deletion make/autoconf/jdk-options.m4
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2025, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2026, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -323,6 +323,14 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
AC_SUBST(COPY_DEBUG_SYMBOLS)
AC_SUBST(ZIP_EXTERNAL_DEBUG_SYMBOLS)

# Should we enable objcopy debuginfo compression ?
UTIL_ARG_ENABLE(NAME: objcopy-debuginfo-compression, DEFAULT: false,
RESULT: ENABLE_OBJCOPY_DEBUGINFO_COMPRESSION,
DESC: [Set to enable compression in the debuginfo files (Linux only)],
CHECKING_MSG: [if debuginfo compression with objcopy is done],
IF_ENABLED: [ OBJCOPY_COMPRESS_FLAGS="--compress-debug-sections=zlib-gnu" ])
AC_SUBST(OBJCOPY_COMPRESS_FLAGS)

# Should we add external native debug symbols to the shipped bundles?
AC_MSG_CHECKING([if we should add external native debug symbols to the shipped bundles])
AC_ARG_WITH([external-symbols-in-bundles],
Expand Down
1 change: 1 addition & 0 deletions make/autoconf/spec.gmk.template
Original file line number Diff line number Diff line change
Expand Up @@ -635,6 +635,7 @@ METALLIB := @METALLIB@
COMPILE_WITH_DEBUG_SYMBOLS := @COMPILE_WITH_DEBUG_SYMBOLS@
COPY_DEBUG_SYMBOLS := @COPY_DEBUG_SYMBOLS@
ZIP_EXTERNAL_DEBUG_SYMBOLS := @ZIP_EXTERNAL_DEBUG_SYMBOLS@
OBJCOPY_COMPRESS_FLAGS := @OBJCOPY_COMPRESS_FLAGS@

CFLAGS_DEBUG_SYMBOLS := @CFLAGS_DEBUG_SYMBOLS@
ASFLAGS_DEBUG_SYMBOLS := @ASFLAGS_DEBUG_SYMBOLS@
Expand Down
4 changes: 2 additions & 2 deletions make/common/native/Link.gmk
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2025, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2026, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -189,7 +189,7 @@ define CreateDynamicLibraryOrExecutable
# This cannot be run separately since it updates the original target
# file.
$$(call ExecuteWithLog, $$($1_OBJECT_DIR)/$$($1_SAFE_NAME)_create_debuginfo, \
$$($1_OBJCOPY) --only-keep-debug $$($1_TARGET) $$($1_DEBUGINFO_FILES))
$$($1_OBJCOPY) $(OBJCOPY_COMPRESS_FLAGS) --only-keep-debug $$($1_TARGET) $$($1_DEBUGINFO_FILES))
$$(CHMOD) -x $$($1_DEBUGINFO_FILES)
else ifeq ($(call isTargetOs, aix), true)
# AIX does not provide the equivalent of objcopy to extract debug
Expand Down
6 changes: 3 additions & 3 deletions src/hotspot/cpu/aarch64/aarch64.ad
Original file line number Diff line number Diff line change
Expand Up @@ -1986,7 +1986,7 @@ uint MachSpillCopyNode::implementation(C2_MacroAssembler *masm, PhaseRegAlloc *r

assert(src_lo != OptoReg::Bad && dst_lo != OptoReg::Bad, "must move at least 1 register");

if (src_hi != OptoReg::Bad && !bottom_type()->isa_vectmask()) {
if (src_hi != OptoReg::Bad && !bottom_type()->isa_pvectmask()) {
assert((src_lo&1)==0 && src_lo+1==src_hi &&
(dst_lo&1)==0 && dst_lo+1==dst_hi,
"expected aligned-adjacent pairs");
Expand All @@ -2001,7 +2001,7 @@ uint MachSpillCopyNode::implementation(C2_MacroAssembler *masm, PhaseRegAlloc *r
int src_offset = ra_->reg2offset(src_lo);
int dst_offset = ra_->reg2offset(dst_lo);

if (bottom_type()->isa_vect() && !bottom_type()->isa_vectmask()) {
if (bottom_type()->isa_vect() && !bottom_type()->isa_pvectmask()) {
uint ireg = ideal_reg();
DEBUG_ONLY(int algm = MIN2(RegMask::num_registers(ireg), (int)Matcher::stack_alignment_in_slots()) * VMRegImpl::stack_slot_size);
assert((src_lo_rc != rc_stack) || is_aligned(src_offset, algm), "unaligned vector spill sp offset %d (src)", src_offset);
Expand Down Expand Up @@ -2149,7 +2149,7 @@ uint MachSpillCopyNode::implementation(C2_MacroAssembler *masm, PhaseRegAlloc *r
} else {
st->print("%s", Matcher::regName[dst_lo]);
}
if (bottom_type()->isa_vect() && !bottom_type()->isa_vectmask()) {
if (bottom_type()->isa_vect() && !bottom_type()->isa_pvectmask()) {
int vsize = 0;
switch (ideal_reg()) {
case Op_VecD:
Expand Down
34 changes: 32 additions & 2 deletions src/hotspot/cpu/aarch64/aarch64_vector.ad
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,12 @@ source %{
return false;
}
break;
case Op_RotateLeftV:
case Op_RotateRightV:
if (length_in_bytes > 16) {
return false; // NEON only, since SLI/USHR are not available in SVE
}
break;
default:
break;
}
Expand Down Expand Up @@ -370,6 +376,11 @@ source %{
case Op_SqrtVHF:
case Op_FmaVHF:
return false;
// There's no SLI instruction in SVE, so we can't have an optimal vector
// rotate with masking when emitting code for SVE.
case Op_RotateLeftV:
case Op_RotateRightV:
return false;
default:
break;
}
Expand Down Expand Up @@ -441,11 +452,11 @@ source %{
// On architectures that do not support predicate, masks are stored in
// general vector registers (TypeVect) with sizes ranging from TypeVectA
// to TypeVectX based on the vector size in bytes.
assert(vt->isa_vectmask() == nullptr, "mask type is not matched");
assert(vt->isa_pvectmask() == nullptr, "mask type is not matched");
return false;
}

assert(vt->isa_vectmask() != nullptr, "expected TypeVectMask on SVE");
assert(vt->isa_pvectmask() != nullptr, "expected TypePVectMask on SVE");
switch (opcode) {
case Op_VectorMaskToLong:
case Op_VectorLongToMask:
Expand Down Expand Up @@ -3229,6 +3240,25 @@ instruct vlsra_imm(vReg dst, vReg src, immI_positive shift) %{
ins_pipe(pipe_slow);
%}

// vector rotate with constant shift count (NEON only)
// Uses USHR+SLI 2-instruction sequence instead of SHL+USHR+ORR 3-instruction decomposition.

instruct vrotateconstant(vReg dst, vReg src, immI shift) %{
predicate(Matcher::vector_length_in_bytes(n) <= 16);
match(Set dst (RotateLeftV src shift));
match(Set dst (RotateRightV src shift));
effect(TEMP_DEF dst);
format %{ "vrotateconstant $dst, $src, $shift" %}
ins_encode %{
int opc = this->ideal_Opcode();
int raw_shift = checked_cast<int>(opc == Op_RotateLeftV ?
$shift$$constant : -$shift$$constant);
__ neon_vector_rotate($dst$$FloatRegister, get_arrangement(this),
$src$$FloatRegister, raw_shift);
%}
ins_pipe(pipe_slow);
%}

// vector shift - predicated

instruct vlsl_masked(vReg dst_src1, vReg src2, pRegGov pg) %{
Expand Down
34 changes: 32 additions & 2 deletions src/hotspot/cpu/aarch64/aarch64_vector_ad.m4
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,12 @@ source %{
return false;
}
break;
case Op_RotateLeftV:
case Op_RotateRightV:
if (length_in_bytes > 16) {
return false; // NEON only, since SLI/USHR are not available in SVE
}
break;
default:
break;
}
Expand Down Expand Up @@ -360,6 +366,11 @@ source %{
case Op_SqrtVHF:
case Op_FmaVHF:
return false;
// There's no SLI instruction in SVE, so we can't have an optimal vector
// rotate with masking when emitting code for SVE.
case Op_RotateLeftV:
case Op_RotateRightV:
return false;
default:
break;
}
Expand Down Expand Up @@ -431,11 +442,11 @@ source %{
// On architectures that do not support predicate, masks are stored in
// general vector registers (TypeVect) with sizes ranging from TypeVectA
// to TypeVectX based on the vector size in bytes.
assert(vt->isa_vectmask() == nullptr, "mask type is not matched");
assert(vt->isa_pvectmask() == nullptr, "mask type is not matched");
return false;
}

assert(vt->isa_vectmask() != nullptr, "expected TypeVectMask on SVE");
assert(vt->isa_pvectmask() != nullptr, "expected TypePVectMask on SVE");
switch (opcode) {
case Op_VectorMaskToLong:
case Op_VectorLongToMask:
Expand Down Expand Up @@ -1965,6 +1976,25 @@ instruct vlsra_imm(vReg dst, vReg src, immI_positive shift) %{
ins_pipe(pipe_slow);
%}

// vector rotate with constant shift count (NEON only)
// Uses USHR+SLI 2-instruction sequence instead of SHL+USHR+ORR 3-instruction decomposition.

instruct vrotateconstant(vReg dst, vReg src, immI shift) %{
predicate(Matcher::vector_length_in_bytes(n) <= 16);
match(Set dst (RotateLeftV src shift));
match(Set dst (RotateRightV src shift));
effect(TEMP_DEF dst);
format %{ "vrotateconstant $dst, $src, $shift" %}
ins_encode %{
int opc = this->ideal_Opcode();
int raw_shift = checked_cast<int>(opc == Op_RotateLeftV ?
$shift$$constant : -$shift$$constant);
__ neon_vector_rotate($dst$$FloatRegister, get_arrangement(this),
$src$$FloatRegister, raw_shift);
%}
ins_pipe(pipe_slow);
%}

dnl
dnl VSHIFT_PREDICATE($1, $2, $3 )
dnl VSHIFT_PREDICATE(type, op_name, insn)
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/cpu/aarch64/c2_MacroAssembler_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ void C2_MacroAssembler::fast_lock(Register obj, Register box, Register t1,
// Check if object matches.
ldr(t3, Address(t1_monitor, ObjectMonitor::object_offset()));
BarrierSetAssembler* bs_asm = BarrierSet::barrier_set()->barrier_set_assembler();
bs_asm->try_resolve_weak_handle_in_c2(this, t3, t2, slow_path);
bs_asm->try_peek_weak_handle_in_nmethod(this, t3, t3, t2, slow_path);
cmp(t3, obj);
br(Assembler::NE, slow_path);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,11 @@ void BarrierSetAssembler::check_oop(MacroAssembler* masm, Register obj, Register
__ cbz(obj, error); // if klass is null it is broken
}

void BarrierSetAssembler::try_peek_weak_handle_in_nmethod(MacroAssembler* masm, Register weak_handle, Register obj, Register tmp, Label& slow_path) {
// Load the oop from the weak handle without barriers.
__ ldr(obj, Address(weak_handle));
}

#ifdef COMPILER2

OptoReg::Name BarrierSetAssembler::encode_float_vector_register_size(const Node* node, OptoReg::Name opto_reg) {
Expand Down Expand Up @@ -440,12 +445,6 @@ OptoReg::Name BarrierSetAssembler::refine_register(const Node* node, OptoReg::Na

return opto_reg;
}

void BarrierSetAssembler::try_resolve_weak_handle_in_c2(MacroAssembler* masm, Register obj, Register tmp, Label& slow_path) {
// Load the oop from the weak handle.
__ ldr(obj, Address(obj));
}

#undef __
#define __ _masm->

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,12 +130,15 @@ class BarrierSetAssembler: public CHeapObj<mtGC> {
static void clear_patching_epoch();
static void increment_patching_epoch();

// See AS_NO_KEEPALIVE for peek semantics
// weak_handle and obj may alias
virtual void try_peek_weak_handle_in_nmethod(MacroAssembler* masm, Register weak_handle, Register obj, Register tmp, Label& slow_path);

#ifdef COMPILER2
OptoReg::Name encode_float_vector_register_size(const Node* node,
OptoReg::Name opto_reg);
OptoReg::Name refine_register(const Node* node,
OptoReg::Name opto_reg);
virtual void try_resolve_weak_handle_in_c2(MacroAssembler* masm, Register obj, Register tmp, Label& slow_path);
#endif // COMPILER2
};

Expand Down
Loading
Loading