Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
172 commits
Select commit Hold shift + click to select a range
8db1ca8
8380715: Enhance PKCS5 padding
slumericanB Apr 27, 2026
3895fe1
8382178: Enhance TLS certificate handling
Apr 28, 2026
d996499
8383076: Enhance SASL Authentication
wangweij Apr 30, 2026
5b905b8
8383281: Enhance MD5 Digesting
wangweij May 8, 2026
c8c9bcc
8384165: Improve ciphtertext handling
slumericanB May 13, 2026
8a16825
8383756: Enhance Network Clients
dfuch May 19, 2026
f4a6e72
8384445: Enhance JPEG loading
prrace May 19, 2026
763b8a5
8382378: Improve C2 loop transformations
robcasloz May 20, 2026
ce0dad2
8382407: Enhance LDAP Lookups
dfuch May 20, 2026
599168a
8383530: Enhance Javadoc Searching
hns May 21, 2026
c0987ae
8383439: Enhance HTTP Client Response Handling
vy May 26, 2026
943540d
8383301: Enhance WebRowSets
JoeWang-Java May 28, 2026
3c9a28d
8384021: Enhance Certificate Constraint Checking
artur-oracle May 29, 2026
4820d3f
8383689: Enhance Vector Processing
eme64 Jun 1, 2026
db055ba
8385260: Enhance SOCKS5 support
vy Jun 2, 2026
c251c01
8384455: Enhance DataFlavor
Jun 2, 2026
64d86d8
8383679: Enhance Certificate Name Checks
artur-oracle Jun 3, 2026
e7322d8
8383699: Enhance XPath Expressions
JoeWang-Java Jun 4, 2026
1f21160
8384664: Enhance Image Handling
prrace Jun 4, 2026
4458d9b
8384468: Enhance jpackage Packaging
Jun 8, 2026
cd3d04b
8385249: Enhance diagnostic sessions
Jun 8, 2026
c1e8115
8384930: Enhance jstatd
kevinjwalls Jun 10, 2026
84ecb95
8386187: Enhance font rendering
prrace Jun 16, 2026
be5205e
8383745: Enhance HTTP Server
Michael-Mc-Mahon Jun 22, 2026
a5142bd
8386552: Enhance GIF loading
jayathirthrao Jun 23, 2026
5d6bd8f
8387075: RemoteHostImpl constructor correction (jstatd)
kevinjwalls Jun 23, 2026
01bf14b
8384736: Enhance JShell
lahodaj Jun 24, 2026
70b65c2
8383047: Enhance LDAP logins
jaikiran Jun 24, 2026
da7c28f
8386783: WebRowSet empty elements read value of previous element
justin-curtis-lu Jun 24, 2026
7d3ef9a
8384031: Enhance XML Processing
JoeWang-Java Jun 25, 2026
9f4e850
8387235: JShell tests failing
lahodaj Jun 26, 2026
e0b15f8
8386033: Enhance QUIC connections
vy Jun 26, 2026
17e41a6
8384771: Enhance TLS handshakes
Jun 26, 2026
098ed73
8385476: Enhance MIDI file handling
Jun 27, 2026
c600054
8385209: Enhance HTTP client caching
dfuch Jul 1, 2026
4e627bb
8387152: Enhance krb5 tokens
wangweij Jul 7, 2026
42c4f84
8386515: Enhance HTTP server parsing
djelinski Jul 8, 2026
8dd2301
8386535: Improve HTTP headers
djelinski Jul 8, 2026
72a42f1
8387217: Enhance krb5 client
wangweij Jul 8, 2026
dff917e
8386013: Enhance EventListenerList
prsadhuk Jul 12, 2026
1926604
8386923: Enhance TLS Extensions
artur-oracle Jul 13, 2026
b0413bd
8384872: Enhance HTTP Client
Michael-Mc-Mahon Jul 14, 2026
5fcdf38
8384654: Enhance Template Handling
Jul 15, 2026
b54d299
8386525: Enhance HTTP Server Handler
djelinski Jul 16, 2026
bf0cc85
8387238: Enhance Kerberos validation
wangweij Jul 17, 2026
3365a37
8384746: Enhance Preferences
Jul 17, 2026
85b119e
8384688: Enhance jmod handling
Jul 25, 2026
e185170
8391087: com/sun/net/httpserver/property/DrainAmountPropertyTest.java…
vy Aug 26, 2026
624e426
8390400: Enhance C2 comparisons
mhaessig Sep 7, 2026
98c4d2f
8388189: [s390x] Implement post-call NOPs
offamitkumar Oct 15, 2026
ca6e6b5
8394512: Remove support for pre-Vista SDKs
djelinski Oct 15, 2026
00f4e1d
8393645: [REDO] C2 VerifyIterativeGVN: fix many missing optimization/…
eme64 Oct 15, 2026
019a9d0
8337821: C2 hits compiler MemLimit in PhaseChaitin::Split
dlunde Oct 15, 2026
f7917fb
8394622: [BACKOUT] RISC-V: Use movptr2 for C2 pointer constants
DingliZhang Oct 15, 2026
2990eca
8394574: Clean up net_util
djelinski Oct 15, 2026
47b09aa
8388433: [IR Framework] Introduce @Skip to skip failing tests instead…
chhagedorn Oct 15, 2026
c110aa0
8393745: Shenandoah: Purge SHENANDOAH_CENSUS_NOISE support
rudraroop Oct 15, 2026
196fc94
8364407: [REDO] Consolidate Identity of self-inverse operations
SirYwell Oct 15, 2026
b7653ec
8394654: [Valhalla] Missing return after uncommon trap in LibraryCall…
fparain Oct 15, 2026
decb49e
8388161: value-objects-jls: 12.6: address finalization of value objects
Oct 15, 2026
c9661bb
8381336: SA FlatArray support is incomplete
YaSuenag Oct 15, 2026
81d817d
8392962: Incorporate JSONTestSuite into test
naotoj Oct 15, 2026
d51030a
8393434: Automatically grow ResizeableHashTable
iklam Oct 15, 2026
cefadef
8386157: [Valhalla] assert memnode.cpp:1383 added by 8382936 caused i…
merykitty Oct 16, 2026
75809ed
8380732: Final variables cannot be assigned separately from declarati…
Oct 16, 2026
7606da1
8393416: [Ubuntu 26.10] screen capture test does not work with waylan…
Oct 16, 2026
11fe523
8394134: ResolverConfigurationImpl.c has unused macros and potential …
MBaesken Oct 16, 2026
3f4d498
8393648: Reconsider ParkEvent alignment
fbredber Oct 16, 2026
d358013
8394744: [BACKOUT][Valhalla] assert memnode.cpp:1383 added by 8382936…
mhaessig Oct 16, 2026
d12c19c
8394225: [Valhalla] C2 assert in TypeInstPtr::TypeInstPtr during scal…
merykitty Oct 16, 2026
5e78393
8389478: Crash with missing symbol in serializable lambda: AssertionE…
lahodaj Oct 16, 2026
c419514
8388559: RISC-V: use branchless instructions for CMoveI with constant…
zifeihan Oct 16, 2026
8e8e30d
8394580: Binding a socket to 127.x.x.255 fails on Linux
djelinski Oct 16, 2026
394a822
8394416: C2: cleanup dead/useless fields
marc-chevalier Oct 16, 2026
4c31fa8
8394564: Some sys/utsname.h inclusions are not needed any more
MBaesken Oct 16, 2026
1592dc2
8394633: Shenandoah: C1 keep-alive barriers load without implicit nul…
shipilev Oct 16, 2026
3dc8346
8394751: Improve test/jdk/java/net/SocketOption/OptionsTest.java for …
jaikiran Oct 16, 2026
a7199ce
8393535: Remove implementations of deprecated MBeanServer method, and…
kevinjwalls Oct 16, 2026
24347ff
8394696: Need minor correction of SampledObjectAlloc spec
Oct 16, 2026
b456aed
8393492: C2: Missed anti-dependence computation on memory access intr…
merykitty Oct 16, 2026
d320466
8394676: Remove duplicated VClass test code from java/util/Collection…
Oct 16, 2026
44f2d94
8394515: AOT code cache: guarantee(chk == -1 || chk == 0) failed: Fie…
Oct 16, 2026
d0287a5
8394269: Deprecate OpenType.ALLOWED_CLASSNAMES for removal
kevinjwalls Oct 16, 2026
005b726
8394487: medialib has many unused C function prototypes
prrace Oct 16, 2026
93376e4
8392424: sun/font/StandardGlyphVector.getGlyphPosition accepts invali…
prrace Oct 16, 2026
cd37d2b
8391460: Implement JEP 543: Structured Concurrency
Oct 17, 2026
8610e80
8392559: [GCC static analyzer] function methodSignature should check …
MBaesken Oct 17, 2026
3104115
8393338: C2: Out-of-bounds constant VectorSlice index crashes x86 cod…
Oct 18, 2026
5736615
8388475: RISC-V: Optimize MD5 intrinsics by reducing data dependency
zifeihan Oct 19, 2026
042f64e
8392548: Optimize instruction sequence for x86 ReplHF_reg instruction…
Oct 19, 2026
d0cc2cd
8393019: [Valhalla] C2: assert(_outcnt==1) failed: not unique
marc-chevalier Oct 19, 2026
80df161
8394791: RISC-V: IR Framework Add "zbb" to verified CPU features
albertnetymk Oct 19, 2026
4b4a691
8392938: G1: Wrong young gen bounds calculation on huge heaps
Oct 19, 2026
760dbf4
8392784: [Valhalla] Infinite loop in PushValueTypeDown
rwestrel Oct 19, 2026
90dfb8c
8393742: Multiple @apiNote tags in a doc comment are rendered poorly
hns Oct 19, 2026
3933168
8394716: SetExtensionEventCallback should not enable the event
Oct 19, 2026
7bb1ed2
8392844: Compile normal version when OSR compilation is not possible …
shipilev Oct 19, 2026
837606c
8394743: Remove redundant private methods from MutableBigInteger
minborg Oct 19, 2026
5fd84fb
8393711: G1: Coarsening can inadvertedly add 2^32 cards to card set o…
Oct 19, 2026
56c0820
8389737: javac incorrectly accepts super.field in this() invocation w…
lahodaj Oct 19, 2026
f4b39ff
8389135: Support TLS 1.2 Extended Master Secret (EMS) derivation in S…
chmielewskiandreas Oct 19, 2026
3bc15ee
8394828: Problemlist java/net/httpclient/ConnectTimeoutTest and java/…
jaikiran Oct 19, 2026
78aedea
8392387: RISC-V: Use Zvbb rotate for ChaCha20
zny666 Oct 19, 2026
776ffc5
8377819: Security properties jlink plugin
seanjmullan Oct 19, 2026
7a5681d
8393500: Parallel: Simplify Full GC compaction state transitions
albertnetymk Oct 19, 2026
f015749
8389595: [Valhalla] Add is_valhalla_enabled asserts to Valhalla speci…
fparain Oct 19, 2026
55ea1d3
8393715: G1: Howl bucket assert can fire unnecessarily in debug mode …
Oct 19, 2026
52c0e4b
8394620: Update Zlib Data Compression Library's gzwrite.c
jaikiran Oct 19, 2026
728db62
8394775: Rename the JSON test file containing # in its file name
naotoj Oct 19, 2026
795909c
8389457: GC.class_histogram reports duplicate rows for refined array …
lmesnik Oct 19, 2026
5bb5a88
8386428: With -UseLSE the Starvation test on Windows ARM64 timeouts
Oct 19, 2026
afc9aa8
8394810: Update hotspot-style to reflect renaming of Atomic
Oct 19, 2026
e20083a
8393920: CompactNumberFormat plural rules matching can be possessive
justin-curtis-lu Oct 19, 2026
52e860f
8387790: Shenandoah: Remove degenerated cycles
Oct 19, 2026
0bdcad8
8394819: AOT incorrectly preserves initialization state of superinter…
Oct 19, 2026
eb356f8
8391227: Deprecate -XX:AOTMode=on
iklam Oct 19, 2026
ab66258
8394890: ProblemList the failing PKCS11 tests
Oct 19, 2026
6b59d43
8352077: Fatal error: unhandled bytecode
jumanji144 Oct 19, 2026
da7dfc1
8394731: Rename HeapShared to AOTHeap
iklam Oct 20, 2026
69e24c9
8392738: RISC-V: Implement Float16 conversion intrinsics in the templ…
Oct 20, 2026
0e918ea
8393322: [Valhalla] C1 misses null checks when copying flat value fields
TobiHartmann Oct 20, 2026
2e0b566
8392648: javac generates invalid bytecode
lahodaj Oct 20, 2026
c9c7458
8394823: [ASAN] libSuspendInCritical.cpp triggers GCC -Wmaybe-uniniti…
Oct 20, 2026
751021c
8393659: Refactor partial-array parallel processing
albertnetymk Oct 20, 2026
bd97c58
8392567: [GCC static analyzer] potential leak of asd in Java_sun_awt_…
MBaesken Oct 20, 2026
a19447a
8394808: C2: MachSafePointNode::bottom_type should be Type::CONTROL
merykitty Oct 20, 2026
bee4b02
8394531: Remove support for SIO_LOOPBACK_FAST_PATH option on Windows
djelinski Oct 20, 2026
de084f0
8389578: [Valhalla] C2 crashes in OopFlow after implicit null-check c…
hgqxjj Oct 20, 2026
742e547
8394619: G1: Clean up G1FreeRegionList
Oct 20, 2026
c6fda16
8392523: Test java/util/concurrent/forkjoin/AsyncShutdownNowInvokeAny…
Oct 20, 2026
ff39f9f
8394752: Rewrite Linker javadoc in terms of canonical layouts
JornVernee Oct 20, 2026
ee4d33c
8393007: G1: Waste allowance calculation may wrap around on 32 bit
benshuai5D Oct 20, 2026
7aedb92
8392561: [GCC static analyzer] potential dereference of NULL pointer …
MBaesken Oct 20, 2026
d63b981
8394746: java/net/SocketOption/OptionsTest.java fails for IP_TOS on W…
jaikiran Oct 20, 2026
2f4fdcb
8339188: Javac should issue a compiler error when a value class overr…
Oct 20, 2026
644cd39
8394831: C2: SIGSEGV in PhaseOutput::fill_buffer when running -versio…
Oct 20, 2026
ecadb8f
8391308: Remove ClassLoader.classes vector and addClass call
Oct 20, 2026
83f5ecb
8394785: compiler/whitebox/StressNMethodRelocation.java fails with -X…
shivshah-oracle Oct 20, 2026
8992ee7
8394787: compiler/c1/CanonicalizeArrayLength.java times out with -XX:…
shivshah-oracle Oct 20, 2026
78837b1
8394786: compiler/compilercontrol/commands/CompileLevelPrintTest.java…
shivshah-oracle Oct 20, 2026
ec72788
8394784: compiler/exceptions/OptimizeImplicitExceptions.java fails wi…
shivshah-oracle Oct 20, 2026
dfae1e5
8393882: Unchecked lengths in I18N binary-data parsers can cause over…
naotoj Oct 20, 2026
09b70a9
Merge
Oct 20, 2026
448dd77
8394982: Problem list sun/tools/jhsdb/HeapDumpTestWithActiveProcess.j…
plummercj Oct 20, 2026
e049dd2
8394388: GenShen: Enhance WhiteBox API to support old and young colle…
Oct 20, 2026
5f97799
8386459: implKyberAddPolyJava() should return the result parameter, n…
smemery Oct 21, 2026
2b2ccfe
8394910: Remove redundant initial_refcount parameter from PartialArra…
albertnetymk Oct 21, 2026
145e171
8394230: C2: Unexpected long CountBits nodes in SuperWord truncation
jaskarth Oct 21, 2026
fd09c38
8394736: C2: Trap profile pollution can disable Preconditions.checkIn…
merykitty Oct 21, 2026
6c98dd4
8394822: RISC-V: CRC32/CRC32C intrinsic results are not sign-extended
DingliZhang Oct 21, 2026
e48cc5f
8394902: RISC-V: Add vector rearrange support for small lane count ve…
DingliZhang Oct 21, 2026
ba5e0a5
8393065: Wrong bytecode generated for a value class constructor refer…
lahodaj Oct 21, 2026
77656b9
8392766: RISC-V: Remove redundant la in TemplateTable::fast_binaryswitch
albertnetymk Oct 21, 2026
f08cc50
8391830: javac incorrectly considers types disjoint in instanceof whe…
lahodaj Oct 21, 2026
a0785e6
8391648: Use a single non-oop field list for identity class layouts
caspernorrbin Oct 21, 2026
0ae62a1
8394912: Parallel: Remove redundant arg of PSPromotionManager::push_o…
albertnetymk Oct 21, 2026
db2463a
8394824: [ASAN]tier1 Clhsdb core-dump SA tests fail on ASAN+fastdebug…
Oct 21, 2026
7cc7df7
8392768: PPC64: Optimize narrow oop constant loads for 31-bit compres…
dbriemann Oct 21, 2026
4f394d3
8393716: C2: Add PrintIdealNodeCount as a compile command
dlunde Oct 21, 2026
d544fca
8380289: Implement JEP 545: Faster Startup and Warmup with ZGC & JEP …
fisk Oct 21, 2026
69c9e4a
8386253: G1: Old gen collectionUsage memory pool should be updated on…
benshuai5D Oct 21, 2026
5c1c7c1
8394607: HttpClient HTTP/2: fully received response body discarded wh…
dfuch Oct 21, 2026
71326b7
8392357: Permit SyncProviderException.getSyncResolver() to throw Ille…
justin-curtis-lu Oct 21, 2026
201a664
8394152: CachedRowSet.acceptChanges throws ArrayIndexOutOfBoundsExcep…
justin-curtis-lu Oct 21, 2026
22bc735
8395142: CA Enhancements
wangweij Oct 20, 2026
f921bd7
8392050: Purge CollectedHeap::safepoint_workers() support
Oct 21, 2026
6ed82b3
8384611: Improve value class test coverage in java/util Collections/S…
Oct 21, 2026
bf83d32
Merge
Oct 21, 2026
972a048
8394901: Parallel: Move some RegionData methods to psParallelCompact.cpp
albertnetymk Oct 22, 2026
7c891bd
8395364: G1: Remove redundant arg of G1ParScanThreadState::start_part…
albertnetymk Oct 22, 2026
b6654fc
8395341: RISC-V: C2 crashes with "bad AD file" for CMove with VectorT…
zifeihan Oct 22, 2026
deb8498
Merge branch 'sapmachine' into pr-jdk-28+21
RealCLanger Oct 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions doc/hotspot-style.html
Original file line number Diff line number Diff line change
Expand Up @@ -268,8 +268,8 @@ <h4 id="conventions-for-lock-free-code">Conventions for Lock-free
synchronization context, such as a held mutex or at a safepoint. In such
cases the variable should be declared <code>volatile</code> and it
should NOT be accessed as a normal C++ lvalue. Rather, access should be
performed via functions from <code>Atomic</code>, such as
<code>Atomic::load</code>, <code>Atomic::store</code>, etc.</p>
performed via functions from <code>AtomicAccess</code>, such as
<code>AtomicAccess::load</code>, <code>AtomicAccess::store</code>, etc.</p>
<p>This special formulation makes it more clear to maintainers that the
variable is accessed concurrently in a lock-free manner.</p>
<h3 id="source-files">Source Files</h3>
Expand Down
4 changes: 2 additions & 2 deletions doc/hotspot-style.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,8 @@ change should be done with a "setter" accessor matched to the simple
Sometimes variables are accessed concurrently without appropriate synchronization
context, such as a held mutex or at a safepoint. In such cases the variable should
be declared `volatile` and it should NOT be accessed as a normal C++ lvalue. Rather,
access should be performed via functions from `Atomic`, such as `Atomic::load`,
`Atomic::store`, etc.
access should be performed via functions from `AtomicAccess`, such as `AtomicAccess::load`,
`AtomicAccess::store`, etc.

This special formulation makes it more clear to maintainers that the variable is
accessed concurrently in a lock-free manner.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2013, 2021, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013, 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 @@ -28,18 +28,17 @@
import java.io.IOException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.PublicKey;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.security.interfaces.ECPublicKey;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

import sun.security.util.CurveDB;
import sun.security.util.DerInputStream;
import sun.security.util.DerOutputStream;
import sun.security.util.DerValue;
Expand Down Expand Up @@ -140,11 +139,8 @@ private static List<byte[]> altEncodings(X509Certificate c)
List<DerValue> algIds = Arrays.asList(seq[1], altAlgId(seq[1]));

List<DerValue> sigs;
PublicKey p = c.getPublicKey();
if (p instanceof ECPublicKey) {
ECPublicKey ep = (ECPublicKey) p;
BigInteger mod = ep.getParams().getOrder();
sigs = Arrays.asList(seq[2], altSig(mod, seq[2]));
if (c.getSigAlgName().contains("ECDSA")) {
sigs = Arrays.asList(seq[2], altSig(seq[2]));
} else {
sigs = Arrays.asList(seq[2]);
}
Expand All @@ -163,14 +159,27 @@ private static List<byte[]> altEncodings(X509Certificate c)
return result;
}

private static DerValue altSig(BigInteger mod, DerValue sig)
private static DerValue altSig(DerValue sig)
throws IOException {
byte[] sigBits = sig.getBitString();
int sigLength = sigBits.length;
DerInputStream in =
new DerInputStream(sigBits, 0, sigBits.length, false);
new DerInputStream(sigBits, 0, sigLength, false);
DerValue[] values = in.getSequence(2);
BigInteger r = values[0].getBigInteger();
BigInteger s = values[1].getBigInteger();
BigInteger mod;
// The following checks cover more than 99.99999% of signature lengths
// for the three NIST-P curves. Fail if the length lies outside.
if (sigLength >= 100 && sigLength <= 104) {
mod = CurveDB.P_384.getOrder();
} else if (sigLength >= 68 && sigLength <= 72) {
mod = CurveDB.P_256.getOrder();
} else if (sigLength >= 135 && sigLength <= 139) {
mod = CurveDB.P_521.getOrder();
} else {
throw new RuntimeException("Unrecognized signature length: " + sigLength);
}
BigInteger s2 = s.negate().mod(mod);
DerOutputStream out = new DerOutputStream();
out.putInteger(r);
Expand Down
1 change: 1 addition & 0 deletions make/modules/java.sql.rowset/Java.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ DISABLED_WARNINGS_java += dangling-doc-comments

DOCLINT += -Xdoclint:all/protected \
'-Xdoclint/package:java.*,javax.*'
COPY += .xsd
CLEAN_FILES += $(wildcard \
$(TOPDIR)/src/java.sql.rowset/share/classes/com/sun/rowset/*.properties \
$(TOPDIR)/src/java.sql.rowset/share/classes/javax/sql/rowset/*.properties)
Expand Down
3 changes: 2 additions & 1 deletion make/modules/jdk.jpackage/Lib.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ $(eval $(call SetupJdkExecutable, BUILD_JPACKAGEAPPLAUNCHER, \
EXTRA_SRC := common, \
INCLUDE_FILES := $(JPACKAGEAPPLAUNCHER_INCLUDE_FILES), \
OPTIMIZATION := SIZE, \
DISABLED_WARNINGS_clang_ExecCommand.c := format-nonliteral, \
DISABLED_WARNINGS_clang_JvmLauncherLib.c := format-nonliteral, \
DISABLED_WARNINGS_clang_LinuxPackage.c := format-nonliteral, \
DISABLED_WARNINGS_clang_Log.cpp := unused-const-variable, \
CFLAGS_FILTER_OUT := -MD, \
CXXFLAGS_FILTER_OUT := -MD, \
Expand Down Expand Up @@ -93,6 +93,7 @@ ifeq ($(call isTargetOs, linux), true)
LINK_TYPE := C++, \
OPTIMIZATION := SIZE, \
DISABLED_WARNINGS_gcc_Log.cpp := unused-const-variable, \
DISABLED_WARNINGS_clang_ExecCommand.c := format-nonliteral, \
DISABLED_WARNINGS_clang_JvmLauncherLib.c := format-nonliteral, \
DISABLED_WARNINGS_clang_tstrings.cpp := format-nonliteral, \
LD_SET_ORIGIN := false, \
Expand Down
18 changes: 11 additions & 7 deletions src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2379,13 +2379,14 @@ void LIR_Assembler::store_parameter(jobject o, int offset_from_rsp_in_words) {
}

void LIR_Assembler::arraycopy_valuetype_check(Register obj, Register tmp, CodeStub* slow_path, bool is_dest, bool null_check) {
assert(Arguments::is_valhalla_enabled(), "Value types must be enabled");
if (null_check) {
__ cbz(obj, *slow_path->entry());
}
if (is_dest) {
__ test_null_free_array_oop(obj, tmp, *slow_path->entry());
__ test_flat_array_oop(obj, tmp, *slow_path->entry());
} else {
}
if (UseArrayFlattening) {
__ test_flat_array_oop(obj, tmp, *slow_path->entry());
}
}
Expand Down Expand Up @@ -2467,11 +2468,13 @@ void LIR_Assembler::emit_arraycopy(LIR_OpArrayCopy* op) {
}

// Handle value type arrays
if (flags & LIR_OpArrayCopy::src_valuetype_check) {
arraycopy_valuetype_check(src, tmp, stub, false, (flags & LIR_OpArrayCopy::src_null_check));
}
if (flags & LIR_OpArrayCopy::dst_valuetype_check) {
arraycopy_valuetype_check(dst, tmp, stub, true, (flags & LIR_OpArrayCopy::dst_null_check));
if (Arguments::is_valhalla_enabled()) {
if (flags & LIR_OpArrayCopy::src_valuetype_check) {
arraycopy_valuetype_check(src, tmp, stub, false, (flags & LIR_OpArrayCopy::src_null_check));
}
if (flags & LIR_OpArrayCopy::dst_valuetype_check) {
arraycopy_valuetype_check(dst, tmp, stub, true, (flags & LIR_OpArrayCopy::dst_null_check));
}
}

assert(default_type != nullptr && default_type->is_array_klass() && default_type->is_loaded(), "must be true at this point");
Expand Down Expand Up @@ -2989,6 +2992,7 @@ void LIR_Assembler::emit_profile_type(LIR_OpProfileType* op) {
}

void LIR_Assembler::emit_profile_value_type(LIR_OpProfileValueType* op) {
assert(Arguments::is_valhalla_enabled(), "Should not be called without value types enabled");
Register obj = op->obj()->as_register();
Register tmp = op->tmp()->as_pointer_register();
bool not_null = op->not_null();
Expand Down
3 changes: 0 additions & 3 deletions src/hotspot/cpu/aarch64/codeBuffer_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,6 @@ void CodeBuffer::share_trampoline_for(address dest, int caller_offset) {

bool created;
Offsets* offsets = _shared_trampoline_requests->put_if_absent(dest, &created);
if (created) {
_shared_trampoline_requests->maybe_grow();
}
offsets->push(caller_offset);
_finalize_stubs = true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -549,7 +549,7 @@ void ShenandoahBarrierSetAssembler::keepalive_barrier_c1_stub(LIR_Assembler* ce,
Register obj = stub->obj()->as_register();

if (stub->do_load()) {
ce->mem2reg(stub->addr(), stub->obj(), T_OBJECT, lir_patch_none, nullptr, /* wide = */ false);
ce->mem2reg(stub->addr(), stub->obj(), T_OBJECT, lir_patch_none, stub->info(), /* wide = */ false);
}
__ cbz(obj, *stub->continuation());
ce->store_parameter(obj, 0);
Expand Down
24 changes: 16 additions & 8 deletions src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
#include "prims/jvmtiThreadState.hpp"
#include "runtime/basicLock.hpp"
#include "runtime/frame.inline.hpp"
#include "runtime/globals.hpp"
#include "runtime/javaThread.hpp"
#include "runtime/safepointMechanism.hpp"
#include "runtime/sharedRuntime.hpp"
Expand Down Expand Up @@ -211,10 +212,12 @@ void InterpreterMacroAssembler::get_method_counters(Register method,
}

void InterpreterMacroAssembler::read_flat_field(Register entry, Register obj) {
assert(UseFieldFlattening, "Should be used only if field flattening is enabled");
call_VM(obj, CAST_FROM_FN_PTR(address, InterpreterRuntime::read_flat_field), obj, entry);
}

void InterpreterMacroAssembler::write_flat_field(Register entry, Register tmp1, Register tmp2, Register obj) {
assert(UseFieldFlattening, "Should be used only if field flattening is enabled");
assert_different_registers(entry, tmp1, tmp2, obj);
Label slow_path, done;

Expand Down Expand Up @@ -1202,19 +1205,23 @@ template <class ArrayData> void InterpreterMacroAssembler::profile_array_type(Re
mov(tmp, array);
profile_obj_type(tmp, Address(mdp, in_bytes(ArrayData::array_offset())));

Label not_flat;
test_non_flat_array_oop(array, tmp, not_flat);
if (Arguments::is_valhalla_enabled()) {
if (UseArrayFlattening) {
Label not_flat;
test_non_flat_array_oop(array, tmp, not_flat);

set_mdp_flag_at(mdp, ArrayData::flat_array_byte_constant());
set_mdp_flag_at(mdp, ArrayData::flat_array_byte_constant());

bind(not_flat);
bind(not_flat);
}

Label not_null_free;
test_non_null_free_array_oop(array, tmp, not_null_free);
Label not_null_free;
test_non_null_free_array_oop(array, tmp, not_null_free);

set_mdp_flag_at(mdp, ArrayData::null_free_array_byte_constant());
set_mdp_flag_at(mdp, ArrayData::null_free_array_byte_constant());

bind(not_null_free);
bind(not_null_free);
}

bind(profile_continue);
}
Expand Down Expand Up @@ -1278,6 +1285,7 @@ void InterpreterMacroAssembler::profile_acmp(Register mdp,
Register left,
Register right,
Register tmp) {
assert(Arguments::is_valhalla_enabled(), "Profiling acmp makes sense only for value types");
if (ProfileInterpreter) {
Label profile_continue;

Expand Down
22 changes: 21 additions & 1 deletion src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2404,6 +2404,7 @@ void MacroAssembler::null_check(Register reg, int offset) {
}

void MacroAssembler::test_markword_is_value_type(Register markword, Label& is_value_type) {
assert(Arguments::is_valhalla_enabled(), "should not be used without value types enabled");
assert_different_registers(markword, rscratch2);
mov(rscratch2, markWord::value_type_pattern_mask);
andr(markword, markword, rscratch2);
Expand All @@ -2413,6 +2414,7 @@ void MacroAssembler::test_markword_is_value_type(Register markword, Label& is_va
}

void MacroAssembler::test_oop_is_not_value_type(Register object, Register tmp, Label& not_value_type, bool can_be_null) {
assert(Arguments::is_valhalla_enabled(), "should not be used without value types enabled");
assert_different_registers(tmp, rscratch1);
if (can_be_null) {
cbz(object, not_value_type);
Expand All @@ -2426,16 +2428,19 @@ void MacroAssembler::test_oop_is_not_value_type(Register object, Register tmp, L
}

void MacroAssembler::test_field_is_null_free_value_type(Register flags, Register temp_reg, Label& is_null_free_value_type) {
assert(Arguments::is_valhalla_enabled(), "should not be used without value types enabled");
assert(temp_reg == noreg, "not needed"); // keep signature uniform with x86
tbnz(flags, ResolvedFieldEntry::is_null_free_value_type_shift, is_null_free_value_type);
}

void MacroAssembler::test_field_is_not_null_free_value_type(Register flags, Register temp_reg, Label& not_null_free_value_type) {
assert(Arguments::is_valhalla_enabled(), "should not be used without value types enabled");
assert(temp_reg == noreg, "not needed"); // keep signature uniform with x86
tbz(flags, ResolvedFieldEntry::is_null_free_value_type_shift, not_null_free_value_type);
}

void MacroAssembler::test_field_is_flat(Register flags, Register temp_reg, Label& is_flat) {
assert(UseFieldFlattening, "should not be used without field flattening enabled");
assert(temp_reg == noreg, "not needed"); // keep signature uniform with x86
tbnz(flags, ResolvedFieldEntry::is_flat_shift, is_flat);
}
Expand All @@ -2452,23 +2457,28 @@ void MacroAssembler::test_oop_prototype_bit(Register oop, Register temp_reg, int
}

void MacroAssembler::test_flat_array_oop(Register oop, Register temp_reg, Label& is_flat_array) {
assert(UseArrayFlattening, "should not be used without array flattening enabled");
test_oop_prototype_bit(oop, temp_reg, markWord::flat_array_bit_in_place, true, is_flat_array);
}

void MacroAssembler::test_non_flat_array_oop(Register oop, Register temp_reg,
Label&is_non_flat_array) {
assert(UseArrayFlattening, "should not be used without array flattening enabled");
test_oop_prototype_bit(oop, temp_reg, markWord::flat_array_bit_in_place, false, is_non_flat_array);
}

void MacroAssembler::test_null_free_array_oop(Register oop, Register temp_reg, Label& is_null_free_array) {
assert(Arguments::is_valhalla_enabled(), "should not be used without value types enabled");
test_oop_prototype_bit(oop, temp_reg, markWord::null_free_array_bit_in_place, true, is_null_free_array);
}

void MacroAssembler::test_non_null_free_array_oop(Register oop, Register temp_reg, Label&is_non_null_free_array) {
assert(Arguments::is_valhalla_enabled(), "should not be used without value types enabled");
test_oop_prototype_bit(oop, temp_reg, markWord::null_free_array_bit_in_place, false, is_non_null_free_array);
}

void MacroAssembler::test_flat_array_layout(Register lh, Label& is_flat_array) {
assert(UseArrayFlattening, "should not be used without array flattening enabled");
tst(lh, Klass::_lh_array_tag_flat_value_bit_inplace);
br(Assembler::NE, is_flat_array);
}
Expand Down Expand Up @@ -5695,11 +5705,13 @@ void MacroAssembler::access_store_at(BasicType type, DecoratorSet decorators,
}

void MacroAssembler::payload_offset(Register value_klass, Register offset) {
assert(Arguments::is_valhalla_enabled(), "Must be");
ldr(offset, Address(value_klass, ValueKlass::adr_members_offset()));
ldrw(offset, Address(offset, ValueKlass::payload_offset_offset()));
}

void MacroAssembler::payload_address(Register oop, Register data, Register value_klass) {
assert(Arguments::is_valhalla_enabled(), "Must be");
// ((address) (void*) o) + vk->payload_offset();
Register offset = (data == oop) ? rscratch1 : data;
payload_offset(value_klass, offset);
Expand Down Expand Up @@ -5887,7 +5899,11 @@ void MacroAssembler::adrp(Register reg1, const Address &dest, uint64_t &byte_off
code_section()->relocate(inst_mark(), dest.rspec());
// 8143067: Ensure that the adrp can reach the dest from anywhere within
// the code cache so that if it is relocated we know it will still reach
if (offset_high >= -(1<<20) && offset_low < (1<<20)) {
// For AOT code force far distance for external_word relocation.
const bool force_far = AOTCodeCache::is_on_for_dump() &&
(dest.rspec().type() == relocInfo::external_word_type) &&
!CodeCache::contains(dest.target());
if (!force_far && offset_high >= -(1<<20) && offset_low < (1<<20)) {
_adrp(reg1, dest.target());
} else {
uint64_t target = (uint64_t)dest.target();
Expand Down Expand Up @@ -7152,6 +7168,7 @@ int MacroAssembler::store_value_type_fields_to_buf(ciValueKlass* vk, bool from_i

// Move a value between registers/stack slots and update the reg_state
bool MacroAssembler::move_helper(VMReg from, VMReg to, BasicType bt, RegState reg_state[]) {
assert(ValueTypePassFieldsAsArgs, "Must be");
assert(from->is_valid() && to->is_valid(), "source and destination must be valid");
if (reg_state[to->value()] == reg_written) {
return true; // Already written
Expand Down Expand Up @@ -7214,6 +7231,7 @@ bool MacroAssembler::move_helper(VMReg from, VMReg to, BasicType bt, RegState re
// Calculate the extra stack space required for packing or unpacking value
// args and adjust the stack pointer
int MacroAssembler::extend_stack_for_value_args(int args_on_stack) {
assert(ValueTypePassFieldsAsArgs, "Must be");
int sp_inc = args_on_stack * VMRegImpl::stack_slot_size;
sp_inc = align_up(sp_inc, StackAlignmentInBytes);
assert(sp_inc > 0, "sanity");
Expand Down Expand Up @@ -7245,6 +7263,7 @@ int MacroAssembler::extend_stack_for_value_args(int args_on_stack) {
bool MacroAssembler::unpack_value_helper(const GrowableArray<SigEntry>* sig, int& sig_index,
VMReg from, int& from_index, VMRegPair* to, int to_count, int& to_index,
RegState reg_state[]) {
assert(ValueTypePassFieldsAsArgs, "Must be");
assert(sig->at(sig_index)._bt == T_VOID, "should be at end delimiter");
assert(from->is_valid(), "source must be valid");
bool progress = false;
Expand Down Expand Up @@ -7391,6 +7410,7 @@ bool MacroAssembler::unpack_value_helper(const GrowableArray<SigEntry>* sig, int
bool MacroAssembler::pack_value_helper(const GrowableArray<SigEntry>* sig, int& sig_index, int vtarg_index,
VMRegPair* from, int from_count, int& from_index, VMReg to,
RegState reg_state[], Register val_array) {
assert(ValueTypePassFieldsAsArgs, "Must be");
assert(sig->at(sig_index)._bt == T_METADATA, "should be at delimiter");
assert(to->is_valid(), "destination must be valid");

Expand Down
5 changes: 0 additions & 5 deletions src/hotspot/cpu/aarch64/matcher_aarch64.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,6 @@
return true;
}

// Does target support predicated operation emulation.
static bool supports_vector_predicate_op_emulation(int vopc, int vlen, BasicType bt) {
return false;
}

// Does the CPU supports vector variable rotate instructions?
static constexpr bool supports_vector_variable_rotates(void) {
return false;
Expand Down
4 changes: 3 additions & 1 deletion src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2621,10 +2621,12 @@ class StubGenerator: public StubCodeGenerator {
__ eor(rscratch2, rscratch2, scratch_src_klass);
__ cbnz(rscratch2, L_failed);

if (Arguments::is_valhalla_enabled()) {
if (UseArrayFlattening) {
// Check for flat value type array -> return -1
__ test_flat_array_oop(src, rscratch2, L_failed);
}

if (Arguments::is_valhalla_enabled()) {
// Check for null-free (non-flat) value type array -> handle as object array
__ test_null_free_array_oop(src, rscratch2, L_objArray);
}
Expand Down
Loading
Loading