Compare commits

..

856 Commits

Author SHA1 Message Date
Vitaly Provodin
17556b0ea3 update exclude list on results of 21_b243.1 test runs 2023-09-29 15:47:08 +04:00
Vitaly Provodin
7dda83bf0b JBR-6130 add VK_TAB release action 2023-09-29 15:47:08 +04:00
Maxim Kartashev
ca1889e682 JBR-6138 Wayland: utilize gtk_shell1 protocol to mark dialogs as modal 2023-09-29 09:38:21 +04:00
Maxim Kartashev
258cf006bc JBR-6117 Wayland: JVM shutdown hang 2023-09-28 09:01:26 +04:00
Nikita Provotorov
a240282285 JBR-5984: IM's candidate window is placed under popup windows.
- Implements the optional method [NSTextInputClient windowLevel] to tell the macOS IM subsystem correct level of the window;
- Adds a regression test ImWindowIsPlacedUnderPopup5984.java.

(cherry picked from commit 5a91aae9c2)
2023-09-26 22:01:45 +02:00
Dmitrii Morskii
edfe753192 JBR-6044 handle absence of fontConfig library in setupRenderingFontHints 2023-09-25 12:51:03 +02:00
Dmitrii Morskii
7d8ca546f4 JBR-6041 started using correct type inside FcPatternGetValueFuncType 2023-09-25 12:50:59 +02:00
ghostflyby
b9d1c0e801 JBR-6124 Fix macOS services writing text back to textfield 2023-09-25 11:37:53 +02:00
Dmitry Batrak
d47223ddd9 JBR-5961 Wayland: can't switch between projects using menu
prevent using a pointer to destroyed surface
2023-09-25 09:33:15 +03:00
Vitaly Provodin
862b0d9195 update exclude list on results of 21_b240.22 test runs 2023-09-22 17:31:35 +07:00
Nikita Gubarkov
0457603fb6 JBR-6098 x64 docker images with glslc. 2023-09-21 10:21:40 +02:00
Sergey Shelomentsev
12c88c770d exclude FocusTraversalOrderTest 2023-09-20 21:34:29 +03:00
Sergey Shelomentsev
ac57aef98b JBR-6060 add focus traversal order test 2023-09-20 21:21:41 +03:00
Vitaly Provodin
40da69a5fb JBR-6070 update docker images for Alpine Linux 2023-09-16 08:35:57 +07:00
Vitaly Provodin
e4596e18e9 update exclude list on results of 21_b231.1 commit test runs 2023-09-16 08:35:57 +07:00
Dmitry Batrak
a24ed041aa JBR-5961 Wayland: can't switch between projects using menu
fix typo
2023-09-15 14:45:03 +03:00
Dmitry Batrak
d0bf4506c0 JBR-5961 Wayland: can't switch between projects using menu
support Window.toFront in Wayland toolkit
2023-09-15 12:44:26 +03:00
Maxim Kartashev
836f44fded JBR-6071 Alpine Linux compilation: error: implicit declaration of function 'pthread_getname_np' 2023-09-15 12:52:05 +04:00
Vitaly Provodin
f0bbcfc492 update exclude list on results of 21.231.1 test runs 2023-09-15 04:13:18 +07:00
Maxim Kartashev
e829d44cb9 JBR-5989 Wayland: jdk_awt_wayland test group 2023-09-13 08:26:46 +04:00
Maxim Kartashev
df095ab6db JBR-6025 Wayland: miscellaneous small improvements 2023-09-13 08:26:32 +04:00
Nikita Gubarkov
c301e17244 JBR-6016 doPrivileged for JBR API internal services.
(cherry picked from commit 19917e72086f091ef845959a29e7814ff6d88aa7)
2023-09-11 15:07:25 +02:00
Alexey Ushakov
f66a111d13 JBR-6045 WLToolkit(Vulkan): Add options to select physical device
Changed access to _name field, minor corrections in verbose print
2023-09-08 12:28:07 +02:00
Vitaly Provodin
6db1b3ec3c update exclude list on results of 21_b218.1 test runs 2023-09-08 17:06:59 +07:00
Alexey Ushakov
a19d03327a JBR-6045 WLToolkit(Vulkan): Add options to select physical device
Implemented -Dsun.java2d.vulkan=True and -Dsun.java2d.vulkan.deviceNumber=n VM options
2023-09-07 21:47:40 +02:00
Dmitrii Morskii
6d63ee0477 JBR-5502: optimize stringWidth & charsWidth methods of FontDesignMetrics 2023-09-07 17:23:55 +02:00
Dmitrii Morskii
60928807c8 JBR-6018 removed incorrect test testFeaturesZeroFrac 2023-09-07 14:51:20 +02:00
Maxim Kartashev
da11c5e526 JBR-6036 Wayland: Cannot invoke "java.awt.Component.getWidth()" because "popupParent" is null
Not all POPUP Window's have their parent set. And only those who do
shall be treated as popups in the Wayland's sense.
2023-09-06 19:23:07 +04:00
Nikita Tsarev
c56af99364 JBR-6028: Check before attempting to switch to a layout that might not exist in KeyCodesTest 2023-09-06 17:01:24 +02:00
Nikita Gubarkov
492fddd948 JBR-5973 Implement rendering of no-AA shapes with Vulkan pipeline
Get rid of maxTextureSize in Vulkan code. This concept was introduced to fix macOS-specific bugs and don't map well to Vulkan implementation, as this value is tied to specific device and texture format, so get rid of it for now and see whether we need it at all.

Refactored native surface data hierarchy. There was a C-style "inheritance" model with VKSDOps having an SurfaceDataOps as its first member and conversions back and forth between them. And then also privOps - pointer to the platform-specific part (WLVK). This was refactored into plain inheritance: SurfaceDataOps -> VKSurfaceData -> VKSwapchainSurfaceData -> WLVKSurfaceData

State management, synchronization & layout transition. Now using dynamic rendering and synchronization2 extensions.
Each device has a single timeline semaphore (basically 64-bit counter), monotonically increasing as device executes our commands, allowing us to track the state of the submitted batches and reuse resources which are no longer in use.

Split command recording into primary and secondary command buffers.
This allows us to record commands "in the past", before current render pass started, which gives possibility for some heavy optimizations:
1. When we suddenly need some texture in the middle of the render pass - no need to stop render pass in order to insert necessary synchronization - we can do it as if we knew it beforehand.
2. When we draw something and then clear the surface - just erase all commands inside current render pass we recorded earlier, so the actual drawing will never happen.

Shaders are compiled with glslc or glslangValidator and bytecode is inlined directly into libawt_wlawt

Memory management via VMA, vertex buffer pool, shader push constants.

Other refactoring.
2023-09-06 15:26:12 +02:00
Alexey Ushakov
f5a72877ba JBR-6032 WLToolkit: Uninitialized WLComponentPeer sends paint requests
Protected surfaceAssigned from MT access
2023-09-06 12:47:38 +02:00
Alexey Ushakov
081bc495a1 JBR-6032 WLToolkit: Uninitialized WLComponentPeer sends paint requests
Skip sending paint events for not configured peers
2023-09-05 21:51:27 +02:00
Maxim Kartashev
56ce6657e8 JBR-5968 Wayland: support PERPIXEL_TRANSLUCENT 2023-09-05 12:11:27 +04:00
Vitaly Provodin
c7eaed89c2 JBR-6008 Update JetBrains Mono fonts to v2.304 2023-09-05 06:03:50 +07:00
Maxim Kartashev
07b83bad84 JBR-6002 Linux: maximized window goes fullscreen after being moved between monitors 2023-09-01 10:00:31 +04:00
Maxim Kartashev
703e87cc3a JBR-5971 JBR API hash update
Updated the JBR API hash because of changes in comments
in the WindowMove API.
2023-08-30 11:52:39 +04:00
Dmitrii Morskii
dabd52c312 JBR-5844: fix case with non-scalable face 2023-08-29 14:36:46 +02:00
Dmitrii Morskii
574c6d97e9 JBR-5804: refactoring of freetypeScaler and moving fontconfig's logic in separate file 2023-08-29 14:36:02 +02:00
Maxim Kartashev
8ff96bc79f JBR-5971 Wayland: support WindowMove JBR API 2023-08-29 10:48:18 +04:00
Vitaly Provodin
f600c73328 update exclude list on results of 21_b205.2 test runs 2023-08-25 17:33:22 +07:00
Nikita Tsarev
94d6344b43 JBR-5963: Fix RobotKeyboard test and implement getLockingKeyState 2023-08-24 20:06:00 +02:00
Maxim Kartashev
3834f6c24e JBR-5962 Wayland: fix the main event loop to allow for secondary queues
Return READ_RESULT_FINISHED_NO_EVENTS from WLToolkit.readEvents() in
case of poll returning with no new data (i.e. via timeout).
2023-08-23 15:32:12 +04:00
Sergei Tachenov
a4e4430a5a JBR-5824 Ensure popup menus are on the correct screen
This is a very old bug, JDK-6415065.

What happens here is that when the position
of a popup menu is calculated, it can expand
above or below, depending on the position
of the parent menu, the item being expanded
and the size of the submenu and screen resolution.

If the menu decides to expand above,
the position calculation in JMenu.getPopupMenuOrigin
may yield a coordinate above the current screen.
Later, JPopupMenu.adjustPopupLocationToFitScreen
tries to fit the entire menu into the screen.
However, it has no idea which screen is correct,
as all it has is an (x, y) location. If that
location is invalid, it may correct it by
fitting it into the screen. However, if it is
valid, but located on an incorrect screen,
then the whole logic goes awry and the menu
is fitted into the wrong screen.

Fix by pre-adjusting the Y location to fit
into the correct screen in JMenu.getPopupMenuOrigin,
where the correct screen is still known.
The resulting location may still not be final,
as the menu's height needs to be taken into
account as well, but that's exactly what
JPopupMenu.adjustPopupLocationToFitScreen does.
Since the coordinate is on the correct screen now,
it fits the menu into the same screen, which
guarantees it'll be the correct one.
2023-08-22 12:19:23 +04:00
Dmitry Batrak
f85dae83df JBR-5953 If hieroglyph typing isn't finalised, focusing another component inserts the composed text there
(cherry picked from commit ff8fa489f8e1e16cb055cc56f1b441018c2f495c)
2023-08-21 13:39:53 +03:00
Vitaly Provodin
6b64fe9b77 update exclude list on results of 21_b202.1 test runs 2023-08-18 05:07:02 +07:00
Nikita Tsarev
85fb38c9a9 Regenerate wakefield-client-protocol using an older wayland-scanner to temporarily fix build problems 2023-08-17 15:56:48 +02:00
Dmitry Batrak
bcd4b38663 JBR-5946 Allow to disable painting of composed text in Swing text components using TextLayout.draw
(cherry picked from commit 81d531fb9f7496498fcab1f0e76554885941f16c)
2023-08-16 15:27:02 +03:00
Nikita Tsarev
77bccaf640 JBR-5676: Support emulating input events in Wakefield 2023-08-15 12:37:27 +02:00
Vitaly Provodin
27bb9662b2 update exclude list on results of 21_b199.2 test runs 2023-08-12 06:58:24 +07:00
Daniel D. Daugherty
cd18df6c66 8314062: ProblemList jdk/jfr/tool/TestView.java on macosx-x64
Reviewed-by: naoto
2023-08-12 06:47:32 +07:00
Stefan Karlsson
0795b7e7e1 8311179: Generational ZGC: gc/z/TestSmallHeap.java failed with OutOfMemoryError
Reviewed-by: aboldtch, tschatzl
Backport-of: 28fd7a1739
2023-08-12 06:47:32 +07:00
Jim Laskey
04e3cc31e8 8313809: String template fails with java.lang.StringIndexOutOfBoundsException if last fragment is UTF16
Reviewed-by: redestad
Backport-of: 6864441163
2023-08-12 06:47:32 +07:00
Jim Laskey
82f1a2ce4a 8312814: Compiler crash when template processor type is a captured wildcard
Reviewed-by: jjg, vromero
Backport-of: f14245b388
2023-08-12 06:47:31 +07:00
Tobias Hartmann
64c0d8c181 8313345: SuperWord fails due to CMove without matching Bool pack
Reviewed-by: chagedorn
Backport-of: d3b578f1c9
2023-08-12 06:47:31 +07:00
Jesper Wilhelmsson
33e83936c6 8312985: Remove EA from the JDK 21 version string with first RC promotion on August 10, 2023
Reviewed-by: mikael
2023-08-12 06:47:31 +07:00
Stefan Karlsson
c702e89c52 8313593: Generational ZGC: NMT assert when the heap fails to expand
Reviewed-by: eosterlund
Backport-of: 19e2c8c321
2023-08-12 06:47:31 +07:00
Nikita Tsarev
7159ccf83c JBR-5900: Fix deadlock when enabling the Wakefield extension 2023-08-10 12:47:58 +02:00
Nikita Tsarev
7971b98a99 JBR-5896: Fix WLToolkit being instantiated twice 2023-08-10 12:46:09 +02:00
Dmitrii Morskii
8907bf5479 JBR-5724: fixed serialization and backward compatibility of Font 2023-08-08 13:28:41 +02:00
Dmitry Batrak
c7cd32a03d JBR-5823 IDEA crashes when '-Dmain.thread.as.edt=true' vmoption is set and VoiceOver is enabled
done as part of JBR-4993 Support using 'main' thread as EDT on macOS

(cherry picked from commit 55598693c3)
(cherry picked from commit 2d8d56b5d61bd219b084fc50faea738f625be922)
2023-08-04 10:52:54 +03:00
Justin Lu
6b7bbe79cb 8312572: JDK 21 RDP2 L10n resource files update
Reviewed-by: naoto, iris
Backport-of: 9b55e9a706
2023-08-04 10:27:06 +07:00
Matthias Baesken
43b4cd00e2 8312574: jdk/jdk/jfr/jvm/TestChunkIntegrity.java fails with timeout
Reviewed-by: clanger
Backport-of: 34173ff0d1
2023-08-04 10:27:06 +07:00
Christoph Langer
2506bc3cca 8309088: security/infra/java/security/cert/CertPathValidator/certification/AmazonCA.java fails
Reviewed-by: mbaesken
Backport-of: 4c2e54fb05
2023-08-04 10:27:05 +07:00
Christoph Langer
12378c2123 8311822: AIX : test/jdk/java/foreign/TestLayouts.java fails because of different output - expected [[i4](struct)] but found [[I4](struct)]
Reviewed-by: mbaesken
Backport-of: d1cc278260
2023-08-04 10:27:05 +07:00
Christoph Langer
eb483848b6 8303549: [AIX] TestNativeStack.java is failing with exit value 1
Reviewed-by: mbaesken
Backport-of: 5ff42d1429
2023-08-04 10:27:05 +07:00
Jorn Vernee
7219fde797 8313023: Return value corrupted when using CCS + isTrivial (mainline)
Reviewed-by: thartmann, mcimadamore
Backport-of: 6fca289887
2023-08-04 10:27:04 +07:00
Christoph Langer
ea2647d428 8313256: Exclude failing multicast tests on AIX
Reviewed-by: mbaesken
Backport-of: 98a915a54c
2023-08-04 10:27:04 +07:00
Christoph Langer
46f0a568e1 8313404: Fix section label in test/jdk/ProblemList.txt
Reviewed-by: mbaesken
Backport-of: 94b50b714a
2023-08-04 10:27:04 +07:00
Justin Lu
b19d723ace 8039165: [Doc] MessageFormat null locale generates NullPointerException
Reviewed-by: naoto, iris
Backport-of: c6396dceb9
2023-08-04 10:27:04 +07:00
Roger Riggs
46270d5867 8310033: Clarify return value of Java Time compareTo methods
Reviewed-by: naoto
Backport-of: 8650026ff1
2023-08-04 10:27:04 +07:00
Christoph Langer
4e12f81c86 8313316: Disable runtime/ErrorHandling/MachCodeFramesInErrorFile.java on ppc64le
Reviewed-by: mbaesken
Backport-of: 807ca2d3a1
2023-08-04 10:27:03 +07:00
David Holmes
fba7b16b07 8300937: Update nroff pages in JDK 21 before RC
Reviewed-by: mchung, iris, egahlin
2023-08-04 10:27:03 +07:00
Dmitrii Morskii
81e97c5f8a JBR-5259: fixed Canvas mispositioning after dragging JFrame to a monitor with different scale 2023-07-31 16:18:04 +02:00
Sergey Bylokhov
e71048d298 8313260: JDK21: ProblemList java/lang/ScopedValue/StressStackOverflow.java on linux-x86
Reviewed-by: clanger
2023-07-31 12:16:48 +07:00
Tobias Hartmann
11ca5e8d6d 8313241: Temporarily disable "malformed control flow" assert to reduce noise
Reviewed-by: chagedorn, kvn, dcubed
2023-07-31 12:16:48 +07:00
Christoph Langer
52fd37a490 8313250: Exclude java/foreign/TestByteBuffer.java on AIX
Reviewed-by: rriggs
Backport-of: c05ba48b60
2023-07-31 12:16:48 +07:00
Markus Grönlund
84e548697f 8312293: SIGSEGV in jfr.internal.event.EventWriter.putUncheckedByte after JDK-8312086
Reviewed-by: egahlin
Backport-of: 59f66a3b83
2023-07-31 12:16:47 +07:00
Daniel D. Daugherty
f058b31cf8 8313208: ProblemList java/util/concurrent/tck/JSR166TestCase.java on select platforms
Reviewed-by: darcy
2023-07-31 12:16:47 +07:00
Daniel D. Daugherty
302f9d6e63 8313193: ProblemList java/util/concurrent/SynchronousQueue/Fairness.java on X64
Reviewed-by: rriggs
2023-07-31 12:16:47 +07:00
Serguei Spitsyn
c72add02ac 8300051: assert(JvmtiEnvBase::environments_might_exist()) failed: to enter event controller, JVM TI environments must exist
Reviewed-by: cjplummer
Backport-of: 783de32b6a
2023-07-31 12:16:47 +07:00
Daniel Jeliński
6517cc564e 8307185: pkcs11 native libraries make JNI calls into java code while holding GC lock
Reviewed-by: alanb
Backport-of: 354c6605e3
2023-07-31 12:16:46 +07:00
Vitaly Provodin
fd1cc0b6a5 update exclude list on results of 21_b195.1 test runs 2023-07-31 12:14:36 +07:00
Valerie Peng
4d790c2be4 8311902: Concurrency regression in the PBKDF2 key impl of SunJCE provider
Reviewed-by: mullan, ascarpino, xuelei
Backport-of: 28c4d196cf
2023-07-22 05:17:34 +07:00
Chris Plummer
23234a83b6 8310551: vmTestbase/nsk/jdb/interrupt/interrupt001/interrupt001.java timed out due to missing prompt
Reviewed-by: sspitsyn
Backport-of: c84866ac0d
2023-07-22 05:17:34 +07:00
Jan Lahoda
b1fac6f358 8311815: Incorrect exhaustivity computation
Reviewed-by: vromero
Backport-of: a4412166ec
2023-07-22 05:17:34 +07:00
Aggelos Biboudis
1d9dde2a3c 8312163: Crash in dominance check when compiling unnamed patterns
Reviewed-by: jlahoda
Backport-of: 1fc726a8b3
2023-07-22 05:17:33 +07:00
Christian Hagedorn
1ccadbd336 8308682: Enhance AES performance
Reviewed-by: rhalade, dlong, kvn
2023-07-22 05:17:33 +07:00
Jan Lahoda
87aa435e4d 8303376: Better launching of JDI
Reviewed-by: mschoene, rhalade, vromero
2023-07-22 05:17:33 +07:00
Calvin Cheung
3351ece9ac 8296565: Enhanced archival support
Reviewed-by: rhalade, iklam
2023-07-22 05:17:33 +07:00
Brian Burkhalter
076cfd1f77 8305312: Enhanced path handling
Reviewed-by: rhalade, alanb
2023-07-22 05:17:32 +07:00
Ioi Lam
40206536c7 8294323: Improve Shared Class Data
Co-authored-by: Calvin Cheung <ccheung@openjdk.org>
Reviewed-by: coleenp, rhalade
2023-07-22 05:17:32 +07:00
Hai-May Chao
0c743f785d 8300596: Enhance Jar Signature validation
Reviewed-by: mullan, rhalade, mschoene, weijun
2023-07-22 05:17:32 +07:00
Lance Andersen
bc11ed4114 8302483: Enhance ZIP performance
Reviewed-by: ahgross, alanb, rhalade, coffeys
2023-07-22 05:17:32 +07:00
Michael McMahon
c620b0ce4a 8302475: Enhance HTTP client file downloading
Reviewed-by: dfuchs, rhalade
2023-07-22 05:17:31 +07:00
Tobias Hartmann
864686aa78 8304460: Improve array usages
Reviewed-by: iveresov, rhalade, chagedorn
2023-07-22 05:17:31 +07:00
Tobias Hartmann
16bf733fc8 8304468: Better array usages
Reviewed-by: iveresov, rhalade, chagedorn
2023-07-22 05:17:31 +07:00
Jamil Nimeh
96854ead11 8300285: Enhance TLS data handling
Reviewed-by: ahgross, ascarpino, rhalade
2023-07-22 05:17:31 +07:00
Serguei Spitsyn
7ab527590a 8312189: ProblemList serviceability/jvmti/vthread/VThreadTLSTest/VThreadTLSTest.java#id1
Reviewed-by: amenkov
Backport-of: 3236ba0be4
2023-07-22 05:17:30 +07:00
Serguei Spitsyn
861b95bf9d 8311556: GetThreadLocalStorage not working for vthreads mounted during JVMTI attach
Reviewed-by: amenkov
Backport-of: 11a5115caf
2023-07-22 05:17:30 +07:00
Markus Grönlund
8023b5101c 8311040: JFR: RecordedThread::getOSThreadId() should return -1 if thread is virtual
Reviewed-by: egahlin
Backport-of: 9905f75822
2023-07-22 05:17:30 +07:00
Jan Lahoda
7f40dd0b44 8311038: Incorrect exhaustivity computation
Reviewed-by: vromero
Backport-of: bbb7ce5137
2023-07-22 05:17:30 +07:00
Mandy Chung
d551c2c7ee 8310814: Clarify the targetName parameter of Lookup::findClass
Reviewed-by: darcy
Backport-of: b4dce0d624
2023-07-22 05:17:29 +07:00
Joakim Nordström
0c4c702c27 8307526: [JFR] Better handling of tampered JFR repository
Reviewed-by: mgronlun
Backport-of: 66d2736521
2023-07-22 05:17:29 +07:00
Jan Lahoda
8182a51a93 8311825: Duplicate qualified enum constants not detected
Reviewed-by: vromero
Backport-of: d1fa1a8686
2023-07-22 05:17:29 +07:00
Jan Lahoda
f825086114 8312093: Incorrect javadoc comment text
Reviewed-by: jlaskey, iris
Backport-of: 1c9691b1f7
2023-07-22 05:17:29 +07:00
Jim Laskey
c9bd5f53fb 8312098: Update man page for javadoc
Reviewed-by: darcy
2023-07-22 05:17:28 +07:00
Aleksey Shipilev
8c6bdeee6d 8311647: Memory leak in Java_jdk_internal_org_jline_terminal_impl_jna_linux_CLibraryImpl_ttyname_1r
Reviewed-by: rriggs
Backport-of: 43099a85b1
2023-07-22 05:17:28 +07:00
Markus Grönlund
139beb92aa 8303134: JFR: Missing stack trace during chunk rotation stress
Reviewed-by: egahlin
Backport-of: 7539cc092d
2023-07-22 05:17:28 +07:00
Vitaly Provodin
dfcb233c88 update exclude list on results of 21_b190.1 test runs 2023-07-22 05:16:24 +07:00
Maxim Kartashev
fc7e7f0725 JBR-5861 Wayland: minimum necessary stubs to run IDEA 2023-07-21 17:15:58 +04:00
Markus Grönlund
706e410826 8244289: fatal error: Possible safepoint reached by thread that does not allow it
Reviewed-by: egahlin
Backport-of: 61932f49a5
2023-07-14 19:40:06 +07:00
Alan Bateman
728fde56c3 8311867: StructuredTaskScope.shutdown does not interrupt newly started threads
Reviewed-by: jpai
Backport-of: 92a04e201e
2023-07-14 19:40:06 +07:00
Justin Lu
6519ab02b2 6960866: [Fmt-Ch] ChoiceFormat claims impossible and unimplemented functionality
Reviewed-by: naoto, lancea, iris
Backport-of: 6cb9ec32a6
2023-07-14 19:40:05 +07:00
Stuart Marks
7ccfa3ca9c 8306785: fix deficient spliterators for Sequenced Collections
Reviewed-by: rriggs
Backport-of: 743e8b8e0a
2023-07-14 19:40:05 +07:00
Erik Gahlin
bd472d7169 8294401: Update jfr man page to include recently added features
Reviewed-by: mgronlun
Backport-of: f60c1f9bc4
2023-07-14 19:40:05 +07:00
Markus Grönlund
1a7156370e 8311536: JFR TestNativeMemoryUsageEvents fails in huge pages configuration
Reviewed-by: egahlin
Backport-of: 6895debf66
2023-07-14 19:40:04 +07:00
Aleksey Shipilev
15e83af59e 8311645: Memory leak in jspawnhelper spawnChild after JDK-8307990
Reviewed-by: alanb
Backport-of: 401c3dea5d
2023-07-14 19:40:04 +07:00
Vladimir Petko
d2a9b2c5b9 8311092: Please disable runtime/jni/nativeStack/TestNativeStack.java on armhf
Reviewed-by: dholmes
Backport-of: 0916e6a603
2023-07-14 19:40:04 +07:00
Tobias Hartmann
4e5e35a1e3 8303279: C2: crash in SubTypeCheckNode::sub() at IGVN split if
Reviewed-by: chagedorn
Backport-of: caadad4fdc
2023-07-14 19:40:03 +07:00
Robbin Ehn
2b30ddf722 8310656: RISC-V: __builtin___clear_cache can fail silently.
Reviewed-by: luhenry, fyang
Backport-of: faf1b822d0
2023-07-14 19:40:03 +07:00
Stuart Marks
c8230b05b7 8308694: Clarify reversed() default methods' implementation requirements
Reviewed-by: naoto, bpb
Backport-of: f82c8184b2
2023-07-14 19:40:03 +07:00
Rajan Halade
93aa8f21cf 8156889: ListKeychainStore.sh fails in some virtualized environments
Reviewed-by: mullan
Backport-of: 119cc495fc
2023-07-14 19:40:03 +07:00
Rajan Halade
77262d47c4 8295894: Remove SECOM certificate that is expiring in September 2023
Reviewed-by: mullan
Backport-of: fd7fddb6ed
2023-07-14 19:40:02 +07:00
Patricio Chilano Mateo
4cb3d4858b 8309637: runtime/handshake/HandshakeTimeoutTest.java fails with "has not cleared handshake op" and SIGILL
Reviewed-by: coleenp
Backport-of: 57e7e82fa1
2023-07-14 19:40:02 +07:00
Alan Bateman
31ee3ceb12 8310892: ScopedValue throwing StructureViolationException should be clearer
Reviewed-by: darcy, iris, lancea
Backport-of: 623cfcd04b
2023-07-14 19:40:02 +07:00
Maurizio Cimadamore
0ecca996a0 8311593: Minor doc issue in MemorySegment::copy
Reviewed-by: jvernee
Backport-of: 6569b252b9
2023-07-14 19:40:02 +07:00
Alexey Ivanov
c1172de798 8311689: Wrong visible amount in Adjustable of ScrollPane
Reviewed-by: honkar, azvegint, prr
Backport-of: b3f34039fe
2023-07-14 19:40:01 +07:00
Patricio Chilano Mateo
bc8b3fb572 8302351: "assert(!JavaThread::current()->is_interp_only_mode() || !nm->method()->is_continuation_enter_intrinsic() || ContinuationEntry::is_interpreted_call(return_pc)) failed: interp_only_mode but not in enterSpecial interpreted entry" in fixup_callers_callsite
Reviewed-by: coleenp
Backport-of: 0c86c31bcc
2023-07-14 19:40:01 +07:00
Erik Gahlin
6be2cd7480 8311245: JFR: Remove t.printStackTrace() in PeriodicEvents
Reviewed-by: mgronlun
Backport-of: a1cfc96954
2023-07-14 19:40:01 +07:00
Hao Sun
9ff86192c4 8311548: AArch64: [ZGC] Many tests fail with "assert(allocates2(pc)) failed: not in CodeBuffer memory" on some CPUs
Reviewed-by: tschatzl
Backport-of: 4b1403d06b
2023-07-14 19:40:01 +07:00
Erik Joelsson
8081944830 8308585: AC_REQUIRE: `PLATFORM_EXTRACT_TARGET_AND_BUILD' was expanded before it was required
Reviewed-by: mikael
Backport-of: 554b4d7243
2023-07-14 19:40:00 +07:00
Zhengyu Gu
5dad107712 8309761: Leak class loader constraints
Reviewed-by: coleenp
Backport-of: 8e4e6b056c
2023-07-14 19:40:00 +07:00
Naoto Sato
31d1ffbf21 8311183: Remove unused mapping test files
Reviewed-by: lancea
Backport-of: d072c40ff1
2023-07-14 19:40:00 +07:00
Thomas Stuefe
8de2ce735a 8310265: (process) jspawnhelper should not use argv[0]
Reviewed-by: rriggs
Backport-of: 47d00a4cbe
2023-07-14 19:39:59 +07:00
Maxim Kartashev
8d90bd6d5d JBR-5815 javax/swing/AbstractButton/6711682/bug6711682.java: Row #2 checkbox is not selected
Fixed the test to use proper cell coordinates when clicking.
2023-07-13 11:54:22 +04:00
bourgesl
71e1ff1b1a fixup! JBR-5625: use sun.java2d.metal.colorMatching=true by default (current metal behaviour) 2023-07-12 21:10:29 +02:00
Vitaly Provodin
c024fc4ad9 update exclude list on results of 21_b185.5 test runs 2023-07-11 16:14:08 +07:00
Alexey Ushakov
7c0beaa530 JBR-5831 Compile failure after applying JDK-8309140 (ResourceHashtable failed ...)
Fixed compile issue
2023-07-10 20:12:22 +02:00
Alexey Ushakov
c423b9bc2e JBR-5645 Provide basic classes for Vulkan rendering pipeline
Fix compilation failure on macos
2023-07-10 14:10:05 +02:00
Tobias Hartmann
eb957de688 8295210: IR framework should not whitelist -XX:-UseTLAB
Reviewed-by: epeter
Backport-of: 31dcda5d67
2023-07-07 19:40:57 +07:00
Coleen Phillimore
1063d09924 8309140: ResourceHashtable failed "assert(~(_allocation_t[0] | allocation_mask) == (uintptr_t)this) failed: lost resource object"
Reviewed-by: iklam
Backport-of: b6c789faad
2023-07-07 19:40:49 +07:00
Tobias Hartmann
039c82b4f6 8310425: [JVMCI] compiler/runtime/TestConstantDynamic: lookupConstant returned an object of incorrect type: null
Reviewed-by: chagedorn
Backport-of: 15878360bf
2023-07-07 19:32:57 +07:00
Hannes Wallnöfer
c07097a888 8311264: JavaDoc index comparator is not transitive
Reviewed-by: prappo
Backport-of: 0741cd3289
2023-07-07 19:32:57 +07:00
Pavel Rappo
299f672e2a 8311122: Fix typos in java.base
Reviewed-by: iris
Backport-of: 7b3c2dc5f4
2023-07-07 19:32:57 +07:00
Tobias Hartmann
a3bcdeacfe 8311023: assert(false) failed: EA: missing memory path
Reviewed-by: chagedorn
Backport-of: 6ebb0e3bd4
2023-07-07 19:32:56 +07:00
Tobias Hartmann
ba6ffccf8b 8309531: Incorrect result with unwrapped iotaShuffle.
Reviewed-by: chagedorn
Backport-of: d6578bff1c
2023-07-07 19:32:56 +07:00
Serguei Spitsyn
cd7d0d50d8 8303086: SIGSEGV in JavaThread::is_interp_only_mode()
Reviewed-by: pchilanomate
Backport-of: 971c2efb69
2023-07-07 19:32:56 +07:00
Rajan Halade
98bf58e13d 8301379: Verify TLS_ECDH_* cipher suites cannot be negotiated
Reviewed-by: mullan
Backport-of: 9f64a64376
2023-07-07 19:32:55 +07:00
Axel Boldt-Christmas
2cedb9d3bb 8310743: assert(reserved_rgn != nullptr) failed: Add committed region, No reserved region found
Reviewed-by: ayang
Backport-of: f393975d1b
2023-07-07 19:32:55 +07:00
Matthias Baesken
b2bc6893ea 8310549: avoid potential leaks in KeystoreImpl.m related to JNU_CHECK_EXCEPTION early returns
Reviewed-by: clanger
Backport-of: 7da3f1999f
2023-07-07 19:32:55 +07:00
Mandy Chung
90974afeba 8254566: Clarify the spec of ClassLoader::getClassLoadingLock for non-parallel capable loader
Reviewed-by: iris
Backport-of: b9198f9931
2023-07-07 19:32:55 +07:00
Tobias Hartmann
0019cdf781 8310829: guarantee(!HAS_PENDING_EXCEPTION) failed in ExceptionTranslation::doit
Reviewed-by: chagedorn
Backport-of: f6bdccb45c
2023-07-07 19:32:54 +07:00
Matthias Baesken
e7e9c3492f 8310380: Handle problems in core-related tests on macOS when codesign tool does not work
Reviewed-by: cjplummer
Backport-of: 39c104df44
2023-07-07 19:32:54 +07:00
Chen Liang
26863d19fc 8309819: Clarify API note in Class::getName and MethodType::toMethodDescriptorString
Reviewed-by: mchung
Backport-of: 8c8e9d911d
2023-07-07 19:32:54 +07:00
Chen Liang
44fe0a12c6 8310838: Correct range notations in MethodTypeDesc specification
Reviewed-by: mchung
Backport-of: a197ee797b
2023-07-07 19:32:54 +07:00
Daniel D. Daugherty
ff0d766ef6 8311186: ProblemList javax/management/remote/mandatory/subjectDelegation/SubjectDelegation1Test.java on linux-aarch64
8311189: disable gc/z/TestHighUsage.java
8311190: ProblemList javax/management/remote/mandatory/connection/DeadLockTest.java with virtual threads on windows-x64
8311191: ProblemList javax/management/remote/mandatory/connection/ConnectionTest.java with virtual threads on windows-x64
8311193: ProblemList vmTestbase/nsk/jdb/interrupt/interrupt001/interrupt001.java on linux-all
8311195: ProblemList vmTestbase/nsk/jvmti/scenarios/capability/CM03/cm03t001/TestDescription.java with Xcomp on macosx-x64

Reviewed-by: lmesnik
Backport-of: 140b70fb29
2023-07-07 19:32:53 +07:00
Axel Boldt-Christmas
917c3597ed 8311046: ProblemList gc/z/TestHighUsage.java with Generational ZGC
Reviewed-by: stefank
Backport-of: 2a9e2f614f
2023-07-07 19:32:53 +07:00
Vitaly Provodin
59edee4716 update exclude list on results of 21_b173.1 test runs (follow up) 2023-07-07 19:32:02 +07:00
Vitaly Provodin
28edf9aa51 update exclude list on results of 21_b173.1 test runs (follow up) 2023-07-07 07:24:39 +07:00
Alexey Ushakov
dd761c3138 JBR-5645 Provide basic classes for Vulkan rendering pipeline
Implemented shared classes for cross-platform vulkan implementation and some support for wayland toolkit
2023-07-06 20:07:51 +02:00
Alexey Ushakov
79263e5875 JBR-5807 java/awt/Frame/FrameVisible/FrameContentAppearanceTest.java: Failed: OpenGL 26 image rendering failure(s)
Added synchronisation for rendering and appearance
2023-07-06 19:21:35 +02:00
Vitaly Provodin
4eaaf559e5 update exclude list on results of 21_b173.1 test runs 2023-07-05 05:53:19 +07:00
Maxim Kartashev
470c36bbd8 JBR-5661 Wayland: implement heavy-weight popup windows 2023-07-04 09:29:37 +04:00
bourgesl
5473bc5596 fixup! JBR-5625: use CGColorSpaceCopyName() available since macOS 10.6 in MTLLayer
(cherry picked from commit 4ec4f728f4461a0c173bb80cd3f3c9652f267f4f)
2023-07-01 12:34:42 +02:00
bourgesl
3027b5e95c JBR-5625: disable color-matching (colorspace = nil) in MTLLayer by default (see new system property 'sun.java2d.metal.colorMatching=true/false') + added new MetalLayerColorTest 2023-06-30 18:19:34 +02:00
Tobias Hartmann
2ee44fface 8309902: C2: assert(false) failed: Bad graph detected in build_loop_late after JDK-8305189
Reviewed-by: chagedorn
Backport-of: 26efff7586
2023-06-30 20:00:06 +07:00
Joe Darcy
b0eb2a22e2 8311115: Type in java.lang.reflect.AccessFlag.METHOD_PARAMETER
Reviewed-by: prappo
Backport-of: d97966266e
2023-06-30 20:00:06 +07:00
Tobias Hartmann
4956bcb3d4 8310299: C2: 8275201 broke constant folding of array store check in some cases
Reviewed-by: chagedorn
Backport-of: be64d3ac3c
2023-06-30 20:00:05 +07:00
Erik Gahlin
b632a89ba5 8311007: jdk/jfr/tool/TestView.java can't find event
Reviewed-by: mgronlun
Backport-of: e3f18af1df
2023-06-30 20:00:05 +07:00
Joe Darcy
0be7c6e827 8310061: Note if implicit annotation processing is being used
Reviewed-by: vromero
Backport-of: 3df36c4f10
2023-06-30 20:00:05 +07:00
Jorn Vernee
ea0b791f94 8310914: Remove 2 malformed java/foreign ProblemList entries
Reviewed-by: jpai
Backport-of: f07e396bda
2023-06-30 20:00:05 +07:00
Jorn Vernee
c35e073cd9 8310405: Linker.Option.firstVariadicArg should specify which index values are valid
Reviewed-by: mcimadamore
Backport-of: 7fffdb5e60
2023-06-30 20:00:04 +07:00
Tobias Hartmann
be708c5de0 8310130: C2: assert(false) failed: scalar_input is neither phi nor a matchin reduction
Reviewed-by: kvn
Backport-of: 526dba1a29
2023-06-30 20:00:04 +07:00
Rajan Halade
05af322e8a 8292704: sun/security/tools/jarsigner/compatibility/Compatibility.java use wrong key size for EC
Reviewed-by: valeriep, hchao
Backport-of: 130a9f1387
2023-06-30 20:00:04 +07:00
Archie Cobbs
4ade52291c 8305671: javac rejects semicolons in compilation units with no imports
Reviewed-by: vromero
Backport-of: a08352f621
2023-06-30 20:00:04 +07:00
Pavel Rappo
59ff7acff6 8311034: Fix typo in javac man page
Reviewed-by: rriggs
Backport-of: f17bfeec61
2023-06-30 20:00:03 +07:00
Kevin Walls
5c3fe85288 8303916: ThreadLists.java inconsistent results
Reviewed-by: sspitsyn
Backport-of: 8c9b85a990
2023-06-30 20:00:03 +07:00
Stefan Karlsson
c01213983c 8310194: Generational ZGC: Lock-order asserts in JVMTI IterateThroughHeap
Reviewed-by: ayang
Backport-of: 4e4e586dac
2023-06-30 20:00:03 +07:00
Tobias Hartmann
dc28c85058 8310459: [BACKOUT] 8304450: [vectorapi] Refactor VectorShuffle implementation
Reviewed-by: kvn
Backport-of: ff9a754109
2023-06-30 20:00:02 +07:00
Joe Darcy
5b7b91f80b 8310830: typo in the parameter name in @throws of ClassDesc::ofDescriptor
Reviewed-by: mchung
Backport-of: 4bce38c6d7
2023-06-30 20:00:02 +07:00
Jim Laskey
4da9ef9367 8310975: java.util.FormatItemModifier should not be protected
Reviewed-by: darcy
Backport-of: 315242b741
2023-06-30 20:00:02 +07:00
Naoto Sato
c31883d7ae 8310182: DateTimeFormatter date formats (ISO_LOCAL_DATE) separated with hyphen, not dash
Reviewed-by: rriggs
Backport-of: ec45bd64d5
2023-06-30 20:00:01 +07:00
Robbin Ehn
7ce6caddcc 8309258: RISC-V: Add riscv_hwprobe syscall
Reviewed-by: luhenry, fyang
Backport-of: 31b6fd775f
2023-06-30 20:00:01 +07:00
Mandy Chung
449333a596 8310242: Clarify the name parameter to Class::forName
8310922: java/lang/Class/forName/ForNameNames.java fails after being added by JDK-8310242

Reviewed-by: dholmes
Backport-of: 7db2f08756
2023-06-30 20:00:01 +07:00
Joe Darcy
938ce68fac 8310861: Improve location reporting for javac serial lint warnings
8310907: Add missing file

Reviewed-by: jlahoda
Backport-of: 289f218a32
2023-06-30 20:00:01 +07:00
Christian Stein
b135da3050 8309670: java -help output for --module-path / -p is incomplete
Reviewed-by: jjg
Backport-of: 4bf78162c5
2023-06-30 20:00:00 +07:00
Hannes Wallnöfer
2e9c2f2d2f 8309471: Limit key characters in static index pages
Reviewed-by: jjg
Backport-of: 21f6d83358
2023-06-30 20:00:00 +07:00
Jaikiran Pai
5072c3ddf8 8310868: Thread.interrupt() method's javadoc has an incorrect {@link}
Reviewed-by: alanb
Backport-of: 013367b483
2023-06-30 20:00:00 +07:00
Frederic Thevenet
4bf9d30bc1 8309959: JFR: Display N/A for missing data amount
Reviewed-by: egahlin
Backport-of: 9872a14192
2023-06-30 20:00:00 +07:00
Joe Darcy
509d789d2e 8310676: add note about unnamed module to Elements.getAllModuleElements
Reviewed-by: jjg
Backport-of: 69f3114c41
2023-06-30 19:59:59 +07:00
Jamil Nimeh
872410a552 8309740: Expand timeout windows for tests in JDK-8179502
Reviewed-by: xuelei, hchao
Backport-of: 5ca4cdd2ca
2023-06-30 19:59:59 +07:00
Daniel D. Daugherty
0304e5af2d 8310822: JDK21: ProblemList java/lang/ScopedValue/StressStackOverflow.java on generic-x64
Reviewed-by: iris, lmesnik
2023-06-30 19:59:59 +07:00
Alexander Zuev
a29a052655 8309733: [macOS, Accessibility] VoiceOver: Incorrect announcements of JRadioButton
Reviewed-by: prr
Backport-of: d1d2b55ce0
2023-06-30 19:59:58 +07:00
Sergey Bylokhov
eec4c76e76 8304885: Reuse stale data to improve DNS resolver resiliency
Reviewed-by: djelinski, michaelm
Backport-of: bdd81b3182
2023-06-30 19:57:41 +07:00
Vitaly Provodin
dc913b2ba1 update exclude list on results of 21_b173.1 test runs 2023-06-30 18:39:23 +07:00
Maxim Kartashev
725fe7afce JBR-5777 isWindowMoveSupported() doesn't work with non-default GraphicsEnvironment
Co-authored-by: Nikita Gubarkov <nikita.gubarkov@jetbrains.com>
2023-06-28 11:47:22 +04:00
Sergey Shelomentsev
4bf6cbc0ab fixup! JBR-5746 add mouse events logging 2023-06-27 23:18:08 +03:00
Dmitrii Morskii
c6ddc37179 fixup! JBR-1775: improved logic for choosing newer font between system and bundled ones 2023-06-26 18:00:30 +02:00
Dmitry Batrak
25f8116d68 JBR-5720 Wrong modifiers are reported for mouse middle and right buttons' release/clicked events
(cherry picked from commit 64dad2a50a)
2023-06-26 12:10:40 +03:00
Alexey Ushakov
4583bce7fb JBR-5151 Test failures caused by -Dsun.java2d.metal.displaySync=false
Removed display sync from window layer, provide layer content updates only when necessary
2023-06-23 18:49:40 +02:00
Alan Bateman
45badf7fdf 8309853: StructuredTaskScope.join description improvements
Reviewed-by: darcy
Backport-of: 3661cdee1b
(cherry picked from commit e86d765b22)
2023-06-23 17:27:48 +07:00
Erik Gahlin
3b2662040d 8309296: jdk/jfr/event/runtime/TestAgentEvent.java fails due to "missing" dynamic JavaAgent
Reviewed-by: mgronlun
Backport-of: 658c3374d8
(cherry picked from commit 2f1af3cff8)
2023-06-23 17:27:47 +07:00
Axel Boldt-Christmas
b84f104c8f 8310187: Improve Generational ZGC jtreg testing
Reviewed-by: eosterlund
Backport-of: a0595761ef
(cherry picked from commit 6317249b50)
2023-06-23 17:27:47 +07:00
Tobias Hartmann
6827cc7db7 8309498: [JVMCI] race in CallSiteTargetValue recording
Reviewed-by: chagedorn, dlong
Backport-of: bb966827ac
(cherry picked from commit 55aa4cb48a)
2023-06-23 17:27:47 +07:00
Tobias Hartmann
5731093e0a 8308855: ARM32: TestBooleanVector crashes after 8300257
Reviewed-by: chagedorn, dlong
Backport-of: 266f9838ee
(cherry picked from commit 5357bcd776)
2023-06-23 17:27:47 +07:00
Tobias Hartmann
1aeac500dc 8309266: C2: assert(final_con == (jlong)final_int) failed: final value should be integer
Reviewed-by: chagedorn, dlong
Backport-of: 4a9cc8a000
(cherry picked from commit 7621d988f9)
2023-06-23 17:27:46 +07:00
Tobias Hartmann
03e282b3fe 8310126: C1: Missing receiver null check in Reference::get intrinsic
Reviewed-by: chagedorn, dlong
Backport-of: 02aaab12e3
(cherry picked from commit 89ac41be57)
2023-06-23 17:27:46 +07:00
Jan Lahoda
5789ab8533 8302865: Illegal bytecode for break from if with instanceof pattern matching condition
Reviewed-by: vromero
Backport-of: a15db1a56c
(cherry picked from commit 789b2fc4f2)
2023-06-23 17:27:46 +07:00
Jan Lahoda
53d980bdd3 8310133: Effectivelly final condition not enforced in guards for binding variables from the same case
Reviewed-by: vromero
Backport-of: 01623f6a57
(cherry picked from commit ceadaece94)
2023-06-23 17:27:46 +07:00
Serguei Spitsyn
585cabc4db 8309612: [REDO] JDK-8307153 JVMTI GetThreadState on carrier should return STATE_WAITING
Reviewed-by: cjplummer
Backport-of: f91e9ba757
(cherry picked from commit f8a38eecc6)
2023-06-23 17:27:45 +07:00
Chris Plummer
f85ef6c00e 8308499: Test vmTestbase/nsk/jdi/MethodExitRequest/addClassExclusionFilter/filter001/TestDescription.java failed: VMDisconnectedException
Reviewed-by: kevinw, sspitsyn
Backport-of: 79ff72a776
(cherry picked from commit 722b512c40)
2023-06-23 17:27:45 +07:00
Darragh Clarke
ce3fdae3dc 8308336: Test java/net/HttpURLConnection/HttpURLConnectionExpectContinueTest.java failed: java.net.BindException: Address already in use
Reviewed-by: dfuchs
Backport-of: a48bcf3671
(cherry picked from commit a4159ddaa2)
2023-06-23 17:27:45 +07:00
Jorn Vernee
7e94035ac4 8310053: VarHandle and slice handle derived from layout are lacking alignment check
Reviewed-by: mcimadamore
Backport-of: e022e87654
(cherry picked from commit 3985a4d534)
2023-06-23 17:27:44 +07:00
Matthias Baesken
9bdd685eb4 8310191: com/sun/tools/attach/warnings/DynamicLoadWarningTest.java second failure on AIX
Reviewed-by: alanb
Backport-of: 6a63badd8e
(cherry picked from commit 1fc60429a1)
2023-06-23 17:27:44 +07:00
Per Minborg
2851c2edac 8309937: Add @sealedGraph for some Panama FFM interfaces
Reviewed-by: mcimadamore
Backport-of: b412fc79c3
(cherry picked from commit ef0357f6cb)
2023-06-23 17:27:44 +07:00
Matthias Baesken
c33f76cf13 8309549: com/sun/tools/attach/warnings/DynamicLoadWarningTest.java fails on AIX
Reviewed-by: lucy, alanb
Backport-of: 4d66d97745
(cherry picked from commit 60cae33c46)
2023-06-23 17:27:44 +07:00
Alexey Ivanov
f4298d9a3a 8310054: ScrollPane insets are incorrect
Reviewed-by: honkar, prr
Backport-of: d6c2ee3448
(cherry picked from commit beb0d9579b)
2023-06-23 17:27:43 +07:00
Roger Riggs
9173dcad30 8310019: MIPS builds are broken after JDK-8304913
Reviewed-by: shade
Backport-of: 33c6ec9d4e
(cherry picked from commit e0cc40108a)
2023-06-23 17:27:43 +07:00
Glavo
01f0ecaaac 8310105: LoongArch64 builds are broken after JDK-8304913
Reviewed-by: shade
Backport-of: 137a5f7c2c
(cherry picked from commit 7e788939d3)
2023-06-23 17:27:43 +07:00
David Holmes
dea70ad99a 8309228: Clarify EXPERIMENTAL flags comment in hotspot/share/runtime/globals.hpp
Reviewed-by: shade
Backport-of: 96a7db7b3c
(cherry picked from commit fb6f5f1b82)
2023-06-23 17:27:43 +07:00
Jim Laskey
8bfeab18aa 8309957: Rename JDK-8309595 test to conform
Reviewed-by: prappo
Backport-of: 1d1ed0d8f7
(cherry picked from commit 7ca0f1460c)
2023-06-23 17:27:42 +07:00
Jim Laskey
c6fededaba 8309595: Allow javadoc to process unnamed classes
Reviewed-by: prappo
Backport-of: 0be39054a6
(cherry picked from commit bfffd8b608)
2023-06-23 17:27:42 +07:00
Jan Lahoda
4e9fb05ba8 8310314: Misplaced "unnamed classes are a preview feature and are disabled by default" error
Reviewed-by: jlaskey
Backport-of: 79069c5e74
(cherry picked from commit ede16cd19e)
2023-06-23 17:27:42 +07:00
Jaikiran Pai
a4e0bd5eb4 8310259: Pin msys2/setup-msys2 github action to a specific commit
8309934: Update GitHub Actions to use JDK 17 for building jtreg

Reviewed-by: cstein, clanger
Backport-of: 959a61fdd4
(cherry picked from commit 08965e646e)
2023-06-23 17:27:41 +07:00
Erik Gahlin
576518769f 8304835: jdk/jfr/event/oldobject/TestArrayInformation.java fails with "Could not find event with class ... as (leak) object"
Reviewed-by: mgronlun
Backport-of: 7d4b77ad9e
(cherry picked from commit e0d3706f9e)
2023-06-23 17:27:41 +07:00
Erik Österlund
e958446d7e 8310015: ZGC: Unbounded asynchronous unmapping can lead to running out of address space
Reviewed-by: stefank, aboldtch
Backport-of: 4229baf9b6
(cherry picked from commit 14c5091a9f)
2023-06-23 17:27:41 +07:00
Erik Gahlin
d04865c7f6 8309928: JFR: View issues
Reviewed-by: mgronlun
Backport-of: 84d010a24b
(cherry picked from commit 36e3fe914c)
2023-06-23 17:27:40 +07:00
Albert Mingkun Yang
d520d33e04 8309960: ParallelGC young collections very slow in DelayInducer
Reviewed-by: tschatzl
(cherry picked from commit 4d81b8998a)
2023-06-23 17:27:40 +07:00
Kim Barrett
84850c23d0 8308643: Incorrect value of 'used' jvmstat counter
Reviewed-by: tschatzl
Backport-of: 92167505b2
(cherry picked from commit ace56237d3)
2023-06-23 17:27:40 +07:00
Phil Race
ce5125a90f 8309756: Occasional crashes with pipewire screen capture on Wayland
Reviewed-by: azvegint
Backport-of: d3d0dbc363
(cherry picked from commit 3698a022ff)
2023-06-23 17:27:40 +07:00
Justin Lu
385c581b56 8309632: JDK 21 RDP1 L10n resource files update
Reviewed-by: naoto
Backport-of: 81bfd78901
(cherry picked from commit a1c1d97a4e)
2023-06-23 17:27:39 +07:00
Maxim Kartashev
cb9c3217e1 JBR-5722 vmTestbase/vm/gc/compact/Compact_TwoFields_InternedStrings: SIGSEGV at Symbol::as_klass_external_name(char*, int)
Do not use print_native_stack() when recording OOME stacks as it is
designed to be used only in the context of a fatal error reporting where
induced crashes are tolerated.
2023-06-23 12:59:41 +04:00
Dmitry Batrak
82383cef3c JBR-5684 Focus state is broken after closing of modal dialog in an inactive application
(cherry picked from commit f1feadc9e5)
2023-06-23 11:38:46 +03:00
Nikita Provotorov
f3580cb167 JBR-5762 Sometimes naturally generated MOUSE_DRAGGED events don't contain the pressed button's modifier.
Enforce keeping the pressed button in the modifiers for MOUSE_DRAGGED events. This is under a (default enabled) system property "awt.mac.enforceMouseModifiersForMouseDragged".

(cherry picked from commit fb12990a98)
2023-06-22 19:06:14 +03:00
Dmitrii Morskii
6c1d3527ef JBR-1775: improved logic for choosing newer font between system and bundled ones 2023-06-22 16:02:39 +02:00
Dmitrii Morskii
864dcab9d8 JBR-5548 fix BadSerializationTest 2023-06-22 15:55:12 +02:00
Vitaly Provodin
c66295a92f update exclude list on results of 21_b163.1 test runs 2023-06-22 16:38:37 +07:00
Vitaly Provodin
b2af077f9f update exclude list on results of 21_b156.4 test runs 2023-06-22 16:31:37 +07:00
Maxim Kartashev
ca4d3ddb25 JBR-5761 Make error printing more robust during early stages of VM initialization 2023-06-21 19:41:38 +04:00
Sergey Shelomentsev
5fd56485aa JBR-5746 wait for menu visibility of fail the test 2023-06-20 18:42:51 +03:00
Vitaly Provodin
528f36f7b7 fixup! JBR-5246 add OpenType's features support (follow up) 2023-06-17 06:38:04 +07:00
Vitaly Provodin
883a78fb2f fixup! JBR-5246 add OpenType's features support 2023-06-17 05:49:16 +07:00
Vitaly Provodin
2613211eed fixup! JBR-5480 Include more information in OOME crash reports 2023-06-17 05:33:13 +07:00
Nikita Tsarev
985ff0d80b JBR-5379: Ignore input events only on permament focus loss 2023-06-16 15:19:45 +02:00
Vitaly Provodin
d44783df44 fixup! update exclude list on results of 21_b156.4 test runs 2023-06-16 17:48:06 +07:00
Aggelos Biboudis
3090a44d42 8310128: Switch with unnamed patterns erroneously non-exhaustive
Reviewed-by: jlahoda
Backport-of: 32243ef47d
(cherry picked from commit aced11446e)
2023-06-16 17:21:06 +07:00
Roberto Castañeda Lozano
0802b1573b 8303513: C2: LoadKlassNode::make fails with 'expecting TypeKlassPtr'
Reviewed-by: thartmann
Backport-of: 83d92672d4
(cherry picked from commit 39e98e7bbf)
2023-06-16 17:21:06 +07:00
Martin Doerr
577b7a1383 8309613: [Windows] hs_err files sometimes miss information about the code containing the error
Reviewed-by: mbaesken
Backport-of: bd79db3930
(cherry picked from commit 07d20dc86a)
2023-06-16 17:21:05 +07:00
Aleksey Shipilev
155bca2d23 8309956: Shenandoah: Strengthen the mark word check in string dedup
Reviewed-by: rkennke
Backport-of: 57b8251241
(cherry picked from commit 0ac92753dd)
2023-06-16 17:21:05 +07:00
Chen Liang
acfdfe9169 8307508: IndirectVarHandle.isAccessModeSupported throws NPE
Reviewed-by: mchung
Backport-of: 75dcc4ef94
(cherry picked from commit 6711041f55)
2023-06-16 17:21:05 +07:00
Stuart Marks
4f67e453b9 8309882: LinkedHashMap adds an errant serializable field
Reviewed-by: rriggs
Backport-of: e138685648
(cherry picked from commit f7cd0aec92)
2023-06-16 17:21:04 +07:00
Raffaello Giulietti
7f45827674 8309955: Matcher uses @since {@inheritDoc}
Reviewed-by: bpb
Backport-of: bfef3c3e80
(cherry picked from commit e18993c006)
2023-06-16 17:21:04 +07:00
Mandy Chung
3100171558 8309303: jdk/internal/misc/VM/RuntimeArguments test ignores jdk/internal/vm/options
Reviewed-by: alanb
Backport-of: 679a6d8935
(cherry picked from commit 3363050f9e)
2023-06-16 17:21:04 +07:00
Markus Grönlund
6f792f56d2 8309862: Unsafe list operations in JfrStringPool
Reviewed-by: egahlin
Backport-of: 05f896a153
(cherry picked from commit ea4ab656b0)
2023-06-16 17:21:03 +07:00
Martin Doerr
84b4a719ba 8309462: [AIX] vmTestbase/nsk/jvmti/RunAgentThread/agentthr001/TestDescription.java crashing due to empty while loop
Reviewed-by: mbaesken
Backport-of: cf9e6353cc
(cherry picked from commit 08eff92b5e)
2023-06-16 17:21:03 +07:00
Jan Lahoda
ef2a69875a 8309467: Pattern dominance should be adjusted
Reviewed-by: vromero
Backport-of: 408cadb351
(cherry picked from commit 83ea293581)
2023-06-16 17:21:03 +07:00
Joe Darcy
a8c6a1c33f 8309870: Using -proc:full should be considered requesting explicit annotation processing
Reviewed-by: jjg
Backport-of: 3ce1240ca1
(cherry picked from commit b743405033)
2023-06-16 17:21:02 +07:00
Maurizio Cimadamore
705d70071f 8308645: Javadoc of FFM API needs to be refreshed
8309398: ValueLayout:: arrayElementVarHandle doesn't throws UnsupportedOperationException - if byteAlignment() > byteSize()
8308812: SequenceLayout::withElementCount(long elementCount) doesn't throw IllegalArgumentException - if elementCount < 0 for some cases

Reviewed-by: jvernee
(cherry picked from commit 20371fd918)
2023-06-16 17:21:02 +07:00
Chris Hegarty
b7eb3b0594 8309727: Assert privileges while reading the jdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK system property
Reviewed-by: uschindler, rriggs
Backport-of: cee5724d09
(cherry picked from commit 73a9f486ae)
2023-06-16 17:21:02 +07:00
Matthias Baesken
7d17695ec3 8309703: AIX build fails after JDK-8280982
Reviewed-by: mdoerr
Backport-of: 3981297fd3
(cherry picked from commit 005006e7c4)
2023-06-16 17:21:01 +07:00
Daniel D. Daugherty
73622ef2c1 8309760: ProblemList serviceability/jvmti/vthread/FollowReferences/VThreadStackRefTest.java#default with ZGC
Reviewed-by: darcy
Backport-of: aace3dc28c
(cherry picked from commit 4bf6babda5)
2023-06-16 17:21:01 +07:00
Daniel D. Daugherty
552735c1c5 8309702: Exclude java/lang/ScopedValue/StressStackOverflow.java from JTREG_TEST_THREAD_FACTORY=Virtual runs
Reviewed-by: darcy
Backport-of: 307085618d
(cherry picked from commit 406ba341fe)
2023-06-16 17:21:01 +07:00
Vitaly Provodin
a2e0786c22 update exclude list on results of 21_b156.4 test runs 2023-06-15 10:21:29 +07:00
Vitaly Provodin
16d12c8519 update exclude list on results of 21_b150.1 test 2023-06-10 05:25:09 +07:00
Stefan Karlsson
8be1389399 8309675: Generational ZGC: compiler/gcbarriers/UnsafeIntrinsicsTest.java fails in nmt_commit
Reviewed-by: dcubed
Backport-of: c4e6542514
(cherry picked from commit 430ffe7ae6)
2023-06-09 16:09:23 +07:00
Stefan Karlsson
eaa7382eea 8306841: Generational ZGC: NMT reports Java heap size larger than max heap size
Reviewed-by: eosterlund, stuefe
(cherry picked from commit bb377b2673)
2023-06-09 16:09:22 +07:00
Chen Liang
73e8bb0fba 8304425: ClassHierarchyResolver from Reflection
Reviewed-by: asotona
(cherry picked from commit ac3ce2bf75)
2023-06-09 16:09:21 +07:00
Aggelos Biboudis
fc978710d3 8309235: Unnamed Variables (_) can't be used in JShell
Co-authored-by: Jan Lahoda <jlahoda@openjdk.org>
Co-authored-by: Aggelos Biboudis <abimpoudis@openjdk.org>
Reviewed-by: asotona
(cherry picked from commit 79a4ac791c)
2023-06-09 16:09:20 +07:00
Nagata-Haruhito
49881fbaf1 8306431: File.listRoots method description should be re-examined
Reviewed-by: bpb, alanb
(cherry picked from commit 9d64a9d220)
2023-06-09 16:09:19 +07:00
Serguei Spitsyn
aaba13d513 8309602: update JVMTI history table for jdk 21
Reviewed-by: alanb, iris
(cherry picked from commit 5af9d2a0ac)
2023-06-09 16:09:18 +07:00
David Holmes
fb3766b94c 8308764: Reporting errors from create_vm may crash
Reviewed-by: stuefe, coleenp, kbarrett
(cherry picked from commit 6646272a05)
2023-06-09 16:09:17 +07:00
Sergey Bylokhov
9a5f0e005d 8308152: PropertyDescriptor should work with overridden generic getter method
Reviewed-by: azvegint
(cherry picked from commit 73dd03cc5a)
2023-06-09 16:09:16 +07:00
Martin Balao
7ac0d737ea 8309569: sun/security/pkcs11/Signature/TestRSAKeyLength.java fails after JDK-8301553
Co-authored-by: Martin Balao <mbalao@openjdk.org>
Co-authored-by: Francisco Ferrari Bihurriet <fferrari@redhat.com>
Reviewed-by: valeriep
(cherry picked from commit 760cb04a2e)
2023-06-09 16:09:15 +07:00
Mandy Chung
1217047ff0 8309630: Clean up tests that reference deploy modules
Reviewed-by: bchristi
(cherry picked from commit e8a59843f2)
2023-06-09 16:09:14 +07:00
Raffaello Giulietti
a2a7a996d3 8309515: Stale cached data from Matcher.namedGroups() after Matcher.usePattern()
Reviewed-by: rriggs
(cherry picked from commit 90027ff204)
2023-06-09 16:09:13 +07:00
Alexey Ivanov
4d19663847 8297923: java.awt.ScrollPane broken after multiple scroll up/down
Reviewed-by: honkar, prr, serb
(cherry picked from commit ea41907396)
2023-06-09 16:09:12 +07:00
Yudi Zheng
bf5816390b 8309562: [JVMCI] Export symbols used by VirtualThread notifyJvmti intrinsics to JVMCI compilers.
Reviewed-by: dnsimon, kvn
(cherry picked from commit 99749c597b)
2023-06-09 16:09:12 +07:00
Eric Nothum
28ac4647f8 8309474: [IR Framework] Wrong @ForceCompile link in README
Reviewed-by: chagedorn, thartmann
(cherry picked from commit 92beb85510)
2023-06-09 16:09:11 +07:00
Daniel D. Daugherty
17ce7e4035 8256302: releasing oopStorage when deflating allows for faster deleting
Reviewed-by: dholmes, rehn, coleenp
(cherry picked from commit 6402004852)
2023-06-09 16:09:10 +07:00
Mandy Chung
0941211777 8309532: java/lang/Class/getDeclaredField/FieldSetAccessibleTest should filter modules that depend on JVMCI
Reviewed-by: alanb, dfuchs
(cherry picked from commit 02bce0b145)
2023-06-09 16:09:09 +07:00
Joe Darcy
bdc07abb13 8309574: Improve core reflection tests for JEP 445
Reviewed-by: mchung
(cherry picked from commit 4ffc8cc216)
2023-06-09 16:09:08 +07:00
Chris Plummer
b4dfcb4160 8309420: com/sun/jdi/StepTest.java fails with virtual thread wrapper
Reviewed-by: sspitsyn, amenkov
(cherry picked from commit e3f3ac0825)
2023-06-09 16:09:07 +07:00
Chris Plummer
bfe5ca05e6 8309510: com/sun/jdi/RedefineNestmateAttr/TestNestmateAttr.java no longer needs to override startUp() method
Reviewed-by: sspitsyn, amenkov
(cherry picked from commit c38abbfcaa)
2023-06-09 16:09:06 +07:00
Joe Darcy
d2285b5d5d 8309503: Improve javax.lang.model tests for JEP 445
Reviewed-by: jlahoda, jjg, jlaskey
(cherry picked from commit c24b0bada2)
2023-06-09 16:09:05 +07:00
Chris Plummer
31d20952c0 8309509: com/sun/jdi/RedefineNestmateAttr/TestNestmateAttr.java fails with virtual test thread factory
Reviewed-by: sspitsyn, amenkov
(cherry picked from commit a54f4d4ab9)
2023-06-09 16:09:04 +07:00
Daniel D. Daugherty
60584a8cf8 8309614: [BACKOUT] JDK-8307153 JVMTI GetThreadState on carrier should return STATE_WAITING
Reviewed-by: azvegint
(cherry picked from commit 33bb64f24f)
2023-06-09 16:09:03 +07:00
JoKern65
ce7e174e01 8308288: Fix xlc17 clang warnings and build errors in hotspot
Reviewed-by: goetz, mbaesken
(cherry picked from commit 5b147eb5e4)
2023-06-09 16:09:02 +07:00
JoKern65
7884a8a411 8309225: Fix xlc17 clang 15 warnings in security and servicability
Reviewed-by: goetz, mdoerr, clanger
(cherry picked from commit 89f5bacaf6)
2023-06-09 16:09:01 +07:00
JoKern65
e78673adbe 8309219: Fix xlc17 clang 15 warnings in java.base
Reviewed-by: goetz, mdoerr
(cherry picked from commit 6eddbe26dd)
2023-06-09 16:09:01 +07:00
Serguei Spitsyn
3a08166477 8307153: JVMTI GetThreadState on carrier should return STATE_WAITING
Reviewed-by: amenkov, cjplummer
(cherry picked from commit 177e8327d6)
2023-06-09 16:09:00 +07:00
Aleksey Shipilev
d61653478d 8309543: Micro-optimize x86 assembler UseCondCardMark
Reviewed-by: kvn, mdoerr
(cherry picked from commit f0236edfba)
2023-06-09 16:08:59 +07:00
Alexander Zvegintsev
1a77364d8b 8280982: [Wayland] [XWayland] java.awt.Robot taking screenshots
Reviewed-by: prr, kizune, psadhukhan
(cherry picked from commit 9d7bf5329e)
2023-06-09 16:08:57 +07:00
Frederic Thevenet
af828a181b 8309550: jdk.jfr.internal.Utils::formatDataAmount method should gracefully handle amounts equal to Long.MIN_VALUE
Reviewed-by: stuefe, mgronlun
(cherry picked from commit a1ab377d99)
2023-06-09 16:08:56 +07:00
Jorn Vernee
8307442519 8308445: Linker should check that capture state segment is big enough
Reviewed-by: mcimadamore
(cherry picked from commit c49129f545)
2023-06-09 16:08:56 +07:00
Jorn Vernee
8fc758cbad 8308031: Linkers should reject unpromoted variadic parameters
Reviewed-by: mcimadamore
(cherry picked from commit fa791119f0)
2023-06-09 16:08:55 +07:00
Jim Laskey
5ae6f19643 8309594: Cleanup naming in JavacParser related to unnamed classes
Reviewed-by: jlahoda
(cherry picked from commit 16ebf47fe3)
2023-06-09 16:08:53 +07:00
Stefan Karlsson
646a548111 8307374: Add a JFR event for tracking RSS
Reviewed-by: stuefe, rcastanedalo
(cherry picked from commit 5722903d53)
2023-06-09 16:08:52 +07:00
Eric Nothum
1e4caafc2b 8302145: ddepth should be uint in PhaseIdealLoop::register_node()
Reviewed-by: chagedorn, thartmann
(cherry picked from commit 1de40f360f)
2023-06-09 16:08:51 +07:00
Jim Laskey
9ca08e4cbb 8309568: javac crashes attempting to -Xprint on a class file of an unnamed class
Reviewed-by: darcy, jlahoda
(cherry picked from commit a6726b66db)
2023-06-09 16:08:50 +07:00
Boris Ulasevich
8654d31807 8305959: x86: Improve itable_stub
Reviewed-by: phh, shade, aph
(cherry picked from commit 8cdd95e8a2)
2023-06-09 16:08:49 +07:00
Matthias Baesken
001aa3e47d 8309297: Adjust ShenandoahHeap print_heap_regions_on
Reviewed-by: ysr, mdoerr
(cherry picked from commit 9233dcc838)
2023-06-09 16:08:48 +07:00
Dhamoder Nalla
f352d1ab9c 8305763: Parsing a URI with an underscore goes through a silent exception, negatively impacting performance
Reviewed-by: dfuchs
(cherry picked from commit 749d480193)
2023-06-09 16:08:47 +07:00
Jaikiran Pai
c8d47bafae 8305906: HttpClient may use incorrect key when finding pooled HTTP/2 connection for IPv6 address
Reviewed-by: djelinski, dfuchs
(cherry picked from commit 3ccb3c0e09)
2023-06-09 16:08:46 +07:00
Serguei Spitsyn
dfc51517ef 8295976: GetThreadListStackTraces returns wrong state for blocked VirtualThread
Reviewed-by: cjplummer, amenkov
(cherry picked from commit a25b7b8b55)
2023-06-09 16:08:45 +07:00
Daniel Jeliński
b0f3a1eb5b 8309527: Improve test proxy performance
Reviewed-by: dfuchs, jpai
(cherry picked from commit fadcd65018)
2023-06-09 16:08:44 +07:00
Christian Hagedorn
970d3642af 8309472: IGV: Add dump_igv(custom_name) for improved debugging
Reviewed-by: roland, thartmann
(cherry picked from commit 0ed4af76c0)
2023-06-09 16:08:43 +07:00
Alan Bateman
4b3e0b1253 8306647: Implementation of Structured Concurrency (Preview)
8306572: Implementation of Scoped Values (Preview)

Co-authored-by: Alan Bateman <alanb@openjdk.org>
Co-authored-by: Andrew Haley <aph@openjdk.org>
Reviewed-by: psandoz, dfuchs, mchung
(cherry picked from commit f1c7afcc3f)
2023-06-09 16:08:42 +07:00
Ichiroh Takiguchi
8d5283c417 8307953: [AIX] C locale's font setting was changed by JEP 400
Reviewed-by: naoto, prr
(cherry picked from commit a08c5cb3f1)
2023-06-09 16:08:41 +07:00
Daniel D. Daugherty
c7cca79547 8309570: ProblemList sun/security/pkcs11/Signature/TestRSAKeyLength.java
Reviewed-by: jjg, darcy
(cherry picked from commit 0ceb43227d)
2023-06-09 16:08:40 +07:00
Chris Plummer
e15438b957 8309396: com/sun/jdi/JdbMethodExitTest.java fails with virtual threads due to a bug in determining the main thread id
Reviewed-by: amenkov, sspitsyn
(cherry picked from commit 65bdbc7a8c)
2023-06-09 16:08:39 +07:00
Martin Balao
0059758c87 8301553: Support Password-Based Cryptography in SunPKCS11
Co-authored-by: Francisco Ferrari Bihurriet <fferrari@redhat.com>
Co-authored-by: Martin Balao <mbalao@openjdk.org>
Reviewed-by: valeriep
(cherry picked from commit 4a75fd462c)
2023-06-09 16:08:38 +07:00
Hannes Wallnöfer
7a78f0c9d8 8292157: Incorrect error: "block element not allowed within inline element <a>"
Reviewed-by: jjg
(cherry picked from commit 0a4f9ad637)
2023-06-09 16:08:37 +07:00
Chris Plummer
7b87fc6236 8309505: com/sun/jdi/MethodEntryExitEvents.java due to finding wrong main thread
Reviewed-by: amenkov, sspitsyn
(cherry picked from commit 16ab7bfe22)
2023-06-09 16:08:36 +07:00
Joe Darcy
8590b9609f 8295071: Spec Clarification : ClassFileFormatVersion: System property java.class.version | Java class format version number
Reviewed-by: iris, alanb, rriggs
(cherry picked from commit d82436e4e3)
2023-06-09 16:08:35 +07:00
Chris Plummer
7fc68c2928 8309506: com/sun/jdi/MultiBreakpointsTest.java fails with virtual test thread factory
Reviewed-by: amenkov, sspitsyn
(cherry picked from commit 571fbdc311)
2023-06-09 16:08:34 +07:00
Joe Darcy
1345b4da95 8309554: Update descriptions in SourceVersion
Reviewed-by: jlaskey, jjg, rriggs
(cherry picked from commit 7d1147ee5c)
2023-06-09 16:08:33 +07:00
Stuart Marks
51eed250b8 8307840: SequencedMap view method specification and implementation adjustments
Reviewed-by: darcy, alanb
(cherry picked from commit 9526190863)
2023-06-09 16:08:32 +07:00
Mandy Chung
bb03ece978 8301721: lookup.findSpecial fails on Object method call from interface
Reviewed-by: alanb
(cherry picked from commit 74dc50b7f0)
2023-06-09 16:08:31 +07:00
Doug Simon
fdd52dcc65 8309542: compiler/jvmci/TestEnableJVMCIProduct.java fails with "JVMCI compiler 'graal' specified by jvmci.Compiler not found"
Reviewed-by: kvn, never
(cherry picked from commit 0f0fda7abc)
2023-06-09 16:08:30 +07:00
Chen Liang
00e0ff56bf 8309413: Improve the performance of MethodTypeDesc::descriptorString
8304932: MethodTypeDescImpl can be mutated by argument passed to MethodTypeDesc.of

Reviewed-by: mchung
(cherry picked from commit 38cef2adbd)
2023-06-09 16:08:29 +07:00
Tom Rodriguez
9eb805a955 8309501: Remove workaround in bin/idea.sh for non standard JVMCI file layout
Reviewed-by: dnsimon, erikj

(cherry picked from commit 7edd0540e0)
2023-06-09 16:07:32 +07:00
Brian Burkhalter
bf01aee27c 8309216: Cast from jchar* to char* in test java/io/GetXSpace.java
Reviewed-by: rriggs, naoto
(cherry picked from commit 9188142698)
2023-06-09 15:48:53 +07:00
Brian Burkhalter
bc05047270 8307887: (fs) Files.createSymbolicLink throws less specific exception when in developer mode and file already exists
Reviewed-by: alanb
(cherry picked from commit d709c25cbf)
2023-06-09 15:48:52 +07:00
Jim Laskey
cb27e98475 8309534: @JEP(number=430, title="String Templates") should use default status
Reviewed-by: alanb
(cherry picked from commit ca6f07f9ab)
2023-06-09 15:48:51 +07:00
Rudi Horn
e31b6113bc 8308748: JNU_GetStringPlatformChars may write to String's internal memory array
Reviewed-by: dholmes, rriggs, alanb
(cherry picked from commit 8f0839bc55)
2023-06-09 15:48:50 +07:00
Pavel Rappo
4efd0f3cf4 8304878: ConcurrentModificationException in javadoc tool
Reviewed-by: jjg
(cherry picked from commit 01455a07a7)
2023-06-09 15:48:49 +07:00
Gui Cao
6a7b7f2b35 8309419: RISC-V: Relax register constraint for AddReductionVF & AddReductionVD nodes
Reviewed-by: fyang, luhenry, yzhu
(cherry picked from commit 7d25bf7722)
2023-06-09 15:48:48 +07:00
Dingli Zhang
1fdd194889 8309418: RISC-V: Make use of vl1r.v & vfabs.v pseudo-instructions where appropriate
Reviewed-by: fyang, luhenry, gcao
(cherry picked from commit 5146a58249)
2023-06-09 15:48:47 +07:00
Maxim Kartashev
0f31f6da89 8308875: java/awt/Toolkit/GetScreenInsetsCustomGC/GetScreenInsetsCustomGC.java failed with 'Cannot invoke "sun.awt.X11GraphicsDevice.getInsets()" because "device" is null'
Reviewed-by: avu, prr
(cherry picked from commit 41bf2ad159)
2023-06-09 15:48:46 +07:00
quadhier
11aab9e6d7 8309346: Extend hs_err logging for all VM operations deriving from VM_GC_Operation
Reviewed-by: tschatzl, stefank
(cherry picked from commit a7a0913005)
2023-06-09 15:48:45 +07:00
Matthias Baesken
d422f0b9d3 8309340: Provide sctpHandleSocketErrorWithMessage
Reviewed-by: clanger
(cherry picked from commit 3b85f84f02)
2023-06-09 15:48:44 +07:00
Alan Bateman
72c9cb13ee 8309406: Change jdk.trackAllThreads to default to true
Reviewed-by: rpressler, mchung, cjplummer
(cherry picked from commit 2e9eff5641)
2023-06-09 15:48:43 +07:00
Stuart Marks
ab21d919fd 8308167: SequencedMap::firstEntry throws NPE when first entry has null key or value
Reviewed-by: bchristi
(cherry picked from commit 6d155a47f1)
2023-06-09 15:48:42 +07:00
Serguei Spitsyn
3dfe49cc40 8304438: jcmd JVMTI.agent_load should obey EnableDynamicAgentLoading
Reviewed-by: cjplummer, alanb, amenkov
(cherry picked from commit 4b1534989b)
2023-06-09 15:48:41 +07:00
Doug Simon
58770321c4 8309136: [JVMCI] add -XX:+UseGraalJIT flag
Reviewed-by: dholmes, kvn
(cherry picked from commit b3c9d6785e)
2023-06-09 15:48:40 +07:00
Jim Laskey
977d4f91c1 8306112: Implementation of JEP 445: Unnamed Classes and Instance Main Methods (Preview)
8308613: javax.lang.model updates for JEP 445 (preview)
8308913: Update core reflection for JEP 445 (preview)

Co-authored-by: Maurizio Cimadamore <mcimadamore@openjdk.org>
Co-authored-by: Joe Darcy <darcy@openjdk.org>
Co-authored-by: Jan Lahoda <jlahoda@openjdk.org>
Co-authored-by: Jim Laskey <jlaskey@openjdk.org>
Co-authored-by: Adam Sotona <asotona@openjdk.org>
Reviewed-by: mcimadamore, vromero, darcy
(cherry picked from commit 98b53c06cf)
2023-06-09 15:48:39 +07:00
Calvin Cheung
f506bf05bd 8309170: CDS archive heap is always relocated for larger heap
Reviewed-by: stuefe, iklam
(cherry picked from commit e970ddbc60)
2023-06-09 15:48:38 +07:00
Adam Sotona
8d5c2d2f5d 8308842: Consolidate exceptions thrown from Class-File API
Reviewed-by: briangoetz
(cherry picked from commit 4b8922f576)
2023-06-09 15:48:37 +07:00
Joe Darcy
390b5f1381 8309416: Misstatement in semantics of methods in javax.lang.model.ElementFilter
Reviewed-by: prappo
(cherry picked from commit 2b38343e4d)
2023-06-09 15:48:36 +07:00
Alexander Zvegintsev
4fa45eb884 8280994: [XWayland] Drag and Drop does not work in java -> wayland app direction
Reviewed-by: prr, psadhukhan
(cherry picked from commit 73352b68c4)
2023-06-09 15:48:35 +07:00
Antonios Printezis
146554306d 8308726: RISC-V: avoid unnecessary slli in the vectorized arraycopy stubs for bytes
Reviewed-by: fyang, luhenry
(cherry picked from commit 5cd8af7622)
2023-06-09 15:48:34 +07:00
Antonios Printezis
44026a6630 8308969: make test-prebuilt doesn't return the correct exit code
Reviewed-by: erikj
(cherry picked from commit 80232b7e75)
2023-06-09 15:48:33 +07:00
changpeng1997
854531785f 8309129: AArch64: guarantee(T != T2S) failed: "incorrect arrangement" after JDK-8307795
Reviewed-by: thartmann, xgong, eastigeevich
(cherry picked from commit 6d511f1376)
2023-06-09 15:48:32 +07:00
Jan Lahoda
87fbbb8c87 8291966: SwitchBootstrap.typeSwitch could be faster
Reviewed-by: asotona
(cherry picked from commit 9be5769a68)
2023-06-09 15:48:31 +07:00
Hannes Wallnöfer
d0078e8b61 8306578: Report error if no label given in @see and {@link} when no default is available
Reviewed-by: jjg
(cherry picked from commit db0857ddd8)
2023-06-09 15:48:30 +07:00
Prasanta Sadhukhan
3ffa1f0667 8296920: Regression Test DialogOrient.java fails on MacOS
Reviewed-by: honkar, dnguyen, achung, jdv
(cherry picked from commit 8c9d21e519)
2023-06-09 15:48:29 +07:00
Christoph Langer
3e0ad99cdf 8303465: KeyStore of type KeychainStore, provider Apple does not show all trusted certificates
Reviewed-by: mbaesken, weijun
(cherry picked from commit ac41c03003)
2023-06-09 15:48:29 +07:00
David Leopoldseder
d21848f653 8309104: [JVMCI] compiler/unsafe/UnsafeGetStableArrayElement test asserts wrong values with Graal
Reviewed-by: dnsimon, thartmann
(cherry picked from commit 11fb5b2209)
2023-06-09 15:48:28 +07:00
Vladimir Kempik
32d52e41fd 8309405: RISC-V: is_deopt may produce unaligned memory read
Reviewed-by: fyang, luhenry
(cherry picked from commit a02d8001fa)
2023-06-09 15:48:27 +07:00
Roberto Castañeda Lozano
b0bb7c39b3 8302673: [SuperWord] MaxReduction and MinReduction should vectorize for int
Co-authored-by: Jatin Bhateja <jbhateja@openjdk.org>
Reviewed-by: epeter, kvn
(cherry picked from commit 3fa776d66a)
2023-06-09 15:48:26 +07:00
Emanuel Peter
382b9dd374 8309268: C2: "assert(in_bb(n)) failed: must be" after JDK-8306302
Reviewed-by: rcastanedalo, kvn, thartmann
(cherry picked from commit 22a9a86be0)
2023-06-09 15:48:25 +07:00
Jan Lahoda
cf2316d47f 8305225: A service broken error despite annotation processor generating it if directives listed
Reviewed-by: asotona
(cherry picked from commit b6c9232b8b)
2023-06-09 15:48:24 +07:00
Jan Lahoda
e96bf21262 8309336: Incorrect switch in enum not reported properly
Reviewed-by: vromero
(cherry picked from commit 05fb6c6648)
2023-06-09 15:48:23 +07:00
Gui Cao
7fca1a198a 8309332: RISC-V: Improve PrintOptoAssembly output of vector nodes
Reviewed-by: yzhu, fyang
(cherry picked from commit 08c91c2212)
2023-06-09 15:48:22 +07:00
Chris Plummer
3a41c7cddd 8309334: ProcessTools.main() does not properly set thread names when using the virtual thread wrapper
Reviewed-by: amenkov, lmesnik, sspitsyn, alanb
(cherry picked from commit ecb17532dc)
2023-06-09 15:48:21 +07:00
Jaikiran Pai
9664b866e2 8309409: Update HttpInputStreamTest and BodyProcessorInputStreamTest to use hg.openjdk.org
Reviewed-by: dfuchs
(cherry picked from commit ac1597bcc7)
2023-06-09 15:48:20 +07:00
Chris Plummer
716ad3a93b 8309391: Remove non-failing tests from test/jdk/ProblemList-Virtual.txt
Reviewed-by: dcubed, lmesnik
(cherry picked from commit fdb5893bf0)
2023-06-09 15:48:19 +07:00
Guoxiong Li
1e252c1e57 8309265: Serial: Remove the code related to GC overheap limit
Reviewed-by: ayang, tschatzl
(cherry picked from commit 6edd786bf6)
2023-06-09 15:48:18 +07:00
Dingli Zhang
95ee9cafa5 8309254: Implement fast-path for ASCII-compatible CharsetEncoders on RISC-V
Reviewed-by: luhenry, yzhu, fyang, fjiang
(cherry picked from commit 61bb014a86)
2023-06-09 15:48:17 +07:00
Alex Menkov
8c7c91a6fa 8308978: regression with a deadlock involving FollowReferences
Reviewed-by: sspitsyn, lmesnik
(cherry picked from commit 62c935d4fa)
2023-06-09 15:48:16 +07:00
Joe Wang
2ae3bbee63 8303530: Redefine JAXP Configuration File
Reviewed-by: naoto, lancea, alanb, smarks
(cherry picked from commit aff9cea054)
2023-06-09 15:48:15 +07:00
Chris Plummer
21ad939f7b 8309329: com/sun/jdi/DeferredStepTest.java fails with virtual threads due to not waiting for threads to exit
Reviewed-by: sspitsyn, lmesnik, amenkov
(cherry picked from commit 1bb037bdc6)
2023-06-09 15:48:14 +07:00
Mandy Chung
6713afaa28 8309241: ClassForNameLeak fails intermittently as the class loader hasn't been unloaded
Reviewed-by: dnsimon, bchristi
(cherry picked from commit a23bbea959)
2023-06-09 15:48:13 +07:00
Daniel Fuchs
0e61326a75 8309200: java/net/httpclient/ExecutorShutdown fails intermittently, if connection closed during upgrade
Reviewed-by: jpai, djelinski
(cherry picked from commit 931913fbb2)
2023-06-09 15:48:12 +07:00
Andrew Haley
389dc61519 8296411: AArch64: Accelerated Poly1305 intrinsics
Reviewed-by: redestad, adinn
(cherry picked from commit dc21e8aa83)
2023-06-09 15:48:11 +07:00
Poonam Bajaj
d5381fc93e 8303215: Make thread stacks not use huge pages
Reviewed-by: stuefe, dholmes
(cherry picked from commit 59d9d9fcb9)
2023-06-09 15:48:08 +07:00
Albert Mingkun Yang
40e00d8a46 8309286: G1: Remove unused G1HeapRegionAttr::is_valid_gen
Reviewed-by: tschatzl
(cherry picked from commit cb1e5e3f0f)
2023-06-09 15:48:06 +07:00
Stefan Karlsson
cc21938e01 8309210: Extend VM Operations hs_err logging
Reviewed-by: dholmes, stuefe, eosterlund, sjohanss
(cherry picked from commit e8268d9163)
2023-06-09 15:48:05 +07:00
Christian Hagedorn
2f3d643ce9 8308892: Bad graph detected in build_loop_late after JDK-8305635
Reviewed-by: rcastanedalo, roland, thartmann
(cherry picked from commit 7dbdad50a6)
2023-06-09 15:48:04 +07:00
Severin Gehwolf
9153f78d16 8308090: Add container tests for on-the-fly resource quota updates
Reviewed-by: dholmes, mseledtsov
(cherry picked from commit dc8bc6c98c)
2023-06-09 15:48:03 +07:00
Jan Kratochvil
3119ba47fd 8309287: Add fontconfig requirement to building.md for Debian
Reviewed-by: erikj
(cherry picked from commit 73e7af9e28)
2023-06-09 15:48:01 +07:00
Sibabrata Sahoo
c2d74a9e26 8308711: Develop additional Tests for KEM implementation
Reviewed-by: weijun
(cherry picked from commit aeb53e67f9)
2023-06-09 15:48:00 +07:00
JoKern65
43797eed21 8309224: Fix xlc17 clang 15 warnings in java.desktop
Reviewed-by: prr, goetz

(cherry picked from commit dcd9590fed)
2023-06-09 15:44:31 +07:00
Erik Österlund
1514affc90 8308752: Generational ZGC: Avoid final marking through stack chunks
Reviewed-by: stefank, aboldtch
(cherry picked from commit 8f1ce78907)
2023-06-09 15:31:46 +07:00
Axel Boldt-Christmas
92039362c6 8308387: CLD created and unloading list sharing _next node pointer leads to concurrent YC missing CLD roots
Reviewed-by: stefank, coleenp, dholmes, eosterlund
(cherry picked from commit 7b0a33600e)
2023-06-09 15:31:45 +07:00
Roberto Castañeda Lozano
06ad013a7c 8309295: C2: MaxNode::signed_min() returns nullptr for int operands
Reviewed-by: thartmann
(cherry picked from commit 60f3b87d96)
2023-06-09 15:31:44 +07:00
Aggelos Biboudis
afb7b0644b 8309093: Underscore with brackets
Reviewed-by: jlahoda
(cherry picked from commit 8007599756)
2023-06-09 15:31:43 +07:00
Alan Bateman
6b9258f66f 8307478: Implementation of Prepare to Restrict The Dynamic Loading of Agents
Reviewed-by: sspitsyn, cjplummer
(cherry picked from commit 5bd2af26e6)
2023-06-09 15:31:42 +07:00
Tejesh R
7c1cd7cdde 8307105: JFileChooser InvalidPathException when selecting some system folders on Windows
Reviewed-by: aivanov, abhiscxk, dnguyen
(cherry picked from commit 325940b091)
2023-06-09 15:31:41 +07:00
Matias Saavedra Silva
2472c1fc8e 8308891: TestCDSVMCrash.java needs @requires vm.cds
Reviewed-by: dcubed
(cherry picked from commit 101bf2290d)
2023-06-09 15:31:40 +07:00
Doug Simon
4d170d845e 8308954: [JVMCI] code installation increments decompile_count for call_site_target_value failures
Reviewed-by: never
(cherry picked from commit 2bb1972483)
2023-06-09 15:31:39 +07:00
Martin Doerr
d2217a7566 8308469: [PPC64] Implement alternative fast-locking scheme
Reviewed-by: rrich, lucy
(cherry picked from commit 0ab09630c6)
2023-06-09 15:31:38 +07:00
Zdenek Zambersky
5d03f413cb 8309138: Fix container tests for jdks with symlinked conf dir
Reviewed-by: sgehwolf
(cherry picked from commit ec55539534)
2023-06-09 15:31:37 +07:00
Chris Plummer
6d0ebf2abc 8309146: extend JDI StackFrame.setValue() and JDWP StackFrame.setValues minimal support for virtual threads
Reviewed-by: sspitsyn, alanb
(cherry picked from commit e8271649e0)
2023-06-09 15:31:37 +07:00
Chen Liang
51dc034412 8302822: Method/Field/Constructor/RecordComponent::getGenericInfo() is not thread safe
Reviewed-by: stsypanov, redestad
(cherry picked from commit be36096a19)
2023-06-09 15:31:35 +07:00
Chris Plummer
be55ae01dc 8308232: nsk/jdb tests don't pass -verbose flag to the debuggee
Reviewed-by: sspitsyn, lmesnik
(cherry picked from commit c6f20db945)
2023-06-09 15:31:34 +07:00
Mark Powers
e2ddcd8f0e 8307794: Test for HSS/LMS Signature Verification
Reviewed-by: mullan
(cherry picked from commit d987176412)
2023-06-09 15:31:33 +07:00
Ferenc Rakoczi
3916d25e0d 8298127: HSS/LMS Signature Verification
Reviewed-by: weijun, mullan
(cherry picked from commit 050425b141)
2023-06-09 15:31:32 +07:00
Adam Sotona
716c092251 8308856: jdk.internal.classfile.impl.EntryMap::nextPowerOfTwo math problem
Reviewed-by: jlahoda
(cherry picked from commit a6109bf1ea)
2023-06-09 15:31:32 +07:00
Jan Lahoda
d979d0dbc9 8308943: jdk.internal.le build fails on AIX
Reviewed-by: asotona
(cherry picked from commit 6adc242cf3)
2023-06-09 15:31:30 +07:00
Volker Simonis
6b1ad5666d 8307990: jspawnhelper must close its writing side of a pipe before reading from it
Reviewed-by: stuefe, rriggs
(cherry picked from commit 39f6d807db)
2023-06-09 15:31:29 +07:00
Aleksey Shipilev
35332fdf98 8308803: Improve java/util/UUID/UUIDTest.java
Reviewed-by: jpai, rriggs
(cherry picked from commit 4460429d7a)
2023-06-09 15:31:29 +07:00
Christian Hagedorn
a369ad132d 8307683: Loop Predication should not hoist range checks with trap on success projection by negating their condition
Reviewed-by: thartmann, roland
(cherry picked from commit dfd3da3f52)
2023-06-09 15:31:28 +07:00
Thomas Schatzl
5416fd0860 8308766: TLAB initialization may cause div by zero
Reviewed-by: shade, ayang
(cherry picked from commit 96ed1392d1)
2023-06-09 15:31:27 +07:00
Yanhong Zhu
b6b598bf96 8303417: RISC-V: Merge vector instructs with similar match rules
Reviewed-by: fyang, rehn, dzhang
(cherry picked from commit 6c7225f819)
2023-06-09 15:31:26 +07:00
Hao Sun
6f9c4e6159 8308503: AArch64: SIGILL when running with -XX:UseBranchProtection=pac-ret on hardware without PAC feature
Reviewed-by: aph, ngasson, dlong
(cherry picked from commit a46b5acc15)
2023-06-09 15:31:25 +07:00
Sandhya Viswanathan
d46d643a7a 8300865: C2: product reduction in ProdRed_Double is not vectorized
Reviewed-by: fgao, epeter, kvn
(cherry picked from commit f9ad7df4da)
2023-06-09 15:31:24 +07:00
Justin King
d5f89fea9f 8305320: DbgStrings and AsmRemarks are leaking
Reviewed-by: coleenp, fparain
(cherry picked from commit 8eda97dc8d)
2023-06-09 15:31:23 +07:00
Jonathan Gibbons
e0e58b0062 8309150: Need to escape " inside attribute values
Reviewed-by: prappo
(cherry picked from commit 09514745fc)
2023-06-09 15:31:22 +07:00
David Holmes
dc9d1d5014 8309171: Test vmTestbase/nsk/jvmti/scenarios/jni_interception/JI05/ji05t001/TestDescription.java fails after JDK-8308341
Reviewed-by: dcubed, gziemski
(cherry picked from commit 0119969816)
2023-06-09 15:31:21 +07:00
Dean Long
70624cf111 8308975: Fix signed integer overflow in compiler code, part 2
Reviewed-by: aph, coleenp, kvn
(cherry picked from commit f8a924a749)
2023-06-09 15:31:20 +07:00
Chris Plummer
b29ceb9e4f 8308819: add JDWP and JDI virtual thread support for ThreadReference.ForceEarlyReturn
Reviewed-by: sspitsyn, alanb
(cherry picked from commit 5531f6ba1b)
2023-06-09 15:31:19 +07:00
Daniel D. Daugherty
4640b9537d 8309236: ProblemList java/util/concurrent/locks/Lock/OOMEInAQS.java with ZGC and Generational ZGC again
Reviewed-by: bpb, azvegint
(cherry picked from commit e42a4b659a)
2023-06-09 15:31:18 +07:00
Brian Burkhalter
67b9d9b261 8308678: (fs) UnixPath::toRealPath needs additional permissions when running with SM (macOS)
Reviewed-by: lancea, alanb
(cherry picked from commit 8dbd384003)
2023-06-09 15:31:17 +07:00
Roger Riggs
8de7a796c7 8304914: Use OperatingSystem, Architecture, and Version in jpackage
Reviewed-by: asemenyuk
(cherry picked from commit c3cd481a9a)
2023-06-09 15:31:16 +07:00
Chris Plummer
d501322e41 8309159: Some minor comment and code cleanup in jdk/com/sun/jdi/PopFramesTest.java
Reviewed-by: sspitsyn, lmesnik
(cherry picked from commit eae1f59da9)
2023-06-09 15:31:15 +07:00
Daniel D. Daugherty
1868e69088 8309230: ProblemList jdk/incubator/vector/Float64VectorTests.java on aarch64
8309231: ProblemList vmTestbase/nsk/jvmti/scenarios/jni_interception/JI05/ji05t001/TestDescription.java

Reviewed-by: darcy
(cherry picked from commit 45473ef235)
2023-06-09 15:31:12 +07:00
Chen Liang
efd81cb6ba 8299505: findVirtual on array classes incorrectly restricts the receiver type
Reviewed-by: mchung
(cherry picked from commit 78aa5f3fc1)
2023-06-09 15:31:10 +07:00
Xue-Lei Andrew Fan
7bfc3ad6f7 8308022: update for deprecated sprintf for java.base
Reviewed-by: naoto
(cherry picked from commit 42ca6e6942)
2023-06-09 15:31:09 +07:00
Naoto Sato
9c12ec1bcb 8308316: Default decomposition mode in Collator
Reviewed-by: rriggs
(cherry picked from commit 1264902517)
2023-06-09 15:31:08 +07:00
Matthias Baesken
fffcd2f3ab 8308872: enhance logging and some exception in krb5/Config.java
Reviewed-by: weijun
(cherry picked from commit 70670b4af6)
2023-06-09 15:31:07 +07:00
Matias Saavedra Silva
a006a7d290 8308910: Allow executeAndLog to accept running process
Reviewed-by: ccheung, iklam
(cherry picked from commit 024d9b131d)
2023-06-09 15:31:06 +07:00
Emanuel Peter
7703b7df22 8308917: C2 SuperWord::output: assert before bailout with CountedLoopReserveKit
Reviewed-by: kvn, thartmann
(cherry picked from commit 25b9803056)
2023-06-09 15:31:05 +07:00
Yadong Wang
b7edca769a 8308765: RISC-V: Expand size of stub routines for zgc only
Reviewed-by: fjiang, fyang
(cherry picked from commit d66b6d8fd2)
2023-06-09 15:31:03 +07:00
Daniel Fuchs
d6c485a0c4 8309120: java/net/httpclient/AsyncShutdownNow.java fails intermittently
Reviewed-by: jpai
(cherry picked from commit 4aea7dab15)
2023-06-09 15:31:02 +07:00
Albert Mingkun Yang
e1fd31b718 8309111: Removing unused constructor of PerfLongCounter and PerfLongVariable
Reviewed-by: dholmes
(cherry picked from commit a990322429)
2023-06-09 15:31:01 +07:00
Aggelos Biboudis
d6876c3c1a 8309054: Parsing of erroneous patterns succeeds
Reviewed-by: jlahoda
(cherry picked from commit 4f3a95af2f)
2023-06-09 15:30:59 +07:00
Johan Sjölen
7fe7c61596 8309044: Replace NULL with nullptr, final sweep of hotspot code
Reviewed-by: stefank, dholmes, kvn, amitkumar
(cherry picked from commit 4f16161607)
2023-06-09 15:30:58 +07:00
Leo Korinth
cd98db8b1e 8309048: Remove malloc locker test case
Reviewed-by: dholmes, tschatzl, coleenp, lmesnik
(cherry picked from commit 88236263dc)
2023-06-09 15:30:56 +07:00
Kim Barrett
7685dde64d 8240774: [REDO] G1DirtyCardQueue destructor has useless flush
Reviewed-by: dholmes, ayang, tschatzl
(cherry picked from commit 927a9ed683)
2023-06-09 15:30:55 +07:00
Dingli Zhang
fd68ea8d69 8308997: RISC-V: Sign extend when comparing 32-bit value with zero instead of testing the sign bit
Co-authored-by: zifeihan <caogui@iscas.ac.cn>
Reviewed-by: fjiang, fyang
(cherry picked from commit 119994f3ce)
2023-06-09 15:30:53 +07:00
Leonid Mesnik
f60435a570 8308986: Disable svc tests failing with virtual thread factory
Reviewed-by: dholmes, dcubed, sspitsyn
(cherry picked from commit 327733c93d)
2023-06-09 15:30:52 +07:00
Alexey Ushakov
3ed5db8e59 JBR-5704 displaySyncOFF: javax/swing/JDialog/Transparency/TransparencyTest.java: JDialog transparency lost upon iconify/deiconify sequence
Corrected startRedraw method to call setNeedsDisplay in displaySync=false mode

(cherry picked from commit bd291402b1)
2023-06-08 12:43:48 +02:00
Nikita Gubarkov
31bec5b54b JBR-5637 Linux: force release grabs before doing _NET_WM_MOVERESIZE. 2023-06-06 22:06:16 +02:00
Sergey Shelomentsev
258e860c9c fixup! JBR-5670 restore original display mode 2023-06-06 21:55:52 +03:00
Sergey Shelomentsev
559499ef3d JBR-5701 update source and target java version in J2DBench build file 2023-06-06 15:54:06 +03:00
Sergey Shelomentsev
7bd0a4f9b8 JBR-2870 add resression test for JPopupMenu
- verify that the popup menu is usable if overlaps WM's dock panel of the bottom of screen
2023-06-06 11:42:43 +03:00
Nikita Tsarev
34f54e4e9e JBR-5630: vmoption to change dead key reporting behavior on macOS 2023-06-02 17:38:29 +02:00
Nikita Tsarev
d9e8213d6a JBR-5469: Fix NextAppWinKey behavior with certain keys 2023-06-02 17:38:23 +02:00
Nikita Tsarev
f45ba83159 JBR-5558: macOS keyboard rewrite 2 2023-06-02 17:38:17 +02:00
Maxim Kartashev
7d51b5d1c0 JBR-5666 Wayland: WLToolkit doesn't work with weston
Multiple Wayland buffers support.
2023-06-02 19:05:40 +04:00
Vladislav Rassokhin
473c0e7675 JBR-5600 Reduce noise in signing scripts output
(cherry picked from commit 4e2fa80e86)
2023-06-02 20:33:46 +07:00
Vladislav Rassokhin
c0fc88ae56 JBR-5600 Sign frameworks as whole, verify framework signature before full app sign
(cherry picked from commit ebb82ed952)
2023-06-02 20:33:45 +07:00
Vladislav Rassokhin
3c0fb6c09d tools/mac/scripts: minor improvements
* don't move into itself
* use `PKG_NAME` variable instead of `${APP_NAME}.pkg`
* cleanup sign.sh
* add `SCRIPT_VERBOSE` env variable to control `set -x`

(cherry picked from commit 45a9853b23)
2023-06-02 20:33:45 +07:00
Vladislav Rassokhin
6411043581 JBR-5600 Staple .pkg with signature
(cherry picked from commit e1dc322fd3)
2023-06-02 20:33:45 +07:00
Vladislav Rassokhin
5761732efc JBR-5600 Notarize macOS binaries using notarytool
(cherry picked from commit f0f1734d50)
2023-06-02 20:33:44 +07:00
Vladislav Rassokhin
ae867dd13d JBR-5600 Sign macOS binaries using jet-sign
(cherry picked from commit 9cbf4e489b)
2023-06-02 20:33:44 +07:00
David Holmes
8c4aed5120 8308341: JNI_GetCreatedJavaVMs returns a partially initialized JVM
Reviewed-by: jsjolen, gziemski
(cherry picked from commit 1e6770fb97)
2023-06-02 18:39:01 +07:00
Joe Darcy
e1fde81faa 8309134: Augment test/langtools/tools/javac/versions/Versions.java for JDK 21 language changes
Reviewed-by: jjg
(cherry picked from commit cb40db052c)
2023-06-02 18:39:01 +07:00
Mandy Chung
447d381f5d 8307944: ClassFileDumper should only load java.nio.file.Path if enabled
Reviewed-by: rriggs
(cherry picked from commit de7fd1c306)
2023-06-02 18:38:59 +07:00
Valerie Peng
bc28eab97d 8297885: misc sun/security/pkcs11 tests timed out
Reviewed-by: xuelei
(cherry picked from commit 7891de331a)
2023-06-02 18:38:59 +07:00
Roger Riggs
ce6acc93c2 8308960: Decouple internal Version and OperatingSystem classes
Reviewed-by: mchung
(cherry picked from commit 323d6ceda6)
2023-06-02 18:38:58 +07:00
Joe Darcy
e219466fe1 8308987: Update java.lang.Class to use javadoc snippets
Reviewed-by: alanb
(cherry picked from commit 1b8e6bf31c)
2023-06-02 18:38:58 +07:00
Daniel Fuchs
7fb6eff67d 8307648: java/net/httpclient/ExpectContinueTest.java timed out
Reviewed-by: djelinski
(cherry picked from commit 04b0e785f6)
2023-06-02 18:38:57 +07:00
Weijun Wang
f81bdb9fbf 8297878: KEM: Implementation
Reviewed-by: ascarpino, mullan
(cherry picked from commit 6b90b0519e)
2023-06-02 18:38:57 +07:00
Brian Burkhalter
a07e48d26e 8290499: new File(parent, "/") breaks normalization – creates File with slash at the end
Reviewed-by: rriggs
(cherry picked from commit 21af8bae38)
2023-06-02 18:38:56 +07:00
Jorn Vernee
82be64576d 8308992: New test TestHFA fails with zero
Reviewed-by: mcimadamore
(cherry picked from commit 804f198c73)
2023-06-02 18:38:56 +07:00
Jasmine Karthikeyan
53be7e77af 8051725: Improve expansion of Conv2B nodes in the middle-end
Reviewed-by: thartmann, qamai, sviswanathan
(cherry picked from commit fb0b1f0c23)
2023-06-02 18:38:55 +07:00
Paul Hohensee
cddee5368d 8304074: [JMX] Add an approximation of total bytes allocated on the Java heap by the JVM
Reviewed-by: dholmes, mchung
(cherry picked from commit 3eced01f9e)
2023-06-02 18:38:54 +07:00
Jie Fu
b608a35ff5 8309110: Build failure after JDK-8307795 due to warnings in micro-benchmark StoreMaskTrueCount.java
Reviewed-by: thartmann
(cherry picked from commit 15e028530a)
2023-06-02 18:38:54 +07:00
Antonios Printezis
6769e5140a 8308977: gtest:codestrings fails on riscv
Reviewed-by: fyang
(cherry picked from commit 4526282266)
2023-06-02 18:38:53 +07:00
changpeng1997
6aebb8deb0 8307795: AArch64: Optimize VectorMask.truecount() on Neon
Reviewed-by: aph, eliu
(cherry picked from commit f600d0369a)
2023-06-02 18:38:53 +07:00
Renjith
f077c476aa 8309095: Remove UTF-8 character from TaskbarPositionTest.java
Reviewed-by: aivanov
(cherry picked from commit 07f2070411)
2023-06-02 18:38:52 +07:00
Maurizio Cimadamore
e1a635436f 8309042: MemorySegment::reinterpret cleanup action is not called for all overloads
Reviewed-by: jvernee
(cherry picked from commit 2b186e246e)
2023-06-02 18:38:52 +07:00
Erik Österlund
227afcd6d9 8308881: Strong CLD oop handle roots are demoted to non-roots concurrently
Reviewed-by: stefank, coleenp
(cherry picked from commit 78aac241b8)
2023-06-02 18:38:51 +07:00
Emanuel Peter
0e6521ce9c 8302670: use-after-free related to PhaseIterGVN interaction with Unique_Node_List and Node_Stack
Co-authored-by: Justin King <jcking@openjdk.org>
Reviewed-by: thartmann, chagedorn, jcking
(cherry picked from commit 1f1f604071)
2023-06-02 18:38:51 +07:00
Tobias Hartmann
ffd88cefa8 8309077: Problemlist compiler/jvmci/TestUncaughtErrorInCompileMethod.java
Reviewed-by: chagedorn
(cherry picked from commit d35a550f6d)
2023-06-02 18:38:50 +07:00
Gui Cao
68d42b43d4 8308817: RISC-V: Support VectorTest node for Vector API
Co-authored-by: Dingli Zhang <dingli@iscas.ac.cn>
Reviewed-by: fjiang, fyang
(cherry picked from commit 457e1cb827)
2023-06-02 18:38:50 +07:00
Ioi Lam
96216a61b3 8308906: Make CIPrintCompilerName a diagnostic flag
Reviewed-by: kvn, stuefe
(cherry picked from commit 7508d9f9e0)
2023-06-02 18:38:49 +07:00
Prasanta Sadhukhan
1906a97381 8309060: Compilation Error in javax/swing/event/FocusEventCauseTest.java
Reviewed-by: abhiscxk, aivanov
(cherry picked from commit a4bae3a9e2)
2023-06-02 18:38:49 +07:00
Renjith
7496c13940 8289547: Update javax/swing/Popup/TaskbarPositionTest.java
Reviewed-by: aivanov, dmarkov, honkar
(cherry picked from commit d73fc70ea2)
2023-06-02 18:38:48 +07:00
Markus Grönlund
ff6d2f47da 8307488: Incorrect weight of the first ObjectAllocationSample JFR event
Reviewed-by: egahlin
(cherry picked from commit 7cf6eecdc8)
2023-06-02 18:38:47 +07:00
Doug Simon
df91c85273 8308930: [JVMCI] TestUncaughtErrorInCompileMethod times out
Reviewed-by: never
(cherry picked from commit a5d8d59469)
2023-06-02 18:38:47 +07:00
Prasanta Sadhukhan
f497bf3056 8306119: Many components respond to a mouse event by requesting focus without supplying the MOUSE_EVENT cause
Reviewed-by: jdv
(cherry picked from commit 70130d3b16)
2023-06-02 18:38:46 +07:00
Albert Mingkun Yang
a62ae67460 8308948: Remove unimplemented ThreadLocalAllocBuffer::reset
Reviewed-by: tschatzl
(cherry picked from commit 6360b49931)
2023-06-02 18:38:45 +07:00
Dingli Zhang
7c364e3436 8308915: RISC-V: Improve temporary vector register usage avoiding the use of v0
Reviewed-by: yzhu, fyang
(cherry picked from commit e21f865d84)
2023-06-02 18:38:45 +07:00
Christian Stein
43d4facc14 8306560: Add TOOLING.jsh load file
Reviewed-by: jlahoda
(cherry picked from commit 547a8b40b3)
2023-06-02 18:38:44 +07:00
Gerard Ziemski
4c0961db3e 8306428: RunThese30M.java crashed with assert(early->flag() == current->flag() || early->flag() == mtNone)
Reviewed-by: jsjolen, stuefe
(cherry picked from commit ca54f4e007)
2023-06-02 18:38:44 +07:00
Erik Gahlin
25d3c8e6c2 8308876: JFR: Deserialization of EventTypeInfo uses incorrect attribute names
Reviewed-by: mgronlun
(cherry picked from commit 5fdb22f911)
2023-06-02 18:38:43 +07:00
Serguei Spitsyn
dc514f00cd 8308814: extend SetLocalXXX minimal support for virtual threads
Reviewed-by: cjplummer
(cherry picked from commit bd113ee048)
2023-06-02 18:38:43 +07:00
Hannes Wallnöfer
a272dbdf55 8286470: Support searching for sections in class/package javadoc
Reviewed-by: jjg
(cherry picked from commit a92363461d)
2023-06-02 18:38:43 +07:00
Calvin Cheung
1d5e9ef6b5 8308594: Use atomic bitset function for PackageEntry::_defined_by_cds_in_class_path
Reviewed-by: coleenp, lfoltan
(cherry picked from commit 55d297fdda)
2023-06-02 18:38:42 +07:00
Xue-Lei Andrew Fan
694d482fa3 8308801: update for deprecated sprintf for libnet in java.base
Reviewed-by: djelinski, rriggs
(cherry picked from commit c72b547425)
2023-06-02 18:38:42 +07:00
Erik Gahlin
7372da0fe2 8308935: jdk.management.jfr.RecordingInfo.toString() lacks test coverage
Reviewed-by: mgronlun
(cherry picked from commit 77c5adb09e)
2023-06-02 18:38:41 +07:00
Ashutosh Mehra
dc4ef0f0e8 8308657: ReplayInline is not availabe in production build
Reviewed-by: kvn, roland, thartmann
(cherry picked from commit ce5251aff7)
2023-06-02 18:38:41 +07:00
Stefan Karlsson
0f27f4b246 8308589: gc/cslocker/TestCSLocker.java timed out
Reviewed-by: eosterlund
(cherry picked from commit cc0976bf7f)
2023-06-02 18:38:40 +07:00
Kevin Walls
66520b30af 8299665: /proc/self/stat parsing in libmanagement broken by execname with spaces
Reviewed-by: sspitsyn, amenkov
(cherry picked from commit 17ef8a44a9)
2023-06-02 18:38:40 +07:00
Tejesh R
7b58f3c48b 8306812: Open source several AWT Miscellaneous tests
Reviewed-by: psadhukhan
(cherry picked from commit c494770ca0)
2023-06-02 18:38:39 +07:00
Erik Österlund
375c694d9b 8308009: Generational ZGC: OOM before clearing all SoftReferences
Reviewed-by: stefank, aboldtch
(cherry picked from commit d3b9b364da)
2023-06-02 18:38:39 +07:00
Roland Westrelin
213b6712f7 8305189: C2 failed "assert(_outcnt==1) failed: not unique"
Reviewed-by: chagedorn, thartmann
(cherry picked from commit bac02b6e9d)
2023-06-02 18:38:38 +07:00
Johan Sjölen
6b9daf666e 8299974: Replace NULL with nullptr in share/adlc/
Reviewed-by: dlong, kvn
(cherry picked from commit 62537d200f)
2023-06-02 18:38:38 +07:00
Doug Simon
61c1759200 8308931: Problemlist compiler/jvmci/TestUncaughtErrorInCompileMethod.java
Reviewed-by: thartmann
(cherry picked from commit f09345b3a4)
2023-06-02 18:38:37 +07:00
Stefan Karlsson
1046189abe 8308844: ProblemList gc/z/TestHighUsage.java with Generational ZGC on windows x64
Reviewed-by: aboldtch, tschatzl
(cherry picked from commit 7c072dbd9d)
2023-06-02 18:38:37 +07:00
Tejesh R
bbc192bc8f 8306137: Open source several AWT ScrollPane related tests
Reviewed-by: aivanov
(cherry picked from commit 4becb7bcb6)
2023-06-02 18:38:36 +07:00
Roland Westrelin
042814e6e7 8308583: SIGSEGV in GraphKit::gen_checkcast
Reviewed-by: thartmann, kvn, never
(cherry picked from commit 199b1bf500)
2023-06-02 18:38:36 +07:00
Sergey Shelomentsev
bd49544ff5 JBR-5670 restore initial display mode after test execution 2023-06-02 14:29:28 +03:00
Sergey Shelomentsev
e0f6c712cb JBR-4880 Fix DeadKeySystemAssertionDialog to avoid receiving key event out of the window 2023-06-02 14:29:24 +03:00
Maxim Kartashev
2626653c5d JBR-5658 Wayland: incorrect scaling of window content
The buffer scale is changed atomically with the size.
WLGraphicsConfig made immutable and is re-created when scaling changes.
WLGraphicsDevice is also re-created when its position changes.
2023-06-01 13:24:53 +04:00
Alexey Ushakov
faead95d98 JBR-5649 Flickering in multi-monitor configuration
Provided corrected initial value for currentDisplayID

(cherry picked from commit 9ba9286595)
2023-05-31 14:34:33 +02:00
Nikita Provotorov
55c8a871ec JBR-5668: The implementation of a11y announcing for macOS crashes with -Xcheck:jni.
- Create a global reference of the passed to EDT accessible object (the local reference) to use it in the AppKit thread ;
- Enable -Xcheck:jni in the tests ;
- Make the tests handle the problematic case .

(cherry picked from commit cba981df4b)
2023-05-30 17:53:16 +03:00
Sergey Shelomentsev
23f2a642dc JBR-5579 Update mouse location checks, set window always on top for ActionListenerTest 2023-05-29 18:40:16 +03:00
Sergey Shelomentsev
6092ee64de JBR-5551 update hit tests on custom title bar
- set windows always on top
- verify mouse location before clicking
2023-05-29 18:40:12 +03:00
Sergey Shelomentsev
c5cdfd13aa remove jb/java/awt/CustomTitleBar/MouseEventsOnClientArea.java 2023-05-29 17:18:31 +03:00
Sergey Shelomentsev
69fcc807ed JBR-5577 fix MouseEventsOnClientArea test
- add Swing/AWT specific Task runners
- split MouseEventsOnClientArea to separate AWT/Swing tests
- use CountDownLatch for tracking mouse events
2023-05-29 17:17:22 +03:00
Sergey Shelomentsev
c2d200da0b remove jb/java/awt/Window/ZOrderOnModalDialogActivation.java 2023-05-29 15:29:35 +03:00
Sergey Shelomentsev
120f6a977c JBR-4494 pass ui scale options for child process 2023-05-29 15:29:30 +03:00
Justin Lu
71d23799bc 8159023: Engineering notation of DecimalFormat does not work as documented
Reviewed-by: naoto
(cherry picked from commit 46c4da7fdd)
2023-05-26 19:27:21 +03:00
Daniel D. Daugherty
3eeec554d3 8308907: ProblemList java/awt/Toolkit/GetScreenInsetsCustomGC/GetScreenInsetsCustomGC.java on linux-x64
8308908: ProblemList javax/sound/sampled/Clip/ClipIsRunningAfterStop.java on linux-x64
8308909: ProblemList sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java on linux-x64

Reviewed-by: mikael
(cherry picked from commit ee321c70e5)
2023-05-26 19:27:21 +03:00
Calvin Cheung
e42a8cf256 8308073: ClassLoaderExt::append_boot_classpath should handle dynamic archive
Reviewed-by: iklam, matsaave
(cherry picked from commit dc7683a051)
2023-05-26 19:27:20 +03:00
Erik Gahlin
817a6d5c5e 8304375: jdk/jfr/api/consumer/filestream/TestOrdered.java failed with "Expected at least some events to be out of order! Reuse = false"
Reviewed-by: mgronlun
(cherry picked from commit 4870234552)
2023-05-26 19:27:20 +03:00
Ashutosh Mehra
b75a6280ea 8308672: Add version number in the replay file generated by DumpInline
Reviewed-by: kvn
(cherry picked from commit 7d2a7ce240)
2023-05-26 19:27:19 +03:00
Naoto Sato
fded148865 8308108: Support Unicode extension for collation settings
Reviewed-by: iris, rriggs, jlu, alanb
(cherry picked from commit 27ba8bd4ed)
2023-05-26 19:27:19 +03:00
Doug Simon
887d28aca1 8307125: compiler/jvmci/compilerToVM/MaterializeVirtualObjectTest.java hits assert(!Continuation::is_frame_in_continuation(thread(), fr())) failed: No support for deferred values in continuations
Reviewed-by: never
(cherry picked from commit 89b3c375ac)
2023-05-26 19:27:18 +03:00
Erik Gahlin
3a552cc9a2 8306703: JFR: Summary views
Reviewed-by: mgronlun
(cherry picked from commit 98acce13d5)
2023-05-26 19:27:18 +03:00
Maurizio Cimadamore
07352f7a9c 8300491: SymbolLookup::libraryLookup accepts strings with terminators
Reviewed-by: psandoz
(cherry picked from commit 534de6d8ae)
2023-05-26 19:27:17 +03:00
Tyler Steele
7a01257890 8286597: Implement PollerProvider on AIX
Reviewed-by: mdoerr, alanb, vtewari
(cherry picked from commit 48d21bd089)
2023-05-26 19:27:17 +03:00
Michael McMahon
58fcc3e546 8300038: Make new version of JNU_GetStringPlatformChars which checks for null characters
Reviewed-by: dfuchs, naoto

(cherry picked from commit e7edf8d145)
2023-05-26 19:27:02 +03:00
Erik Gahlin
8016e48d24 8308335: JFR: Remove @Experimental from Virtual Threads events
Reviewed-by: alanb, mgronlun
(cherry picked from commit 90e57fd5a9)
2023-05-26 19:20:53 +03:00
Albert Mingkun Yang
8c09a8d7b5 8308098: G1: Remove redundant checks in G1ObjectCountIsAliveClosure
Reviewed-by: tschatzl, iwalulya
(cherry picked from commit 7e2e05d836)
2023-05-26 19:20:52 +03:00
Coleen Phillimore
d89bb15be6 8308655: Narrow types of ConstantPool and ConstMethod returns
Reviewed-by: fparain, matsaave
(cherry picked from commit 2599ada152)
2023-05-26 19:20:51 +03:00
Roberto Castañeda Lozano
4441fc361e 8308746: C2 IR test failures for TestFpMinMaxReductions.java with SSE2
Co-authored-by: Jatin Bhateja <jbhateja@openjdk.org>
Reviewed-by: chagedorn, thartmann
(cherry picked from commit 5a0a238f67)
2023-05-26 19:20:51 +03:00
Pavel Rappo
30d8a28973 8308735: Typos in parameter names
Reviewed-by: naoto, iris, bpb
(cherry picked from commit 38367d3c3a)
2023-05-26 19:20:49 +03:00
Christian Hagedorn
749ffd5c0e 8305635: Replace Parse Predicate IfNode with new ParsePredicateNode and route predicate queries through dedicated classes
Reviewed-by: thartmann, kvn
(cherry picked from commit 4f096eb7c9)
2023-05-26 19:20:48 +03:00
Sergey Bylokhov
eca25204b0 8307132: Cleanup the code of sun.java2d.cmm.lcms package
Reviewed-by: prr
(cherry picked from commit f27bc59f85)
2023-05-26 19:20:48 +03:00
Jaikiran Pai
16d485b39a 8308475: Make the thread dump files generated by jcmd Thread.dump_to_file jtreg failure handler action easily accessible
Reviewed-by: lmesnik
(cherry picked from commit 426ebf4fe9)
2023-05-26 19:20:47 +03:00
Axel Boldt-Christmas
796eb11233 8307958: Metaspace verification is slow causing extreme class unloading times
Reviewed-by: stuefe, coleenp
(cherry picked from commit 8d8153e98a)
2023-05-26 19:20:45 +03:00
Christian Stein
bcb1637ec5 8144891: ToolBox should use java.nio.file.Path internally, instead of java.io.File
Reviewed-by: jjg
(cherry picked from commit d87713440a)
2023-05-26 19:20:44 +03:00
Leo Korinth
05a8c43bd2 8308506: Reduce testing time by removing combinations tested
Reviewed-by: tschatzl, lmesnik
(cherry picked from commit aaa61899c9)
2023-05-26 19:20:43 +03:00
Aggelos Biboudis
54f4f334aa 8308727: Compiler should accept final unnamed variables in try-with-resources
Reviewed-by: jlahoda
(cherry picked from commit 4500bb7a67)
2023-05-26 19:20:41 +03:00
Hannes Wallnöfer
5a6f831906 8305710: Line breaks in search tags cause invalid JSON in index file
Reviewed-by: jjg
(cherry picked from commit 3272e2597a)
2023-05-26 19:20:40 +03:00
Hannes Wallnöfer
68b6723341 8305958: Use links instead of buttons for auto-generated header links
Reviewed-by: jjg
(cherry picked from commit 3f4abff59c)
2023-05-26 19:20:40 +03:00
Adam Sotona
aa90bcc0f8 8308549: Classfile API should fail to generate over-sized Code attribute
Reviewed-by: mchung
(cherry picked from commit bfcae68ed1)
2023-05-26 19:20:39 +03:00
Vladimir Kempik
87dc6004e7 8308656: RISC-V: vstring_compare doesnt manifest usage of all vector registers
Reviewed-by: yzhu, fyang
(cherry picked from commit 2a18e537d6)
2023-05-26 19:20:38 +03:00
Guoxiong Li
72fbf5db95 8288619: Unexpected parsing for @see
Reviewed-by: jjg
(cherry picked from commit a291f002cd)
2023-05-26 19:20:37 +03:00
Serguei Spitsyn
ac96444ba5 8308400: add ForceEarlyReturn support for virtual threads
Reviewed-by: alanb, lmesnik
(cherry picked from commit 89b99143ac)
2023-05-26 19:20:36 +03:00
Chen Liang
a6dd1f22e4 8307652: sealed class hierarchy graph doesn't distinguish non-sealed classes
Reviewed-by: pminborg, jjg
(cherry picked from commit 1451ac1770)
2023-05-26 19:20:35 +03:00
Alex Menkov
e3c8db0437 8299414: JVMTI FollowReferences should support references from VirtualThread stack
Reviewed-by: sspitsyn, kevinw
(cherry picked from commit 207fbcb083)
2023-05-26 19:20:35 +03:00
Jim Laskey
3ff2db0179 8308040: Evaluate new public types in non-public classes
Reviewed-by: rriggs, darcy
(cherry picked from commit b44fa365ca)
2023-05-26 19:20:34 +03:00
Tom Rodriguez
71a4a029d4 8308291: compiler/jvmci/meta/ProfilingInfoTest.java fails with -XX:TieredStopAtLevel=1
Reviewed-by: kvn, chagedorn
(cherry picked from commit ac89e3045b)
2023-05-26 19:20:34 +03:00
Coleen Phillimore
daef083984 8297887: Update Siphash
Reviewed-by: lfoltan
(cherry picked from commit bacf652311)
2023-05-26 19:20:33 +03:00
Chris Plummer
5b8d406a04 8308237: add JDWP and JDI virtual thread support for ThreadReference.PopFrames
8308481: JDI TestScaffold does not support passing app arguments to the debuggee
8305632: Test com/sun/jdi/PopAndInvokeTest.java fails with OpaqueFrameException

Reviewed-by: alanb, sspitsyn, lmesnik
(cherry picked from commit 89f2d458a2)
2023-05-26 19:20:32 +03:00
Erik Gahlin
9921c84601 8307738: JFR: EventStream.openRepository() drops events
Reviewed-by: mgronlun
(cherry picked from commit d10467e27b)
2023-05-26 19:20:32 +03:00
Daniel Fuchs
928c2a5eb1 8308310: HttpClient: Avoid logging or locking from within synchronized blocks
Reviewed-by: jpai
(cherry picked from commit 736b90d54b)
2023-05-26 19:20:31 +03:00
Martin Doerr
7a59c80189 8308761: New test TestHFA needs adaptation for JDK-8308276
Reviewed-by: mcimadamore, mbaesken
(cherry picked from commit 7764f46e9e)
2023-05-26 19:20:30 +03:00
Vitaly Provodin
d35559a45a fixup! IDEA-141456 Multimonitor HIDPI support for Linux 2023-05-26 19:19:55 +03:00
Maxim Kartashev
ef548335c4 8305578: X11GraphicsDevice.pGetBounds() is slow in remote X11 sessions
Reviewed-by: avu, serb

(cherry picked from commit d7245f70e7)
2023-05-26 19:19:05 +03:00
Maxim Kartashev
cd781631a8 Revert "JBR-3688 PyCharm incredibly slow with fakexrandr"
This reverts commit 0aef3419
2023-05-26 19:11:50 +03:00
Vitaly Provodin
85f65db694 Revert "JBR-3813 Regression after fix for JBR-3688"
This reverts commit bc957c83b7.
2023-05-26 19:10:01 +03:00
Vitaly Provodin
a3045012ed Revert "JBR-3916 Deadlock in pGetBounds() on Linux"
This reverts commit 603509c6c4.
2023-05-26 19:09:49 +03:00
Viktor Klang
5de91a382c 8298066: java/util/concurrent/locks/Lock/OOMEInAQS.java timed out
Reviewed-by: alanb
(cherry picked from commit 544978cb76)
2023-05-26 19:07:22 +03:00
Thomas Schatzl
d64497e9a6 8171221: Remove -XX:+CheckMemoryInitialization
Reviewed-by: ayang, shade
(cherry picked from commit 65c8dbe693)
2023-05-26 19:07:22 +03:00
Xiaolin Zheng
d97eb806e1 8308091: Remove unused iRegIHeapbase() matching operand
Reviewed-by: fyang, thartmann
(cherry picked from commit 2d4d850813)
2023-05-26 19:07:21 +03:00
Emanuel Peter
3e8bcf5bae 8308758: Problemlist compiler/c2/irTests/TestVectorConditionalMove.java
Reviewed-by: chagedorn
(cherry picked from commit b7a84b0fd7)
2023-05-26 19:07:20 +03:00
Martin Doerr
8ba055c53b 8303040: linux PPC64le: Implementation of Foreign Function & Memory API (Preview)
Reviewed-by: jvernee, rrich
(cherry picked from commit 20f15352a3)
2023-05-26 19:07:19 +03:00
Tobias Holenstein
cc25f90747 8302736: Major performance regression in Math.log on aarch64
Reviewed-by: thartmann, dlong, aph
(cherry picked from commit 466ec300fc)
2023-05-26 19:07:18 +03:00
Doug Simon
b0c8a2522f 8308151: [JVMCI] capture JVMCI exceptions in hs-err
Reviewed-by: never
(cherry picked from commit 05c095cf39)
2023-05-26 19:07:18 +03:00
Emanuel Peter
b6432122b3 8306302: C2 Superword fix: use VectorMaskCmp and VectorBlend instead of CMoveVF/D
Reviewed-by: fgao, jbhateja
(cherry picked from commit beb75e651f)
2023-05-26 19:07:17 +03:00
Jamil Nimeh
f15bdf80a1 8179502: Enhance OCSP, CRL and Certificate Fetch Timeouts
Reviewed-by: mullan
(cherry picked from commit 2836c34b64)
2023-05-26 19:07:16 +03:00
Chen Liang
0313218064 8306698: Add overloads to MethodTypeDesc::of
Reviewed-by: mchung
(cherry picked from commit 8ffa264cf0)
2023-05-26 19:07:15 +03:00
Valerie Peng
e1d80270e5 8301154: SunPKCS11 KeyStore deleteEntry results in dangling PrivateKey entries
Reviewed-by: weijun, hchao
(cherry picked from commit 6b27dad76e)
2023-05-26 19:07:15 +03:00
Daniel D. Daugherty
3dc13d4f76 8308716: ProblemList java/util/concurrent/ScheduledThreadPoolExecutor/BasicCancelTest.java with genzgc on windows-x64
8308718: ProblemList three mlvm/indy/func/jvmti tests on windows-x64 in Xcomp mode
8308720: ProblemList java/awt/event/SequencedEvent/MultipleContextsFunctionalTest.java on macosx-x64

Reviewed-by: azvegint, darcy
(cherry picked from commit ed0e956fc2)
2023-05-26 19:07:14 +03:00
Afshin Zafari
497683df17 8303942: os::write should write completely
Reviewed-by: coleenp, iklam, dholmes, mgronlun
(cherry picked from commit bddf48380e)
2023-05-26 19:07:13 +03:00
Quan Anh Mai
f7d1ab24b0 8306706: Support out-of-line code generation for MachNodes
Reviewed-by: thartmann, kvn
(cherry picked from commit ab241b3428)
2023-05-26 19:07:12 +03:00
Brian Burkhalter
d1301e4a06 8308016: Use snippets in java.io package
Reviewed-by: rriggs
(cherry picked from commit 710453c676)
2023-05-26 19:07:12 +03:00
Axel Boldt-Christmas
b40d6fe963 8308116: jdk.test.lib.compiler.InMemoryJavaCompiler.compile does not close files
Reviewed-by: lmesnik, stefank, jlahoda
(cherry picked from commit e9320f31dc)
2023-05-26 19:07:11 +03:00
changpeng1997
172745cbee 8307523: [vectorapi] Optimize MaskFromLongBenchmark.java
Reviewed-by: qamai, xgong, ngasson
(cherry picked from commit 97d3b2731e)
2023-05-26 19:07:10 +03:00
Jamil Nimeh
872a8f2c57 8305091: Change ChaCha20 cipher init behavior to match AES-GCM
Reviewed-by: djelinski, ascarpino
(cherry picked from commit bb0ff48aa9)
2023-05-26 19:07:09 +03:00
Jan Kratochvil
a19b282537 8308544: Fix compilation regression from JDK-8306983 on musl libc
Reviewed-by: bpb, stuefe
(cherry picked from commit c0c4d77192)
2023-05-26 19:07:07 +03:00
Daniel Fuchs
a80f5b32d3 8308565: HttpClient: Sanitize logging while stopping
Reviewed-by: jpai
(cherry picked from commit 9e196b3631)
2023-05-26 19:07:07 +03:00
Daniel Fuchs
6100f2ab46 8308545: java/net/httpclient/ShutdownNow.java fails with "stream 1 cancelled"
Reviewed-by: jpai
(cherry picked from commit 582ddeb2b2)
2023-05-26 19:07:06 +03:00
Jan Lahoda
a17ef3c75c 8307814: In the case of two methods with Record Patterns, the second one contains a line number from the first method
Reviewed-by: vromero, godin
(cherry picked from commit 1cfb265bef)
2023-05-26 19:07:06 +03:00
Per Minborg
f610888b50 8308281: Java snippets in the FFM API need to be updated
Reviewed-by: mcimadamore
(cherry picked from commit eb11508eff)
2023-05-26 19:07:06 +03:00
Emanuel Peter
bf1604fedf 8305073: Fix VerifyLoopOptimizations - step 2 - verify idom
Reviewed-by: chagedorn, thartmann, kvn
(cherry picked from commit 26227a6ff8)
2023-05-26 19:07:05 +03:00
Aggelos Biboudis
056d810845 8305582: Compiler crash when compiling record patterns with var
Reviewed-by: vromero, jlahoda
(cherry picked from commit 80d7de7074)
2023-05-26 19:07:05 +03:00
Axel Boldt-Christmas
0808e432e9 8308500: ZStatSubPhase::register_start should not call register_gc_phase_start if ZAbort::should_abort()
Reviewed-by: stefank, eosterlund
(cherry picked from commit e55961331e)
2023-05-26 19:07:04 +03:00
Emanuel Peter
eb8d934a73 8260943: C2 SuperWord: Remove dead vectorization optimization added by 8076284
Reviewed-by: kvn, thartmann
(cherry picked from commit bdd240283e)
2023-05-26 19:07:04 +03:00
Amit Kumar
6352e7439a 8308403: [s390x] separate remaining_cargs from z_abi_160
Reviewed-by: mdoerr, lucy
(cherry picked from commit 4f0f776187)
2023-05-26 19:07:03 +03:00
Emanuel Peter
c545837a06 8302652: [SuperWord] Reduction should happen after loop, when possible
Reviewed-by: kvn, pli, jbhateja, sviswanathan
(cherry picked from commit 06b0a5e038)
2023-05-26 19:07:03 +03:00
Matthias Baesken
64b7431be4 8308300: enhance exceptions in MappedMemoryUtils.c
Reviewed-by: alanb, clanger, bpb
(cherry picked from commit 69f508a2ac)
2023-05-26 19:07:01 +03:00
Adam Sotona
b5671ea52e 8308093: Disable language preview features use in JDK
Reviewed-by: liach, erikj, alanb, darcy
(cherry picked from commit c4408278d1)
2023-05-26 19:07:00 +03:00
Doug Simon
29ea3ef3eb 8306992: [JVMCI] mitigate more against JVMCI related OOME causing VM to exit
Reviewed-by: never
(cherry picked from commit 422128b70a)
2023-05-26 19:07:00 +03:00
Alan Bateman
bfa616e392 8308038: java/util/concurrent/ThreadPerTaskExecutor/ThreadPerTaskExecutorTest.java timed out
Reviewed-by: dfuchs, jpai
(cherry picked from commit fe8c689eee)
2023-05-26 19:06:59 +03:00
Alan Bateman
0cb7356888 8308235: ThreadContainer registry accumulates weak refs
Reviewed-by: jpai
(cherry picked from commit ada416e66c)
2023-05-26 19:06:59 +03:00
Ichiroh Takiguchi
c8344e2ee1 8308046: Move Solaris related charsets from java.base to jdk.charsets module
Reviewed-by: naoto
(cherry picked from commit 5d8ba938be)
2023-05-26 19:06:58 +03:00
Thomas Stuefe
82bf297c7d 8306507: [linux] Print number of memory mappings in error reports
Reviewed-by: adinn, sgehwolf
(cherry picked from commit 878162b362)
2023-05-26 19:06:58 +03:00
Johan Sjölen
cf0039ee07 8300086: Replace NULL with nullptr in share/c1/
Reviewed-by: thartmann, chagedorn
(cherry picked from commit 90d5041b6a)
2023-05-26 19:06:57 +03:00
Yi-Fan Tsai
cde240a2e1 8308465: Reduce memory accesses in AArch64 MD5 intrinsic
Reviewed-by: aph, phh
(cherry picked from commit 8474e693b4)
2023-05-26 19:06:57 +03:00
quadhier
7ef704d8d1 8302218: CHeapBitMap::free frees with incorrect size
Reviewed-by: aboldtch, iklam, tschatzl
(cherry picked from commit f99ad11dd1)
2023-05-26 19:06:57 +03:00
Joe Darcy
3dbf6f50c3 8308388: Update description of SourceVersion.RELEASE_21
Reviewed-by: iris
(cherry picked from commit d77a41033a)
2023-05-26 19:06:56 +03:00
Matias Saavedra Silva
512e4ae94b 8307190: Refactor ref_at methods in Constant Pool
Reviewed-by: coleenp, iklam
(cherry picked from commit 3f4cfbdd36)
2023-05-26 19:06:56 +03:00
Jiangli Zhou
19331d45c1 8308458: Windows build failure with disassembler.cpp(792): warning C4267: '=': conversion from 'size_t' to 'int'
Reviewed-by: jiefu
(cherry picked from commit 491bdeaa90)
2023-05-26 19:06:55 +03:00
Calvin Cheung
b97a6c9b4a 8308034: Some CDS tests need to use @requires vm.flagless
Reviewed-by: iklam
(cherry picked from commit b58980b73d)
2023-05-26 19:06:54 +03:00
George Adams
41c0897ad5 8307573: Implementation of JEP 449: Deprecate the Windows 32-bit x86 Port for Removal
Reviewed-by: erikj
(cherry picked from commit 29b8d3d9e7)
2023-05-26 19:06:53 +03:00
Maurizio Cimadamore
e86614a3a2 8308276: Change layout API to work with bytes, not bits
Reviewed-by: psandoz, pminborg
(cherry picked from commit 5fc9b5787d)
2023-05-26 19:06:52 +03:00
Maurizio Cimadamore
fec208a6b1 8287834: Add SymbolLookup::or method
Reviewed-by: psandoz
(cherry picked from commit 91aeb5de58)
2023-05-26 19:06:51 +03:00
Thomas Obermeier
d1228ae376 8307908: [ppc] Add failing RTM tests to ProblemList until 8307907 is fixed.
Reviewed-by: clanger, goetz
(cherry picked from commit 4f88437b7f)
2023-05-26 19:06:51 +03:00
Andrew Leonard
8694368a2a 8308407: libjvm library not reproducibly comparable between vendors
Co-authored-by: Simon Tooke <stooke@openjdk.org>
Reviewed-by: andrew, dholmes

(cherry picked from commit dc30e68651)
2023-05-26 19:06:11 +03:00
Matthew Donovan
069dc80037 8301381: Verify DTLS 1.0 cannot be negotiated
Reviewed-by: xuelei
(cherry picked from commit 18e2446420)
2023-05-26 19:05:16 +03:00
Prasanta Sadhukhan
a9e7af0243 8307311: Timeouts on one macOS 12.6.1 host of two Swing JTableHeader tests
Reviewed-by: dnguyen, azvegint
(cherry picked from commit b3cb82b859)
2023-05-26 19:05:16 +03:00
Alexander Zvegintsev
2d8a54a61e 8280993: [XWayland] Popup is not closed on click outside of area controlled by XWayland
Reviewed-by: prr
(cherry picked from commit 3d550f7485)
2023-05-26 19:05:16 +03:00
Darragh Clarke
5f957dec3e 7065228: To interpret case-insensitive string locale independently
Reviewed-by: dfuchs, naoto, djelinski, jpai, michaelm
(cherry picked from commit 05e99db466)
2023-05-26 19:05:15 +03:00
Jan Lahoda
ae64dbb4f2 8306983: Do not invoke external programs when switch terminal to raw mode on selected platforms
Co-authored-by: Adam Sotona <asotona@openjdk.org>
Reviewed-by: erikj, vromero, bpb
(cherry picked from commit a9705196ce)
2023-05-26 19:05:14 +03:00
Andrey Turbanov
92f5d6be02 8305785: Avoid redundant HashMap.containsKey call in java.util.regex
Reviewed-by: stsypanov, jpai
(cherry picked from commit 6b65e5754c)
2023-05-26 19:05:14 +03:00
Erik Österlund
0f3393da8e 8308181: Generational ZGC: Remove CLDG_lock from old gen root scanning
Reviewed-by: ayang, aboldtch
(cherry picked from commit 8011ba74a2)
2023-05-26 19:05:13 +03:00
Aggelos Biboudis
653e101c31 8302344: Compiler Implementation for Unnamed patterns and variables (Preview)
8307444: java.lang.AssertionError when using unnamed patterns
8307482: Compiler should accept var _ in nested patterns in switch case
8307007: Implementation for javax.lang.model for unnamed variables (Preview)
8308312: Compiler should fail when a local variable declaration does not include an Identifier and does not have an initializer
8308309: Compiler should accept mixed masked and unmasked variables in lambda parameters

Co-authored-by: Jan Lahoda <jlahoda@openjdk.org>
Co-authored-by: Aggelos Biboudis <abimpoudis@openjdk.org>
Reviewed-by: vromero, darcy
(cherry picked from commit 8aa50288a1)
2023-05-26 19:05:12 +03:00
Leo Korinth
a9bdb0b7ce 8307804: Reorganize ArrayJuggle test cases
Reviewed-by: dholmes, lmesnik
(cherry picked from commit b588797900)
2023-05-26 19:05:11 +03:00
Serguei Spitsyn
eaacef32ac 8308000: add PopFrame support for virtual threads
Reviewed-by: lmesnik, alanb
(cherry picked from commit 928fcf9751)
2023-05-26 19:05:11 +03:00
Emanuel Peter
25e58cbfcf 8308084: C2 fix idom bug in PhaseIdealLoop::create_new_if_for_predicate
Reviewed-by: chagedorn, thartmann, kvn
(cherry picked from commit 41beb448d2)
2023-05-26 19:05:10 +03:00
Emanuel Peter
70dfc4f612 8307619: C2 failed: Not monotonic (AndI CastII LShiftI) in TestShiftCastAndNotification.java
Reviewed-by: chagedorn, thartmann
(cherry picked from commit b6a9f5c304)
2023-05-26 19:05:09 +03:00
Jan Lahoda
81d068fba0 8300543: Compiler Implementation for Pattern Matching for switch
8300545: Compiler Implementation for Record Patterns

Co-authored-by: Aggelos Biboudis <abimpoudis@openjdk.org>
Reviewed-by: vromero, mcimadamore
(cherry picked from commit eaa80ad08c)
2023-05-26 19:05:08 +03:00
Ioi Lam
603dd11d81 8308342: Remove MetaspaceClosure::Ref::keep_after_pushing()
Reviewed-by: ccheung
(cherry picked from commit 5ccc962942)
2023-05-26 19:05:07 +03:00
Daniel D. Daugherty
e2adef86a0 8307783: runtime/reflect/ReflectOutOfMemoryError.java timed out
8308468: ProblemList containers/docker/TestMemoryAwareness.java on linux-x64
8308470: ProblemList javax/management/remote/mandatory/connection/BrokenConnectionTest.java on linux-all
8308471: ProblemList javax/management/remote/mandatory/loading/MissingClassTest.java on windows-x64 w/ loom
8308472: ProblemList javax/management/remote/mandatory/loading/RMIDownloadTest.java on windows-x64 w/ loom
8308473: ProblemList java/lang/instrument/NativeMethodPrefixAgent.java with loom

Reviewed-by: lmesnik
(cherry picked from commit a0f4a948bb)
2023-05-26 19:05:06 +03:00
Kevin Walls
0b6eca5c69 8304685: Fix whitespace parsing in libjdwp
Reviewed-by: cjplummer, amenkov, sspitsyn
(cherry picked from commit 939344b843)
2023-05-26 19:05:05 +03:00
Leonid Mesnik
1717ea49f0 8307962: Exclude gc/g1/TestSkipRebuildRemsetPhase.java fails with virtual test thread factory
Reviewed-by: sspitsyn
(cherry picked from commit 241455fcd1)
2023-05-26 19:05:05 +03:00
Justin Lu
144255ab1f 8308021: Update IANA Language Subtag Registry to Version 2023-05-11
Reviewed-by: lancea, naoto
(cherry picked from commit 34468e1c91)
2023-05-26 19:05:04 +03:00
Weijun Wang
aa4a00e69c 8305972: Update XML Security for Java to 3.0.2
Reviewed-by: mullan
(cherry picked from commit f0aebc8141)
2023-05-26 19:05:03 +03:00
Coleen Phillimore
a5213b8796 8308396: Fix offset_of conversion warnings in runtime code
Reviewed-by: amitkumar, jsjolen, fparain
(cherry picked from commit 265f40b4f7)
2023-05-26 19:05:02 +03:00
Brian Burkhalter
5a386f99da 8281149: (fs) java/nio/file/FileStore/Basic.java fails with java.lang.RuntimeException: values differ by more than 1GB
Reviewed-by: jpai, rriggs
(cherry picked from commit a5343fa605)
2023-05-26 19:05:01 +03:00
Maurizio Cimadamore
7e606a8d34 8308248: Revisit alignment of layout constants on 32-bit platforms
Reviewed-by: psandoz, pminborg
(cherry picked from commit 44218b1c9e)
2023-05-26 19:05:01 +03:00
Adam Sotona
395438c8c8 8308410: broken compilation of test\jdk\tools\launcher\exeJliLaunchTest.c
Reviewed-by: alanb
(cherry picked from commit 80ef5c228b)
2023-05-26 19:05:00 +03:00
Kick-it11
64fcdd888a 8306057: False arguments calling dispatch_base for aarch64
Reviewed-by: aph, fyang
(cherry picked from commit 326d778ccf)
2023-05-26 19:04:59 +03:00
Jie Fu
9afd832971 8308408: Build failure with -Werror=maybe-uninitialized in libjli/java.c with GCC8
Reviewed-by: alanb
(cherry picked from commit 690d3969b8)
2023-05-26 19:04:58 +03:00
Adam Sotona
25c19f9b3d 8303669: SelectVersion indexes past the end of the argv array
Reviewed-by: vromero
(cherry picked from commit fa14314853)
2023-05-26 19:04:58 +03:00
Raffaello Giulietti
9644542832 8132995: Matcher$ImmutableMatchResult should be optimized to reduce space usage
Reviewed-by: redestad, smarks
(cherry picked from commit 25868b95ee)
2023-05-26 19:04:57 +03:00
Aleksey Shipilev
949c2b8700 8308118: Avoid multiarray allocations in AESCrypt.makeSessionKey
Reviewed-by: xuelei
(cherry picked from commit 6765761075)
2023-05-26 19:04:56 +03:00
Dingli Zhang
36edb447b4 8307609: RISC-V: Added support for Extract, Compress, Expand and other nodes for Vector API
Co-authored-by: zifeihan <caogui@iscas.ac.cn>
Reviewed-by: fyang, fjiang
(cherry picked from commit 97ade57fb2)
2023-05-26 19:04:56 +03:00
Feilong Jiang
b8c24f8e88 8308277: RISC-V: Improve vectorization of Match.sqrt() on floats
Reviewed-by: fyang
(cherry picked from commit e520cdc882)
2023-05-26 19:04:55 +03:00
Maxim Kartashev
9631478eac JBR-5656 Builds of JDK 21 are reproducible by default 2023-05-26 11:15:26 +04:00
bourgesl
ed0651cbfd JBR-5651: Improved MTLVertexCache to merge consecutive full-tiles ie use 1 larger quad instead of many quads per row, full-tile is only using 1x1 pixel (full), applied to color, gradient & texture paints + fixed clang warnings
(cherry picked from commit ff9ecea896)
2023-05-24 11:22:54 +02:00
bourgesl
1ec3aa5ead JBR-5638: improved renderer performance for simple rectangular area (see BBoxAATileGenerator), added new statistics in Renderer
(cherry picked from commit 071d81d294)
2023-05-24 11:22:54 +02:00
Maxim Kartashev
fc1bdbb506 JBR-5657 Wayland: sometimes there's a deadlock at the start
Don't exit from toolkit initialization until all the necessary
information has been received from the Wayland server.
2023-05-20 18:49:37 +04:00
Maxim Kartashev
4edf0ca518 JBR-5655 java/awt/Toolkit/Wayland/WaylandToolkit.java: WLToolkit not found
WLToolkit made operational in headless mode
2023-05-20 11:40:29 +04:00
Vitaly Provodin
6fd5df6487 update exclude list on results of 21_b126.4 test runs 2023-05-19 18:27:27 +07:00
Leonid Mesnik
98a2ea3f16 8307865: Invalid is_in_any_VTMS_transition() check in post_dynamic_code_generated_while_holding_locks
Reviewed-by: sspitsyn, cjplummer
(cherry picked from commit 42948c04b9)
2023-05-19 18:27:26 +07:00
Chris Plummer
3f056f3a19 8308187: jdi/EventSet/resume/resume008 failed with "EventHandler> Unexpected event: ThreadStartEvent in thread resume008-thread0"
Reviewed-by: dcubed
(cherry picked from commit 4a6d6d5a59)
2023-05-19 18:27:26 +07:00
Weijun Wang
a668c42a78 8308010: X509Key and PKCS8Key allows garbage bytes at the end
Reviewed-by: mullan
(cherry picked from commit 148df533af)
2023-05-19 18:27:26 +07:00
Ashutosh Mehra
dc16767f05 8308192: Error in parsing replay file when staticfield is an array of single dimension
Reviewed-by: thartmann, kvn
(cherry picked from commit d3feedf511)
2023-05-19 18:27:26 +07:00
Alexander Zvegintsev
0c055f4dc6 8308370: Fix build failures related to the java.awt.Robot documentation
Reviewed-by: dcubed
(cherry picked from commit 02dc95e6b9)
2023-05-19 18:27:26 +07:00
Alexander Zvegintsev
6b87ca01b5 8307779: Relax the java.awt.Robot specification
Reviewed-by: mkartashev, prr
(cherry picked from commit 21aa057faf)
2023-05-19 18:27:26 +07:00
Joe Darcy
37cd365248 8308245: Add -proc:full to describe current default annotation processing policy
Reviewed-by: vromero
(cherry picked from commit 42ecc8a37f)
2023-05-19 18:27:26 +07:00
Calvin Cheung
c20e192b25 8279993: Assert that a shared class is not loaded more than once
Reviewed-by: iklam, stuefe
(cherry picked from commit bb24c36759)
2023-05-19 18:27:25 +07:00
Alisen Chung
aacb764042 8307083: Open source some drag and drop tests 3
Reviewed-by: prr, serb
(cherry picked from commit 1b154e4fd3)
2023-05-19 18:27:25 +07:00
Jasmine Karthikeyan
2262680d26 8305787: Wrong debugging information printed with TraceOptoOutput
Reviewed-by: thartmann, kvn
(cherry picked from commit cc5c9b5da2)
2023-05-19 18:27:25 +07:00
Thomas Stuefe
8d8702a623 8308350: Increase buffer size for jspawnhelper arguments
Reviewed-by: rriggs
(cherry picked from commit 808dc1b047)
2023-05-19 18:27:25 +07:00
Amit Kumar
621bcfced0 8308347: [s390x] build broken after JDK-8304913
Reviewed-by: stuefe, rriggs
(cherry picked from commit a58e0ca9d2)
2023-05-19 18:27:25 +07:00
bobpengxie
86f11f343b 8308283: Build failure with GCC12 & GCC13
Reviewed-by: erikj, jiefu
(cherry picked from commit bfc3ccd90d)
2023-05-19 18:27:25 +07:00
Jan Kratochvil
4cf585eb70 8308290: Add fontconfig requirement to building.md
Reviewed-by: erikj
(cherry picked from commit 57b8ed1398)
2023-05-19 18:27:24 +07:00
Chen Liang
3628f36eb6 8306457: Classfile API components implementations should not be exposed
Reviewed-by: asotona
(cherry picked from commit 3c9ec26370)
2023-05-19 18:27:24 +07:00
Adam Sotona
452e1fd380 8306842: Classfile API performance improvements
Reviewed-by: redestad
(cherry picked from commit f4f5542f8d)
2023-05-19 18:27:24 +07:00
Thomas Stuefe
bfd86a3fed 8308285: Assert on -Xshare:dump when running with -Xlog:cds=trace
Reviewed-by: ccheung, iklam
(cherry picked from commit 95da499ef2)
2023-05-19 18:27:24 +07:00
Ioi Lam
61cce239a6 8308236: Remove SystemDictionaryShared::clone_dumptime_tables()
Reviewed-by: vlivanov, ccheung
(cherry picked from commit 6f75dd8741)
2023-05-19 18:27:24 +07:00
Boris Ulasevich
c30206e95a 8308270: ARM32 build broken after JDK-8304913
Reviewed-by: stuefe, rriggs
(cherry picked from commit 83c096d6e2)
2023-05-19 18:27:24 +07:00
Jiangli Zhou
b608584fb0 8308110: Resolve multiple definition of 'JNI_OnLoad_jsound' linking error
Reviewed-by: alanb, rasbold
(cherry picked from commit 902585bec1)
2023-05-19 18:27:23 +07:00
Eric Caspole
134856e157 8307483: New micros for j.u.c.LockSupport
Co-authored-by: Sergey Kuksenko <skuksenko@openjdk.org>
Reviewed-by: shade, redestad
(cherry picked from commit 6073edf3cd)
2023-05-19 18:27:23 +07:00
Patricio Chilano Mateo
dd92009413 8307365: JvmtiStressModule hit SIGSEGV in JvmtiEventControllerPrivate::recompute_thread_enabled
Reviewed-by: sspitsyn, dcubed, lmesnik
(cherry picked from commit 24094482f0)
2023-05-19 18:27:23 +07:00
Alisen Chung
e2941849e7 8307299: Move more DnD tests to open
Reviewed-by: prr, serb
(cherry picked from commit 950c5df859)
2023-05-19 18:27:23 +07:00
Leonid Mesnik
c822dc3ba1 8308292: Problemlist vmTestbase/nsk/jvmti/AttachOnDemand/attach020/TestDescription.java
Reviewed-by: sspitsyn
(cherry picked from commit 8bedf2efd7)
2023-05-19 18:27:23 +07:00
Brian Burkhalter
41521b99c7 8307976: (fs) Files.createDirectories(dir) returns dir::toAbsolutePath instead of dir
Reviewed-by: alanb
(cherry picked from commit 6d4782bc73)
2023-05-19 18:27:23 +07:00
Joe Darcy
e246e0c1c3 8308239: Tighten up accessibility of nested classes in java.lang.invoke
Reviewed-by: alanb
(cherry picked from commit f57c78337e)
2023-05-19 18:27:22 +07:00
Martin Doerr
343bfc2727 8308246: PPC64le build broken after JDK-8304913
Reviewed-by: shade, mbaesken
(cherry picked from commit 64f6681cc7)
2023-05-19 18:27:22 +07:00
Adam Sotona
90780f5a48 8307326: Package jdk.internal.classfile.java.lang.constant become obsolete
Reviewed-by: erikj, liach
(cherry picked from commit 5763be7267)
2023-05-19 18:27:22 +07:00
JoKern65
dec40473d0 8306304: Fix xlc17 clang warnings in ppc and aix code
Reviewed-by: erikj, tsteele, mbaesken
(cherry picked from commit c7951cf674)
2023-05-19 18:27:22 +07:00
Erik Österlund
71c8d83019 8308043: Deadlock in TestCSLocker.java due to blocking GC while allocating
Reviewed-by: stefank, ayang, tschatzl
(cherry picked from commit 285c833ffa)
2023-05-19 18:27:22 +07:00
Jaikiran Pai
e3d9bbfd8d 8308185: Update Http2TestServerConnection to use SSLSocket.startHandshake()
Reviewed-by: djelinski
(cherry picked from commit 1a6f9810cd)
2023-05-19 18:27:22 +07:00
Aleksey Shipilev
25991e6163 8308088: Improve class check in CollectedHeap::is_oop
Reviewed-by: zgu, tschatzl, ayang, stuefe
(cherry picked from commit b300e73a4a)
2023-05-19 18:27:21 +07:00
Axel Boldt-Christmas
fbb35a42aa 8296469: Instrument VMError::report with reentrant iteration step for register and stack printing
Reviewed-by: eosterlund, stuefe

(cherry picked from commit e34ecc97e6)
2023-05-19 18:27:21 +07:00
Matthias Baesken
5ae3e58ae1 8308156: VerifyCACerts.java misses blank in error output
Reviewed-by: mullan, rhalade
(cherry picked from commit 5a92aae1d9)
2023-05-19 18:27:21 +07:00
Guoxiong Li
7c0bcfe51f 8307955: Prefer to PTRACE_GETREGSET instead of PTRACE_GETREGS in method 'ps_proc.c::process_get_lwp_regs'
Reviewed-by: cjplummer, kevinw
(cherry picked from commit 2f1c65486b)
2023-05-19 18:27:21 +07:00
Ashutosh Mehra
3defc7aed7 8306460: Clear JVM_ACC_QUEUED flag on methods when dumping dynamic CDS archive
Reviewed-by: coleenp, iklam
(cherry picked from commit d3e5065284)
2023-05-19 18:27:21 +07:00
Leonid Mesnik
7909ddd8e1 8308223: failure handler missed jcmd.vm.info command
Reviewed-by: stefank
(cherry picked from commit 563152f32d)
2023-05-19 18:27:21 +07:00
Erik Helin
579ea03965 8307458: Add periodic heap usage JFR events
Reviewed-by: stefank, aboldtch
(cherry picked from commit cb8b8cdd68)
2023-05-19 18:27:20 +07:00
Naoto Sato
6bc1cbe2be 8307547: Support variant collations
Reviewed-by: srl, jlu, alanb
(cherry picked from commit f9a785e855)
2023-05-19 18:27:20 +07:00
Justin Lu
c6167ce338 8300794: Use @snippet in java.util:i18n
Reviewed-by: naoto, lancea
(cherry picked from commit 4e92991809)
2023-05-19 18:27:20 +07:00
Chris Plummer
69f68bebe1 8306467: Fix nsk/jdb/kill/kill001 to work with new JVMTI StopThread support for virtual threads.
Reviewed-by: sspitsyn, amenkov
(cherry picked from commit 64d5157116)
2023-05-19 18:27:20 +07:00
Coleen Phillimore
1fbb56d122 8307533: Use atomic bitset functions for metadata flags
Reviewed-by: ccheung, kbarrett
(cherry picked from commit 488330d53b)
2023-05-19 18:27:20 +07:00
Stefan Karlsson
2315d604eb 8308097: Generational ZGC: Update constructor syntax
Reviewed-by: eosterlund, aboldtch
(cherry picked from commit 60ab1358da)
2023-05-19 18:27:20 +07:00
Stefan Karlsson
8dc4ccabac 8308092: Replace NULL with nullptr in gc/x
Reviewed-by: eosterlund, aboldtch, tschatzl, dholmes
(cherry picked from commit 599fa774b8)
2023-05-19 18:27:19 +07:00
Stefan Karlsson
376f6e619f 8299075: TestStringDeduplicationInterned.java fails because extra deduplication
Reviewed-by: kbarrett, tschatzl
(cherry picked from commit 682359cb48)
2023-05-19 18:27:19 +07:00
Johan Sjölen
b0ec881d16 8300081: Replace NULL with nullptr in share/asm/
Reviewed-by: coleenp
(cherry picked from commit 9d5bab11f0)
2023-05-19 18:27:19 +07:00
Amit Kumar
26a11ed22b 8278411: Implement UseHeavyMonitors consistently, s390 port
Reviewed-by: mdoerr, stuefe, lucy
(cherry picked from commit 41ee125a0f)
2023-05-19 18:27:19 +07:00
Stefan Karlsson
ee6d267603 8308188: ProblemList java/util/concurrent/locks/Lock/OOMEInAQS.java with ZGC on all platforms
Reviewed-by: dcubed
(cherry picked from commit 316bc79e0e)
2023-05-19 18:27:19 +07:00
Calvin Cheung
f1b191ceb1 8307315: Missing ResourceMark in CDS and JVMTI code
Reviewed-by: coleenp, iklam
(cherry picked from commit 8686a36b40)
2023-05-19 18:27:19 +07:00
Christoph Dreis
45d10ac8aa 8306860: Avoid unnecessary allocation in List.map() when list is empty
Reviewed-by: vromero
(cherry picked from commit 23cbb2d170)
2023-05-19 18:27:19 +07:00
Leonid Mesnik
379c09d0ba 8307369: Add execution of all svc tests in CI
Reviewed-by: cjplummer, sspitsyn
(cherry picked from commit be54b54fb3)
2023-05-19 18:27:18 +07:00
Christian Hagedorn
84f8b1ccc5 8305634: Renaming predicates, simple cleanups, and adding summary about current predicates
Reviewed-by: epeter, thartmann, roland
(cherry picked from commit 19c8c30d1c)
2023-05-19 18:27:18 +07:00
Daniel Fuchs
e3c0e7b9bf 8308024: HttpClient (HTTP/1.1) sends an extraneous empty chunk if the BodyPublisher supplies an empty buffer
Reviewed-by: djelinski, michaelm
(cherry picked from commit 72294c5402)
2023-05-19 18:27:18 +07:00
Doug Simon
3fbc2c1dc0 8308041: [JVMCI] WB_IsGCSupportedByJVMCICompiler must enter correct JVMCI env
Reviewed-by: thartmann
(cherry picked from commit c9b6bb5bd7)
2023-05-19 18:27:18 +07:00
Kevin Walls
96d13c0647 8306806: JMX agent with JDP enabled won't start when PerfData is disabled
Reviewed-by: dholmes, cjplummer
(cherry picked from commit 0790f704fd)
2023-05-19 18:27:18 +07:00
Serguei Spitsyn
3110867ca4 8307968: serviceability/jvmti/vthread/StopThreadTest/StopThreadTest.java timed out
Reviewed-by: cjplummer, lmesnik
(cherry picked from commit c2ef302468)
2023-05-19 18:27:18 +07:00
Jaikiran Pai
82988fbe46 8307403: java/util/zip/DeInflate.java timed out
Reviewed-by: simonis, lancea
(cherry picked from commit d22bcc813e)
2023-05-19 18:27:17 +07:00
Jayathirth D V
a608326e99 8306638: Open source some AWT tests related to datatransfer and Toolkit
Reviewed-by: prr, serb, dnguyen
(cherry picked from commit 2210e06788)
2023-05-19 18:27:17 +07:00
Ioi Lam
122882d78e 8307567: Avoid relocating global roots to metaspaceObjs in CDS dump
Reviewed-by: matsaave, ccheung
(cherry picked from commit 05b51c75b9)
2023-05-19 18:27:17 +07:00
Justin Lu
ebbdcbb37e 8306597: Improve string formatting in EquivMapsGenerator.java
Reviewed-by: naoto
(cherry picked from commit 316837226e)
2023-05-19 18:27:17 +07:00
Joe Darcy
de6ada7596 8308049: Refactor nested class declarations in FdLibm.java
Reviewed-by: smarks
(cherry picked from commit 7b0b9b570b)
2023-05-19 18:27:17 +07:00
Chris Plummer
2eb5f2d683 8306593: Fix nsk/jdi/stop/stop001 for virtual threads and remove from problem list
Reviewed-by: lmesnik, sspitsyn
(cherry picked from commit cc80ada739)
2023-05-19 18:27:17 +07:00
Yi-Fan Tsai
e4edaddf8b 8307555: Reduce memory reads in x86 MD5 intrinsic
Reviewed-by: simonis, phh
(cherry picked from commit 43c8c650af)
2023-05-19 18:27:16 +07:00
Roger Riggs
6dbcd811be 8304913: Use OperatingSystem, Architecture, and Version in jlink
Reviewed-by: jpai, alanb, mchung
(cherry picked from commit 01892f9c6e)
2023-05-19 18:27:16 +07:00
Roger Riggs
1176cade28 8299340: CreateProcessW lpCommandLine must be mutable
Reviewed-by: naoto
(cherry picked from commit 0f7b1c549f)
2023-05-19 18:27:16 +07:00
Ioi Lam
e6bb5af04a 8307959: Remove explicit type casts from SerializeClosure::do_xxx() calls
Reviewed-by: matsaave, ccheung
(cherry picked from commit 57e7a3fbea)
2023-05-19 18:27:16 +07:00
Stefan Karlsson
013e4fba33 8307997: gtest:ZIndexDistributorTest fails on PPC64
Reviewed-by: mdoerr
(cherry picked from commit 97b2ca3de7)
2023-05-19 18:27:16 +07:00
Aleksey Shipilev
691290ae33 8308086: GHA: x86_32 host configuration failing with unmet dependencies
Reviewed-by: stuefe
(cherry picked from commit ffab1ea9e7)
2023-05-19 18:27:16 +07:00
Tobias Hartmann
59616f27a1 8303512: Race condition when computing is_loaded property of TypePtr::InterfaceSet
Reviewed-by: roland, qamai, kvn
(cherry picked from commit ad348a8cec)
2023-05-19 18:27:16 +07:00
gaogao-mem
d0b4f64a08 8305819: LogConfigurationTest intermittently fails on AArch64
Reviewed-by: aph, dholmes, xliu
(cherry picked from commit 911cc7cb07)
2023-05-19 18:27:15 +07:00
Tobias Hartmann
fb6c77d2b8 8308072: [BACKOUT] update for deprecated sprintf for src/utils
Reviewed-by: iris
(cherry picked from commit 8d49ba9e8d)
2023-05-19 18:27:15 +07:00
Julian Waters
edd439a447 8307163: JLONG_FORMAT_SPECIFIER should be updated on Windows
Reviewed-by: stuefe
(cherry picked from commit 0ee196bef1)
2023-05-19 18:27:15 +07:00
Vladimir Kempik
265cec2ade 8291550: RISC-V: jdk uses misaligned memory access when AvoidUnalignedAccess enabled
Co-authored-by: Xiaolin Zheng <xlinzheng@openjdk.org>
Co-authored-by: Feilong Jiang <fjiang@openjdk.org>
Reviewed-by: fjiang, fyang
(cherry picked from commit 3709344166)
2023-05-19 18:27:15 +07:00
Kim Barrett
a8ea4958bf 8307926: Support byte-sized atomic bitset operations
Reviewed-by: aboldtch, coleenp
(cherry picked from commit 646747fd7c)
2023-05-19 18:27:15 +07:00
Daniel D. Daugherty
7a864c4d7f 8305670: Performance regression in LockSupport.unpark with lots of idle threads
Co-authored-by: Robbin Ehn <rehn@openjdk.org>
Reviewed-by: rehn, dholmes
(cherry picked from commit f030937a51)
2023-05-19 18:27:15 +07:00
Daniel D. Daugherty
5933fcc5c3 8307068: store a JavaThread* in the java.lang.Thread object after the JavaThread* is added to the main ThreadsList
Reviewed-by: dholmes, rehn, apangin
(cherry picked from commit ceca198ef2)
2023-05-19 18:27:14 +07:00
Daniel D. Daugherty
54576b581c 8307067: remove broken EnableThreadSMRExtraValidityChecks option
Reviewed-by: coleenp, dholmes, sspitsyn, rehn
(cherry picked from commit 5e26e64cbf)
2023-05-19 18:27:14 +07:00
Thomas Stuefe
db6227531f 8307935: Class space argument processing can be simplified
Reviewed-by: stefank, coleenp
(cherry picked from commit e54051ae9e)
2023-05-19 18:27:14 +07:00
Valerie Peng
dcc4dceba0 8155191: Specify that SecureRandom.nextBytes(byte[]) throws NullPointerException when byte array is null
Reviewed-by: mullan
(cherry picked from commit 46e3d24a6f)
2023-05-19 18:27:14 +07:00
Alisen Chung
16198adeee 8307297: Move some DnD tests to open
Reviewed-by: prr, serb
(cherry picked from commit 3bf3876185)
2023-05-19 18:27:14 +07:00
Chen Liang
a75ec1f616 8300204: Sealed-class hierarchy graph missing nodes
Reviewed-by: jjg
(cherry picked from commit d8afc7beeb)
2023-05-19 18:27:14 +07:00
Chris Plummer
092bd789b3 8307480: Improve SA "transported core" documentation for windows
Reviewed-by: sspitsyn, kevinw, poonam
(cherry picked from commit 38838b344a)
2023-05-19 18:27:14 +07:00
Jonathan Gibbons
2430a4e07b 8306607: Apply 80-column output to javac supported version output
Reviewed-by: darcy
(cherry picked from commit 9842ff4129)
2023-05-19 18:27:13 +07:00
Chris Plummer
64a41c0da8 8306471: Add virtual threads support to JDWP ThreadReference.Stop and JDI ThreadReference.stop()
Reviewed-by: sspitsyn, alanb
(cherry picked from commit d809823fe4)
2023-05-19 18:27:13 +07:00
Justin Lu
90d87aeb0f 6714245: [Col] Collator - Faster Comparison for identical strings.
Reviewed-by: rriggs, naoto
(cherry picked from commit 4441a2306f)
2023-05-19 18:27:13 +07:00
Sergey Chernyshev
c05328d452 8168469: Memory leak in JceSecurity
Reviewed-by: valeriep
(cherry picked from commit a284920b34)
2023-05-19 18:27:13 +07:00
Jonathan Gibbons
cf05e3bf3f 8308015: Syntax of "import static" is incorrect in com.sun.source.tree.ImportTree.java
Reviewed-by: jlaskey, darcy
(cherry picked from commit 7455bb23c1)
2023-05-19 18:27:13 +07:00
Maurizio Cimadamore
7a9bb8aac7 8307911: javadoc for MemorySegment::reinterpret has duplicate restricted method paragraph
Reviewed-by: jvernee
(cherry picked from commit 6ebea8973f)
2023-05-19 18:27:13 +07:00
Daniel Fuchs
36eb775c20 8307535: java.util.logging.Handlers should be more VirtualThread friendly
Reviewed-by: jpai
(cherry picked from commit 3c68c352fc)
2023-05-19 18:27:12 +07:00
Brian Burkhalter
147967a5d1 8307409: Refactor usage examples to use @snippet in the java.nio packages
Reviewed-by: alanb, rriggs
(cherry picked from commit 9fa8b9a4a6)
2023-05-19 18:27:12 +07:00
Thomas Schatzl
662662d1ef 8306541: Refactor collection set candidate handling to prepare for JDK-8140326
Reviewed-by: iwalulya, ayang
(cherry picked from commit e512a20679)
2023-05-19 18:27:12 +07:00
Xue-Lei Andrew Fan
34a31ac23a 8307855: update for deprecated sprintf for src/utils
Reviewed-by: thartmann
(cherry picked from commit 4b0f4213a5)
2023-05-19 18:27:12 +07:00
Afshin Zafari
24f5219624 8305081: Remove finalize() from test/hotspot/jtreg/compiler/runtime/Test8168712
Reviewed-by: coleenp, thartmann
(cherry picked from commit 39dc40fed4)
2023-05-19 18:27:12 +07:00
Albert Mingkun Yang
76bdc0719d 8307808: G1: Remove partial object-count report after gc
Reviewed-by: tschatzl, iwalulya
(cherry picked from commit f7bbbc6590)
2023-05-19 18:27:12 +07:00
Maurizio Cimadamore
709ed06a24 8307961: java/foreign/enablenativeaccess/TestEnableNativeAccess.java fails with ShouldNotReachHere
Reviewed-by: jvernee
(cherry picked from commit 13a3fce29e)
2023-05-19 18:27:12 +07:00
Kim Barrett
7adf53a730 8307806: Rename Atomic::fetch_and_add and friends
Reviewed-by: stefank, dholmes
(cherry picked from commit f09a0f5ca7)
2023-05-19 18:27:11 +07:00
Yasumasa Suenaga
069db40b53 8305770: os::Linux::available_memory() should refer MemAvailable in /proc/meminfo
Reviewed-by: stuefe, sgehwolf, rcastanedalo, dholmes
(cherry picked from commit b6bcbc0cbc)
2023-05-19 18:27:11 +07:00
Afshin Zafari
8c5bc4b49a 8305083: Remove finalize() from test/hotspot/jtreg/vmTestbase/nsk/share/ and /jpda that are used in serviceability/dcmd/framework tests
Reviewed-by: coleenp, dholmes
(cherry picked from commit e1e758a7b4)
2023-05-19 18:27:11 +07:00
Thomas Schatzl
85f40189c9 8307518: Remove G1 workaround in jstat about zero sized generation sizes
Reviewed-by: kbarrett, ayang
(cherry picked from commit 1ce1611ead)
2023-05-19 18:27:11 +07:00
Xiaolin Zheng
fb84ad2a5e 8306667: RISC-V: Fix storeImmN0 matching rule by using zr register
Reviewed-by: shade, gli, fyang
(cherry picked from commit e32de7efd6)
2023-05-19 18:27:11 +07:00
Matthias Baesken
1736f0e326 8307891: ProblemList gtest/NMTGtest.java subtests on aix
Reviewed-by: mdoerr, lucy
(cherry picked from commit f3bd031ccd)
2023-05-19 18:27:11 +07:00
JoKern65
4585113c85 8307520: set minimum supported CPU architecture to Power8 on AIX
Reviewed-by: mbaesken, erikj
(cherry picked from commit 5f1f9460d7)
2023-05-19 18:27:10 +07:00
Jie Fu
a5d77d92b2 8307969: [zgc] Missing includes in gc/z/zTracer.cpp
Reviewed-by: stefank
(cherry picked from commit ccb4dd6144)
2023-05-19 18:27:10 +07:00
Abhishek Kumar
f6f56793e4 8306996: Open source Swing MenuItem related tests
Reviewed-by: dnguyen, honkar, psadhukhan
(cherry picked from commit 73491fa452)
2023-05-19 18:27:10 +07:00
Ningsheng Jian
7b6f536d5b 8307572: AArch64: Vector registers are clobbered by some macroassemblers
Reviewed-by: aph, adinn
(cherry picked from commit 33d9a85730)
2023-05-19 18:27:10 +07:00
Daniel D. Daugherty
f8a6030118 8307966: ProblemList java/util/concurrent/locks/Lock/OOMEInAQS.java on linux-x64
Reviewed-by: naoto, lmesnik
(cherry picked from commit 9a7b4431ec)
2023-05-19 18:27:10 +07:00
Chris Plummer
e935ea772d 8307559: Add better checking in com/sun/jdi tests for debuggee exiting unexpectedly with an exception
Reviewed-by: kevinw, lmesnik
(cherry picked from commit 54c06d2d91)
2023-05-19 18:27:10 +07:00
Jie Fu
21ed164c32 8307945: Build of Client VM is broken after JDK-8307058
Reviewed-by: kvn
(cherry picked from commit ce5907727e)
2023-05-19 18:27:09 +07:00
Matias Saavedra Silva
d72f6cf369 8281715: Move "base CDS archive not loaded" tests to SharedArchiveFileOption.java
Reviewed-by: ccheung, iklam
(cherry picked from commit a667213ec5)
2023-05-19 18:27:09 +07:00
Joe Darcy
9c85f94c0c 8307954: Update string template regression tests to be robust on release updates
Reviewed-by: jlaskey
(cherry picked from commit 29b8242e07)
2023-05-19 18:27:09 +07:00
Guoxiong Li
bad88f29f8 8307653: Adjust delay time and gc log argument in TestAbortOnVMOperationTimeout
Reviewed-by: dholmes, dcubed
(cherry picked from commit 4f355c3525)
2023-05-19 18:27:09 +07:00
Xue-Lei Andrew Fan
47cde5c203 8307848: update for deprecated sprintf for jdk.attach
Reviewed-by: sspitsyn, cjplummer
(cherry picked from commit 15358636cf)
2023-05-19 18:27:09 +07:00
Xue-Lei Andrew Fan
04d35043f0 8307850: update for deprecated sprintf for jdk.jdi
Reviewed-by: cjplummer
(cherry picked from commit cbecf422df)
2023-05-19 18:27:09 +07:00
Dean Long
b7d2359913 8307139: Fix signed integer overflow in compiler code, part 1
Reviewed-by: thartmann, rcastanedalo, kvn
(cherry picked from commit 7fcb0fdcd4)
2023-05-19 18:27:08 +07:00
Robert Toyonaga
6e1bb82a57 8307298: JFR: Ensure jdk.jfr.internal.TypeLibrary is initialized only once
Reviewed-by: sgehwolf, egahlin
(cherry picked from commit 5d6cce0f85)
2023-05-19 18:27:08 +07:00
Serguei Spitsyn
75f4298063 8306034: add support of virtual threads to JVMTI StopThread
Reviewed-by: cjplummer
(cherry picked from commit 51b8f3cfb9)
2023-05-19 18:27:08 +07:00
Chris Plummer
ecbf0af211 8307885: com/sun/jdi/ConnectedVMs.java fails with "Invalid debuggee exitValue: 0"
Reviewed-by: kevinw, sspitsyn
(cherry picked from commit 489658dbd2)
2023-05-19 18:27:08 +07:00
Daniel Fuchs
3da61968f5 8307626: java/net/httpclient/FlowAdapter* tests should close the HttpClient instances
Reviewed-by: aefimov, jpai
(cherry picked from commit 9ad38cbeaf)
2023-05-19 18:27:08 +07:00
Fredrik Bredberg
29e20aed33 8297657: name demangling intermittently fails
Reviewed-by: stefank, coleenp
(cherry picked from commit 2bf7ac58b7)
2023-05-19 18:27:07 +07:00
Stefan Karlsson
2d468db9cf 8307058: Implementation of Generational ZGC
Co-authored-by: Stefan Karlsson <stefank@openjdk.org>
Co-authored-by: Erik Österlund <eosterlund@openjdk.org>
Co-authored-by: Axel Boldt-Christmas <aboldtch@openjdk.org>
Co-authored-by: Per Liden <pliden@openjdk.org>
Co-authored-by: Stefan Johansson <sjohanss@openjdk.org>
Co-authored-by: Albert Mingkun Yang <ayang@openjdk.org>
Co-authored-by: Erik Helin <ehelin@openjdk.org>
Co-authored-by: Roberto Castañeda Lozano <rcastanedalo@openjdk.org>
Co-authored-by: Nils Eliasson <neliasso@openjdk.org>
Co-authored-by: Martin Doerr <mdoerr@openjdk.org>
Co-authored-by: Leslie Zhai <lzhai@openjdk.org>
Co-authored-by: Fei Yang <fyang@openjdk.org>
Co-authored-by: Yadong Wang <yadongwang@openjdk.org>
Reviewed-by: eosterlund, aboldtch, rcastanedalo
(cherry picked from commit d20034b09c)
2023-05-19 18:27:07 +07:00
Yudi Zheng
c386ee37c9 8307813: [JVMCI] Export markWord::lock_mask_in_place to JVMCI compilers.
Reviewed-by: dnsimon, kvn, never
(cherry picked from commit 0cbfbc400a)
2023-05-19 18:27:07 +07:00
Maurizio Cimadamore
1f6ed7400a 8307610: Linker::nativeLinker should not be restricted (mainline)
Reviewed-by: jvernee
(cherry picked from commit ba9714d44c)
2023-05-19 18:27:07 +07:00
Thomas Stuefe
f4db47b017 8307869: Remove unnecessary log statements from arm32 fastlocking code
Reviewed-by: shade
(cherry picked from commit ecc1d85dbe)
2023-05-19 18:27:07 +07:00
JoKern65
8ff640e3ed 8307349: Support xlc17 clang toolchain on AIX
Reviewed-by: erikj, mbaesken
(cherry picked from commit 08fa269886)
2023-05-19 18:27:06 +07:00
Thomas Stuefe
64dc32ea41 8305416: runtime/Thread/TestAlwaysPreTouchStacks.java failed with "Did not find expected NMT output"
Reviewed-by: dholmes, gziemski
(cherry picked from commit 8ac7186331)
2023-05-19 18:27:06 +07:00
Thomas Stuefe
3e254f1c9e 8307810: Consistently use LockingMode instead of UseHeavyMonitors
Reviewed-by: dcubed, mdoerr, dholmes, amitkumar
(cherry picked from commit 984fbbbcab)
2023-05-19 18:27:06 +07:00
Feilong Jiang
abd60979ef 8307758: RISC-V: Improve bit test code introduced by JDK-8291555
Co-authored-by: Fei Yang <fyang@openjdk.org>
Reviewed-by: fyang
(cherry picked from commit 39f4e4d3c3)
2023-05-19 18:27:06 +07:00
David Holmes
cddf753428 8306965: osThread allocation failures should not abort the VM
Reviewed-by: lfoltan
(cherry picked from commit 3cb606ef5b)
2023-05-19 18:27:06 +07:00
Justin Lu
e5108cb4c0 8281103: Give example for Locale that is English and follows the ISO standards
Reviewed-by: rriggs, lancea, naoto
(cherry picked from commit 4795c395e9)
2023-05-19 18:27:06 +07:00
Jonathan Gibbons
4ac510fe46 8307563: make most fields final in JavacTrees
Reviewed-by: vromero
(cherry picked from commit 958d4a7505)
2023-05-19 18:27:05 +07:00
Jonathan Gibbons
3d54f031f2 8307377: Remove use of tagName from TagletWriterImpl.linkSeeReferenceOutput
Reviewed-by: hannesw
(cherry picked from commit f250ab2c2a)
2023-05-19 18:27:05 +07:00
Ashutosh Mehra
bcf29793c4 8307765: DynamicArchiveHeader contents are missing in CDS mapfile
Reviewed-by: iklam, ccheung
(cherry picked from commit cc9f7ad9ce)
2023-05-19 18:27:05 +07:00
Daniel D. Daugherty
8bc911f28c 8307860: [BACKOUT] JDK-8307194 Add make target for optionally building a complete set of all JDK and hotspot libjvm static libraries
Reviewed-by: erikj
(cherry picked from commit edc4adb77e)
2023-05-19 18:27:05 +07:00
Daniel D. Daugherty
2dfeb7b894 8307857: validate-source fails after JDK-8306758
Reviewed-by: rriggs, cjplummer
(cherry picked from commit df90df298e)
2023-05-19 18:27:05 +07:00
Chris Plummer
c6c8a86fb7 8306758: com/sun/jdi/ConnectedVMs.java fails with "Non-zero debuggee exitValue: 143"
Reviewed-by: amenkov, sspitsyn
(cherry picked from commit 268836482d)
2023-05-19 18:27:05 +07:00
Jiangli Zhou
f01f03421a 8307194: Add make target for optionally building a complete set of all JDK and hotspot libjvm static libraries
Reviewed-by: erikj, sgehwolf
(cherry picked from commit 1964954da9)
2023-05-19 18:27:04 +07:00
Kevin Walls
39a828fcf0 8307244: Remove redundant class RMIIIOPServerImpl
Reviewed-by: sspitsyn, dfuchs, alanb
(cherry picked from commit 9af1787ebe)
2023-05-19 18:27:04 +07:00
Viktor Klang
781496d2ec 8151531: Add notes to BaseStream.spliterator/iterator docs regarding them being escape hatches
Reviewed-by: psandoz
(cherry picked from commit 8a95020ab6)
2023-05-19 18:27:04 +07:00
Archie Cobbs
06d8d90ebb 8305748: Clarify reentrant behavior of close() in FileInputStream, FileOutputStream, and RandomAccessFile
Reviewed-by: alanb, bpb
(cherry picked from commit 0198afca3a)
2023-05-19 18:27:04 +07:00
Daniel D. Daugherty
2ce4be5c24 8307799: Newly added java/awt/dnd/MozillaDnDTest.java has invalid jtreg @requires clause
Reviewed-by: rriggs, azvegint
(cherry picked from commit 1bca05eace)
2023-05-19 18:27:04 +07:00
Johan Sjölen
13c9196187 8300245: Replace NULL with nullptr in share/jfr/
Reviewed-by: mgronlun, coleenp
(cherry picked from commit cc396895e5)
2023-05-19 18:27:04 +07:00
Coleen Phillimore
20fa1ff156 8306843: JVMTI tag map extremely slow after JDK-8292741
Reviewed-by: sspitsyn, iklam
(cherry picked from commit 4251b56214)
2023-05-19 18:27:03 +07:00
Afshin Zafari
d45b1dca8e 8305082: Remove finalize() from test/hotspot/jtreg/runtime/linkResolver/InterfaceObjectTest.java
Reviewed-by: coleenp, dholmes
(cherry picked from commit ab34cb98c8)
2023-05-19 18:27:03 +07:00
Johannes Bechberger
9c591e37b2 8307732: build-test-lib is broken
Reviewed-by: erikj, djelinski
(cherry picked from commit 0da48f19cb)
2023-05-19 18:27:03 +07:00
Jim Laskey
6496dc2db6 8285932: Implementation of JEP 430 String Templates (Preview)
Reviewed-by: mcimadamore, rriggs, darcy
(cherry picked from commit 4aa65cbeef)
2023-05-19 18:27:03 +07:00
Aleksei Efimov
e58fdb1ed9 8302845: Replace finalizer usage in JNDI DNS provider with Cleaner
Reviewed-by: alanb, dfuchs, djelinski
(cherry picked from commit da2c930262)
2023-05-19 18:27:03 +07:00
Oli Gillespie
ee0cf64ec2 8307348: Parallelize heap walk for ObjectCount(AfterGC) JFR event collection
Reviewed-by: shade, ayang, tschatzl
(cherry picked from commit 540c706bbc)
2023-05-19 18:27:03 +07:00
Fredrik Bredberg
b2047c390a 8306930: Incorrect assert in BitMap::count_one_bits
Reviewed-by: stefank, tschatzl, kbarrett
(cherry picked from commit d993432d44)
2023-05-19 18:27:02 +07:00
Tobias Hotz
bd4cb3ec6b 8307351: (CmpI/L(AndI/L reg1 reg2)) on x86 can be optimized
Reviewed-by: sviswanathan, qamai, thartmann
(cherry picked from commit 4b4c80bb31)
2023-05-19 18:27:02 +07:00
Feilong Jiang
4d61b26940 8307651: RISC-V: stringL_indexof_char instruction has wrong format string
Reviewed-by: fyang
(cherry picked from commit d3e6d04e3e)
2023-05-19 18:27:02 +07:00
Serguei Spitsyn
80b574815a 8307399: get rid of compatibility ThreadStart/ThreadEnd events for virtual threads
Reviewed-by: alanb, pchilanomate, cjplummer
(cherry picked from commit 2be1f10fec)
2023-05-19 18:27:02 +07:00
Alex Menkov
31c5283018 8306027: Clarify JVMTI heap functions spec about virtual thread stack.
Reviewed-by: alanb, sspitsyn
(cherry picked from commit f5a6b7f7c0)
2023-05-19 18:27:02 +07:00
Leonid Mesnik
65357d44da 8307370: Add tier1 testing with thread factory in CI
Reviewed-by: sspitsyn
(cherry picked from commit a1c3adb88d)
2023-05-19 18:27:02 +07:00
Roger Riggs
7acffbe68e 8307466: java.time.Instant calculation bug in until and between methods
Co-authored-by: Raffaello Giulietti <rgiulietti@openjdk.org>
Reviewed-by: scolebourne, naoto
(cherry picked from commit 356667f155)
2023-05-19 18:27:01 +07:00
Alisen Chung
c66d3c27f7 8306881: Update FreeType to 2.13.0
Reviewed-by: prr, dnguyen
(cherry picked from commit 723582c524)
2023-05-19 18:27:01 +07:00
Alisen Chung
43e5822132 8307128: Open source some drag and drop tests 4
Reviewed-by: prr
(cherry picked from commit 98294242a9)
2023-05-19 18:27:01 +07:00
Leonid Mesnik
82447d7e12 8307307: Improve ProcessTools.java to don't try to run Virtual wrapper for incompatible processes
Reviewed-by: alanb
(cherry picked from commit 7f05f6f7c7)
2023-05-19 18:27:01 +07:00
Thiago Henrique Hüpner
3dcdccbd44 8304148: Remapping a class with Invokedynamic constant loses static bootstrap arguments
Reviewed-by: asotona
(cherry picked from commit dde557e312)
2023-05-19 18:27:01 +07:00
Justin Lu
8647dd2a36 8159337: Introduce a method in Locale class to return the language tags as per RFC 5646 convention
Reviewed-by: naoto, rriggs
(cherry picked from commit 82bcee76ea)
2023-05-19 18:27:00 +07:00
Leonid Mesnik
fefb1ff415 8307486: ProcessTools.java should wait until vthread is completed before checking exceptions
Reviewed-by: dholmes, alanb
(cherry picked from commit 3aff5eacbd)
2023-05-19 18:27:00 +07:00
Xue-Lei Andrew Fan
0999c40aa6 8303830: update for deprecated sprintf for jdk.accessibility
Reviewed-by: kizune
(cherry picked from commit 44fa12e751)
2023-05-19 18:27:00 +07:00
Viktor Klang
8b896995de 8133773: clarify specification of Spliterator.tryAdvance
Reviewed-by: psandoz, tvaleev, rriggs
(cherry picked from commit fdbfc8a73b)
2023-05-19 18:27:00 +07:00
Matthew Donovan
ce0803e9ba 8306015: Update sun.security.ssl TLS tests to use SSLContextTemplate or SSLEngineTemplate
Reviewed-by: xuelei
(cherry picked from commit 5842fd5beb)
2023-05-19 18:27:00 +07:00
Axel Boldt-Christmas
f35cee62a3 8306738: Select num workers for safepoint ParallelCleanupTask
Reviewed-by: shade, coleenp, tschatzl
(cherry picked from commit 672bade522)
2023-05-19 18:27:00 +07:00
Adam Sotona
e889481596 8305990: Stripping debug info of ASM 9.5 fails
Reviewed-by: mcimadamore
(cherry picked from commit a05560d993)
2023-05-19 18:27:00 +07:00
Josef Eisl
2b8b6f87ba 8307588: [JVMCI] HotSpotConstantPool#lookupBootstrapMethodInvocation broken by JDK-8301995
Reviewed-by: dnsimon, never, kvn
(cherry picked from commit 040cb7b5a9)
2023-05-19 18:26:59 +07:00
Maurizio Cimadamore
5141c38d45 8307411: Test java/foreign/channels/TestAsyncSocketChannels.java failed: IllegalStateException: Already closed
Reviewed-by: jvernee
(cherry picked from commit f92d095e16)
2023-05-19 18:26:59 +07:00
Maurizio Cimadamore
be2dc1e946 8307629: FunctionDescriptor::toMethodType should allow sequence layouts (mainline)
Reviewed-by: jvernee
(cherry picked from commit 7a3bea1f6a)
2023-05-19 18:26:59 +07:00
Roland Westrelin
832e0936a4 8307131: C2: assert(false) failed: malformed control flow
Reviewed-by: kvn, chagedorn, thartmann
(cherry picked from commit d2b3eef0f2)
2023-05-19 18:26:59 +07:00
Chen Liang
3350208342 8304031: Classfile API cannot encode Primitive Class as Condy
Reviewed-by: asotona
(cherry picked from commit cd5d0ff5b2)
2023-05-19 18:26:59 +07:00
Sean Coffey
26135a9b02 8305950: Have -XshowSettings option display tzdata version
Reviewed-by: rriggs
(cherry picked from commit 07f55c5ea2)
2023-05-19 18:26:59 +07:00
Damon Nguyen
7805a97c32 8307130: Open source few Swing JMenu tests
Reviewed-by: prr
(cherry picked from commit d9052b9466)
2023-05-19 18:26:58 +07:00
Tom Rodriguez
b742c86e71 8299229: [JVMCI] add support for UseZGC
Reviewed-by: eosterlund, kvn
(cherry picked from commit 5e1fe43080)
2023-05-19 18:26:58 +07:00
Damon Nguyen
ea41491f42 8307165: java/awt/dnd/NoFormatsDropTest/NoFormatsDropTest.java timed out
Reviewed-by: prr
(cherry picked from commit 14df5c130e)
2023-05-19 18:26:58 +07:00
Roman Kennke
615e7b8e92 8291555: Implement alternative fast-locking scheme
Co-authored-by: Fei Yang <fyang@openjdk.org>
Co-authored-by: Thomas Stuefe <stuefe@openjdk.org>
Reviewed-by: dcubed, stuefe, shade, dholmes, dlong

(cherry picked from commit 7f6358a8b5)
2023-05-19 18:26:58 +07:00
Volker Simonis
cf51f63cd8 8306461: ObjectInputStream::readObject() should handle negative array sizes without throwing NegativeArraySizeExceptions
Co-authored-by: Yakov Shafranovich <yakovsh@amazon.com>
Reviewed-by: shade, rriggs
(cherry picked from commit 4116b109f0)
2023-05-19 18:26:58 +07:00
Raffaello Giulietti
294548cce6 8305486: Add split() variants that keep the delimiters to String and j.u.r.Pattern
Reviewed-by: jpai, rriggs
(cherry picked from commit 93ee19f58a)
2023-05-19 18:26:58 +07:00
Conor Cleary
e3236a1c00 8293786: HttpClient will not send more than 64 kb of data from the 2nd request in http2
Reviewed-by: dfuchs, djelinski
(cherry picked from commit ad90fb6da3)
2023-05-19 18:26:57 +07:00
Fredrik Bredberg
a39de464c1 8303153: Native interpreter frame missing mirror
Reviewed-by: coleenp, fyang
(cherry picked from commit 5a259d875e)
2023-05-19 18:26:57 +07:00
Darragh Clarke
f0ed74f621 8054022: HttpURLConnection timeouts with Expect: 100-Continue and no chunking
Reviewed-by: djelinski, dfuchs
(cherry picked from commit 4b02956d42)
2023-05-19 18:26:57 +07:00
Tyler Steele
b7c1c12b8d 8304434: [AIX] Update minimum xlclang version
Reviewed-by: erikj, mbaesken
(cherry picked from commit 9f34e4f8d9)
2023-05-19 18:26:57 +07:00
Matthias Baesken
657148f37b 8307604: gcc12 based Alpine build broken build after JDK-8307301
Reviewed-by: lucy, mdoerr, erikj
(cherry picked from commit d2e0e534d7)
2023-05-19 18:26:57 +07:00
Zhengyu Gu
dc306be636 8307571: Remove unused SomeConstants in WatcherThread class
Reviewed-by: dholmes
(cherry picked from commit e91f0d3dba)
2023-05-19 18:26:57 +07:00
Dingli Zhang
e2263259d4 8306408: Fix the format of several tables in building.md
Reviewed-by: erikj
(cherry picked from commit 26755a9686)
2023-05-19 18:26:56 +07:00
Jie Fu
23a05bfac2 8307569: Build with gcc8 is broken after JDK-8307301
Reviewed-by: erikj
(cherry picked from commit 64c0962866)
2023-05-19 18:26:56 +07:00
Matthias Baesken
57fd03dabf 8307603: [AIX] Broken build after JDK-8307301
Reviewed-by: mdoerr
(cherry picked from commit bb3e44d8b6)
2023-05-19 18:26:56 +07:00
Arno Zeller
e29828d686 8307347: serviceability/sa/ClhsdbDumpclass.java could leave files owned by root on macOS
Reviewed-by: stuefe, cjplummer
(cherry picked from commit 5c7ede94ae)
2023-05-19 18:26:56 +07:00
Albert Mingkun Yang
b1614ffbb7 8307100: Remove ReferentBasedDiscovery reference discovery policy
Reviewed-by: kbarrett, dholmes, tschatzl
(cherry picked from commit 89b7d07597)
2023-05-19 18:26:56 +07:00
Hannes Wallnöfer
a5fbd144dd 8306285: Missing file in search test
Reviewed-by: jjg
(cherry picked from commit f6ea89795b)
2023-05-19 18:26:56 +07:00
Stefan Karlsson
c72505b97e 8307517: Add VMErrorCallback infrastructure to extend hs_err dumping
Reviewed-by: eosterlund, aboldtch, dholmes, stuefe

(cherry picked from commit 33245d6b38)
2023-05-19 18:26:56 +07:00
Stefan Karlsson
02c0d4bb6d 8293547: Add relaxed add_and_fetch for macos aarch64 atomics
Reviewed-by: dholmes, eosterlund
(cherry picked from commit 7a1cb64bc1)
2023-05-19 18:26:55 +07:00
Stefan Karlsson
e8f9e711ae 8307428: jstat tests doesn't tolerate dash in the O column
Reviewed-by: kevinw, cjplummer
(cherry picked from commit 68f385c1ca)
2023-05-19 18:26:55 +07:00
Amit Kumar
0ec1b84a52 8307423: [s390x] Represent Registers as values
Reviewed-by: mdoerr, lucy
(cherry picked from commit 8bbd264c6e)
2023-05-19 18:26:55 +07:00
Stefan Karlsson
e83b0f8775 8307521: Introduce check_oop infrastructure to check oops in the oop class
Reviewed-by: eosterlund, aboldtch, coleenp
(cherry picked from commit 959e62ca3e)
2023-05-19 18:26:55 +07:00
Emanuel Peter
d8b5086c60 8304720: SuperWord::schedule should rebuild C2-graph from SuperWord dependency-graph
Reviewed-by: kvn, fgao
(cherry picked from commit ad0e5a99ca)
2023-05-19 18:26:55 +07:00
Gui Cao
018b432012 8306966: RISC-V: Support vector cast node for Vector API
Co-authored-by: Dingli Zhang <dingli@iscas.ac.cn>
Reviewed-by: fyang, fjiang
(cherry picked from commit 495f2688d6)
2023-05-19 18:26:55 +07:00
changpeng1997
c98461d3c0 8301739: AArch64: Add optimized rules for vector compare with immediate for SVE
Reviewed-by: aph, eliu
(cherry picked from commit 0dca573ca5)
2023-05-19 18:26:54 +07:00
Alexander Zvegintsev
98f81dac77 8306941: Open source several datatransfer and dnd AWT tests
Reviewed-by: prr
(cherry picked from commit 3d3eaed913)
2023-05-19 18:26:54 +07:00
Feilong Jiang
84f6f7962c 8307446: RISC-V: Improve performance of floating point to integer conversion
Reviewed-by: fyang, vkempik, gli
(cherry picked from commit 1f57ce0a06)
2023-05-19 18:26:54 +07:00
Ioi Lam
56df1904c2 8307553: Remove dead code MetaspaceClosure::push_method_entry
Reviewed-by: coleenp, ccheung
(cherry picked from commit 4e4828eaff)
2023-05-19 18:26:54 +07:00
Alexander Zvegintsev
867d426cc6 8280031: Deprecate GTK2 for removal
Reviewed-by: prr
(cherry picked from commit 7d58978f62)
2023-05-19 18:26:54 +07:00
Weijun Wang
73261bc63f 8305846: Support compilation in Proc test utility
Reviewed-by: valeriep
(cherry picked from commit b5922c3b86)
2023-05-19 18:26:54 +07:00
Oli Gillespie
ed3e731e0b 8307425: Socket input stream read burns CPU cycles with back-to-back poll(0) calls
Reviewed-by: alanb
(cherry picked from commit 73ac710533)
2023-05-19 18:26:53 +07:00
Leonid Mesnik
7023baef82 8306326: [BACKOUT] 8277573: VmObjectAlloc is not generated by intrinsics methods which allocate objects
Reviewed-by: sspitsyn, thartmann, kvn
(cherry picked from commit e2b1013f11)
2023-05-19 18:26:53 +07:00
Harshitha Onkar
a14554e4e3 8307381: Open Source JFrame, JIF related Swing Tests
Reviewed-by: dnguyen, kizune
(cherry picked from commit 4386d42d31)
2023-05-19 18:26:53 +07:00
Matias Saavedra Silva
c0d30b3981 8306583: Add JVM crash check in CDSTestUtils.executeAndLog
Reviewed-by: iklam, ccheung
(cherry picked from commit 27764e6035)
2023-05-19 18:26:53 +07:00
Rajat Mahajan
05175760d7 6176679: Application freezes when copying an animated gif image to the system clipboard
Reviewed-by: aivanov, dmarkov
(cherry picked from commit 6c71859ac2)
2023-05-19 18:26:53 +07:00
Calvin Cheung
10616cf6a5 8306712: CDS DeterministicDump.java test fails with -XX:+UseStringDeduplication
Reviewed-by: iklam, matsaave
(cherry picked from commit 65a54883b3)
2023-05-19 18:26:53 +07:00
Harshitha Onkar
fd44499547 8307301: Update HarfBuzz to 7.2.0
Reviewed-by: prr
(cherry picked from commit d8b230c384)
2023-05-19 18:26:52 +07:00
Damon Nguyen
fe2df03908 8306871: Open source more AWT Drag & Drop tests
Reviewed-by: prr
(cherry picked from commit b5a48277ab)
2023-05-19 18:26:52 +07:00
Maurizio Cimadamore
53cc70028e 8307375: Alignment check on layouts used as sequence element is not correct
Reviewed-by: jvernee
(cherry picked from commit 47422be2d1)
2023-05-19 18:26:52 +07:00
Roman Kennke
27b101baeb 8307395: Add missing STS to Shenandoah
Reviewed-by: shade
(cherry picked from commit 3968ab5db5)
2023-05-19 18:26:52 +07:00
Roman Kennke
e158cbd329 8307236: Rendezvous GC threads under STS for monitor deflation
Reviewed-by: eosterlund, shade
(cherry picked from commit 12d6ec66a6)
2023-05-19 18:26:52 +07:00
Matias Saavedra Silva
3baf56f829 8307306: Change some ConstantPool::name_ref_at calls to uncached_name_ref_at
Co-authored-by: Ioi Lam <iklam@openjdk.org>
Reviewed-by: coleenp, fparain
(cherry picked from commit 6fe959c62d)
2023-05-19 18:26:52 +07:00
Matthew Donovan
10b51569a1 8305169: java/security/cert/CertPathValidator/OCSP/GetAndPostTests.java -- test server didn't start in timely manner
Reviewed-by: ssahoo, jnimeh
(cherry picked from commit 3f6a3545a2)
2023-05-19 18:26:51 +07:00
Afshin Zafari
0fbe5ae376 8305084: Remove the removal warnings for finalize() from test/hotspot/jtreg/serviceability/dcmd/gc/FinalizerInfoTest.java and RunFinalizationTest.java
Reviewed-by: dholmes, cjplummer
(cherry picked from commit f143bf7c45)
2023-05-19 18:26:51 +07:00
Weibing Xiao
3c6757251c 8305714: Add an extra test for JDK-8292755
Reviewed-by: coffeys
(cherry picked from commit 746f8d1333)
2023-05-19 18:26:51 +07:00
Afshin Zafari
e4fa8e26be 8305080: Suppress the 'removal' warning for finalize() from test/hotspot/jtreg/compiler/jvmci/common/testcases that used in compiler/jvmci/compilerToVM/ tests
Reviewed-by: dnsimon, coleenp
(cherry picked from commit 1a1ce66dc9)
2023-05-19 18:26:51 +07:00
Adam Sotona
39dd2ab756 8250596: Update remaining manpage references from "OS X" to "macOS"
Reviewed-by: mullan, cjplummer, dholmes, sspitsyn
(cherry picked from commit 3b430b9f73)
2023-05-19 18:26:51 +07:00
Johan Sjölen
cce7e49451 8301493: Replace NULL with nullptr in cpu/aarch64
Reviewed-by: tschatzl, gziemski, dholmes
(cherry picked from commit 948f3b3c24)
2023-05-19 18:26:51 +07:00
Andrew Dinn
3911f60ab6 8307331: Correctly update line maps when class redefine rewrites bytecodes
Reviewed-by: sspitsyn
(cherry picked from commit f94f957734)
2023-05-19 18:26:50 +07:00
Thomas Schatzl
85359356fd 8307421: Fix comment in g1CollectionSetChooser.hpp after JDK-8306836
Reviewed-by: shade
(cherry picked from commit 302bc2fd7f)
2023-05-19 18:26:50 +07:00
Kim Barrett
b4dc0e324e 8307196: Dangling pointer warning for MetadataAllocationRequest
Reviewed-by: dholmes, eosterlund
(cherry picked from commit e19cf26d65)
2023-05-19 18:26:50 +07:00
William Kemper
f59066b595 8307378: Allow collectors to provide specific values for GC notifications' actions
Reviewed-by: kdnilsen, stefank
(cherry picked from commit 1b143ba787)
2023-05-19 18:26:50 +07:00
Leonid Mesnik
ea0ff7ede6 8307308: Add serviceability_ttf_virtual group to exclude jvmti tests developed for virtual threads
Reviewed-by: sspitsyn
(cherry picked from commit a44e8908a1)
2023-05-19 18:26:49 +07:00
Eric Liu
bc024a40ff 8304948: [vectorapi] C2 crashes when expanding VectorBox
Reviewed-by: thartmann, qamai
(cherry picked from commit 46df171d53)
2023-05-19 18:26:49 +07:00
ngubarkov
d95f8e7a79 JBR-5605 ignore empty client area when syncing bounds in XDecoratedPeer. 2023-05-18 22:40:11 +03:00
Maxim Kartashev
0b0ad45a66 JBR-5637 Linux: implement window position change with WM help
Introduced JBR.isWindowMoveSupported() and
JBR.getWindowMove().startMovingTogetherWithMouse()
2023-05-18 19:15:27 +04:00
Vitaly Provodin
b2fd90ab79 JBR-5627 add regression test AsyncProfilerRunnerTest 2023-05-18 05:50:34 +07:00
Maxim Kartashev
de8ed02350 JBR-5631 Refactor Dockerfile for x64 builds 2023-05-16 07:21:47 +07:00
Artem Bochkarev
a79cc2c72e JBR-5426 write JCEF version info inside release file 2023-05-16 05:24:36 +07:00
Vitaly Provodin
442df3d1f5 JBR-5286 make windows-aarch64 building script identical to the same script in jbr17 2023-05-16 05:24:36 +07:00
Vitaly Provodin
debf7e9f98 fixup! JBR-3639 add jbrsdk tarballs for dcevm, jcef builds 2023-05-16 05:24:35 +07:00
4235 changed files with 250301 additions and 100049 deletions

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2023, 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
@@ -57,7 +57,7 @@ runs:
- name: 'Build JTReg'
run: |
# Build JTReg and move files to the proper locations
bash make/build.sh --jdk "$JAVA_HOME_11_X64"
bash make/build.sh --jdk "$JAVA_HOME_17_X64"
mkdir ../installed
mv build/images/jtreg/* ../installed
working-directory: jtreg/src

View File

@@ -30,7 +30,8 @@ runs:
using: composite
steps:
- name: 'Install MSYS2'
uses: msys2/setup-msys2@v2
# use a specific release of msys2/setup-msys2 to prevent jtreg build failures on newer release
uses: msys2/setup-msys2@7efe20baefed56359985e327d329042cde2434ff
with:
install: 'autoconf tar unzip zip make'
path-type: minimal

View File

@@ -145,7 +145,7 @@ jobs:
apt-architecture: 'i386'
# Some multilib libraries do not have proper inter-dependencies, so we have to
# install their dependencies manually.
apt-extra-packages: 'libfreetype6-dev:i386 libtiff-dev:i386 libcupsimage2-dev:i386 libc6-i386'
apt-extra-packages: 'libfreetype6-dev:i386 libtiff-dev:i386 libcupsimage2-dev:i386 libc6-i386 libgcc-s1:i386 libstdc++6:i386'
extra-conf-options: '--with-target-bits=32'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}

View File

@@ -80,6 +80,7 @@ id="toc-getting-jdk-binaries">Getting JDK binaries</a></li>
id="toc-external-library-requirements">External Library Requirements</a>
<ul>
<li><a href="#freetype" id="toc-freetype">FreeType</a></li>
<li><a href="#fontconfig" id="toc-fontconfig">Fontconfig</a></li>
<li><a href="#cups" id="toc-cups">CUPS</a></li>
<li><a href="#x11" id="toc-x11">X11</a></li>
<li><a href="#alsa" id="toc-alsa">ALSA</a></li>
@@ -323,6 +324,7 @@ GB of free disk space is required.</p>
<p>Even for 32-bit builds, it is recommended to use a 64-bit build
machine, and instead create a 32-bit target using
<code>--with-target-bits=32</code>.</p>
<p>Note: The Windows 32-bit x86 port is deprecated and may be removed in a future release.</p>
<h3 id="building-on-aarch64">Building on aarch64</h3>
<p>At a minimum, a machine with 8 cores is advisable, as well as 8 GB of
RAM. (The more cores to use, the more memory you need.) At least 6 GB of
@@ -353,22 +355,22 @@ to date at the time of writing.</p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Operating system</th>
<th style="text-align: left;">Vendor/version used</th>
<th>Operating system</th>
<th>Vendor/version used</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">Linux</td>
<td style="text-align: left;">Oracle Enterprise Linux 6.4 / 7.6</td>
<td>Linux</td>
<td>Oracle Enterprise Linux 6.4 / 7.6</td>
</tr>
<tr class="even">
<td style="text-align: left;">macOS</td>
<td style="text-align: left;">Mac OS X 10.13 (High Sierra)</td>
<td>macOS</td>
<td>Mac OS X 10.13 (High Sierra)</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Windows</td>
<td style="text-align: left;">Windows Server 2012 R2</td>
<td>Windows</td>
<td>Windows Server 2012 R2</td>
</tr>
</tbody>
</table>
@@ -399,6 +401,7 @@ to the build system, e.g. in arguments to <code>configure</code>. So,
use <code>--with-msvcr-dll=/cygdrive/c/msvcr100.dll</code> rather than
<code>--with-msvcr-dll=c:\msvcr100.dll</code>. For details on this
conversion, see the section on <a href="#fixpath">Fixpath</a>.</p>
<p>Note: The Windows 32-bit x86 port is deprecated and may be removed in a future release.</p>
<h4 id="cygwin">Cygwin</h4>
<p>A functioning <a href="http://www.cygwin.com/">Cygwin</a> environment
is required for building the JDK on Windows. If you have a 64-bit OS, we
@@ -677,6 +680,19 @@ copy.</p>
<p>Use <code>--with-freetype-include=&lt;path&gt;</code> and
<code>--with-freetype-lib=&lt;path&gt;</code> if <code>configure</code>
does not automatically locate the platform FreeType files.</p>
<h3 id="fontconfig">Fontconfig</h3>
<p>Fontconfig from <a href="http://fontconfig.org">freedesktop.org
Fontconfig</a> is required on all platforms except Windows and
macOS.</p>
<ul>
<li>To install on an apt-based Linux, try running
<code>sudo apt-get install libfontconfig-dev</code>.</li>
<li>To install on an rpm-based Linux, try running
<code>sudo yum install fontconfig-devel</code>.</li>
</ul>
<p>Use <code>--with-fontconfig-include=&lt;path&gt;</code> and
<code>--with-fontconfig=&lt;path&gt;</code> if <code>configure</code>
does not automatically locate the platform Fontconfig files.</p>
<h3 id="cups">CUPS</h3>
<p>CUPS, <a href="http://www.cups.org">Common UNIX Printing System</a>
header files are required on all platforms, except Windows. Often these
@@ -1195,27 +1211,27 @@ following targets are known to work:</p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Supported devkit targets</th>
<th>Supported devkit targets</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">x86_64-linux-gnu</td>
<td>x86_64-linux-gnu</td>
</tr>
<tr class="even">
<td style="text-align: left;">aarch64-linux-gnu</td>
<td>aarch64-linux-gnu</td>
</tr>
<tr class="odd">
<td style="text-align: left;">arm-linux-gnueabihf</td>
<td>arm-linux-gnueabihf</td>
</tr>
<tr class="even">
<td style="text-align: left;">ppc64-linux-gnu</td>
<td>ppc64-linux-gnu</td>
</tr>
<tr class="odd">
<td style="text-align: left;">ppc64le-linux-gnu</td>
<td>ppc64le-linux-gnu</td>
</tr>
<tr class="even">
<td style="text-align: left;">s390x-linux-gnu</td>
<td>s390x-linux-gnu</td>
</tr>
</tbody>
</table>
@@ -1417,112 +1433,119 @@ example <code>${sysroot}/usr/lib/${target}/</code></p></li>
<p>Architectures that are known to successfully cross-compile like this
are:</p>
<table>
<colgroup>
<col style="width: 13%" />
<col style="width: 13%" />
<col style="width: 15%" />
<col style="width: 27%" />
<col style="width: 29%" />
</colgroup>
<thead>
<tr class="header">
<th style="text-align: left;">Target</th>
<th style="text-align: left;">Debian tree</th>
<th style="text-align: left;">Debian arch</th>
<th style="text-align: left;"><code>--openjdk-target=...</code></th>
<th>Target</th>
<th>Debian tree</th>
<th>Debian arch</th>
<th><code>--openjdk-target=...</code></th>
<th><code>--with-jvm-variants=...</code></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">x86</td>
<td style="text-align: left;">buster</td>
<td style="text-align: left;">i386</td>
<td style="text-align: left;">i386-linux-gnu</td>
<td>x86</td>
<td>buster</td>
<td>i386</td>
<td>i386-linux-gnu</td>
<td>(all)</td>
</tr>
<tr class="even">
<td style="text-align: left;">arm</td>
<td style="text-align: left;">buster</td>
<td style="text-align: left;">armhf</td>
<td style="text-align: left;">arm-linux-gnueabihf</td>
<td>arm</td>
<td>buster</td>
<td>armhf</td>
<td>arm-linux-gnueabihf</td>
<td>(all)</td>
</tr>
<tr class="odd">
<td style="text-align: left;">aarch64</td>
<td style="text-align: left;">buster</td>
<td style="text-align: left;">arm64</td>
<td style="text-align: left;">aarch64-linux-gnu</td>
<td>aarch64</td>
<td>buster</td>
<td>arm64</td>
<td>aarch64-linux-gnu</td>
<td>(all)</td>
</tr>
<tr class="even">
<td style="text-align: left;">ppc64le</td>
<td style="text-align: left;">buster</td>
<td style="text-align: left;">ppc64el</td>
<td style="text-align: left;">powerpc64le-linux-gnu</td>
<td>ppc64le</td>
<td>buster</td>
<td>ppc64el</td>
<td>powerpc64le-linux-gnu</td>
<td>(all)</td>
</tr>
<tr class="odd">
<td style="text-align: left;">s390x</td>
<td style="text-align: left;">buster</td>
<td style="text-align: left;">s390x</td>
<td style="text-align: left;">s390x-linux-gnu</td>
<td>s390x</td>
<td>buster</td>
<td>s390x</td>
<td>s390x-linux-gnu</td>
<td>(all)</td>
</tr>
<tr class="even">
<td style="text-align: left;">mipsle</td>
<td style="text-align: left;">buster</td>
<td style="text-align: left;">mipsel</td>
<td style="text-align: left;">mipsel-linux-gnu</td>
<td>mipsle</td>
<td>buster</td>
<td>mipsel</td>
<td>mipsel-linux-gnu</td>
<td>zero</td>
</tr>
<tr class="odd">
<td style="text-align: left;">mips64le</td>
<td style="text-align: left;">buster</td>
<td style="text-align: left;">mips64el</td>
<td style="text-align: left;">mips64el-linux-gnueabi64</td>
<td>mips64le</td>
<td>buster</td>
<td>mips64el</td>
<td>mips64el-linux-gnueabi64</td>
<td>zero</td>
</tr>
<tr class="even">
<td style="text-align: left;">armel</td>
<td style="text-align: left;">buster</td>
<td style="text-align: left;">arm</td>
<td style="text-align: left;">arm-linux-gnueabi</td>
<td>armel</td>
<td>buster</td>
<td>arm</td>
<td>arm-linux-gnueabi</td>
<td>zero</td>
</tr>
<tr class="odd">
<td style="text-align: left;">ppc</td>
<td style="text-align: left;">sid</td>
<td style="text-align: left;">powerpc</td>
<td style="text-align: left;">powerpc-linux-gnu</td>
<td>ppc</td>
<td>sid</td>
<td>powerpc</td>
<td>powerpc-linux-gnu</td>
<td>zero</td>
</tr>
<tr class="even">
<td style="text-align: left;">ppc64be</td>
<td style="text-align: left;">sid</td>
<td style="text-align: left;">ppc64</td>
<td style="text-align: left;">powerpc64-linux-gnu</td>
<td>ppc64be</td>
<td>sid</td>
<td>ppc64</td>
<td>powerpc64-linux-gnu</td>
<td>(all)</td>
</tr>
<tr class="odd">
<td style="text-align: left;">m68k</td>
<td style="text-align: left;">sid</td>
<td style="text-align: left;">m68k</td>
<td style="text-align: left;">m68k-linux-gnu</td>
<td>m68k</td>
<td>sid</td>
<td>m68k</td>
<td>m68k-linux-gnu</td>
<td>zero</td>
</tr>
<tr class="even">
<td style="text-align: left;">alpha</td>
<td style="text-align: left;">sid</td>
<td style="text-align: left;">alpha</td>
<td style="text-align: left;">alpha-linux-gnu</td>
<td>alpha</td>
<td>sid</td>
<td>alpha</td>
<td>alpha-linux-gnu</td>
<td>zero</td>
</tr>
<tr class="odd">
<td style="text-align: left;">sh4</td>
<td style="text-align: left;">sid</td>
<td style="text-align: left;">sh4</td>
<td style="text-align: left;">sh4-linux-gnu</td>
<td>sh4</td>
<td>sid</td>
<td>sh4</td>
<td>sh4-linux-gnu</td>
<td>zero</td>
</tr>
<tr class="even">
<td style="text-align: left;">riscv64</td>
<td style="text-align: left;">sid</td>
<td style="text-align: left;">riscv64</td>
<td style="text-align: left;">riscv64-linux-gnu</td>
<td>riscv64</td>
<td>sid</td>
<td>riscv64</td>
<td>riscv64-linux-gnu</td>
<td>(all)</td>
</tr>
</tbody>

View File

@@ -126,6 +126,8 @@ space is required.
Even for 32-bit builds, it is recommended to use a 64-bit build machine, and
instead create a 32-bit target using `--with-target-bits=32`.
Note: The Windows 32-bit x86 port is deprecated and may be removed in a future release.
### Building on aarch64
At a minimum, a machine with 8 cores is advisable, as well as 8 GB of RAM.
@@ -162,11 +164,11 @@ This table lists the OS versions used by Oracle when building the JDK. Such
information is always subject to change, but this table is up to date at the
time of writing.
Operating system Vendor/version used
----------------- -------------------------------------------------------
Linux Oracle Enterprise Linux 6.4 / 7.6
macOS Mac OS X 10.13 (High Sierra)
Windows Windows Server 2012 R2
| Operating system | Vendor/version used |
| ----------------- | ---------------------------------- |
| Linux | Oracle Enterprise Linux 6.4 / 7.6 |
| macOS | Mac OS X 10.13 (High Sierra) |
| Windows | Windows Server 2012 R2 |
The double version numbers for Linux are due to the hybrid model
used at Oracle, where header files and external libraries from an older version
@@ -199,6 +201,8 @@ rule also applies to input to the build system, e.g. in arguments to
`--with-msvcr-dll=c:\msvcr100.dll`. For details on this conversion, see the section
on [Fixpath](#fixpath).
Note: The Windows 32-bit x86 port is deprecated and may be removed in a future release.
#### Cygwin
A functioning [Cygwin](http://www.cygwin.com/) environment is required for
@@ -471,6 +475,19 @@ rather than bundling the JDK's own copy.
Use `--with-freetype-include=<path>` and `--with-freetype-lib=<path>`
if `configure` does not automatically locate the platform FreeType files.
### Fontconfig
Fontconfig from [freedesktop.org Fontconfig](http://fontconfig.org) is required
on all platforms except Windows and macOS.
* To install on an apt-based Linux, try running `sudo apt-get install
libfontconfig-dev`.
* To install on an rpm-based Linux, try running `sudo yum install
fontconfig-devel`.
Use `--with-fontconfig-include=<path>` and `--with-fontconfig=<path>`
if `configure` does not automatically locate the platform Fontconfig files.
### CUPS
CUPS, [Common UNIX Printing System](http://www.cups.org) header files are
@@ -970,14 +987,14 @@ https://sourceware.org/autobook/autobook/autobook_17.html). If no
targets are given, a native toolchain for the current platform will be
created. Currently, at least the following targets are known to work:
Supported devkit targets
-------------------------
x86_64-linux-gnu
aarch64-linux-gnu
arm-linux-gnueabihf
ppc64-linux-gnu
ppc64le-linux-gnu
s390x-linux-gnu
| Supported devkit targets |
| ------------------------ |
| x86_64-linux-gnu |
| aarch64-linux-gnu |
| arm-linux-gnueabihf |
| ppc64-linux-gnu |
| ppc64le-linux-gnu |
| s390x-linux-gnu |
`BASE_OS` must be one of "OEL6" for Oracle Enterprise Linux 6 or
"Fedora" (if not specified "OEL6" will be the default). If the base OS
@@ -1204,22 +1221,22 @@ it might require a little nudge with:
Architectures that are known to successfully cross-compile like this are:
Target Debian tree Debian arch `--openjdk-target=...` `--with-jvm-variants=...`
------------ ------------ ------------- ------------------------ --------------
x86 buster i386 i386-linux-gnu (all)
arm buster armhf arm-linux-gnueabihf (all)
aarch64 buster arm64 aarch64-linux-gnu (all)
ppc64le buster ppc64el powerpc64le-linux-gnu (all)
s390x buster s390x s390x-linux-gnu (all)
mipsle buster mipsel mipsel-linux-gnu zero
mips64le buster mips64el mips64el-linux-gnueabi64 zero
armel buster arm arm-linux-gnueabi zero
ppc sid powerpc powerpc-linux-gnu zero
ppc64be sid ppc64 powerpc64-linux-gnu (all)
m68k sid m68k m68k-linux-gnu zero
alpha sid alpha alpha-linux-gnu zero
sh4 sid sh4 sh4-linux-gnu zero
riscv64 sid riscv64 riscv64-linux-gnu (all)
| Target | Debian tree | Debian arch | `--openjdk-target=...` | `--with-jvm-variants=...` |
| ------------ | ------------ | ------------- | ------------------------ | ------------------------- |
| x86 | buster | i386 | i386-linux-gnu | (all) |
| arm | buster | armhf | arm-linux-gnueabihf | (all) |
| aarch64 | buster | arm64 | aarch64-linux-gnu | (all) |
| ppc64le | buster | ppc64el | powerpc64le-linux-gnu | (all) |
| s390x | buster | s390x | s390x-linux-gnu | (all) |
| mipsle | buster | mipsel | mipsel-linux-gnu | zero |
| mips64le | buster | mips64el | mips64el-linux-gnueabi64 | zero |
| armel | buster | arm | arm-linux-gnueabi | zero |
| ppc | sid | powerpc | powerpc-linux-gnu | zero |
| ppc64be | sid | ppc64 | powerpc64-linux-gnu | (all) |
| m68k | sid | m68k | m68k-linux-gnu | zero |
| alpha | sid | alpha | alpha-linux-gnu | zero |
| sh4 | sid | sh4 | sh4-linux-gnu | zero |
| riscv64 | sid | riscv64 | riscv64-linux-gnu | (all) |
### Building for ARM/aarch64

12
jb/generate-wakefield.sh Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
if [[ -z "$1" ]]; then
SCANNER=wayland-scanner
else
SCANNER="$1"
fi
set -ex
"$SCANNER" client-header src/java.desktop/share/native/libwakefield/protocol/wakefield.xml src/java.desktop/unix/native/libawt_wlawt/wakefield-client-protocol.h
"$SCANNER" private-code src/java.desktop/share/native/libwakefield/protocol/wakefield.xml src/java.desktop/unix/native/libawt_wlawt/wakefield-client-protocol.c

View File

@@ -1,13 +0,0 @@
# jetbrains/runtime:jbr15env
FROM centos:7
RUN yum -y install centos-release-scl
RUN yum -y install devtoolset-8
RUN yum -y install zip bzip2 unzip tar wget make autoconf automake libtool gcc gcc-c++ libstdc++-devel alsa-devel cups-devel xorg-x11-devel libjpeg62-devel giflib-devel freetype-devel file which libXtst-devel libXt-devel libXrender-devel alsa-lib-devel fontconfig-devel libXrandr-devel libXi-devel git
# Install Java 16
RUN wget https://cdn.azul.com/zulu/bin/zulu17.28.13-ca-jdk17.0.0-linux_x64.tar.gz \
-O - | tar xz -C /
RUN mv /zulu17.28.13-ca-jdk17.0.0-linux_x64 /jdk17.0.0
ENV PATH /opt/rh/devtoolset-8/root/usr/bin:$PATH
RUN mkdir .git
RUN git config user.email "teamcity@jetbrains.com"
RUN git config user.name "builduser"

View File

@@ -8,15 +8,36 @@
FROM arm64v8/alpine:3.12
# Install the necessary build tools
RUN apk --no-cache add --update bash grep tar zip bzip2 rsync fontconfig build-base \
git libx11-dev libxext-dev libxrandr-dev libxrender-dev libxt-dev \
libxtst-dev autoconf freetype-dev cups-dev alsa-lib-dev file \
fontconfig fontconfig-dev linux-headers
RUN apk --no-cache add --update \
alsa-lib-dev=1.2.2-r0 \
autoconf=2.69-r2 \
bash=5.0.17-r0 \
build-base=0.5-r2 \
bzip2=1.0.8-r1 \
cups-dev=2.3.3-r0 \
file=5.38-r0 \
fontconfig=2.13.1-r2 \
fontconfig-dev=2.13.1-r2 \
freetype-dev=2.10.4-r2 \
git=2.26.3-r1 \
grep=3.4-r0 \
libx11-dev=1.6.12-r1 \
libxext-dev=1.3.4-r0 \
libxrandr-dev=1.5.2-r0 \
libxrender-dev=0.9.10-r3 \
libxt-dev=1.2.0-r0 \
libxtst-dev=1.2.3-r3 \
linux-headers=5.4.5-r1 \
rsync=3.1.3-r3 \
tar=1.32-r2 \
wayland-dev=1.18.0-r4 \
zip=3.0-r8
# Set up boot JDK for building
COPY boot_jdk_musl_aarch64.tar.gz /jdk17/
RUN cd /jdk17 && tar --strip-components=1 -xzf boot_jdk_musl_aarch64.tar.gz && rm /jdk17/boot_jdk_musl_aarch64.tar.gz
ENV BOOT_JDK=/jdk17
COPY boot_jdk_musl_aarch64.tar.gz /jdk20/
RUN cd /jdk20 && tar --strip-components=1 -xzf boot_jdk_musl_aarch64.tar.gz && rm /jdk20/boot_jdk_musl_aarch64.tar.gz
ENV BOOT_JDK=/jdk20
RUN git config --global user.email "teamcity@jetbrains.com" && \
git config --global user.name "builduser"

View File

@@ -8,15 +8,35 @@
FROM alpine:3.14
# Install the necessary build tools
RUN apk --no-cache add --update bash grep tar zip bzip2 rsync fontconfig build-base \
git libx11-dev libxext-dev libxrandr-dev libxrender-dev libxt-dev \
libxtst-dev autoconf freetype-dev cups-dev alsa-lib-dev file \
fontconfig fontconfig-dev linux-headers
RUN apk --no-cache add --update \
alsa-lib-dev=1.2.5-r2 \
autoconf=2.71-r0 \
bash=5.1.16-r0 \
build-base=0.5-r3 \
bzip2=1.0.8-r1 \
cups-dev=2.3.3-r3 \
file=5.40-r1 \
fontconfig=2.13.1-r4 \
fontconfig-dev=2.13.1-r4 \
freetype-dev=2.10.4-r3 \
git=2.32.7-r0 \
grep=3.7-r0 \
libx11-dev=1.7.3.1-r0 \
libxext-dev=1.3.4-r0 \
libxrandr-dev=1.5.2-r1 \
libxrender-dev=0.9.10-r3 \
libxt-dev=1.2.1-r0 \
libxtst-dev=1.2.3-r3 \
linux-headers=5.10.41-r0 \
rsync=3.2.5-r0 \
tar=1.34-r1 \
wayland-dev=1.19.0-r0 \
zip=3.0-r9
# Set up boot JDK for building
COPY boot_jdk_musl_amd64.tar.gz /jdk17/
RUN cd /jdk17 && tar --strip-components=1 -xzf boot_jdk_musl_amd64.tar.gz && rm /jdk17/boot_jdk_musl_amd64.tar.gz
ENV BOOT_JDK=/jdk17
COPY boot_jdk_musl_amd64.tar.gz /jdk20/
RUN cd /jdk20 && tar --strip-components=1 -xzf boot_jdk_musl_amd64.tar.gz && rm /jdk20/boot_jdk_musl_amd64.tar.gz
ENV BOOT_JDK=/jdk20
RUN git config --global user.email "teamcity@jetbrains.com" && \
git config --global user.name "builduser"

View File

@@ -0,0 +1,57 @@
# jetbrains/runtime:jbr17env_x86_64
FROM centos:7
RUN yum -y install centos-release-scl; \
yum -y install devtoolset-10-10.1-0.el7; \
yum -y install \
alsa-lib-devel-1.1.8-1.el7 \
autoconf-2.69-11.el7 \
automake-1.13.4-3.el7 \
bzip2-1.0.6-13.el7 \
cups-devel-1.6.3-51.el7 \
file-5.11-37.el7 \
fontconfig-devel-2.13.0-4.3.el7 \
freetype-devel-2.8-14.el7_9.1 \
giflib-devel-4.1.6-9.el7 \
git-1.8.3.1-24.el7_9 \
libtool-2.4.2-22.el7_3 \
libXi-devel-1.7.9-1.el7 \
libXrandr-devel-1.5.1-2.el7 \
libXrender-devel-0.9.10-1.el7 \
libXt-devel-1.1.5-3.el7 \
libXtst-devel-1.2.3-1.el7 \
make-3.82-24.el7 \
tar-1.26-35.el7 \
unzip-6.0-24.el7_9 \
wayland-devel-1.15.0-1.el7 \
wget-1.14-18.el7_6.1 \
which-2.20-7.el7 \
zip-3.0-11.el7 \
python3-3.6.8-17.el7
RUN mkdir .git && \
git config user.email "teamcity@jetbrains.com" && \
git config user.name "builduser"
ENV LD_LIBRARY_PATH="/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib:/opt/rh/devtoolset-10/root/usr/lib64/dyninst:/opt/rh/devtoolset-10/root/usr/lib/dyninst:/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib"
ENV PATH="/opt/rh/devtoolset-10/root/usr/bin::${PATH}"
ENV PKG_CONFIG_PATH="/opt/rh/devtoolset-10/root/usr/lib64/pkgconfig"
# Build GLSLC
RUN curl -OL https://github.com/Kitware/CMake/releases/download/v3.27.5/cmake-3.27.5-linux-x86_64.tar.gz \
&& echo 138c68addae825b16ed78d792dafef5e0960194833f48bd77e7e0429c6bc081c *cmake-3.27.5-linux-x86_64.tar.gz | sha256sum -c - \
&& tar -xzf cmake-3.27.5-linux-x86_64.tar.gz \
&& rm cmake-3.27.5-linux-x86_64.tar.gz \
&& git clone https://github.com/google/shaderc --branch v2023.6 \
&& cd shaderc \
&& ./utils/git-sync-deps \
&& mkdir build \
&& cd build \
&& /cmake-3.27.5-linux-x86_64/bin/cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DSHADERC_SKIP_TESTS=ON \
-DSHADERC_SKIP_EXAMPLES=ON \
-DSHADERC_SKIP_COPYRIGHT_CHECK=ON \
.. \
&& make install
ENV PATH="/cmake-3.27.5-linux-x86_64/bin::${PATH}"

View File

@@ -4,10 +4,10 @@ set -euo pipefail
set -x
# This script creates a Docker image suitable for building musl AArch64 variant
# of the JetBrains Runtime version 17.
# of the JetBrains Runtime version 21.
BOOT_JDK_REMOTE_FILE=zulu17.32.13-ca-jdk17.0.2-linux_musl_aarch64.tar.gz
BOOT_JDK_SHA=6b920559abafbe9bdef386a20ecf3a2f318bc1f0d8359eb1f95aee26606bbc70
BOOT_JDK_REMOTE_FILE=zulu20.32.11-ca-jdk20.0.2-linux_musl_aarch64.tar.gz
BOOT_JDK_SHA=eec57cf744c2438f695221f041d4804de3033ad33b6dba769d3359813ba3f90d
BOOT_JDK_LOCAL_FILE=boot_jdk_musl_aarch64.tar.gz
if [ ! -f $BOOT_JDK_LOCAL_FILE ]; then
@@ -22,7 +22,7 @@ sha256sum -c - <<EOF
$BOOT_JDK_SHA *$BOOT_JDK_LOCAL_FILE
EOF
docker build -t jbr17buildenv -f Dockerfile.musl_aarch64 .
docker build -t jetbrains/runtime:jbr21env_musl_aarch64 -f Dockerfile.musl_aarch64 .
# NB: the resulting container can (and should) be used without the network
# connection (--network none) during build in order to reduce the chance

View File

@@ -4,10 +4,10 @@ set -euo pipefail
set -x
# This script creates a Docker image suitable for building musl-x64 variant
# of the JetBrains Runtime version 17.
# of the JetBrains Runtime version 21.
BOOT_JDK_REMOTE_FILE=zulu17.32.13-ca-jdk17.0.2-linux_musl_x64.tar.gz
BOOT_JDK_SHA=bcc5342011bd9f3643372aadbdfa68d47463ff0d8621668a0bdf2910614d95c6
BOOT_JDK_REMOTE_FILE=zulu20.32.11-ca-jdk20.0.2-linux_musl_x64.tar.gz
BOOT_JDK_SHA=fca5081dd6da847fcd06f5b755e58edae22d6784f21b81bf73da2b538f842c07
BOOT_JDK_LOCAL_FILE=boot_jdk_musl_amd64.tar.gz
if [ ! -f $BOOT_JDK_LOCAL_FILE ]; then
@@ -22,7 +22,7 @@ sha256sum -c - <<EOF
$BOOT_JDK_SHA *$BOOT_JDK_LOCAL_FILE
EOF
docker build -t jbr17buildenv -f Dockerfile.musl_x64 .
docker build -t jetbrains/runtime:jbr21env_musl_x64 -f Dockerfile.musl_x64 .
# NB: the resulting container can (and should) be used without the network
# connection (--network none) during build in order to reduce the chance

View File

@@ -94,8 +94,7 @@ esac
WITH_ZIPPED_NATIVE_DEBUG_SYMBOLS="--with-native-debug-symbols=zipped"
REPRODUCIBLE_BUILD_OPTS="--enable-reproducible-build
--with-source-date=$SOURCE_DATE_EPOCH
REPRODUCIBLE_BUILD_OPTS="--with-source-date=$SOURCE_DATE_EPOCH
--with-hotspot-build-time=$BUILD_TIME
--with-copyright-year=$COPYRIGHT_YEAR
--disable-absolute-paths-in-output

View File

@@ -135,6 +135,7 @@ if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not changed
jbr_name_postfix="_${bundle_type}"
cat $JCEF_PATH/jcef.version >> $JSDK/release
else
jbr_name_postfix=""
fi

View File

@@ -93,7 +93,7 @@ function create_image_bundle {
[ -f "$JBR".tar.gz ] && rm "$JBR.tar.gz"
touch -c -d "@$SOURCE_DATE_EPOCH" "$JBR".tar
gzip "$JBR".tar || do_exit $?
rm -rf "${IMAGES_DIR:?}"/"$__root_dir"
#rm -rf "${IMAGES_DIR:?}"/"$__root_dir"
}
WITH_DEBUG_LEVEL="--with-debug-level=release"
@@ -134,7 +134,7 @@ if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not changed
jbr_name_postfix="_${bundle_type}"
[ "$bundle_type" != "fd" ] && jbrsdk_name_postfix="_${bundle_type}"
cat $JCEF_PATH/jcef.version >> $JSDK/release
else
jbr_name_postfix=""
fi

View File

@@ -0,0 +1,47 @@
#!/bin/bash
SCRIPT_DIR="$(cd "$(dirname "$0")" >/dev/null && pwd)"
source "$SCRIPT_DIR/jetsign-common.sh" || exit 1
function isMacOsBinary() {
file "$1" | grep -q 'Mach-O'
}
function isSigned() {
codesign --verify "$1" >/dev/null 2>&1 && ! grep -q Signature=adhoc < <(codesign --display --verbose "$1" 2>&1)
}
# last argument is a path to be signed
pathToBeSigned="$(pwd)/${*: -1}"
jetSignArgs=("${@:1:$#-1}")
if [[ ! -f "$pathToBeSigned" ]]; then
echo "$pathToBeSigned is missing or not a file"
exit 1
elif isSigned "$pathToBeSigned" && ! isForced "${jetSignArgs[@]}" ; then
echo "Already signed: $pathToBeSigned"
elif [[ "$JETSIGN_CLIENT" == "null" ]]; then
echo "JetSign client is missing, cannot proceed with signing"
exit 1
elif ! isMacOsBinary "$pathToBeSigned" && [[ "$pathToBeSigned" != *.sit ]] && [[ "$pathToBeSigned" != *.tar.gz ]]; then
echo "$pathToBeSigned won't be signed, assumed not to be a macOS executable"
else
if isMacOsBinary "$pathToBeSigned" && ! isSigned "$pathToBeSigned" ; then
echo "Unsigned macOS binary: $pathToBeSigned"
fi
workDir=$(dirname "$pathToBeSigned")
pathSigned="$workDir/signed/${pathToBeSigned##*/}"
jetSignExtensions=$(jetSignExtensions "${jetSignArgs[@]}")
contentType=$(jetSignContentType "$pathToBeSigned")
(
cd "$workDir" || exit 1
"$JETSIGN_CLIENT" -log-format text -denoted-content-type "$contentType" -extensions "$jetSignExtensions" "$pathToBeSigned"
# SRE-1223 (Codesign removes execute bits in executable files) workaround
chmod "$(stat -f %A "$pathToBeSigned")" "$pathSigned"
if isMacOsBinary "$pathSigned"; then
isSigned "$pathSigned"
fi
rm "$pathToBeSigned"
mv "$pathSigned" "$pathToBeSigned"
rm -rf "$workDir/signed"
)
fi

View File

@@ -0,0 +1,63 @@
#!/bin/bash
set -euo pipefail
function isForced() {
for arg in "$@"; do
if [[ "$arg" == --force ]]; then
return 0
fi
done
return 1
}
function jetSignExtensions() {
args=("$@")
((lastElementIndex=${#args[@]}-1))
for index in "${!args[@]}"; do
arg=${args[$index]}
case "$arg" in
--sign | -s)
echo -n 'mac_codesign_identity='
continue
;;
--entitlements)
echo -n 'mac_codesign_entitlements='
continue
;;
--options=runtime)
echo -n 'mac_codesign_options=runtime'
;;
--force)
echo -n 'mac_codesign_force=true'
;;
--timestamp | --verbose | -v)
continue
;;
*)
echo -n "$arg"
;;
esac
if [[ $index != "$lastElementIndex" ]]; then
echo -n ","
fi
done
}
# See jetbrains.sign.util.FileUtil.contentType
function jetSignContentType() {
case "${1##*/}" in
*.sit)
echo -n 'application/x-mac-app-zip'
;;
*.tar.gz)
echo -n 'application/x-mac-app-targz'
;;
*.pkg)
echo -n 'application/x-mac-pkg'
;;
*)
echo -n 'application/x-mac-app-bin'
;;
esac
}

View File

@@ -81,6 +81,10 @@ function create_image_bundle {
zip_native_debug_symbols $IMAGES_DIR/jdk-bundle/jdk-$JBSDK_VERSION.jdk "${JBR}_diz"
fi
if [ "$bundle_type" == "jcef" ]; then
cat $JCEF_PATH/jcef.version >> "$JRE_CONTENTS/Home/release"
fi
cp -R "$JSDK"/../MacOS "$JRE_CONTENTS"
cp "$JSDK"/../Info.plist "$JRE_CONTENTS"

View File

@@ -1,21 +1,17 @@
#!/bin/bash
#immediately exit script with an error if a command fails
set -euo pipefail
set -x
[[ "${SCRIPT_VERBOSE:-}" == "1" ]] && set -x
APP_DIRECTORY=$1
APPL_USER=$2
APPL_PASSWORD=$3
APP_NAME=$4
BUNDLE_ID=$5
FAKE_ROOT="${6:-fake-root}"
APP_PATH=$1
if [[ -z "$APP_DIRECTORY" ]] || [[ -z "$APPL_USER" ]] || [[ -z "$APPL_PASSWORD" ]]; then
echo "Usage: $0 AppDirectory Username Password"
if [[ -z "$APP_PATH" ]]; then
echo "Usage: $0 AppPath"
exit 1
fi
if [[ ! -d "$APP_DIRECTORY" ]]; then
echo "AppDirectory '$APP_DIRECTORY' does not exist or not a directory"
if [[ ! -f "$APP_PATH" ]]; then
echo "AppName '$APP_PATH' does not exist or not a file"
exit 1
fi
@@ -23,99 +19,22 @@ function log() {
echo "$(date '+[%H:%M:%S]') $*"
}
function publish-log() {
id=$1
file=$2
curl -T "$file" "$ARTIFACTORY_URL/$id" || true
}
function altool-upload() {
# Since altool uses same file for upload token we have to trick it into using different folders for token file location
# Also it copies zip into TMPDIR so we override it too, to simplify cleanup
OLD_HOME="$HOME"
export HOME="$FAKE_ROOT/home"
export TMPDIR="$FAKE_ROOT/tmp"
mkdir -p "$HOME"
mkdir -p "$TMPDIR"
export _JAVA_OPTIONS="-Duser.home=$HOME -Djava.io.tmpdir=$TMPDIR"
# Reduce amount of downloads, cache transporter libraries
shared_itmstransporter="$OLD_HOME/shared-itmstransporter"
if [[ -f "$shared_itmstransporter" ]]; then
cp -r "$shared_itmstransporter" "$HOME/.itmstransporter"
fi
# For some reason altool prints everything to stderr, not stdout
set +e
xcrun altool --notarize-app \
--username "$APPL_USER" --password "$APPL_PASSWORD" \
--primary-bundle-id "$BUNDLE_ID" \
--asc-provider JetBrainssro --file "$1" 2>&1 | tee "altool.init.out"
unset TMPDIR
export HOME="$OLD_HOME"
set -e
}
# check required parameters
: "${APPLE_ISSUER_ID}"
: "${APPLE_KEY_ID}"
: "${APPLE_PRIVATE_KEY}"
#immediately exit script with an error if a command fails
set -euo pipefail
# shellcheck disable=SC2064
trap "rm -f \"$PWD/tmp_key\"" INT EXIT RETURN
echo -n "${APPLE_PRIVATE_KEY}" > tmp_key
#file="$APP_NAME.zip"
log "Notarizing $APP_PATH..."
xcrun notarytool submit --key tmp_key --key-id "${APPLE_KEY_ID}" --issuer "${APPLE_ISSUER_ID}" "$APP_PATH" 2>&1 | tee "notarytool.submit.out"
REQUEST_ID="$(grep -e " id: " "notarytool.submit.out" | grep -oE '([0-9a-f-]{36})'| head -n1)"
#log "Zipping $file..."
#rm -rf "$file"
#ditto -c -k --sequesterRsrc --keepParent "$APP_DIRECTORY" "$file"
xcrun notarytool wait "$REQUEST_ID" --key tmp_key --key-id "${APPLE_KEY_ID}" --issuer "${APPLE_ISSUER_ID}" --timeout 6h ||:
xcrun notarytool log "$REQUEST_ID" --key tmp_key --key-id "${APPLE_KEY_ID}" --issuer "${APPLE_ISSUER_ID}" developer_log.json ||:
xcrun notarytool info "$REQUEST_ID" --key tmp_key --key-id "${APPLE_KEY_ID}" --issuer "${APPLE_ISSUER_ID}"
log "Notarizing $APP_NAME..."
rm -rf "altool.init.out" "altool.check.out"
altool-upload "$APP_NAME"
notarization_info="$(grep -e "RequestUUID" "altool.init.out" | grep -oE '([0-9a-f-]{36})')"
if [ -z "$notarization_info" ]; then
log "Faile to read RequestUUID from altool.init.out"
exit 10
fi
PATH="$PATH:/usr/local/bin/"
log "Notarization request sent, awaiting response"
spent=0
while true; do
# For some reason altool prints everything to stderr, not stdout
xcrun altool --username "$APPL_USER" --notarization-info "$notarization_info" --password "$APPL_PASSWORD" >"altool.check.out" 2>&1 || true
status="$(grep -oe 'Status: .*' "altool.check.out" | cut -c 9- || true)"
log "Current status: $status"
if [ "$status" = "invalid" ]; then
log "Notarization failed"
ec=1
elif [ "$status" = "success" ]; then
log "Notarization succeeded"
ec=0
else
if [ "$status" != "in progress" ]; then
log "Unknown notarization status, waiting more, altool output:"
cat "altool.check.out"
fi
if [[ $spent -gt 60 ]]; then
log "Waiting time out (apx 60 minutes)"
ec=2
break
fi
sleep 60
((spent += 1))
continue
fi
developer_log="developer_log.json"
log "Fetching $developer_log"
# TODO: Replace cut with trim or something better
url="$(grep -oe 'LogFileURL: .*' "altool.check.out" | cut -c 13-)"
wget "$url" -O "$developer_log" && cat "$developer_log" || true
if [ $ec != 0 ]; then
log "Publishing $developer_log"
publish-log "$notarization_info" "$developer_log"
fi
break
done
cat "altool.check.out"
rm -rf "altool.init.out" "altool.check.out"
exit $ec
log "Notarizing finished"

View File

@@ -0,0 +1,41 @@
#!/bin/bash
SCRIPT_DIR="$(cd "$(dirname "$0")" >/dev/null && pwd)"
source "$SCRIPT_DIR/jetsign-common.sh" || exit 1
function isSigned() {
pkgutil --check-signature "$1" >/dev/null 2>&1 && grep -q "signed by a developer certificate" < <(pkgutil --check-signature "$1" 2>&1)
}
# second last argument is a path to be signed
pathToBeSigned="$(pwd)/${*:(-2):1}"
# last argument is a path to signed file
pathOut="$(pwd)/${*:(-1)}"
jetSignArgs=("${@:1:$#-2}")
if [[ ! -f "$pathToBeSigned" ]]; then
echo "$pathToBeSigned is missing or not a file"
exit 1
elif isSigned "$pathToBeSigned" && ! isForced "${jetSignArgs[@]}" ; then
echo "Already signed: $pathToBeSigned"
elif [[ "$JETSIGN_CLIENT" == "null" ]]; then
echo "JetSign client is missing, cannot proceed with signing"
exit 1
elif [[ "$pathToBeSigned" != *.pkg ]]; then
echo "$pathToBeSigned won't be signed, assumed not to be a macOS package"
else
if ! isSigned "$pathToBeSigned" ; then
echo "Unsigned macOS package: $pathToBeSigned"
fi
workDir=$(dirname "$pathToBeSigned")
pathSigned="$workDir/signed/${pathToBeSigned##*/}"
jetSignExtensions=$(jetSignExtensions "${jetSignArgs[@]}")
contentType=$(jetSignContentType "$pathToBeSigned")
(
cd "$workDir" || exit 1
"$JETSIGN_CLIENT" -log-format text -denoted-content-type "$contentType" -extensions "$jetSignExtensions" "$pathToBeSigned"
isSigned "$pathSigned"
rm -f "$pathOut"
mv "$pathSigned" "$pathOut"
rm -rf "$workDir/signed"
)
fi

View File

@@ -1,18 +1,33 @@
#!/bin/bash
#immediately exit script with an error if a command fails
set -euo pipefail
set -x
[[ "${SCRIPT_VERBOSE:-}" == "1" ]] && set -x
if [[ $# -lt 5 ]]; then
echo "Usage: $0 AppDirectory AppName BundleId CertificateID InstallerCertificateID"
exit 1
fi
APPLICATION_PATH=$1
APP_NAME=$2
PKG_NAME=$2
BUNDLE_ID=$3
JB_DEVELOPER_CERT=$4
JB_INSTALLER_CERT=$5
if [[ -z "$APPLICATION_PATH" ]] || [[ -z "$JB_DEVELOPER_CERT" ]]; then
echo "Usage: $0 AppDirectory CertificateID"
exit 1
SCRIPT_DIR="$(cd "$(dirname "$0")" >/dev/null && pwd)"
# Use JetBrains sign utility if it's available
if [[ "${JETSIGN_CLIENT:=}" == "null" ]] || [[ "$JETSIGN_CLIENT" == "" ]]; then
JB_SIGN=false
SIGN_UTILITY="codesign"
PRODUCTSIGN_UTILITY="productsign"
else
JB_SIGN=true
SIGN_UTILITY="$SCRIPT_DIR/codesign.sh"
PRODUCTSIGN_UTILITY="$SCRIPT_DIR/productsign.sh"
fi
if [[ ! -d "$APPLICATION_PATH" ]]; then
echo "AppDirectory '$APPLICATION_PATH' does not exist or not a directory"
exit 1
@@ -22,9 +37,6 @@ function log() {
echo "$(date '+[%H:%M:%S]') $*"
}
#immediately exit script with an error if a command fails
set -euo pipefail
# Cleanup files left from previous sign attempt (if any)
find "$APPLICATION_PATH" -name '*.cstemp' -exec rm '{}' \;
@@ -37,13 +49,13 @@ for f in \
if [ -d "$APPLICATION_PATH/$f" ]; then
find "$APPLICATION_PATH/$f" \
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -name "*.tbd" -o -name "*.node" -o -perm +111 \) \
-exec codesign --timestamp \
-exec "$SIGN_UTILITY" --timestamp \
-v -s "$JB_DEVELOPER_CERT" --options=runtime --force \
--entitlements entitlements.xml {} \;
--entitlements "$SCRIPT_DIR/entitlements.xml" {} \;
fi
done
log "Signing libraries in jars in $PWD"
log "Signing libraries in jars in $APPLICATION_PATH"
# todo: add set -euo pipefail; into the inner sh -c
# `-e` prevents `grep -q && printf` loginc
@@ -61,10 +73,10 @@ find "$APPLICATION_PATH" -name '*.jar' \
find jarfolder \
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -name "*.tbd" -o -name "jattach" \) \
-exec codesign --timestamp \
-exec "$SIGN_UTILITY" --timestamp \
--force \
-v -s "$JB_DEVELOPER_CERT" --options=runtime \
--entitlements entitlements.xml {} \;
--entitlements "$SCRIPT_DIR/entitlements.xml" {} \;
(cd jarfolder; zip -q -r -o -0 ../jar.jar .)
mv jar.jar "$file"
@@ -73,44 +85,77 @@ find "$APPLICATION_PATH" -name '*.jar' \
rm -rf jarfolder jar.jar
log "Signing other files..."
# shellcheck disable=SC2043
for f in \
"Contents/Home/bin"; do
if [ -d "$APPLICATION_PATH/$f" ]; then
find "$APPLICATION_PATH/$f" \
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -name "*.tbd" -o -perm +111 \) \
-exec codesign --timestamp \
-exec "$SIGN_UTILITY" --timestamp \
-v -s "$JB_DEVELOPER_CERT" --options=runtime --force \
--entitlements entitlements.xml {} \;
--entitlements "$SCRIPT_DIR/entitlements.xml" {} \;
fi
done
#log "Signing executable..."
#codesign --timestamp \
# -v -s "$JB_DEVELOPER_CERT" --options=runtime \
# --force \
# --entitlements entitlements.xml "$APPLICATION_PATH/Contents/MacOS/idea"
log "Signing whole frameworks..."
# shellcheck disable=SC2043
if [ "$JB_SIGN" = true ]; then for f in \
"Contents/Home/Frameworks" "Contents/Frameworks"; do
if [ -d "$APPLICATION_PATH/$f" ]; then
find "$APPLICATION_PATH/$f" \( -name '*.framework' -o -name '*.app' \) -maxdepth 1 | while read -r line
do
log "Signing '$line':"
tar -pczf tmp-to-sign.tar.gz -C "$(dirname "$line")" "$(basename "$line")"
"$SIGN_UTILITY" --timestamp \
-v -s "$JB_DEVELOPER_CERT" --options=runtime \
--force \
--entitlements "$SCRIPT_DIR/entitlements.xml" tmp-to-sign.tar.gz
rm -rf "$line"
tar -xzf tmp-to-sign.tar.gz --directory "$(dirname "$line")"
rm -f tmp-to-sign.tar.gz
done
fi
done; fi
log "Checking framework signatures..."
for f in \
"Contents/Home/Frameworks" "Contents/Frameworks"; do
if [ -d "$APPLICATION_PATH/$f" ]; then
find "$APPLICATION_PATH/$f" -name '*.framework' -maxdepth 1 | while read -r line
do
log "Checking '$line':"
codesign --verify --deep --strict --verbose=4 "$line"
done
fi
done
log "Signing whole app..."
codesign --timestamp \
-v -s "$JB_DEVELOPER_CERT" --options=runtime \
--force \
--entitlements entitlements.xml "$APPLICATION_PATH"
if [ "$JB_SIGN" = true ]; then
tar -pczf tmp-to-sign.tar.gz --exclude='man' -C "$(dirname "$APPLICATION_PATH")" "$(basename "$APPLICATION_PATH")"
"$SIGN_UTILITY" --timestamp \
-v -s "$JB_DEVELOPER_CERT" --options=runtime \
--force \
--entitlements "$SCRIPT_DIR/entitlements.xml" tmp-to-sign.tar.gz
rm -rf "$APPLICATION_PATH"
tar -xzf tmp-to-sign.tar.gz --directory "$(dirname "$APPLICATION_PATH")"
rm -f tmp-to-sign.tar.gz
else
"$SIGN_UTILITY" --timestamp \
-v -s "$JB_DEVELOPER_CERT" --options=runtime \
--force \
--entitlements "$SCRIPT_DIR/entitlements.xml" "$APPLICATION_PATH"
fi
BUILD_NAME=$(echo $APPLICATION_PATH | awk -F"/" '{ print $2 }')
BUILD_NAME="$(basename "$APPLICATION_PATH")"
log "Creating $APP_NAME.pkg..."
rm -rf "$APP_NAME.pkg"
log "Creating $PKG_NAME..."
rm -rf "$PKG_NAME"
mkdir -p unsigned
pkgbuild --identifier $BUNDLE_ID --root $APPLICATION_PATH \
--install-location /Library/Java/JavaVirtualMachines/${BUILD_NAME} unsigned/${APP_NAME}.pkg
productsign --timestamp --sign "$JB_INSTALLER_CERT" unsigned/${APP_NAME}.pkg ${APP_NAME}.pkg
#log "Signing whole app..."
#codesign --timestamp \
# -v -s "$JB_DEVELOPER_CERT" --options=runtime \
# --force \
# --entitlements entitlements.xml $APP_NAME.pkg
--install-location /Library/Java/JavaVirtualMachines/${BUILD_NAME} unsigned/${PKG_NAME}
log "Signing $PKG_NAME..."
"$PRODUCTSIGN_UTILITY" --timestamp --sign "$JB_INSTALLER_CERT" unsigned/${PKG_NAME} ${PKG_NAME}
log "Verifying java is not broken"
find "$APPLICATION_PATH" \

View File

@@ -2,7 +2,7 @@
#immediately exit script with an error if a command fails
set -euo pipefail
set -x
[[ "${SCRIPT_VERBOSE:-}" == "1" ]] && set -x
export COPY_EXTENDED_ATTRIBUTES_DISABLE=true
export COPYFILE_DISABLE=true
@@ -17,7 +17,7 @@ JB_INSTALLER_CERT=$6
NOTARIZE=$7
BUNDLE_ID=$8
cd "$(dirname "$0")"
SCRIPT_DIR="$(cd "$(dirname "$0")" >/dev/null && pwd)"
function log() {
echo "$(date '+[%H:%M:%S]') $*"
@@ -44,7 +44,8 @@ fi
log "$INPUT_FILE extracted and removed"
APP_NAME=$(echo ${INPUT_FILE} | awk -F".tar" '{ print $1 }')
APP_NAME=$(basename "$INPUT_FILE" | awk -F".tar" '{ print $1 }')
PKG_NAME="$APP_NAME.pkg"
APPLICATION_PATH=$EXPLODED/$(ls $EXPLODED)
find "$APPLICATION_PATH/Contents/Home/bin" \
@@ -73,16 +74,18 @@ if [[ $non_plist -gt 0 ]]; then
exit 1
fi
log "Unlocking keychain..."
# Make sure *.p12 is imported into local KeyChain
security unlock-keychain -p "$PASSWORD" "/Users/$USERNAME/Library/Keychains/login.keychain"
if [[ "${JETSIGN_CLIENT:=}" == "null" ]] || [[ "$JETSIGN_CLIENT" == "" ]]; then
log "Unlocking keychain..."
# Make sure *.p12 is imported into local KeyChain
security unlock-keychain -p "$PASSWORD" "/Users/$USERNAME/Library/Keychains/login.keychain"
fi
attempt=1
limit=3
set +e
while [[ $attempt -le $limit ]]; do
log "Signing (attempt $attempt) $APPLICATION_PATH ..."
./sign.sh "$APPLICATION_PATH" "$APP_NAME" "$BUNDLE_ID" "$CODESIGN_STRING" "$JB_INSTALLER_CERT"
"$SCRIPT_DIR/sign.sh" "$APPLICATION_PATH" "$PKG_NAME" "$BUNDLE_ID" "$CODESIGN_STRING" "$JB_INSTALLER_CERT"
ec=$?
if [[ $ec -ne 0 ]]; then
((attempt += 1))
@@ -104,19 +107,10 @@ set -e
if [ "$NOTARIZE" = "yes" ]; then
log "Notarizing..."
# shellcheck disable=SC1090
source "$HOME/.notarize_token"
# Since notarization tool uses same file for upload token we have to trick it into using different folders, hence fake root
# Also it leaves copy of zip file in TMPDIR, so notarize.sh overrides it and uses FAKE_ROOT as location for temp TMPDIR
FAKE_ROOT="$(pwd)/fake-root"
mkdir -p "$FAKE_ROOT"
echo "Notarization will use fake root: $FAKE_ROOT"
./notarize.sh "$APPLICATION_PATH" "$APPLE_USERNAME" "$APPLE_PASSWORD" "$APP_NAME.pkg" "$BUNDLE_ID" "$FAKE_ROOT"
rm -rf "$FAKE_ROOT"
set +e
"$SCRIPT_DIR/notarize.sh" "$PKG_NAME"
log "Stapling..."
xcrun stapler staple "$APPLICATION_PATH"
xcrun stapler staple "$APPLICATION_PATH" ||:
xcrun stapler staple "$PKG_NAME" ||:
else
log "Notarization disabled"
log "Stapling disabled"
@@ -129,7 +123,11 @@ log "Zipping $BUILD_NAME to $INPUT_FILE ..."
if test -d $BACKUP_JMODS/jmods; then
mv $BACKUP_JMODS/jmods $APPLICATION_PATH/Contents/Home
fi
mv $APPLICATION_PATH $EXPLODED/$BUILD_NAME
if [[ "$APPLICATION_PATH" != "$EXPLODED/$BUILD_NAME" ]]; then
mv $APPLICATION_PATH $EXPLODED/$BUILD_NAME
else
echo "No move, source == destination: $APPLICATION_PATH"
fi
tar -pczvf $INPUT_FILE --exclude='man' -C $EXPLODED $BUILD_NAME
log "Finished zipping"

View File

@@ -34,6 +34,7 @@ NVDA_PATH=${NVDA_PATH:=$WORK_DIR/nvda_controllerClient}
function do_configure {
sh ./configure \
--enable-option-checking=fatal \
--openjdk-target=aarch64-unknown-cygwin \
$WITH_DEBUG_LEVEL \
--with-vendor-name="$VENDOR_NAME" \
@@ -47,9 +48,10 @@ function do_configure {
--with-build-jdk=$BUILD_JDK \
--with-nvdacontrollerclient=$NVDA_PATH \
--disable-ccache \
--enable-cds=yes \
$STATIC_CONF_ARGS \
$REPRODUCIBLE_BUILD_OPTS \
--enable-cds=yes || do_exit $?
|| do_exit $?
}
function create_image_bundle {
@@ -68,7 +70,7 @@ function create_image_bundle {
--module-path $__modules_path --no-man-pages --compress=2 \
--add-modules $__modules --output $__root_dir || do_exit $?
grep -v "^JAVA_VERSION" "$JSDK"/release | grep -v "^MODULES" >> $__arch_name/release
grep -v "^JAVA_VERSION" "$JSDK"/release | grep -v "^MODULES" >> $__root_dir/release
if [ "$__arch_name" == "$JBRSDK_BUNDLE" ]; then
sed 's/JBR/JBRSDK/g' $__root_dir/release > release
mv release $__root_dir/release
@@ -129,6 +131,7 @@ if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not unchanged
jbr_name_postfix="_${bundle_type}"
cat $JCEF_PATH/jcef.version >> $JSDK/release
else
jbr_name_postfix=""
fi

View File

@@ -122,6 +122,7 @@ if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
cp $JCEF_PATH/jmods/* ${JSDK_MODS_DIR} # $JSDK/jmods is not unchanged
jbr_name_postfix="_${bundle_type}"
cat $JCEF_PATH/jcef.version >> $JSDK/release
else
jbr_name_postfix=""
fi

View File

@@ -98,6 +98,7 @@ define SetupInterimModule
EXCLUDES := sun javax/tools/snippet-files, \
EXCLUDE_FILES := $(TOPDIR)/src/$1/share/classes/module-info.java \
$(TOPDIR)/src/$1/share/classes/javax/tools/ToolProvider.java \
$(TOPDIR)/src/$1/share/classes/com/sun/tools/javac/launcher/Main.java \
Standard.java, \
EXTRA_FILES := $(BUILDTOOLS_OUTPUTDIR)/gensrc/$1.interim/module-info.java \
$($1.interim_EXTRA_FILES), \

View File

@@ -110,7 +110,6 @@ JAVA_WARNINGS_ARE_ERRORS ?= -Werror
JAVADOC_OPTIONS := -use -keywords -notimestamp \
-encoding ISO-8859-1 -docencoding UTF-8 -breakiterator \
-splitIndex --system none -javafx --expand-requires transitive \
--enable-preview -source $(JDK_SOURCE_TARGET_VERSION) \
--override-methods=summary \
--no-external-specs-page
@@ -118,7 +117,6 @@ JAVADOC_OPTIONS := -use -keywords -notimestamp \
# development cycle.
REFERENCE_OPTIONS := -XDignore.symbol.file=true -use -keywords -notimestamp \
-encoding ISO-8859-1 -breakiterator -splitIndex --system none \
--enable-preview -source $(JDK_SOURCE_TARGET_VERSION) \
-html5 -javafx --expand-requires transitive \
--no-external-specs-page

View File

@@ -125,6 +125,11 @@ test-prebuilt:
$(MAKE) --no-print-directory -r -R -I make/common/ -f make/RunTestsPrebuilt.gmk \
test-prebuilt CUSTOM_MAKE_DIR=$(CUSTOM_MAKE_DIR) TEST="$(TEST)" )
test-prebuilt-with-exit-code:
@( cd $(topdir) && \
$(MAKE) --no-print-directory -r -R -I make/common/ -f make/RunTestsPrebuilt.gmk \
test-prebuilt-with-exit-code CUSTOM_MAKE_DIR=$(CUSTOM_MAKE_DIR) TEST="$(TEST)" )
# Alias for backwards compatibility
run-test-prebuilt: test-prebuilt

View File

@@ -595,16 +595,7 @@ define SetupRunMicroTestBody
endif
# Set library path for native dependencies
$1_JMH_JVM_ARGS := -Djava.library.path=$$(TEST_IMAGE_DIR)/micro/native \
--add-exports java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED \
--add-exports java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED \
--add-exports java.base/jdk.internal.classfile=ALL-UNNAMED \
--add-exports java.base/jdk.internal.classfile.attribute=ALL-UNNAMED \
--add-exports java.base/jdk.internal.classfile.constantpool=ALL-UNNAMED \
--add-exports java.base/jdk.internal.classfile.instruction=ALL-UNNAMED \
--add-exports java.base/jdk.internal.classfile.java.lang.constant=ALL-UNNAMED \
--add-exports java.base/jdk.internal.classfile.components=ALL-UNNAMED \
--add-exports java.base/jdk.internal.classfile.impl=ALL-UNNAMED
$1_JMH_JVM_ARGS := -Djava.library.path=$$(TEST_IMAGE_DIR)/micro/native
ifneq ($$(MICRO_VM_OPTIONS)$$(MICRO_JAVA_OPTIONS), )
$1_JMH_JVM_ARGS += $$(MICRO_VM_OPTIONS) $$(MICRO_JAVA_OPTIONS)

View File

@@ -295,6 +295,11 @@ test-prebuilt:
@cd $(TOPDIR) && $(MAKE) $(MAKE_ARGS) -f make/RunTests.gmk run-test \
TEST="$(TEST)"
test-prebuilt-with-exit-code: test-prebuilt
@if test -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error ; then \
exit 1 ; \
fi
all: test-prebuilt
.PHONY: default all test-prebuilt

View File

@@ -51,6 +51,14 @@ AC_DEFUN([FLAGS_SETUP_SHARED_LIBS],
SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1'
SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,[$]1'
elif test "x$OPENJDK_TARGET_OS" = xaix; then
# Linking is different on aix
SHARED_LIBRARY_FLAGS="-shared -Wl,-bM:SRE -Wl,-bnoentry"
SET_EXECUTABLE_ORIGIN=""
SET_SHARED_LIBRARY_ORIGIN=''
SET_SHARED_LIBRARY_NAME=''
SET_SHARED_LIBRARY_MAPFILE=''
else
# Default works for linux, might work on other platforms as well.
SHARED_LIBRARY_FLAGS='-shared'
@@ -206,7 +214,6 @@ AC_DEFUN([FLAGS_SETUP_WARNINGS],
WARNINGS_ENABLE_ALL="-Wall -Wextra -Wformat=2 $WARNINGS_ENABLE_ADDITIONAL"
DISABLED_WARNINGS="unknown-warning-option unused-parameter unused"
;;
xlc)
@@ -284,9 +291,15 @@ AC_DEFUN([FLAGS_SETUP_OPTIMIZATION],
C_O_FLAG_NONE="${C_O_FLAG_NONE} ${DISABLE_FORTIFY_CFLAGS}"
fi
elif test "x$TOOLCHAIN_TYPE" = xclang; then
C_O_FLAG_HIGHEST_JVM="-O3"
C_O_FLAG_HIGHEST="-O3"
C_O_FLAG_HI="-O3"
if test "x$OPENJDK_TARGET_OS" = xaix; then
C_O_FLAG_HIGHEST_JVM="-O3 -finline-functions"
C_O_FLAG_HIGHEST="-O3 -finline-functions"
C_O_FLAG_HI="-O3 -finline-functions"
else
C_O_FLAG_HIGHEST_JVM="-O3"
C_O_FLAG_HIGHEST="-O3"
C_O_FLAG_HI="-O3"
fi
C_O_FLAG_NORM="-O2"
C_O_FLAG_DEBUG_JVM="-O0"
C_O_FLAG_SIZE="-Os"
@@ -458,6 +471,9 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
# so for debug we build with '-qpic=large -bbigtoc'.
DEBUG_CFLAGS_JVM="-qpic=large"
fi
if test "x$TOOLCHAIN_TYPE" = xclang && test "x$OPENJDK_TARGET_OS" = xaix; then
DEBUG_CFLAGS_JVM="-fpic -mcmodel=large"
fi
fi
if test "x$DEBUG_LEVEL" != xrelease; then
@@ -493,6 +509,12 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
-fvisibility=hidden -fno-strict-aliasing -fno-omit-frame-pointer"
fi
if test "x$TOOLCHAIN_TYPE" = xclang && test "x$OPENJDK_TARGET_OS" = xaix; then
# clang compiler on aix needs -ffunction-sections
TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM -ffunction-sections -ftls-model -fno-math-errno -fstack-protector"
TOOLCHAIN_CFLAGS_JDK="-ffunction-sections -fsigned-char -fstack-protector"
fi
if test "x$TOOLCHAIN_TYPE" = xgcc; then
TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM -fstack-protector"
TOOLCHAIN_CFLAGS_JDK="-pipe -fstack-protector"
@@ -601,6 +623,9 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
PICFLAG="-fPIC"
PIEFLAG="-fPIE"
elif test "x$TOOLCHAIN_TYPE" = xclang && test "x$OPENJDK_TARGET_OS" = xaix; then
JVM_PICFLAG="-fpic -mcmodel=large -Wl,-bbigtoc
JDK_PICFLAG="-fpic
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
# '-qpic' defaults to 'qpic=small'. This means that the compiler generates only
# one instruction for accessing the TOC. If the TOC grows larger than 64K, the linker
@@ -746,6 +771,9 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
$1_CFLAGS_CPU_JDK="${$1_CFLAGS_CPU_JDK} -fno-omit-frame-pointer"
fi
fi
if test "x$OPENJDK_TARGET_OS" = xaix; then
$1_CFLAGS_CPU="-mcpu=pwr8"
fi
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
if test "x$FLAGS_CPU" = xppc64; then

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2023, 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
@@ -75,7 +75,11 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
elif test "x$TOOLCHAIN_TYPE" = xclang; then
BASIC_LDFLAGS_JVM_ONLY="-mno-omit-leaf-frame-pointer -mstack-alignment=16 \
-fPIC"
if test "x$OPENJDK_TARGET_OS" = xaix; then
BASIC_LDFLAGS="-Wl,-b64 -Wl,-brtl -Wl,-bnorwexec -Wl,-bnolibpath -Wl,-bnoexpall \
-Wl,-bernotok -Wl,-bdatapsize:64k -Wl,-btextpsize:64k -Wl,-bstackpsize:64k"
BASIC_LDFLAGS_JVM_ONLY="$BASIC_LDFLAGS_JVM_ONLY -Wl,-lC_r -Wl,-bbigtoc"
fi
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
BASIC_LDFLAGS="-b64 -brtl -bnorwexec -bnolibpath -bnoexpall -bernotok -btextpsize:64K \
-bdatapsize:64K -bstackpsize:64K"
@@ -88,7 +92,8 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
BASIC_LDFLAGS_JVM_ONLY="-opt:icf,8 -subsystem:windows"
fi
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
if (test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang) \
&& test "x$OPENJDK_TARGET_OS" != xaix; then
if test -n "$HAS_NOEXECSTACK"; then
BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,-z,noexecstack"
fi
@@ -116,6 +121,14 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
if test "x$DEBUG_LEVEL" != xrelease; then
DEBUGLEVEL_LDFLAGS_JVM_ONLY="$DEBUGLEVEL_LDFLAGS_JVM_ONLY -bbigtoc"
fi
elif test "x$TOOLCHAIN_TYPE" = xclang && test "x$OPENJDK_TARGET_OS" = xaix; then
# We need '-fpic' or '-fpic -mcmodel=large -Wl,-bbigtoc' if the TOC overflows.
# Hotspot now overflows its 64K TOC (currently only for debug),
# so we build with '-fpic -mcmodel=large -Wl,-bbigtoc'.
if test "x$DEBUG_LEVEL" != xrelease; then
DEBUGLEVEL_LDFLAGS_JVM_ONLY="$DEBUGLEVEL_LDFLAGS_JVM_ONLY -Wl,-bbigtoc"
fi
fi
# Setup LDFLAGS for linking executables

View File

@@ -99,6 +99,9 @@ AC_DEFUN_ONCE([LIB_SETUP_WAYLAND],
AC_ARG_WITH(vulkan-include, [AS_HELP_STRING([--with-vulkan-include],
[specify directory for the vulkan include files])])
AC_ARG_WITH(vulkan-shader-compiler, [AS_HELP_STRING([--with-vulkan-shader-compiler],
[specify which shader compiler to use: glslc/glslangValidator])])
if test "x$SUPPORTS_LIB_VULKAN" = xfalse; then
if (test "x${with_vulkan}" != x && test "x${with_vulkan}" != xno) || \
@@ -120,7 +123,6 @@ AC_DEFUN_ONCE([LIB_SETUP_WAYLAND],
AC_CHECK_HEADERS([${with_vulkan_include}/include/vulkan/vulkan.h],
[ VULKAN_FOUND=yes
VULKAN_FLAGS="-DVK_USE_PLATFORM_WAYLAND_KHR -I${with_vulkan_include}/include -DVULKAN_ENABLED"
VULKAN_ENABLED=true
],
[ AC_MSG_ERROR([Can't find 'vulkan/vulkan.h' under '${with_vulkan_include}']) ]
)
@@ -131,7 +133,6 @@ AC_DEFUN_ONCE([LIB_SETUP_WAYLAND],
AC_CHECK_HEADERS([$VULKAN_SDK/include/vulkan/vulkan.h],
[ VULKAN_FOUND=yes
VULKAN_FLAGS="-DVK_USE_PLATFORM_WAYLAND_KHR -I${VULKAN_SDK}/include -DVULKAN_ENABLED"
VULKAN_ENABLED=true
],
[ VULKAN_FOUND=no; break ]
)
@@ -142,7 +143,6 @@ AC_DEFUN_ONCE([LIB_SETUP_WAYLAND],
AC_CHECK_HEADERS([vulkan/vulkan.h],
[ VULKAN_FOUND=yes
VULKAN_FLAGS="-DVK_USE_PLATFORM_WAYLAND_KHR -DVULKAN_ENABLED"
VULKAN_ENABLED=true
],
[ VULKAN_FOUND=no; break ]
)
@@ -151,11 +151,32 @@ AC_DEFUN_ONCE([LIB_SETUP_WAYLAND],
if test "x$VULKAN_FOUND" = xno; then
HELP_MSG_MISSING_DEPENDENCY([vulkan])
AC_MSG_ERROR([Could not find vulkan! $HELP_MSG ])
else
# Find shader compiler - glslc or glslangValidator
if (test "x${with_vulkan_shader_compiler}" = x || test "x${with_vulkan_shader_compiler}" = xglslc); then
UTIL_LOOKUP_PROGS(GLSLC, glslc)
SHADER_COMPILER="$GLSLC"
VULKAN_SHADER_COMPILER="glslc --target-env=vulkan1.2 -mfmt=num -o"
fi
if (test "x${with_vulkan_shader_compiler}" = x || test "x${with_vulkan_shader_compiler}" = xglslangValidator) && \
test "x$SHADER_COMPILER" = x; then
UTIL_LOOKUP_PROGS(GLSLANG, glslangValidator)
SHADER_COMPILER="$GLSLANG"
VULKAN_SHADER_COMPILER="glslangValidator --target-env vulkan1.2 -x -o"
fi
if test "x$SHADER_COMPILER" != x; then
VULKAN_ENABLED=true
else
AC_MSG_ERROR([Can't find shader compiler])
fi
fi
fi
fi
fi
AC_SUBST(VULKAN_FLAGS)
AC_SUBST(VULKAN_SHADER_COMPILER)
AC_SUBST(VULKAN_ENABLED)
AC_SUBST(WAYLAND_CFLAGS)
AC_SUBST(WAYLAND_LIBS)

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2023, 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
@@ -657,6 +657,21 @@ AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_BUILD_AND_TARGET],
PLATFORM_SET_MODULE_TARGET_OS_VALUES
PLATFORM_SET_RELEASE_FILE_OS_VALUES
PLATFORM_SETUP_LEGACY_VARS
PLATFORM_CHECK_DEPRECATION
])
AC_DEFUN([PLATFORM_CHECK_DEPRECATION],
[
AC_ARG_ENABLE(deprecated-ports, [AS_HELP_STRING([--enable-deprecated-ports@<:@=yes/no@:>@],
[Suppress the error when configuring for a deprecated port @<:@no@:>@])])
if test "x$OPENJDK_TARGET_OS" = xwindows && test "x$OPENJDK_TARGET_CPU" = xx86; then
if test "x$enable_deprecated_ports" = "xyes"; then
AC_MSG_WARN([The Windows 32-bit x86 port is deprecated and may be removed in a future release.])
else
AC_MSG_ERROR(m4_normalize([The Windows 32-bit x86 port is deprecated and may be removed in a future release.
Use --enable-deprecated-ports=yes to suppress this error.]))
fi
fi
])
AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_BUILD_OS_VERSION],

View File

@@ -482,6 +482,7 @@ A11Y_JAWS_ANNOUNCING_ENABLED:=@A11Y_JAWS_ANNOUNCING_ENABLED@
WAYLAND_CFLAGS:=@WAYLAND_CFLAGS@
WAYLAND_LIBS:=@WAYLAND_LIBS@
VULKAN_FLAGS:=@VULKAN_FLAGS@
VULKAN_SHADER_COMPILER:=@VULKAN_SHADER_COMPILER@
VULKAN_ENABLED:=@VULKAN_ENABLED@
# The lowest required version of macosx

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2023, 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
@@ -40,7 +40,7 @@ VALID_TOOLCHAINS_all="gcc clang xlc microsoft"
# These toolchains are valid on different platforms
VALID_TOOLCHAINS_linux="gcc clang"
VALID_TOOLCHAINS_macosx="clang"
VALID_TOOLCHAINS_aix="xlc"
VALID_TOOLCHAINS_aix="xlc clang"
VALID_TOOLCHAINS_windows="microsoft"
# Toolchain descriptions
@@ -53,7 +53,7 @@ TOOLCHAIN_DESCRIPTION_xlc="IBM XL C/C++"
TOOLCHAIN_MINIMUM_VERSION_clang="3.5"
TOOLCHAIN_MINIMUM_VERSION_gcc="6.0"
TOOLCHAIN_MINIMUM_VERSION_microsoft="19.28.0.0" # VS2019 16.8, aka MSVC 14.28
TOOLCHAIN_MINIMUM_VERSION_xlc=""
TOOLCHAIN_MINIMUM_VERSION_xlc="16.1.0.0011"
# Minimum supported linker versions, empty means unspecified
TOOLCHAIN_MINIMUM_LD_VERSION_gcc="2.18"
@@ -234,6 +234,25 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETERMINE_TOOLCHAIN_TYPE],
# First toolchain type in the list is the default
DEFAULT_TOOLCHAIN=${VALID_TOOLCHAINS%% *}
# On AIX the default toolchain depends on the installed (found) compiler
# xlclang++ -> xlc toolchain
# ibm-clang++_r -> clang toolchain
# The compiler is searched on the PATH and TOOLCHAIN_PATH
# xlclang++ has precedence over ibm-clang++_r if both are installed
if test "x$OPENJDK_TARGET_OS" = xaix; then
DEFAULT_TOOLCHAIN="clang"
if test "x$TOOLCHAIN_PATH" != x; then
if test -e ${TOOLCHAIN_PATH}/xlclang++; then
DEFAULT_TOOLCHAIN="xlc"
fi
else
UTIL_LOOKUP_PROGS(XLCLANG_TEST_PATH, xlclang++)
if test "x$XLCLANG_TEST_PATH" != x; then
DEFAULT_TOOLCHAIN="xlc"
fi
fi
fi
if test "x$with_toolchain_type" = xlist; then
# List all toolchains
AC_MSG_NOTICE([The following toolchains are valid on this platform:])
@@ -263,22 +282,40 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETERMINE_TOOLCHAIN_TYPE],
if test "x$TOOLCHAIN_PATH" != x; then
XLC_TEST_PATH=${TOOLCHAIN_PATH}/
fi
XLCLANG_VERSION_OUTPUT=`${XLC_TEST_PATH}xlclang++ -qversion 2>&1 | $HEAD -n 1`
$ECHO "$XLCLANG_VERSION_OUTPUT" | $GREP "IBM XL C/C++ for AIX" > /dev/null
if test $? -eq 0; then
AC_MSG_NOTICE([xlclang++ output: $XLCLANG_VERSION_OUTPUT])
if test "x$TOOLCHAIN_TYPE" = xclang; then
TOOLCHAIN_DESCRIPTION_clang="IBM Open XL C/C++"
XLCLANG_VERSION_OUTPUT=`${XLC_TEST_PATH}ibm-clang++_r --version 2>&1 | $HEAD -n 1`
$ECHO "$XLCLANG_VERSION_OUTPUT" | $GREP "IBM Open XL C/C++ for AIX" > /dev/null
if test $? -eq 0; then
AC_MSG_NOTICE([ibm-clang++_r output: $XLCLANG_VERSION_OUTPUT])
else
AC_MSG_ERROR([ibm-clang++_r version output check failed, output: $XLCLANG_VERSION_OUTPUT])
fi
else
AC_MSG_ERROR([xlclang++ version output check failed, output: $XLCLANG_VERSION_OUTPUT])
XLCLANG_VERSION_OUTPUT=`${XLC_TEST_PATH}xlclang++ -qversion 2>&1 | $HEAD -n 1`
$ECHO "$XLCLANG_VERSION_OUTPUT" | $GREP "IBM XL C/C++ for AIX" > /dev/null
if test $? -eq 0; then
AC_MSG_NOTICE([xlclang++ output: $XLCLANG_VERSION_OUTPUT])
else
AC_MSG_ERROR([xlclang++ version output check failed, output: $XLCLANG_VERSION_OUTPUT])
fi
fi
fi
TOOLCHAIN_CC_BINARY_clang="clang"
if test "x$OPENJDK_TARGET_OS" = xaix; then
TOOLCHAIN_CC_BINARY_clang="ibm-clang_r"
else
TOOLCHAIN_CC_BINARY_clang="clang"
fi
TOOLCHAIN_CC_BINARY_gcc="gcc"
TOOLCHAIN_CC_BINARY_microsoft="cl"
TOOLCHAIN_CC_BINARY_xlc="xlclang"
TOOLCHAIN_CXX_BINARY_clang="clang++"
if test "x$OPENJDK_TARGET_OS" = xaix; then
TOOLCHAIN_CXX_BINARY_clang="ibm-clang++_r"
else
TOOLCHAIN_CXX_BINARY_clang="clang++"
fi
TOOLCHAIN_CXX_BINARY_gcc="g++"
TOOLCHAIN_CXX_BINARY_microsoft="cl"
TOOLCHAIN_CXX_BINARY_xlc="xlclang++"
@@ -384,7 +421,7 @@ AC_DEFUN([TOOLCHAIN_EXTRACT_COMPILER_VERSION],
# Collapse compiler output into a single line
COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
$SED -e 's/^.*, V\(@<:@1-9@:>@@<:@0-9.@:>@*\).*$/\1/'`
$SED -e 's/^.*Version: \(@<:@1-9@:>@@<:@0-9.@:>@*\).*$/\1/'`
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
# There is no specific version flag, but all output starts with a version string.
# First line typically looks something like:
@@ -632,7 +669,7 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETECT_TOOLCHAIN_CORE],
if test "x$TOOLCHAIN_MINIMUM_VERSION" != x; then
TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: $TOOLCHAIN_MINIMUM_VERSION,
IF_OLDER_THAN: [
AC_MSG_WARN([You are using $TOOLCHAIN_TYPE older than $TOOLCHAIN_MINIMUM_VERSION. This is not a supported configuration.])
AC_MSG_WARN([You are using $TOOLCHAIN_TYPE $CC_VERSION_NUMBER which is older than $TOOLCHAIN_MINIMUM_VERSION. This is not a supported configuration.])
]
)
fi
@@ -966,7 +1003,11 @@ AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
# Setup hotspot lecagy names for toolchains
HOTSPOT_TOOLCHAIN_TYPE=$TOOLCHAIN_TYPE
if test "x$TOOLCHAIN_TYPE" = xclang; then
HOTSPOT_TOOLCHAIN_TYPE=gcc
if test "x$OPENJDK_TARGET_OS" = xaix; then
HOTSPOT_TOOLCHAIN_TYPE=xlc
else
HOTSPOT_TOOLCHAIN_TYPE=gcc
fi
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
HOTSPOT_TOOLCHAIN_TYPE=visCPP
fi

View File

@@ -42,7 +42,6 @@ DOCS_MODULES= \
jdk.hotspot.agent \
jdk.httpserver \
jdk.jpackage \
jdk.incubator.concurrent \
jdk.incubator.vector \
jdk.jartool \
jdk.javadoc \

View File

@@ -463,7 +463,8 @@ var getJibProfilesProfiles = function (input, common, data) {
target_cpu: "x86",
build_cpu: "x64",
dependencies: ["devkit", "gtest"],
configure_args: concat(common.configure_args_32bit),
configure_args: concat(common.configure_args_32bit,
"--enable-deprecated-ports"),
},
"windows-aarch64": {

View File

@@ -43,7 +43,6 @@ BOOT_MODULES= \
java.rmi \
java.security.sasl \
java.xml \
jdk.incubator.concurrent \
jdk.incubator.vector \
jdk.internal.vm.ci \
jdk.jfr \

View File

@@ -39,4 +39,4 @@ DEFAULT_VERSION_CLASSFILE_MINOR=0
DEFAULT_VERSION_DOCS_API_SINCE=11
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="20 21"
DEFAULT_JDK_SOURCE_TARGET_VERSION=21
DEFAULT_PROMOTED_VERSION_PRE=ea
DEFAULT_PROMOTED_VERSION_PRE=

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009, 2021, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2009, 2023, 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
@@ -56,10 +56,10 @@ public class $NAME_CLZ$ extends Charset
return new DoubleByte.Encoder$ENCTYPE$(this, $ENC_REPLACEMENT$ EncodeHolder.c2b, EncodeHolder.c2bIndex, $ASCIICOMPATIBLE$);
}
static class DecodeHolder {
public static class DecodeHolder {
$B2C$
static final char[][] b2c = new char[b2cStr.length][];
static final char[] b2cSB;
public static final char[][] b2c = new char[b2cStr.length][];
public static final char[] b2cSB;
static {
for (int i = 0; i < b2cStr.length; i++) {
@@ -72,9 +72,9 @@ public class $NAME_CLZ$ extends Charset
}
}
static class EncodeHolder {
static final char[] c2b = new char[$C2BLENGTH$];
static final char[] c2bIndex = new char[0x100];
public static class EncodeHolder {
public static final char[] c2b = new char[$C2BLENGTH$];
public static final char[] c2bIndex = new char[0x100];
static {
$NONROUNDTRIP_B2C$

View File

@@ -2,13 +2,11 @@
# generate these charsets into sun.nio.cs
#
Big5
Big5_Solaris
Big5_HKSCS
EUC_CN
EUC_KR
EUC_JP
EUC_JP_LINUX
EUC_JP_Open
EUC_TW
GBK
ISO_8859_11
@@ -16,12 +14,9 @@ ISO_8859_3
ISO_8859_6
ISO_8859_8
Johab
PCK
TIS_620
JIS_X_0201
JIS_X_0208
JIS_X_0212
JIS_X_0208_Solaris
JIS_X_0212_Solaris
MS932
SJIS

View File

@@ -181,6 +181,7 @@ JVM_NewArray
JVM_NewInstanceFromConstructor
JVM_NewMultiArray
JVM_PhantomReferenceRefersTo
JVM_PrintWarningAtDynamicAgentLoad
JVM_RaiseSignal
JVM_RawMonitorCreate
JVM_RawMonitorDestroy

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2013, 2022, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2013, 2023, 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
@@ -37,8 +37,13 @@ ifeq ($(call check-jvm-feature, compiler2), true)
ifeq ($(call isBuildOs, linux), true)
ADLC_CFLAGS := -fno-exceptions -DLINUX
else ifeq ($(call isBuildOs, aix), true)
ADLC_LDFLAGS += -q64
ADLC_CFLAGS := -qnortti -qeh -q64 -DAIX
ifeq ($(TOOLCHAIN_TYPE), clang)
ADLC_LDFLAGS += -m64
ADLC_CFLAGS := -fno-rtti -fexceptions -ffunction-sections -m64 -DAIX -mcpu=pwr8
else
ADLC_LDFLAGS += -q64
ADLC_CFLAGS := -qnortti -qeh -q64 -DAIX
endif
else ifeq ($(call isBuildOs, windows), true)
ADLC_LDFLAGS += -nologo
ADLC_CFLAGS := -nologo -EHsc
@@ -167,6 +172,8 @@ ifeq ($(call check-jvm-feature, compiler2), true)
ifeq ($(call check-jvm-feature, zgc), true)
AD_SRC_FILES += $(call uniq, $(wildcard $(foreach d, $(AD_SRC_ROOTS), \
$d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/gc/x/x_$(HOTSPOT_TARGET_CPU).ad \
$d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/gc/x/x_$(HOTSPOT_TARGET_CPU_ARCH).ad \
$d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/gc/z/z_$(HOTSPOT_TARGET_CPU).ad \
$d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/gc/z/z_$(HOTSPOT_TARGET_CPU_ARCH).ad \
)))

View File

@@ -168,10 +168,14 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJVM, \
DISABLED_WARNINGS_clang_management.cpp := missing-field-initializers, \
DISABLED_WARNINGS_clang_notificationThread.cpp := bitwise-instead-of-logical, \
DISABLED_WARNINGS_clang_os_posix.cpp := mismatched-tags missing-field-initializers, \
DISABLED_WARNINGS_clang_aix_os_posix.cpp := format-nonliteral, \
DISABLED_WARNINGS_clang_postaloc.cpp := tautological-undefined-compare, \
DISABLED_WARNINGS_clang_serviceThread.cpp := bitwise-instead-of-logical, \
DISABLED_WARNINGS_clang_vm_version_x86.cpp := missing-field-initializers, \
DISABLED_WARNINGS_clang_zTracer.cpp := undefined-var-template, \
DISABLED_WARNINGS_clang_aix_debug.cpp := format-nonliteral, \
DISABLED_WARNINGS_clang_aix_jvm.cpp := format-nonliteral, \
DISABLED_WARNINGS_clang_aix_osThread_aix.cpp := tautological-undefined-compare, \
DISABLED_WARNINGS_xlc := $(DISABLED_WARNINGS_xlc), \
DISABLED_WARNINGS_microsoft := $(DISABLED_WARNINGS_microsoft), \
ASFLAGS := $(JVM_ASFLAGS), \

View File

@@ -150,6 +150,7 @@ endif
ifneq ($(call check-jvm-feature, zgc), true)
JVM_CFLAGS_FEATURES += -DINCLUDE_ZGC=0
JVM_EXCLUDE_PATTERNS += gc/z
JVM_EXCLUDE_PATTERNS += gc/x
endif
ifneq ($(call check-jvm-feature, shenandoahgc), true)

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2013, 2021, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2013, 2023, 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
@@ -109,7 +109,11 @@ else ifeq ($(call isTargetOs, macosx), true)
endif
else ifeq ($(call isTargetOs, aix), true)
BUILD_LIBJVM_synchronizer.cpp_CXXFLAGS := -qnoinline
ifeq ($(TOOLCHAIN_TYPE), clang)
BUILD_LIBJVM_synchronizer.cpp_CXXFLAGS := -fno-inline
else
BUILD_LIBJVM_synchronizer.cpp_CXXFLAGS := -qnoinline
endif
BUILD_LIBJVM_sharedRuntimeTrans.cpp_CXXFLAGS := $(CXX_O_FLAG_NONE)
# Disable aggressive optimizations for functions in sharedRuntimeTrig.cpp
# and sharedRuntimeTrans.cpp on ppc64.

View File

@@ -60,7 +60,9 @@ public class EquivMapsGenerator {
}
copyrightYear = Integer.parseInt(args[2]);
readLSRfile(args[0]);
// Builds the maps from the IANA data
generateEquivalentMap();
// Writes the maps out to LocaleEquivalentMaps.java
generateSourceCode(args[1]);
}
@@ -213,63 +215,6 @@ public class EquivMapsGenerator {
return list.toArray(new String[list.size()]);
}
private static String generateValuesString(String[] values) {
String outputStr = "";
for (int i = 0; i < values.length; i++) {
if (i != values.length - 1) {
outputStr = outputStr + "\"" + values[i] + "\", ";
} else {
outputStr = outputStr + "\"" + values[i] + "\"";
}
}
return outputStr;
}
private static final String COPYRIGHT = "/*\n"
+ " * Copyright (c) 2012, %d, Oracle and/or its affiliates. All rights reserved.\n"
+ " * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.\n"
+ " *\n"
+ " * This code is free software; you can redistribute it and/or modify it\n"
+ " * under the terms of the GNU General Public License version 2 only, as\n"
+ " * published by the Free Software Foundation. Oracle designates this\n"
+ " * particular file as subject to the \"Classpath\" exception as provided\n"
+ " * by Oracle in the LICENSE file that accompanied this code.\n"
+ " *\n"
+ " * This code is distributed in the hope that it will be useful, but WITHOUT\n"
+ " * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n"
+ " * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License\n"
+ " * version 2 for more details (a copy is included in the LICENSE file that\n"
+ " * accompanied this code).\n"
+ " *\n"
+ " * You should have received a copy of the GNU General Public License version\n"
+ " * 2 along with this work; if not, write to the Free Software Foundation,\n"
+ " * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+ " *\n"
+ " * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA\n"
+ " * or visit www.oracle.com if you need additional information or have any\n"
+ " * questions.\n"
+ "*/\n\n";
private static final String headerText =
"package sun.util.locale;\n\n"
+ "import java.util.HashMap;\n"
+ "import java.util.Map;\n\n"
+ "final class LocaleEquivalentMaps {\n\n"
+ " static final Map<String, String> singleEquivMap;\n"
+ " static final Map<String, String[]> multiEquivsMap;\n"
+ " static final Map<String, String> regionVariantEquivMap;\n\n"
+ " static {\n"
+ " singleEquivMap = HashMap.newHashMap(";
private static final String footerText =
" }\n\n"
+ "}";
private static String getOpenJDKCopyright() {
return String.format(Locale.US, COPYRIGHT, copyrightYear);
}
/**
* The input lsr data file is in UTF-8, so theoretically for the characters
* beyond US-ASCII, the generated Java String literals need to be Unicode
@@ -277,53 +222,132 @@ public class EquivMapsGenerator {
* the case since we don't use "description", "comment" or alike.
*/
private static void generateSourceCode(String fileName) {
try (BufferedWriter writer = Files.newBufferedWriter(
Paths.get(fileName))) {
writer.write(getOpenJDKCopyright());
writer.write(headerText
+ sortedLanguageMap1.size() + ");\n"
+ " multiEquivsMap = HashMap.newHashMap("
+ sortedLanguageMap2.size() + ");\n"
+ " regionVariantEquivMap = HashMap.newHashMap("
+ sortedRegionVariantMap.size() + ");\n\n"
+ " // This is an auto-generated file and should not be manually edited.\n"
+ " // LSR Revision: " + LSRrevisionDate);
writer.write(HEADER_TEXT);
writer.write(getMapsText());
writer.write(getLSRText());
writeEquiv(writer, "singleEquivMap", sortedLanguageMap1);
writer.newLine();
for (String key : sortedLanguageMap1.keySet()) {
String value = sortedLanguageMap1.get(key);
writer.write(" singleEquivMap.put(\""
+ key + "\", \"" + value + "\");");
writer.newLine();
}
writeMultiEquiv(writer);
writer.newLine();
for (String key : sortedLanguageMap2.keySet()) {
String[] values = sortedLanguageMap2.get(key);
if (values.length >= 2) {
writer.write(" multiEquivsMap.put(\""
+ key + "\", new String[] {"
+ generateValuesString(values) + "});");
writer.newLine();
}
}
writer.newLine();
for (String key : sortedRegionVariantMap.keySet()) {
String value = sortedRegionVariantMap.get(key);
writer.write(" regionVariantEquivMap.put(\""
+ key + "\", \"" + value + "\");");
writer.newLine();
}
writer.write(footerText);
writeEquiv(writer, "regionVariantEquivMap", sortedRegionVariantMap);
writer.write(FOOTER_TEXT);
} catch (IOException ex) {
ex.printStackTrace(System.err);
System.exit(1);
}
}
private static String getOpenJDKCopyright() {
return String.format(Locale.US, COPYRIGHT, copyrightYear);
}
private static final String COPYRIGHT =
"""
/*
* Copyright (c) 2012, %d, 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.
*/
""";
private static final String HEADER_TEXT =
"""
package sun.util.locale;
import java.util.HashMap;
import java.util.Map;
final class LocaleEquivalentMaps {
static final Map<String, String> singleEquivMap;
static final Map<String, String[]> multiEquivsMap;
static final Map<String, String> regionVariantEquivMap;
""";
private static final String FOOTER_TEXT =
"""
}
}
""";
private static String getMapsText() {
return """
static {
singleEquivMap = HashMap.newHashMap(%s);
multiEquivsMap = HashMap.newHashMap(%s);
regionVariantEquivMap = HashMap.newHashMap(%s);
""".formatted(
sortedLanguageMap1.size(),
sortedLanguageMap2.size(),
sortedRegionVariantMap.size());
}
private static final String getLSRText(){
return """
// This is an auto-generated file and should not be manually edited.
// LSR Revision: %s
""".formatted(LSRrevisionDate);
}
private static void writeMultiEquiv(BufferedWriter writer) throws IOException {
for (String key : sortedLanguageMap2.keySet()) {
String[] values = sortedLanguageMap2.get(key);
if (values.length >= 2) {
writer.write(String.format(
" multiEquivsMap.put(\"%s\", new String[] {%s});"
, key, generateValuesString(values)));
writer.newLine();
}
}
}
// Use for writing an equivlancy map with one value
private static void writeEquiv(BufferedWriter writer, String name, Map<String, String> map) throws IOException {
for (String key : map.keySet()) {
String value = map.get(key);
writer.write(String.format(
" %s.put(\"%s\", \"%s\");"
, name, key, value));
writer.newLine();
}
}
private static String generateValuesString(String[] values) {
String outputStr = "";
for (int i = 0; i < values.length; i++) {
if (i != values.length - 1) {
outputStr = String.format("%s\"%s\", ", outputStr, values[i]);
} else {
outputStr = String.format("%s\"%s\"", outputStr, values[i]);
}
}
return outputStr;
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017, 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2022, 2023, 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
@@ -145,11 +145,15 @@ public final class SealedGraph implements Taglet {
static void traverse(State state, TypeElement node, Set<String> exports) {
state.addNode(node);
for (TypeElement subNode : permittedSubclasses(node, exports)) {
if (isInPublicApi(node, exports) && isInPublicApi(subNode, exports)) {
state.addEdge(node, subNode);
if (!(node.getModifiers().contains(Modifier.SEALED) || node.getModifiers().contains(Modifier.FINAL))) {
state.addNonSealedEdge(node);
} else {
for (TypeElement subNode : permittedSubclasses(node, exports)) {
if (isInPublicApi(node, exports) && isInPublicApi(subNode, exports)) {
state.addEdge(node, subNode);
}
traverse(state, subNode, exports);
}
traverse(state, subNode, exports);
}
}
@@ -158,13 +162,31 @@ public final class SealedGraph implements Taglet {
private static final String LABEL = "label";
private static final String TOOLTIP = "tooltip";
private static final String LINK = "href";
private static final String STYLE = "style";
private final TypeElement rootNode;
private final StringBuilder builder;
private final Map<String, Map<String, String>> nodeStyleMap;
private final Map<String, Map<String, StyleItem>> nodeStyleMap;
private int nonSealedHierarchyCount = 0;
private sealed interface StyleItem {
String valueString();
record PlainString(String text) implements StyleItem {
@Override
public String valueString() {
return "\"" + text + "\"";
}
}
record HtmlString(String text) implements StyleItem {
@Override
public String valueString() {
return "<" + text + ">";
}
}
}
public State(TypeElement rootNode) {
this.rootNode = rootNode;
@@ -188,13 +210,9 @@ public final class SealedGraph implements Taglet {
public void addNode(TypeElement node) {
var styles = nodeStyleMap.computeIfAbsent(id(node), n -> new LinkedHashMap<>());
styles.put(LABEL, node.getSimpleName().toString());
styles.put(TOOLTIP, node.getQualifiedName().toString());
styles.put(LINK, relativeLink(node));
if (!(node.getModifiers().contains(Modifier.SEALED) || node.getModifiers().contains(Modifier.FINAL))) {
// This indicates that the hierarchy is not closed
styles.put(STYLE, "dashed");
}
styles.put(LABEL, new StyleItem.PlainString(node.getSimpleName().toString()));
styles.put(TOOLTIP, new StyleItem.PlainString(node.getQualifiedName().toString()));
styles.put(LINK, new StyleItem.PlainString(relativeLink(node)));
}
// A permitted class must be in the same package or in the same module.
@@ -223,12 +241,32 @@ public final class SealedGraph implements Taglet {
.append(lineSeparator());
}
public void addNonSealedEdge(TypeElement node) {
// prepare open node
var openNodeId = "open node #" + nonSealedHierarchyCount++;
var styles = nodeStyleMap.computeIfAbsent(openNodeId, n -> new LinkedHashMap<>());
styles.put(LABEL, new StyleItem.HtmlString("<I>&lt;any&gt;</I>"));
styles.put(TOOLTIP, new StyleItem.PlainString("Non-sealed Hierarchy"));
// add link to parent node
builder.append(" ")
.append('"')
.append(openNodeId)
.append('"')
.append(" -> ")
.append(quotedId(node))
.append(" ")
.append("[style=\"dashed\"]")
.append(";")
.append(lineSeparator());
}
public String render() {
nodeStyleMap.forEach((nodeName, styles) -> {
builder.append(" ")
.append('"').append(nodeName).append("\" ")
.append(styles.entrySet().stream()
.map(e -> e.getKey() + "=\"" + e.getValue() + "\"")
.map(e -> e.getKey() + "=" + e.getValue().valueString())
.collect(joining(" ", "[", "]")))
.append(lineSeparator());
});
@@ -265,16 +303,17 @@ public final class SealedGraph implements Taglet {
}
private static boolean isInPublicApi(TypeElement typeElement, Set<String> exports) {
return (exports.contains(packageName(typeElement.getQualifiedName().toString())) ||
exports.contains(packageName(typeElement.getSuperclass().toString()))) &&
typeElement.getModifiers().contains(Modifier.PUBLIC);
var packageName = packageName(typeElement);
return packageName.isPresent() && exports.contains(packageName.get()) &&
typeElement.getModifiers().contains(Modifier.PUBLIC);
}
private static String packageName(String name) {
int lastDot = name.lastIndexOf('.');
return lastDot < 0
? ""
: name.substring(0, lastDot);
private static Optional<String> packageName(TypeElement element) {
return switch (element.getNestingKind()) {
case TOP_LEVEL -> Optional.of(((PackageElement) element.getEnclosingElement()).getQualifiedName().toString());
case ANONYMOUS, LOCAL -> Optional.empty();
case MEMBER -> packageName((TypeElement) element.getEnclosingElement());
};
}
}
}

View File

@@ -27,9 +27,7 @@ DISABLED_WARNINGS_java += this-escape
DOCLINT += -Xdoclint:all/protected \
'-Xdoclint/package:java.*,javax.*'
JAVAC_FLAGS += -XDstringConcat=inline \
--enable-preview
DISABLED_WARNINGS_java += preview
JAVAC_FLAGS += -XDstringConcat=inline
COPY += .icu .dat .spp .nrm content-types.properties \
hijrah-config-Hijrah-umalqura_islamic-umalqura.properties
CLEAN += intrinsic.properties

View File

@@ -46,6 +46,8 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBNET, \
DISABLED_WARNINGS_gcc_net_util_md.c := format-nonliteral, \
DISABLED_WARNINGS_gcc_NetworkInterface.c := unused-function, \
DISABLED_WARNINGS_clang_net_util_md.c := format-nonliteral, \
DISABLED_WARNINGS_clang_aix_DefaultProxySelector.c := deprecated-non-prototype, \
DISABLED_WARNINGS_clang_aix_NetworkInterface.c := gnu-pointer-arith, \
DISABLED_WARNINGS_microsoft_InetAddress.c := 4244, \
DISABLED_WARNINGS_microsoft_ResolverConfigurationImpl.c := 4996, \
LDFLAGS := $(LDFLAGS_JDKLIB) \

View File

@@ -198,6 +198,7 @@ ifeq ($(call isTargetOs, aix), true)
OPTIMIZATION := HIGH, \
CFLAGS := $(STATIC_LIBRARY_FLAGS) $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS) \
$(addprefix -I, $(LIBJLI_SRC_DIRS)), \
DISABLED_WARNINGS_clang_aix := format-nonliteral deprecated-non-prototype, \
ARFLAGS := $(ARFLAGS), \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static))

View File

@@ -68,10 +68,12 @@ EXCLUDE_FILES += \
ifeq ($(call isTargetOs, macosx), true)
# exclude all X11 on Mac.
EXCLUDES += \
sun/awt/screencast \
sun/awt/X11 \
sun/awt/wl \
sun/java2d/wl \
sun/java2d/x11 \
sun/java2d/vulkan \
sun/java2d/jules \
sun/java2d/xr \
com/sun/java/swing/plaf/gtk \

View File

@@ -219,6 +219,34 @@ ifeq ($(call isTargetOs, windows)+$(ENABLE_HEADLESS_ONLY)+$(A11Y_NVDA_ANNOUNCING
TARGETS += $(COPY_NVDA_DEPENDENCIES)
endif
# Compile Vulkan shaders
define compile-spirv
$(call MakeTargetDir)
$(VULKAN_SHADER_COMPILER) '$(call DecodeSpace, $@)' '$(call DecodeSpace, $<)'
endef
spirv-name = $(strip $1).h
ifeq ($(VULKAN_ENABLED), true)
$(eval $(call SetupCopyFiles, COMPILE_VULKAN_SHADERS, \
SRC := $(TOPDIR)/src/$(MODULE)/share/glsl/vulkan, \
FILES := $(call FindFiles, $(TOPDIR)/src/$(MODULE)/share/glsl/vulkan), \
DEST := $(SUPPORT_OUTPUTDIR)/headers/java.desktop/vulkan/spirv, \
MACRO := compile-spirv, \
NAME_MACRO := spirv-name, \
))
VULKAN_SHADER_LIST = $(SUPPORT_OUTPUTDIR)/headers/java.desktop/vulkan/shader_list.h
$(VULKAN_SHADER_LIST): $(COMPILE_VULKAN_SHADERS)
> $(VULKAN_SHADER_LIST) $(NEWLINE) \
$(foreach f, $(patsubst $(TOPDIR)/src/$(MODULE)/share/glsl/vulkan/%,%,$(call FindFiles, $(TOPDIR)/src/$(MODULE)/share/glsl/vulkan)), \
$(ECHO) SHADER_ENTRY\($(subst .,$(COMMA),$(subst /,_,$f))\) >> $(VULKAN_SHADER_LIST) $(NEWLINE) \
$(ECHO) '#ifdef INCLUDE_BYTECODE' >> $(VULKAN_SHADER_LIST) $(NEWLINE) \
$(ECHO) '#include "spirv/$f.h"' >> $(VULKAN_SHADER_LIST) $(NEWLINE) \
$(ECHO) BYTECODE_END >> $(VULKAN_SHADER_LIST) $(NEWLINE) \
$(ECHO) '#endif' >> $(VULKAN_SHADER_LIST) $(NEWLINE) \
)
$(BUILD_LIBAWT): $(VULKAN_SHADER_LIST)
endif
TARGETS += $(BUILD_LIBAWT)
################################################################################
@@ -246,6 +274,9 @@ ifeq ($(call isTargetOs, windows macosx), false)
LIBAWT_XAWT_EXCLUDES := medialib debug wl vulkan
LIBPIPEWIRE_HEADER_DIRS := \
$(TOPDIR)/src/$(MODULE)/unix/native/libpipewire/include
LIBAWT_XAWT_EXTRA_HEADER_DIRS := \
$(LIBAWT_DEFAULT_HEADER_DIRS) \
libawt_xawt/awt \
@@ -255,7 +286,7 @@ ifeq ($(call isTargetOs, windows macosx), false)
common/font \
common/java2d/opengl \
common/java2d/x11 \
#
$(LIBPIPEWIRE_HEADER_DIRS)
LIBAWT_XAWT_CFLAGS += -DXAWT -DXAWT_HACK \
$(FONTCONFIG_CFLAGS) \
@@ -299,6 +330,14 @@ ifeq ($(call isTargetOs, windows macosx), false)
DISABLED_WARNINGS_gcc_XToolkit.c := unused-result, \
DISABLED_WARNINGS_gcc_XWindow.c := unused-function, \
DISABLED_WARNINGS_gcc_keycode_cache.c := unused-function, \
DISABLED_WARNINGS_clang_aix := deprecated-non-prototype, \
DISABLED_WARNINGS_clang_aix_awt_Taskbar.c := parentheses, \
DISABLED_WARNINGS_clang_aix_OGLPaints.c := format-nonliteral, \
DISABLED_WARNINGS_clang_aix_OGLBufImgOps.c := format-nonliteral, \
DISABLED_WARNINGS_clang_aix_gtk2_interface.c := parentheses logical-op-parentheses, \
DISABLED_WARNINGS_clang_aix_gtk3_interface.c := parentheses logical-op-parentheses, \
DISABLED_WARNINGS_clang_aix_sun_awt_X11_GtkFileDialogPeer.c := parentheses, \
DISABLED_WARNINGS_clang_aix_awt_InputMethod.c := sign-compare, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN) \
-L$(INSTALL_LIBRARIES_HERE), \
@@ -343,6 +382,7 @@ ifeq ($(call isTargetOs, windows macosx), false)
common/font \
common/java2d/wl \
common/java2d/vulkan \
libvmahpp \
#
# Enable 'wakefield' extension for java.awt.Robot support
@@ -390,6 +430,8 @@ ifeq ($(call isTargetOs, windows macosx), false)
DISABLED_WARNINGS_CXX_gcc := undef, \
DISABLED_WARNINGS_clang := parentheses format undef \
logical-op-parentheses format-nonliteral int-conversion, \
DISABLED_WARNINGS_gcc_VKMemory.cpp := missing-field-initializers implicit-fallthrough parentheses, \
DISABLED_WARNINGS_clang_VKMemory.cpp := missing-field-initializers implicit-fallthrough parentheses, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN) \
-L$(INSTALL_LIBRARIES_HERE), \
@@ -513,6 +555,7 @@ ifeq ($(call isTargetOs, windows macosx), false)
common/awt/debug \
common/font \
common/java2d/opengl \
common/java2d/vulkan \
#
LIBAWT_HEADLESS_CFLAGS := $(CUPS_CFLAGS) $(FONTCONFIG_CFLAGS) $(X_CFLAGS) \
@@ -525,6 +568,7 @@ ifeq ($(call isTargetOs, windows macosx), false)
OPTIMIZATION := LOW, \
CFLAGS := $(CFLAGS_JDKLIB) \
$(LIBAWT_HEADLESS_CFLAGS), \
CXXFLAGS := $(CXXFLAGS_JDKLIB), \
EXTRA_HEADER_DIRS := $(LIBAWT_HEADLESS_EXTRA_HEADER_DIRS), \
DISABLED_WARNINGS_gcc_X11Renderer.c := unused-function, \
DISABLED_WARNINGS_gcc_X11SurfaceData.c := unused-function, \
@@ -597,16 +641,19 @@ else
# Early re-canonizing has to be disabled to workaround an internal XlC compiler error
# when building libharfbuzz
ifeq ($(call isTargetOs, aix), true)
ifneq ($(TOOLCHAIN_TYPE), clang)
HARFBUZZ_CFLAGS += -qdebug=necan
endif
endif
# hb-ft.cc is not presently needed, and requires freetype 2.4.2 or later.
LIBFONTMANAGER_EXCLUDE_FILES += libharfbuzz/hb-ft.cc
HARFBUZZ_DISABLED_WARNINGS_gcc := missing-field-initializers strict-aliasing \
unused-result
unused-result array-bounds
# noexcept-type required for GCC 7 builds. Not required for GCC 8+.
HARFBUZZ_DISABLED_WARNINGS_CXX_gcc := class-memaccess noexcept-type
# expansion-to-defined required for GCC 9 builds. Not required for GCC 10+.
HARFBUZZ_DISABLED_WARNINGS_CXX_gcc := class-memaccess noexcept-type expansion-to-defined dangling-reference
HARFBUZZ_DISABLED_WARNINGS_clang := missing-field-initializers range-loop-analysis
HARFBUZZ_DISABLED_WARNINGS_microsoft := 4267 4244
@@ -644,12 +691,10 @@ ifeq ($(call isTargetOs, windows), true)
else ifeq ($(call isTargetOs, macosx), true)
LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
X11TextRenderer.c \
fontpath.c \
lcdglyph.c \
lcdglyphDW.cpp
else
LIBFONTMANAGER_EXCLUDE_FILES += fontpath.c \
lcdglyph.c \
LIBFONTMANAGER_EXCLUDE_FILES += lcdglyph.c \
lcdglyphDW.cpp
endif
@@ -890,6 +935,20 @@ ifeq ($(ENABLE_HEADLESS_ONLY), false)
endif
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)
ifeq ($(TOOLCHAIN_TYPE), clang)
LIBSPLASHSCREEN_CFLAGS += -DPNG_POWERPC_VSX_OPT=0
endif
endif
ifeq ($(call isTargetOs, macosx), true)
LIBSPLASHSCREEN_CFLAGS += -DWITH_MACOSX

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2023, 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
@@ -32,6 +32,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJ2GSS, \
OPTIMIZATION := LOW, \
CFLAGS := $(CFLAGS_JDKLIB), \
DISABLED_WARNINGS_gcc := undef, \
DISABLED_WARNINGS_clang_aix := undef, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
LIBS := $(LIBDL), \

View File

@@ -1,10 +1,12 @@
#
# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2023, 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.
# 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
@@ -20,4 +22,16 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
exclusiveAccess.dirs=.
include CopyCommon.gmk
################################################################################
XML_LIB_SRC := $(TOPDIR)/src/java.xml/share/conf
$(CONF_DST_DIR)/jaxp.properties: $(XML_LIB_SRC)/jaxp.properties
$(call install-file)
TARGETS := $(CONF_DST_DIR)/jaxp.properties
################################################################################

View File

@@ -27,14 +27,16 @@ include LibCommon.gmk
################################################################################
ifeq ($(call isTargetOs, windows), true)
ifeq ($(call isTargetOs, linux macosx windows), true)
$(eval $(call SetupJdkLibrary, BUILD_LIBLE, \
NAME := le, \
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
OPTIMIZATION := LOW, \
CFLAGS := $(CFLAGS_JDKLIB), \
CFLAGS := $(CXXFLAGS_JDKLIB), \
LDFLAGS := $(LDFLAGS_JDKLIB), \
LIBS := $(JDKLIB_LIBS) user32.lib, \
LIBS_unix := $(JDKLIB_LIBS) $(LIBCXX), \
LIBS_windows := $(JDKLIB_LIBS) user32.lib, \
))
TARGETS += $(BUILD_LIBLE)

View File

@@ -25,5 +25,3 @@
DISABLED_WARNINGS_java += missing-explicit-ctor
JAVAC_FLAGS += -XDstringConcat=inline
JAVAC_FLAGS += --enable-preview
DISABLED_WARNINGS_java += preview

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2023, 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
@@ -30,6 +30,7 @@ include LibCommon.gmk
$(eval $(call SetupJdkLibrary, BUILD_LIBDT_SOCKET, \
NAME := dt_socket, \
OPTIMIZATION := LOW, \
DISABLED_WARNINGS_clang_aix := missing-braces, \
CFLAGS := $(CFLAGS_JDKLIB) $(LIBDT_SOCKET_CPPFLAGS), \
EXTRA_HEADER_DIRS := \
include \

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2020, 2023, 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
@@ -24,5 +24,5 @@
#
DISABLED_WARNINGS_java += exports
COPY := .xsd .xml .dtd
COPY := .xsd .xml .dtd .ini
JAVAC_FLAGS := -XDstringConcat=inline

View File

@@ -100,7 +100,6 @@ $(eval $(call SetupJavaCompilation, BUILD_JDK_MICROBENCHMARK, \
--add-exports java.base/jdk.internal.classfile.attribute=ALL-UNNAMED \
--add-exports java.base/jdk.internal.classfile.constantpool=ALL-UNNAMED \
--add-exports java.base/jdk.internal.classfile.instruction=ALL-UNNAMED \
--add-exports java.base/jdk.internal.classfile.java.lang.constant=ALL-UNNAMED \
--add-exports java.base/jdk.internal.classfile.components=ALL-UNNAMED \
--add-exports java.base/jdk.internal.classfile.impl=ALL-UNNAMED \
--add-exports java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED \

View File

@@ -36,7 +36,7 @@ TEST_LIB_SUPPORT := $(SUPPORT_OUTPUTDIR)/test/lib
$(eval $(call SetupJavaCompilation, BUILD_WB_JAR, \
TARGET_RELEASE := $(TARGET_RELEASE_NEWJDK_UPGRADED), \
SRC := $(TEST_LIB_SOURCE_DIR)/jdk/test/whitebox/parser, \
SRC := $(TEST_LIB_SOURCE_DIR)/jdk/test/whitebox/, \
BIN := $(TEST_LIB_SUPPORT)/wb_classes, \
JAR := $(TEST_LIB_SUPPORT)/wb.jar, \
DISABLED_WARNINGS := deprecation removal preview, \
@@ -53,7 +53,12 @@ $(eval $(call SetupJavaCompilation, BUILD_TEST_LIB_JAR, \
HEADERS := $(TEST_LIB_SUPPORT)/test-lib_headers, \
JAR := $(TEST_LIB_SUPPORT)/test-lib.jar, \
DISABLED_WARNINGS := try deprecation rawtypes unchecked serial cast removal preview, \
JAVAC_FLAGS := --enable-preview, \
JAVAC_FLAGS := --add-exports java.base/sun.security.util=ALL-UNNAMED \
--add-exports java.base/jdk.internal.classfile=ALL-UNNAMED \
--add-exports java.base/jdk.internal.classfile.attribute=ALL-UNNAMED \
--add-exports java.base/jdk.internal.classfile.constantpool=ALL-UNNAMED \
--add-exports java.base/jdk.internal.module=ALL-UNNAMED \
--enable-preview, \
))
TARGETS += $(BUILD_TEST_LIB_JAR)

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2015, 2023, 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
@@ -99,11 +99,6 @@ NSK_GC_LOCK_JVMTI_INCLUDES := \
-I$(VM_TESTBASE_DIR)/nsk/share/native \
-I$(VM_TESTBASE_DIR)/nsk/share/jni
NSK_GC_LOCK_MALLOC_INCLUDES := \
-I$(VM_TESTBASE_DIR)/nsk/share/gc/lock/malloc \
-I$(VM_TESTBASE_DIR)/nsk/share/native \
-I$(VM_TESTBASE_DIR)/nsk/share/jni
NSK_GC_LOCK_JNI_INCLUDES := \
-I$(VM_TESTBASE_DIR)/nsk/share/gc/lock/jni \
-I$(VM_TESTBASE_DIR)/nsk/share/native \
@@ -179,8 +174,6 @@ BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libnativeAndMH := $(MLVM_STRESS_INCLUDES)
BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libJVMTIAllocLocker := $(NSK_GC_LOCK_JVMTI_INCLUDES)
BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libMallocLocker := $(NSK_GC_LOCK_MALLOC_INCLUDES)
BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libBooleanArrayCriticalLocker := $(NSK_GC_LOCK_JNI_INCLUDES)
BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libByteArrayCriticalLocker := $(NSK_GC_LOCK_JNI_INCLUDES)
BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libCharArrayCriticalLocker := $(NSK_GC_LOCK_JNI_INCLUDES)
@@ -874,7 +867,7 @@ BUILD_HOTSPOT_JTREG_EXECUTABLES_LIBS_exesigtest := -ljvm
ifeq ($(call isTargetOs, windows), true)
BUILD_HOTSPOT_JTREG_EXECUTABLES_CFLAGS_exeFPRegs := -MT
BUILD_HOTSPOT_JTREG_EXCLUDE += exesigtest.c libterminatedThread.c libTestJNI.c libCompleteExit.c libTestPsig.c libnativeStack.c
BUILD_HOTSPOT_JTREG_EXCLUDE += exesigtest.c libterminatedThread.c libTestJNI.c libCompleteExit.c libTestPsig.c libnativeStack.c exeGetCreatedJavaVMs.c
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libatExit := jvm.lib
BUILD_HOTSPOT_JTREG_EXECUTABLES_LIBS_exedaemonDestroy := jvm.lib
else
@@ -1516,6 +1509,7 @@ else
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libatExit += -ljvm
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libCompleteExit += -lpthread
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libnativeStack += -lpthread
BUILD_HOTSPOT_JTREG_EXECUTABLES_LIBS_exeGetCreatedJavaVMs := -ljvm -lpthread
endif
ifeq ($(ASAN_ENABLED), true)

View File

@@ -49,7 +49,7 @@
<target name="compile" depends="init"
description="compile the source " >
<!-- Compile the java code from ${src} into ${build} -->
<javac debug="off" source="1.7" target="1.7" srcdir="${src}" destdir="${build}"/>
<javac debug="off" source="21" target="21" srcdir="${src}" destdir="${build}"/>
</target>
<target name="run" depends="dist"

View File

@@ -664,11 +664,6 @@ reg_class method_reg(
R12, R12_H
);
// Class for heapbase register
reg_class heapbase_reg(
R27, R27_H
);
// Class for thread register
reg_class thread_reg(
R28, R28_H
@@ -1244,15 +1239,15 @@ source %{
// zero, compressed klass pointers doesn't use r27 after JDK-8234794
if (UseCompressedOops && (CompressedOops::ptrs_base() != NULL)) {
_NO_SPECIAL_REG32_mask.Remove(OptoReg::as_OptoReg(r27->as_VMReg()));
_NO_SPECIAL_REG_mask.SUBTRACT(_HEAPBASE_REG_mask);
_NO_SPECIAL_PTR_REG_mask.SUBTRACT(_HEAPBASE_REG_mask);
_NO_SPECIAL_REG_mask.Remove(OptoReg::as_OptoReg(r27->as_VMReg()));
_NO_SPECIAL_PTR_REG_mask.Remove(OptoReg::as_OptoReg(r27->as_VMReg()));
}
// r29 is not allocatable when PreserveFramePointer is on
if (PreserveFramePointer) {
_NO_SPECIAL_REG32_mask.Remove(OptoReg::as_OptoReg(r29->as_VMReg()));
_NO_SPECIAL_REG_mask.SUBTRACT(_FP_REG_mask);
_NO_SPECIAL_PTR_REG_mask.SUBTRACT(_FP_REG_mask);
_NO_SPECIAL_REG_mask.Remove(OptoReg::as_OptoReg(r29->as_VMReg()));
_NO_SPECIAL_PTR_REG_mask.Remove(OptoReg::as_OptoReg(r29->as_VMReg()));
}
}
@@ -3822,7 +3817,7 @@ encode %{
Register tmp = as_Register($tmp2$$reg);
Label cont;
Label object_has_monitor;
Label no_count;
Label count, no_count;
assert_different_registers(oop, box, tmp, disp_hdr);
@@ -3839,7 +3834,10 @@ encode %{
// Check for existing monitor
__ tbnz(disp_hdr, exact_log2(markWord::monitor_value), object_has_monitor);
if (!UseHeavyMonitors) {
if (LockingMode == LM_MONITOR) {
__ tst(oop, oop); // Set NE to indicate 'failure' -> take slow-path. We know that oop != 0.
__ b(cont);
} else if (LockingMode == LM_LEGACY) {
// Set tmp to be (markWord of object | UNLOCK_VALUE).
__ orr(tmp, disp_hdr, markWord::unlocked_value);
@@ -3867,10 +3865,12 @@ encode %{
// displaced header in the box, which indicates that it is a recursive lock.
__ ands(tmp/*==0?*/, disp_hdr, tmp); // Sets flags for result
__ str(tmp/*==0, perhaps*/, Address(box, BasicLock::displaced_header_offset_in_bytes()));
__ b(cont);
} else {
__ tst(oop, oop); // Set NE to indicate 'failure' -> take slow-path. We know that oop != 0.
assert(LockingMode == LM_LIGHTWEIGHT, "must be");
__ fast_lock(oop, disp_hdr, tmp, rscratch1, no_count);
__ b(count);
}
__ b(cont);
// Handle existing monitor.
__ bind(object_has_monitor);
@@ -3879,24 +3879,25 @@ encode %{
// otherwise m->owner may contain a thread or a stack address.
//
// Try to CAS m->owner from NULL to current thread.
__ add(tmp, disp_hdr, (ObjectMonitor::owner_offset_in_bytes()-markWord::monitor_value));
__ add(tmp, disp_hdr, (in_bytes(ObjectMonitor::owner_offset())-markWord::monitor_value));
__ cmpxchg(tmp, zr, rthread, Assembler::xword, /*acquire*/ true,
/*release*/ true, /*weak*/ false, rscratch1); // Sets flags for result
// Store a non-null value into the box to avoid looking like a re-entrant
// lock. The fast-path monitor unlock code checks for
// markWord::monitor_value so use markWord::unused_mark which has the
// relevant bit set, and also matches ObjectSynchronizer::enter.
__ mov(tmp, (address)markWord::unused_mark().value());
__ str(tmp, Address(box, BasicLock::displaced_header_offset_in_bytes()));
if (LockingMode != LM_LIGHTWEIGHT) {
// Store a non-null value into the box to avoid looking like a re-entrant
// lock. The fast-path monitor unlock code checks for
// markWord::monitor_value so use markWord::unused_mark which has the
// relevant bit set, and also matches ObjectSynchronizer::enter.
__ mov(tmp, (address)markWord::unused_mark().value());
__ str(tmp, Address(box, BasicLock::displaced_header_offset_in_bytes()));
}
__ br(Assembler::EQ, cont); // CAS success means locking succeeded
__ cmp(rscratch1, rthread);
__ br(Assembler::NE, cont); // Check for recursive locking
// Recursive lock case
__ increment(Address(disp_hdr, ObjectMonitor::recursions_offset_in_bytes() - markWord::monitor_value), 1);
__ increment(Address(disp_hdr, in_bytes(ObjectMonitor::recursions_offset()) - markWord::monitor_value), 1);
// flag == EQ still from the cmp above, checking if this is a reentrant lock
__ bind(cont);
@@ -3904,6 +3905,7 @@ encode %{
// flag == NE indicates failure
__ br(Assembler::NE, no_count);
__ bind(count);
__ increment(Address(rthread, JavaThread::held_monitor_count_offset()));
__ bind(no_count);
@@ -3917,11 +3919,11 @@ encode %{
Register tmp = as_Register($tmp2$$reg);
Label cont;
Label object_has_monitor;
Label no_count;
Label count, no_count;
assert_different_registers(oop, box, tmp, disp_hdr);
if (!UseHeavyMonitors) {
if (LockingMode == LM_LEGACY) {
// Find the lock address and load the displaced header from the stack.
__ ldr(disp_hdr, Address(box, BasicLock::displaced_header_offset_in_bytes()));
@@ -3934,17 +3936,22 @@ encode %{
__ ldr(tmp, Address(oop, oopDesc::mark_offset_in_bytes()));
__ tbnz(tmp, exact_log2(markWord::monitor_value), object_has_monitor);
if (!UseHeavyMonitors) {
if (LockingMode == LM_MONITOR) {
__ tst(oop, oop); // Set NE to indicate 'failure' -> take slow-path. We know that oop != 0.
__ b(cont);
} else if (LockingMode == LM_LEGACY) {
// Check if it is still a light weight lock, this is is true if we
// see the stack address of the basicLock in the markWord of the
// object.
__ cmpxchg(oop, box, disp_hdr, Assembler::xword, /*acquire*/ false,
/*release*/ true, /*weak*/ false, tmp);
__ b(cont);
} else {
__ tst(oop, oop); // Set NE to indicate 'failure' -> take slow-path. We know that oop != 0.
assert(LockingMode == LM_LIGHTWEIGHT, "must be");
__ fast_unlock(oop, tmp, box, disp_hdr, no_count);
__ b(count);
}
__ b(cont);
assert(oopDesc::mark_offset_in_bytes() == 0, "offset of _mark is not 0");
@@ -3952,25 +3959,39 @@ encode %{
__ bind(object_has_monitor);
STATIC_ASSERT(markWord::monitor_value <= INT_MAX);
__ add(tmp, tmp, -(int)markWord::monitor_value); // monitor
__ ldr(disp_hdr, Address(tmp, ObjectMonitor::recursions_offset_in_bytes()));
if (LockingMode == LM_LIGHTWEIGHT) {
// If the owner is anonymous, we need to fix it -- in an outline stub.
Register tmp2 = disp_hdr;
__ ldr(tmp2, Address(tmp, ObjectMonitor::owner_offset()));
// We cannot use tbnz here, the target might be too far away and cannot
// be encoded.
__ tst(tmp2, (uint64_t)ObjectMonitor::ANONYMOUS_OWNER);
C2HandleAnonOMOwnerStub* stub = new (Compile::current()->comp_arena()) C2HandleAnonOMOwnerStub(tmp, tmp2);
Compile::current()->output()->add_stub(stub);
__ br(Assembler::NE, stub->entry());
__ bind(stub->continuation());
}
__ ldr(disp_hdr, Address(tmp, ObjectMonitor::recursions_offset()));
Label notRecursive;
__ cbz(disp_hdr, notRecursive);
// Recursive lock
__ sub(disp_hdr, disp_hdr, 1u);
__ str(disp_hdr, Address(tmp, ObjectMonitor::recursions_offset_in_bytes()));
__ str(disp_hdr, Address(tmp, ObjectMonitor::recursions_offset()));
__ cmp(disp_hdr, disp_hdr); // Sets flags for result
__ b(cont);
__ bind(notRecursive);
__ ldr(rscratch1, Address(tmp, ObjectMonitor::EntryList_offset_in_bytes()));
__ ldr(disp_hdr, Address(tmp, ObjectMonitor::cxq_offset_in_bytes()));
__ ldr(rscratch1, Address(tmp, ObjectMonitor::EntryList_offset()));
__ ldr(disp_hdr, Address(tmp, ObjectMonitor::cxq_offset()));
__ orr(rscratch1, rscratch1, disp_hdr); // Will be 0 if both are 0.
__ cmp(rscratch1, zr); // Sets flags for result
__ cbnz(rscratch1, cont);
// need a release store here
__ lea(tmp, Address(tmp, ObjectMonitor::owner_offset_in_bytes()));
__ lea(tmp, Address(tmp, ObjectMonitor::owner_offset()));
__ stlr(zr, tmp); // set unowned
__ bind(cont);
@@ -3978,6 +3999,7 @@ encode %{
// flag == NE indicates failure
__ br(Assembler::NE, no_count);
__ bind(count);
__ decrement(Address(rthread, JavaThread::held_monitor_count_offset()));
__ bind(no_count);
@@ -4318,7 +4340,18 @@ operand immI_positive()
// BoolTest condition for signed compare
operand immI_cmp_cond()
%{
predicate(n->get_int() < (int)(BoolTest::unsigned_compare));
predicate(!Matcher::is_unsigned_booltest_pred(n->get_int()));
match(ConI);
op_cost(0);
format %{ %}
interface(CONST_INTER);
%}
// BoolTest condition for unsigned compare
operand immI_cmpU_cond()
%{
predicate(Matcher::is_unsigned_booltest_pred(n->get_int()));
match(ConI);
op_cost(0);
@@ -4425,6 +4458,28 @@ operand immI19()
interface(CONST_INTER);
%}
// 5 bit signed integer
operand immI5()
%{
predicate(Assembler::is_simm(n->get_int(), 5));
match(ConI);
op_cost(0);
format %{ %}
interface(CONST_INTER);
%}
// 7 bit unsigned integer
operand immIU7()
%{
predicate(Assembler::is_uimm(n->get_int(), 7));
match(ConI);
op_cost(0);
format %{ %}
interface(CONST_INTER);
%}
// 12 bit unsigned offset -- for base plus immediate loads
operand immIU12()
%{
@@ -4567,6 +4622,28 @@ operand immLoffset16()
interface(CONST_INTER);
%}
// 5 bit signed long integer
operand immL5()
%{
predicate(Assembler::is_simm(n->get_long(), 5));
match(ConL);
op_cost(0);
format %{ %}
interface(CONST_INTER);
%}
// 7 bit unsigned long integer
operand immLU7()
%{
predicate(Assembler::is_uimm(n->get_long(), 7));
match(ConL);
op_cost(0);
format %{ %}
interface(CONST_INTER);
%}
// 8 bit signed value.
operand immI8()
%{
@@ -5238,17 +5315,6 @@ operand iRegNNoSp()
interface(REG_INTER);
%}
// heap base register -- used for encoding immN0
operand iRegIHeapbase()
%{
constraint(ALLOC_IN_RC(heapbase_reg));
match(RegI);
op_cost(0);
format %{ %}
interface(REG_INTER);
%}
// Float Register
// Float register operands
operand vRegF()
@@ -14952,42 +15018,6 @@ instruct convL2I_reg(iRegINoSp dst, iRegL src) %{
ins_pipe(ialu_reg);
%}
instruct convI2B(iRegINoSp dst, iRegIorL2I src, rFlagsReg cr)
%{
match(Set dst (Conv2B src));
effect(KILL cr);
format %{
"cmpw $src, zr\n\t"
"cset $dst, ne"
%}
ins_encode %{
__ cmpw(as_Register($src$$reg), zr);
__ cset(as_Register($dst$$reg), Assembler::NE);
%}
ins_pipe(ialu_reg);
%}
instruct convP2B(iRegINoSp dst, iRegP src, rFlagsReg cr)
%{
match(Set dst (Conv2B src));
effect(KILL cr);
format %{
"cmp $src, zr\n\t"
"cset $dst, ne"
%}
ins_encode %{
__ cmp(as_Register($src$$reg), zr);
__ cset(as_Register($dst$$reg), Assembler::NE);
%}
ins_pipe(ialu_reg);
%}
instruct convD2F_reg(vRegF dst, vRegD src) %{
match(Set dst (ConvD2F src));
@@ -17023,14 +17053,17 @@ instruct string_compareUU_sve(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI
%}
instruct string_indexofUU(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, iRegI_R2 cnt2,
iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2, iRegINoSp tmp3,
iRegINoSp tmp4, iRegINoSp tmp5, iRegINoSp tmp6, rFlagsReg cr)
iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2,
iRegINoSp tmp3, iRegINoSp tmp4, iRegINoSp tmp5, iRegINoSp tmp6,
vRegD_V0 vtmp0, vRegD_V1 vtmp1, rFlagsReg cr)
%{
predicate(((StrIndexOfNode*)n)->encoding() == StrIntrinsicNode::UU);
match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 cnt2)));
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2,
TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, TEMP tmp5, TEMP tmp6, KILL cr);
format %{ "String IndexOf $str1,$cnt1,$str2,$cnt2 -> $result (UU)" %}
TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, TEMP tmp5, TEMP tmp6,
TEMP vtmp0, TEMP vtmp1, KILL cr);
format %{ "String IndexOf $str1,$cnt1,$str2,$cnt2 -> $result (UU) "
"# KILL $str1 $cnt1 $str2 $cnt2 $tmp1 $tmp2 $tmp3 $tmp4 $tmp5 $tmp6 V0-V1 cr" %}
ins_encode %{
__ string_indexof($str1$$Register, $str2$$Register,
@@ -17044,14 +17077,17 @@ instruct string_indexofUU(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, iRegI_R2
%}
instruct string_indexofLL(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, iRegI_R2 cnt2,
iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2, iRegINoSp tmp3,
iRegINoSp tmp4, iRegINoSp tmp5, iRegINoSp tmp6, rFlagsReg cr)
iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2, iRegINoSp tmp3,
iRegINoSp tmp4, iRegINoSp tmp5, iRegINoSp tmp6,
vRegD_V0 vtmp0, vRegD_V1 vtmp1, rFlagsReg cr)
%{
predicate(((StrIndexOfNode*)n)->encoding() == StrIntrinsicNode::LL);
match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 cnt2)));
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2,
TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, TEMP tmp5, TEMP tmp6, KILL cr);
format %{ "String IndexOf $str1,$cnt1,$str2,$cnt2 -> $result (LL)" %}
TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, TEMP tmp5, TEMP tmp6,
TEMP vtmp0, TEMP vtmp1, KILL cr);
format %{ "String IndexOf $str1,$cnt1,$str2,$cnt2 -> $result (LL) "
"# KILL $str1 $cnt1 $str2 $cnt2 $tmp1 $tmp2 $tmp3 $tmp4 $tmp5 $tmp6 V0-V1 cr" %}
ins_encode %{
__ string_indexof($str1$$Register, $str2$$Register,
@@ -17065,14 +17101,17 @@ instruct string_indexofLL(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, iRegI_R2
%}
instruct string_indexofUL(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, iRegI_R2 cnt2,
iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2, iRegINoSp tmp3,
iRegINoSp tmp4, iRegINoSp tmp5, iRegINoSp tmp6, rFlagsReg cr)
iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2,iRegINoSp tmp3,
iRegINoSp tmp4, iRegINoSp tmp5, iRegINoSp tmp6,
vRegD_V0 vtmp0, vRegD_V1 vtmp1, rFlagsReg cr)
%{
predicate(((StrIndexOfNode*)n)->encoding() == StrIntrinsicNode::UL);
match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 cnt2)));
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2,
TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, TEMP tmp5, TEMP tmp6, KILL cr);
format %{ "String IndexOf $str1,$cnt1,$str2,$cnt2 -> $result (UL)" %}
TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, TEMP tmp5,
TEMP tmp6, TEMP vtmp0, TEMP vtmp1, KILL cr);
format %{ "String IndexOf $str1,$cnt1,$str2,$cnt2 -> $result (UL) "
"# KILL $str1 cnt1 $str2 $cnt2 $tmp1 $tmp2 $tmp3 $tmp4 $tmp5 $tmp6 V0-V1 cr" %}
ins_encode %{
__ string_indexof($str1$$Register, $str2$$Register,
@@ -17086,14 +17125,15 @@ instruct string_indexofUL(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, iRegI_R2
%}
instruct string_indexof_conUU(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2,
immI_le_4 int_cnt2, iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2,
iRegINoSp tmp3, iRegINoSp tmp4, rFlagsReg cr)
immI_le_4 int_cnt2, iRegI_R0 result, iRegINoSp tmp1,
iRegINoSp tmp2, iRegINoSp tmp3, iRegINoSp tmp4, rFlagsReg cr)
%{
predicate(((StrIndexOfNode*)n)->encoding() == StrIntrinsicNode::UU);
match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 int_cnt2)));
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1,
TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, KILL cr);
format %{ "String IndexOf $str1,$cnt1,$str2,$int_cnt2 -> $result (UU)" %}
format %{ "String IndexOf $str1,$cnt1,$str2,$int_cnt2 -> $result (UU) "
"# KILL $str1 $cnt1 $str2 $tmp1 $tmp2 $tmp3 $tmp4 cr" %}
ins_encode %{
int icnt2 = (int)$int_cnt2$$constant;
@@ -17107,14 +17147,15 @@ instruct string_indexof_conUU(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2,
%}
instruct string_indexof_conLL(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2,
immI_le_4 int_cnt2, iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2,
iRegINoSp tmp3, iRegINoSp tmp4, rFlagsReg cr)
immI_le_4 int_cnt2, iRegI_R0 result, iRegINoSp tmp1,
iRegINoSp tmp2, iRegINoSp tmp3, iRegINoSp tmp4, rFlagsReg cr)
%{
predicate(((StrIndexOfNode*)n)->encoding() == StrIntrinsicNode::LL);
match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 int_cnt2)));
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1,
TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, KILL cr);
format %{ "String IndexOf $str1,$cnt1,$str2,$int_cnt2 -> $result (LL)" %}
format %{ "String IndexOf $str1,$cnt1,$str2,$int_cnt2 -> $result (LL) "
"# KILL $str1 $cnt1 $str2 $tmp1 $tmp2 $tmp3 $tmp4 cr" %}
ins_encode %{
int icnt2 = (int)$int_cnt2$$constant;
@@ -17128,14 +17169,15 @@ instruct string_indexof_conLL(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2,
%}
instruct string_indexof_conUL(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2,
immI_1 int_cnt2, iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2,
iRegINoSp tmp3, iRegINoSp tmp4, rFlagsReg cr)
immI_1 int_cnt2, iRegI_R0 result, iRegINoSp tmp1,
iRegINoSp tmp2, iRegINoSp tmp3, iRegINoSp tmp4, rFlagsReg cr)
%{
predicate(((StrIndexOfNode*)n)->encoding() == StrIntrinsicNode::UL);
match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 int_cnt2)));
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1,
TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, KILL cr);
format %{ "String IndexOf $str1,$cnt1,$str2,$int_cnt2 -> $result (UL)" %}
format %{ "String IndexOf $str1,$cnt1,$str2,$int_cnt2 -> $result (UL) "
"# KILL $str1 $cnt1 $str2 $tmp1 $tmp2 $tmp3 $tmp4 cr" %}
ins_encode %{
int icnt2 = (int)$int_cnt2$$constant;
@@ -17252,13 +17294,17 @@ instruct string_equalsU(iRegP_R1 str1, iRegP_R3 str2, iRegI_R4 cnt,
instruct array_equalsB(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result,
iRegP_R3 tmp1, iRegP_R4 tmp2, iRegP_R5 tmp3,
vRegD_V0 vtmp0, vRegD_V1 vtmp1, vRegD_V2 vtmp2, vRegD_V3 vtmp3,
vRegD_V4 vtmp4, vRegD_V5 vtmp5, vRegD_V6 vtmp6, vRegD_V7 vtmp7,
iRegP_R10 tmp, rFlagsReg cr)
%{
predicate(((AryEqNode*)n)->encoding() == StrIntrinsicNode::LL);
match(Set result (AryEq ary1 ary2));
effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr);
effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, TEMP tmp1, TEMP tmp2, TEMP tmp3,
TEMP vtmp0, TEMP vtmp1, TEMP vtmp2, TEMP vtmp3, TEMP vtmp4, TEMP vtmp5,
TEMP vtmp6, TEMP vtmp7, KILL cr);
format %{ "Array Equals $ary1,ary2 -> $result // KILL $tmp" %}
format %{ "Array Equals $ary1,ary2 -> $result # KILL $ary1 $ary2 $tmp $tmp1 $tmp2 $tmp3 V0-V7 cr" %}
ins_encode %{
address tpc = __ arrays_equals($ary1$$Register, $ary2$$Register,
$tmp1$$Register, $tmp2$$Register, $tmp3$$Register,
@@ -17273,13 +17319,17 @@ instruct array_equalsB(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result,
instruct array_equalsC(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result,
iRegP_R3 tmp1, iRegP_R4 tmp2, iRegP_R5 tmp3,
vRegD_V0 vtmp0, vRegD_V1 vtmp1, vRegD_V2 vtmp2, vRegD_V3 vtmp3,
vRegD_V4 vtmp4, vRegD_V5 vtmp5, vRegD_V6 vtmp6, vRegD_V7 vtmp7,
iRegP_R10 tmp, rFlagsReg cr)
%{
predicate(((AryEqNode*)n)->encoding() == StrIntrinsicNode::UU);
match(Set result (AryEq ary1 ary2));
effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr);
effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, TEMP tmp1, TEMP tmp2, TEMP tmp3,
TEMP vtmp0, TEMP vtmp1, TEMP vtmp2, TEMP vtmp3, TEMP vtmp4, TEMP vtmp5,
TEMP vtmp6, TEMP vtmp7, KILL cr);
format %{ "Array Equals $ary1,ary2 -> $result // KILL $tmp" %}
format %{ "Array Equals $ary1,ary2 -> $result # KILL $ary1 $ary2 $tmp $tmp1 $tmp2 $tmp3 V0-V7 cr" %}
ins_encode %{
address tpc = __ arrays_equals($ary1$$Register, $ary2$$Register,
$tmp1$$Register, $tmp2$$Register, $tmp3$$Register,
@@ -17309,36 +17359,39 @@ instruct count_positives(iRegP_R1 ary1, iRegI_R2 len, iRegI_R0 result, rFlagsReg
// fast char[] to byte[] compression
instruct string_compress(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
vRegD_V0 tmp1, vRegD_V1 tmp2,
vRegD_V2 tmp3, vRegD_V3 tmp4,
vRegD_V0 vtmp0, vRegD_V1 vtmp1, vRegD_V2 vtmp2,
vRegD_V3 vtmp3, vRegD_V4 vtmp4, vRegD_V5 vtmp5,
iRegI_R0 result, rFlagsReg cr)
%{
match(Set result (StrCompressedCopy src (Binary dst len)));
effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4,
effect(TEMP vtmp0, TEMP vtmp1, TEMP vtmp2, TEMP vtmp3, TEMP vtmp4, TEMP vtmp5,
USE_KILL src, USE_KILL dst, USE len, KILL cr);
format %{ "String Compress $src,$dst,$len -> $result // KILL $src,$dst" %}
format %{ "String Compress $src,$dst,$len -> $result # KILL $src $dst V0-V5 cr" %}
ins_encode %{
__ char_array_compress($src$$Register, $dst$$Register, $len$$Register,
$result$$Register,
$tmp1$$FloatRegister, $tmp2$$FloatRegister,
$tmp3$$FloatRegister, $tmp4$$FloatRegister);
$result$$Register, $vtmp0$$FloatRegister, $vtmp1$$FloatRegister,
$vtmp2$$FloatRegister, $vtmp3$$FloatRegister,
$vtmp4$$FloatRegister, $vtmp5$$FloatRegister);
%}
ins_pipe(pipe_slow);
%}
// fast byte[] to char[] inflation
instruct string_inflate(Universe dummy, iRegP_R0 src, iRegP_R1 dst, iRegI_R2 len,
vRegD_V0 tmp1, vRegD_V1 tmp2, vRegD_V2 tmp3, iRegP_R3 tmp4, rFlagsReg cr)
instruct string_inflate(Universe dummy, iRegP_R0 src, iRegP_R1 dst, iRegI_R2 len, iRegP_R3 tmp,
vRegD_V0 vtmp0, vRegD_V1 vtmp1, vRegD_V2 vtmp2, vRegD_V3 vtmp3,
vRegD_V4 vtmp4, vRegD_V5 vtmp5, vRegD_V6 vtmp6, rFlagsReg cr)
%{
match(Set dummy (StrInflatedCopy src (Binary dst len)));
effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, USE_KILL src, USE_KILL dst, USE_KILL len, KILL cr);
effect(TEMP vtmp0, TEMP vtmp1, TEMP vtmp2, TEMP vtmp3,
TEMP vtmp4, TEMP vtmp5, TEMP vtmp6, TEMP tmp,
USE_KILL src, USE_KILL dst, USE_KILL len, KILL cr);
format %{ "String Inflate $src,$dst // KILL $tmp1, $tmp2" %}
format %{ "String Inflate $src,$dst # KILL $tmp $src $dst $len V0-V6 cr" %}
ins_encode %{
address tpc = __ byte_array_inflate($src$$Register, $dst$$Register, $len$$Register,
$tmp1$$FloatRegister, $tmp2$$FloatRegister,
$tmp3$$FloatRegister, $tmp4$$Register);
$vtmp0$$FloatRegister, $vtmp1$$FloatRegister,
$vtmp2$$FloatRegister, $tmp$$Register);
if (tpc == NULL) {
ciEnv::current()->record_failure("CodeCache is full");
return;
@@ -17349,41 +17402,43 @@ instruct string_inflate(Universe dummy, iRegP_R0 src, iRegP_R1 dst, iRegI_R2 len
// encode char[] to byte[] in ISO_8859_1
instruct encode_iso_array(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
vRegD_V0 vtmp0, vRegD_V1 vtmp1,
vRegD_V2 vtmp2, vRegD_V3 vtmp3,
vRegD_V0 vtmp0, vRegD_V1 vtmp1, vRegD_V2 vtmp2,
vRegD_V3 vtmp3, vRegD_V4 vtmp4, vRegD_V5 vtmp5,
iRegI_R0 result, rFlagsReg cr)
%{
predicate(!((EncodeISOArrayNode*)n)->is_ascii());
match(Set result (EncodeISOArray src (Binary dst len)));
effect(USE_KILL src, USE_KILL dst, USE len,
KILL vtmp0, KILL vtmp1, KILL vtmp2, KILL vtmp3, KILL cr);
effect(USE_KILL src, USE_KILL dst, USE len, KILL vtmp0, KILL vtmp1,
KILL vtmp2, KILL vtmp3, KILL vtmp4, KILL vtmp5, KILL cr);
format %{ "Encode ISO array $src,$dst,$len -> $result" %}
format %{ "Encode ISO array $src,$dst,$len -> $result # KILL $src $dst V0-V5 cr" %}
ins_encode %{
__ encode_iso_array($src$$Register, $dst$$Register, $len$$Register,
$result$$Register, false,
$vtmp0$$FloatRegister, $vtmp1$$FloatRegister,
$vtmp2$$FloatRegister, $vtmp3$$FloatRegister);
$vtmp2$$FloatRegister, $vtmp3$$FloatRegister,
$vtmp4$$FloatRegister, $vtmp5$$FloatRegister);
%}
ins_pipe(pipe_class_memory);
%}
instruct encode_ascii_array(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
vRegD_V0 vtmp0, vRegD_V1 vtmp1,
vRegD_V2 vtmp2, vRegD_V3 vtmp3,
vRegD_V0 vtmp0, vRegD_V1 vtmp1, vRegD_V2 vtmp2,
vRegD_V3 vtmp3, vRegD_V4 vtmp4, vRegD_V5 vtmp5,
iRegI_R0 result, rFlagsReg cr)
%{
predicate(((EncodeISOArrayNode*)n)->is_ascii());
match(Set result (EncodeISOArray src (Binary dst len)));
effect(USE_KILL src, USE_KILL dst, USE len,
KILL vtmp0, KILL vtmp1, KILL vtmp2, KILL vtmp3, KILL cr);
effect(USE_KILL src, USE_KILL dst, USE len, KILL vtmp0, KILL vtmp1,
KILL vtmp2, KILL vtmp3, KILL vtmp4, KILL vtmp5, KILL cr);
format %{ "Encode ASCII array $src,$dst,$len -> $result" %}
format %{ "Encode ASCII array $src,$dst,$len -> $result # KILL $src $dst V0-V5 cr" %}
ins_encode %{
__ encode_iso_array($src$$Register, $dst$$Register, $len$$Register,
$result$$Register, true,
$vtmp0$$FloatRegister, $vtmp1$$FloatRegister,
$vtmp2$$FloatRegister, $vtmp3$$FloatRegister);
$vtmp2$$FloatRegister, $vtmp3$$FloatRegister,
$vtmp4$$FloatRegister, $vtmp5$$FloatRegister);
%}
ins_pipe(pipe_class_memory);
%}

View File

@@ -315,10 +315,6 @@ source %{
}
}
const bool Matcher::vector_needs_load_shuffle(BasicType elem_bt, int vlen) {
return false;
}
// Assert that the given node is not a variable shift.
bool assert_not_var_shift(const Node* n) {
assert(!n->as_ShiftV()->is_var_shift(), "illegal variable shift");
@@ -5220,6 +5216,118 @@ instruct vmaskcmp_sve(pReg dst, vReg src1, vReg src2, immI cond, rFlagsReg cr) %
ins_pipe(pipe_slow);
%}
instruct vmaskcmp_immB_sve(pReg dst, vReg src, immI5 imm, immI_cmp_cond cond, rFlagsReg cr) %{
predicate(UseSVE > 0);
match(Set dst (VectorMaskCmp (Binary src (ReplicateB imm)) cond));
effect(KILL cr);
format %{ "vmaskcmp_immB_sve $dst, $src, $imm, $cond\t# KILL cr" %}
ins_encode %{
Assembler::Condition condition = to_assembler_cond((BoolTest::mask)$cond$$constant);
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
assert(length_in_bytes == MaxVectorSize, "invalid vector length");
__ sve_cmp(condition, $dst$$PRegister, __ B, ptrue, $src$$FloatRegister, (int)$imm$$constant);
%}
ins_pipe(pipe_slow);
%}
instruct vmaskcmpU_immB_sve(pReg dst, vReg src, immIU7 imm, immI_cmpU_cond cond, rFlagsReg cr) %{
predicate(UseSVE > 0);
match(Set dst (VectorMaskCmp (Binary src (ReplicateB imm)) cond));
effect(KILL cr);
format %{ "vmaskcmpU_immB_sve $dst, $src, $imm, $cond\t# KILL cr" %}
ins_encode %{
Assembler::Condition condition = to_assembler_cond((BoolTest::mask)$cond$$constant);
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
assert(length_in_bytes == MaxVectorSize, "invalid vector length");
__ sve_cmp(condition, $dst$$PRegister, __ B, ptrue, $src$$FloatRegister, (int)$imm$$constant);
%}
ins_pipe(pipe_slow);
%}
instruct vmaskcmp_immS_sve(pReg dst, vReg src, immI5 imm, immI_cmp_cond cond, rFlagsReg cr) %{
predicate(UseSVE > 0);
match(Set dst (VectorMaskCmp (Binary src (ReplicateS imm)) cond));
effect(KILL cr);
format %{ "vmaskcmp_immS_sve $dst, $src, $imm, $cond\t# KILL cr" %}
ins_encode %{
Assembler::Condition condition = to_assembler_cond((BoolTest::mask)$cond$$constant);
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
assert(length_in_bytes == MaxVectorSize, "invalid vector length");
__ sve_cmp(condition, $dst$$PRegister, __ H, ptrue, $src$$FloatRegister, (int)$imm$$constant);
%}
ins_pipe(pipe_slow);
%}
instruct vmaskcmpU_immS_sve(pReg dst, vReg src, immIU7 imm, immI_cmpU_cond cond, rFlagsReg cr) %{
predicate(UseSVE > 0);
match(Set dst (VectorMaskCmp (Binary src (ReplicateS imm)) cond));
effect(KILL cr);
format %{ "vmaskcmpU_immS_sve $dst, $src, $imm, $cond\t# KILL cr" %}
ins_encode %{
Assembler::Condition condition = to_assembler_cond((BoolTest::mask)$cond$$constant);
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
assert(length_in_bytes == MaxVectorSize, "invalid vector length");
__ sve_cmp(condition, $dst$$PRegister, __ H, ptrue, $src$$FloatRegister, (int)$imm$$constant);
%}
ins_pipe(pipe_slow);
%}
instruct vmaskcmp_immI_sve(pReg dst, vReg src, immI5 imm, immI_cmp_cond cond, rFlagsReg cr) %{
predicate(UseSVE > 0);
match(Set dst (VectorMaskCmp (Binary src (ReplicateI imm)) cond));
effect(KILL cr);
format %{ "vmaskcmp_immI_sve $dst, $src, $imm, $cond\t# KILL cr" %}
ins_encode %{
Assembler::Condition condition = to_assembler_cond((BoolTest::mask)$cond$$constant);
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
assert(length_in_bytes == MaxVectorSize, "invalid vector length");
__ sve_cmp(condition, $dst$$PRegister, __ S, ptrue, $src$$FloatRegister, (int)$imm$$constant);
%}
ins_pipe(pipe_slow);
%}
instruct vmaskcmpU_immI_sve(pReg dst, vReg src, immIU7 imm, immI_cmpU_cond cond, rFlagsReg cr) %{
predicate(UseSVE > 0);
match(Set dst (VectorMaskCmp (Binary src (ReplicateI imm)) cond));
effect(KILL cr);
format %{ "vmaskcmpU_immI_sve $dst, $src, $imm, $cond\t# KILL cr" %}
ins_encode %{
Assembler::Condition condition = to_assembler_cond((BoolTest::mask)$cond$$constant);
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
assert(length_in_bytes == MaxVectorSize, "invalid vector length");
__ sve_cmp(condition, $dst$$PRegister, __ S, ptrue, $src$$FloatRegister, (int)$imm$$constant);
%}
ins_pipe(pipe_slow);
%}
instruct vmaskcmp_immL_sve(pReg dst, vReg src, immL5 imm, immI_cmp_cond cond, rFlagsReg cr) %{
predicate(UseSVE > 0);
match(Set dst (VectorMaskCmp (Binary src (ReplicateL imm)) cond));
effect(KILL cr);
format %{ "vmaskcmp_immL_sve $dst, $src, $imm, $cond\t# KILL cr" %}
ins_encode %{
Assembler::Condition condition = to_assembler_cond((BoolTest::mask)$cond$$constant);
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
assert(length_in_bytes == MaxVectorSize, "invalid vector length");
__ sve_cmp(condition, $dst$$PRegister, __ D, ptrue, $src$$FloatRegister, (int)$imm$$constant);
%}
ins_pipe(pipe_slow);
%}
instruct vmaskcmpU_immL_sve(pReg dst, vReg src, immLU7 imm, immI_cmpU_cond cond, rFlagsReg cr) %{
predicate(UseSVE > 0);
match(Set dst (VectorMaskCmp (Binary src (ReplicateL imm)) cond));
effect(KILL cr);
format %{ "vmaskcmpU_immL_sve $dst, $src, $imm, $cond\t# KILL cr" %}
ins_encode %{
Assembler::Condition condition = to_assembler_cond((BoolTest::mask)$cond$$constant);
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
assert(length_in_bytes == MaxVectorSize, "invalid vector length");
__ sve_cmp(condition, $dst$$PRegister, __ D, ptrue, $src$$FloatRegister, (int)$imm$$constant);
%}
ins_pipe(pipe_slow);
%}
instruct vmaskcmp_masked(pReg dst, vReg src1, vReg src2, immI cond,
pRegGov pg, rFlagsReg cr) %{
predicate(UseSVE > 0);
@@ -5400,6 +5508,30 @@ instruct vmask_truecount_sve(iRegINoSp dst, pReg src) %{
ins_pipe(pipe_slow);
%}
// Combined rule for VectorMaskTrueCount (VectorStoreMask) when the vector element type is not T_BYTE.
instruct vstoremask_truecount_neon(iRegINoSp dst, vReg src, immI_gt_1 size, vReg vtmp) %{
match(Set dst (VectorMaskTrueCount (VectorStoreMask src size)));
effect(TEMP vtmp);
format %{ "vstoremask_truecount_neon $dst, $src\t# KILL $vtmp" %}
ins_encode %{
// Input "src" is a vector mask represented as lanes with
// 0/-1 as element values.
uint esize = (uint)$size$$constant;
uint length_in_bytes = Matcher::vector_length_in_bytes(this, $src);
Assembler::SIMD_Arrangement arrangement = Assembler::esize2arrangement(esize,
/* isQ */ length_in_bytes == 16);
if (arrangement == __ T2D || arrangement == __ T2S) {
__ addpv($vtmp$$FloatRegister, arrangement, $src$$FloatRegister, $src$$FloatRegister);
} else {
__ addv($vtmp$$FloatRegister, arrangement, $src$$FloatRegister);
}
__ smov($dst$$Register, $vtmp$$FloatRegister, __ B, 0);
__ neg($dst$$Register, $dst$$Register);
%}
ins_pipe(pipe_slow);
%}
// first true
instruct vmask_firsttrue_lt8e(iRegINoSp dst, vReg src, rFlagsReg cr) %{
@@ -5880,49 +6012,6 @@ instruct vblend_sve(vReg dst, vReg src1, vReg src2, pReg pg) %{
ins_pipe(pipe_slow);
%}
// ------------------------- Vector conditional move --------------------------
instruct vcmove_neon(vReg dst, vReg src1, vReg src2, immI cond, cmpOp copnd) %{
predicate(UseSVE == 0 ||
(VM_Version::use_neon_for_vector(Matcher::vector_length_in_bytes(n)) &&
n->in(1)->in(2)->get_int() != BoolTest::ne));
match(Set dst (CMoveVF (Binary copnd cond) (Binary src1 src2)));
match(Set dst (CMoveVD (Binary copnd cond) (Binary src1 src2)));
effect(TEMP_DEF dst);
format %{ "vcmove_neon.$copnd $dst, $src1, $src2\t# vector conditional move fp" %}
ins_encode %{
Assembler::Condition condition = to_assembler_cond((BoolTest::mask)$cond$$constant);
BasicType bt = Matcher::vector_element_basic_type(this);
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
assert(length_in_bytes == 8 || length_in_bytes == 16, "must be");
__ neon_compare($dst$$FloatRegister, bt, $src1$$FloatRegister,
$src2$$FloatRegister, condition, /* isQ */ length_in_bytes == 16);
__ bsl($dst$$FloatRegister, length_in_bytes == 16 ? __ T16B : __ T8B,
$src2$$FloatRegister, $src1$$FloatRegister);
%}
ins_pipe(pipe_slow);
%}
instruct vcmove_sve(vReg dst, vReg src1, vReg src2, immI cond, cmpOp copnd, pRegGov pgtmp) %{
predicate(!VM_Version::use_neon_for_vector(Matcher::vector_length_in_bytes(n)) ||
(UseSVE > 0 && n->in(1)->in(2)->get_int() == BoolTest::ne));
match(Set dst (CMoveVF (Binary copnd cond) (Binary src1 src2)));
match(Set dst (CMoveVD (Binary copnd cond) (Binary src1 src2)));
effect(TEMP pgtmp);
format %{ "vcmove_sve.$copnd $dst, $src1, $src2\t# vector conditional move fp. KILL $pgtmp" %}
ins_encode %{
assert(UseSVE > 0, "must be sve");
Assembler::Condition condition = to_assembler_cond((BoolTest::mask)$cond$$constant);
BasicType bt = Matcher::vector_element_basic_type(this);
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
__ sve_compare($pgtmp$$PRegister, bt, ptrue, $src1$$FloatRegister,
$src2$$FloatRegister, condition);
__ sve_sel($dst$$FloatRegister, __ elemType_to_regVariant(bt),
$pgtmp$$PRegister, $src2$$FloatRegister, $src1$$FloatRegister);
%}
ins_pipe(pipe_slow);
%}
// ------------------------------ Vector round ---------------------------------
// vector Math.round
@@ -6069,6 +6158,41 @@ instruct vtest_alltrue_sve(rFlagsReg cr, pReg src1, pReg src2, pReg ptmp) %{
ins_pipe(pipe_slow);
%}
// ------------------------------ Vector shuffle -------------------------------
instruct loadshuffle(vReg dst, vReg src) %{
match(Set dst (VectorLoadShuffle src));
format %{ "loadshuffle $dst, $src" %}
ins_encode %{
BasicType bt = Matcher::vector_element_basic_type(this);
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
if (bt == T_BYTE) {
if ($dst$$FloatRegister != $src$$FloatRegister) {
if (VM_Version::use_neon_for_vector(length_in_bytes)) {
__ orr($dst$$FloatRegister, length_in_bytes == 16 ? __ T16B : __ T8B,
$src$$FloatRegister, $src$$FloatRegister);
} else {
assert(UseSVE > 0, "must be sve");
__ sve_orr($dst$$FloatRegister, $src$$FloatRegister, $src$$FloatRegister);
}
}
} else {
if (VM_Version::use_neon_for_vector(length_in_bytes)) {
// 4S/8S, 4I, 4F
__ uxtl($dst$$FloatRegister, __ T8H, $src$$FloatRegister, __ T8B);
if (type2aelembytes(bt) == 4) {
__ uxtl($dst$$FloatRegister, __ T4S, $dst$$FloatRegister, __ T4H);
}
} else {
assert(UseSVE > 0, "must be sve");
__ sve_vector_extend($dst$$FloatRegister, __ elemType_to_regVariant(bt),
$src$$FloatRegister, __ B);
}
}
%}
ins_pipe(pipe_slow);
%}
// ------------------------------ Vector rearrange -----------------------------
// Here is an example that rearranges a NEON vector with 4 ints:
@@ -6091,7 +6215,6 @@ instruct vtest_alltrue_sve(rFlagsReg cr, pReg src1, pReg src2, pReg ptmp) %{
// need to lookup 2/4 bytes as a group. For VectorRearrange long, we use bsl
// to implement rearrange.
// Maybe move the shuffle preparation to VectorLoadShuffle
instruct rearrange_HS_neon(vReg dst, vReg src, vReg shuffle, vReg tmp1, vReg tmp2) %{
predicate(UseSVE == 0 &&
(Matcher::vector_element_basic_type(n) == T_SHORT ||

View File

@@ -305,10 +305,6 @@ source %{
}
}
const bool Matcher::vector_needs_load_shuffle(BasicType elem_bt, int vlen) {
return false;
}
// Assert that the given node is not a variable shift.
bool assert_not_var_shift(const Node* n) {
assert(!n->as_ShiftV()->is_var_shift(), "illegal variable shift");
@@ -3616,6 +3612,31 @@ instruct vmaskcmp_sve(pReg dst, vReg src1, vReg src2, immI cond, rFlagsReg cr) %
%}
ins_pipe(pipe_slow);
%}
dnl
dnl VMASKCMP_SVE_IMM($1 , $2 , $3 , $4 )
dnl VMASKCMP_SVE_IMM(element_size, element_type, type_imm, type_condition)
define(`VMASKCMP_SVE_IMM', `
instruct vmask$4_imm$2_sve(pReg dst, vReg src, $3 imm, immI_$4_cond cond, rFlagsReg cr) %{
predicate(UseSVE > 0);
match(Set dst (VectorMaskCmp (Binary src (Replicate$2 imm)) cond));
effect(KILL cr);
format %{ "vmask$4_imm$2_sve $dst, $src, $imm, $cond\t# KILL cr" %}
ins_encode %{
Assembler::Condition condition = to_assembler_cond((BoolTest::mask)$cond$$constant);
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
assert(length_in_bytes == MaxVectorSize, "invalid vector length");
__ sve_cmp(condition, $dst$$PRegister, __ $1, ptrue, $src$$FloatRegister, (int)$imm$$constant);
%}
ins_pipe(pipe_slow);
%}')dnl
VMASKCMP_SVE_IMM(B, B, immI5, cmp)
VMASKCMP_SVE_IMM(B, B, immIU7, cmpU)
VMASKCMP_SVE_IMM(H, S, immI5, cmp)
VMASKCMP_SVE_IMM(H, S, immIU7, cmpU)
VMASKCMP_SVE_IMM(S, I, immI5, cmp)
VMASKCMP_SVE_IMM(S, I, immIU7, cmpU)
VMASKCMP_SVE_IMM(D, L, immL5, cmp)
VMASKCMP_SVE_IMM(D, L, immLU7, cmpU)
instruct vmaskcmp_masked(pReg dst, vReg src1, vReg src2, immI cond,
pRegGov pg, rFlagsReg cr) %{
@@ -3797,6 +3818,30 @@ instruct vmask_truecount_sve(iRegINoSp dst, pReg src) %{
ins_pipe(pipe_slow);
%}
// Combined rule for VectorMaskTrueCount (VectorStoreMask) when the vector element type is not T_BYTE.
instruct vstoremask_truecount_neon(iRegINoSp dst, vReg src, immI_gt_1 size, vReg vtmp) %{
match(Set dst (VectorMaskTrueCount (VectorStoreMask src size)));
effect(TEMP vtmp);
format %{ "vstoremask_truecount_neon $dst, $src\t# KILL $vtmp" %}
ins_encode %{
// Input "src" is a vector mask represented as lanes with
// 0/-1 as element values.
uint esize = (uint)$size$$constant;
uint length_in_bytes = Matcher::vector_length_in_bytes(this, $src);
Assembler::SIMD_Arrangement arrangement = Assembler::esize2arrangement(esize,
/* isQ */ length_in_bytes == 16);
if (arrangement == __ T2D || arrangement == __ T2S) {
__ addpv($vtmp$$FloatRegister, arrangement, $src$$FloatRegister, $src$$FloatRegister);
} else {
__ addv($vtmp$$FloatRegister, arrangement, $src$$FloatRegister);
}
__ smov($dst$$Register, $vtmp$$FloatRegister, __ B, 0);
__ neg($dst$$Register, $dst$$Register);
%}
ins_pipe(pipe_slow);
%}
// first true
instruct vmask_firsttrue_lt8e(iRegINoSp dst, vReg src, rFlagsReg cr) %{
@@ -4233,49 +4278,6 @@ instruct vblend_sve(vReg dst, vReg src1, vReg src2, pReg pg) %{
ins_pipe(pipe_slow);
%}
// ------------------------- Vector conditional move --------------------------
instruct vcmove_neon(vReg dst, vReg src1, vReg src2, immI cond, cmpOp copnd) %{
predicate(UseSVE == 0 ||
(VM_Version::use_neon_for_vector(Matcher::vector_length_in_bytes(n)) &&
n->in(1)->in(2)->get_int() != BoolTest::ne));
match(Set dst (CMoveVF (Binary copnd cond) (Binary src1 src2)));
match(Set dst (CMoveVD (Binary copnd cond) (Binary src1 src2)));
effect(TEMP_DEF dst);
format %{ "vcmove_neon.$copnd $dst, $src1, $src2\t# vector conditional move fp" %}
ins_encode %{
Assembler::Condition condition = to_assembler_cond((BoolTest::mask)$cond$$constant);
BasicType bt = Matcher::vector_element_basic_type(this);
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
assert(length_in_bytes == 8 || length_in_bytes == 16, "must be");
__ neon_compare($dst$$FloatRegister, bt, $src1$$FloatRegister,
$src2$$FloatRegister, condition, /* isQ */ length_in_bytes == 16);
__ bsl($dst$$FloatRegister, length_in_bytes == 16 ? __ T16B : __ T8B,
$src2$$FloatRegister, $src1$$FloatRegister);
%}
ins_pipe(pipe_slow);
%}
instruct vcmove_sve(vReg dst, vReg src1, vReg src2, immI cond, cmpOp copnd, pRegGov pgtmp) %{
predicate(!VM_Version::use_neon_for_vector(Matcher::vector_length_in_bytes(n)) ||
(UseSVE > 0 && n->in(1)->in(2)->get_int() == BoolTest::ne));
match(Set dst (CMoveVF (Binary copnd cond) (Binary src1 src2)));
match(Set dst (CMoveVD (Binary copnd cond) (Binary src1 src2)));
effect(TEMP pgtmp);
format %{ "vcmove_sve.$copnd $dst, $src1, $src2\t# vector conditional move fp. KILL $pgtmp" %}
ins_encode %{
assert(UseSVE > 0, "must be sve");
Assembler::Condition condition = to_assembler_cond((BoolTest::mask)$cond$$constant);
BasicType bt = Matcher::vector_element_basic_type(this);
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
__ sve_compare($pgtmp$$PRegister, bt, ptrue, $src1$$FloatRegister,
$src2$$FloatRegister, condition);
__ sve_sel($dst$$FloatRegister, __ elemType_to_regVariant(bt),
$pgtmp$$PRegister, $src2$$FloatRegister, $src1$$FloatRegister);
%}
ins_pipe(pipe_slow);
%}
// ------------------------------ Vector round ---------------------------------
// vector Math.round
@@ -4422,6 +4424,41 @@ instruct vtest_alltrue_sve(rFlagsReg cr, pReg src1, pReg src2, pReg ptmp) %{
ins_pipe(pipe_slow);
%}
// ------------------------------ Vector shuffle -------------------------------
instruct loadshuffle(vReg dst, vReg src) %{
match(Set dst (VectorLoadShuffle src));
format %{ "loadshuffle $dst, $src" %}
ins_encode %{
BasicType bt = Matcher::vector_element_basic_type(this);
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
if (bt == T_BYTE) {
if ($dst$$FloatRegister != $src$$FloatRegister) {
if (VM_Version::use_neon_for_vector(length_in_bytes)) {
__ orr($dst$$FloatRegister, length_in_bytes == 16 ? __ T16B : __ T8B,
$src$$FloatRegister, $src$$FloatRegister);
} else {
assert(UseSVE > 0, "must be sve");
__ sve_orr($dst$$FloatRegister, $src$$FloatRegister, $src$$FloatRegister);
}
}
} else {
if (VM_Version::use_neon_for_vector(length_in_bytes)) {
// 4S/8S, 4I, 4F
__ uxtl($dst$$FloatRegister, __ T8H, $src$$FloatRegister, __ T8B);
if (type2aelembytes(bt) == 4) {
__ uxtl($dst$$FloatRegister, __ T4S, $dst$$FloatRegister, __ T4H);
}
} else {
assert(UseSVE > 0, "must be sve");
__ sve_vector_extend($dst$$FloatRegister, __ elemType_to_regVariant(bt),
$src$$FloatRegister, __ B);
}
}
%}
ins_pipe(pipe_slow);
%}
// ------------------------------ Vector rearrange -----------------------------
// Here is an example that rearranges a NEON vector with 4 ints:
@@ -4444,7 +4481,6 @@ instruct vtest_alltrue_sve(rFlagsReg cr, pReg src1, pReg src2, pReg ptmp) %{
// need to lookup 2/4 bytes as a group. For VectorRearrange long, we use bsl
// to implement rearrange.
// Maybe move the shuffle preparation to VectorLoadShuffle
instruct rearrange_HS_neon(vReg dst, vReg src, vReg shuffle, vReg tmp1, vReg tmp2) %{
predicate(UseSVE == 0 &&
(Matcher::vector_element_basic_type(n) == T_SHORT ||

View File

@@ -102,7 +102,7 @@ void Assembler::emit_data64(jlong data,
RelocationHolder const& rspec,
int format) {
assert(inst_mark() != NULL, "must be inside InstructionMark");
assert(inst_mark() != nullptr, "must be inside InstructionMark");
// Do not use AbstractAssembler::relocate, which is not intended for
// embedded words. Instead, relocate to the enclosing instruction.
code_section()->relocate(inst_mark(), rspec, format);

View File

@@ -228,7 +228,7 @@ public:
static void spatch(address a, int msb, int lsb, int64_t val) {
int nbits = msb - lsb + 1;
int64_t chk = val >> (nbits - 1);
guarantee (chk == -1 || chk == 0, "Field too big for insn");
guarantee (chk == -1 || chk == 0, "Field too big for insn at " INTPTR_FORMAT, p2i(a));
unsigned uval = val;
unsigned mask = checked_cast<unsigned>(right_n_bits(nbits));
uval &= mask;
@@ -3786,50 +3786,78 @@ public:
INSN(sve_fac, 0b01100101, 0b11, 1); // Floating-point absolute compare vectors
#undef INSN
// SVE Integer Compare - Signed Immediate
void sve_cmp(Condition cond, PRegister Pd, SIMD_RegVariant T,
PRegister Pg, FloatRegister Zn, int imm5) {
starti;
assert(T != Q, "invalid size");
guarantee(-16 <= imm5 && imm5 <= 15, "invalid immediate");
int cond_op;
switch(cond) {
case EQ: cond_op = 0b1000; break;
case NE: cond_op = 0b1001; break;
case GE: cond_op = 0b0000; break;
case GT: cond_op = 0b0001; break;
case LE: cond_op = 0b0011; break;
case LT: cond_op = 0b0010; break;
default:
ShouldNotReachHere();
}
f(0b00100101, 31, 24), f(T, 23, 22), f(0b0, 21), sf(imm5, 20, 16),
f((cond_op >> 1) & 0x7, 15, 13), pgrf(Pg, 10), rf(Zn, 5);
f(cond_op & 0x1, 4), prf(Pd, 0);
}
private:
// Convert Assembler::Condition to op encoding - used by sve integer compare encoding
static int assembler_cond_to_sve_op(Condition cond, bool &is_unsigned) {
if (cond == HI || cond == HS || cond == LO || cond == LS) {
is_unsigned = true;
} else {
is_unsigned = false;
}
// SVE Floating-point compare vector with zero
void sve_fcm(Condition cond, PRegister Pd, SIMD_RegVariant T,
PRegister Pg, FloatRegister Zn, double d) {
starti;
assert(T != Q, "invalid size");
guarantee(d == 0.0, "invalid immediate");
int cond_op;
switch(cond) {
case EQ: cond_op = 0b100; break;
case GT: cond_op = 0b001; break;
case GE: cond_op = 0b000; break;
case LT: cond_op = 0b010; break;
case LE: cond_op = 0b011; break;
case NE: cond_op = 0b110; break;
default:
ShouldNotReachHere();
switch (cond) {
case HI:
case GT:
return 0b0001;
case HS:
case GE:
return 0b0000;
case LO:
case LT:
return 0b0010;
case LS:
case LE:
return 0b0011;
case EQ:
return 0b1000;
case NE:
return 0b1001;
default:
ShouldNotReachHere();
return -1;
}
}
public:
// SVE Integer Compare - 5 bits signed imm and 7 bits unsigned imm
void sve_cmp(Condition cond, PRegister Pd, SIMD_RegVariant T,
PRegister Pg, FloatRegister Zn, int imm) {
starti;
assert(T != Q, "invalid size");
bool is_unsigned = false;
int cond_op = assembler_cond_to_sve_op(cond, is_unsigned);
f(is_unsigned ? 0b00100100 : 0b00100101, 31, 24), f(T, 23, 22);
f(is_unsigned ? 0b1 : 0b0, 21);
if (is_unsigned) {
f(imm, 20, 14), f((cond_op >> 1) & 0x1, 13);
} else {
sf(imm, 20, 16), f((cond_op >> 1) & 0x7, 15, 13);
}
pgrf(Pg, 10), rf(Zn, 5), f(cond_op & 0x1, 4), prf(Pd, 0);
}
// SVE Floating-point compare vector with zero
void sve_fcm(Condition cond, PRegister Pd, SIMD_RegVariant T,
PRegister Pg, FloatRegister Zn, double d) {
starti;
assert(T != Q, "invalid size");
guarantee(d == 0.0, "invalid immediate");
int cond_op;
switch(cond) {
case EQ: cond_op = 0b100; break;
case GT: cond_op = 0b001; break;
case GE: cond_op = 0b000; break;
case LT: cond_op = 0b010; break;
case LE: cond_op = 0b011; break;
case NE: cond_op = 0b110; break;
default:
ShouldNotReachHere();
}
f(0b01100101, 31, 24), f(T, 23, 22), f(0b0100, 21, 18),
f((cond_op >> 1) & 0x3, 17, 16), f(0b001, 15, 13),
pgrf(Pg, 10), rf(Zn, 5);
f(cond_op & 0x1, 4), prf(Pd, 0);
}
f(0b01100101, 31, 24), f(T, 23, 22), f(0b0100, 21, 18),
f((cond_op >> 1) & 0x3, 17, 16), f(0b001, 15, 13),
pgrf(Pg, 10), rf(Zn, 5);
f(cond_op & 0x1, 4), prf(Pd, 0);
}
// SVE unpack vector elements
#define INSN(NAME, op) \

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -44,7 +44,7 @@ void C1SafepointPollStub::emit_code(LIR_Assembler* ce) {
__ adr(rscratch1, safepoint_pc);
__ str(rscratch1, Address(rthread, JavaThread::saved_exception_pc_offset()));
assert(SharedRuntime::polling_page_return_handler_blob() != NULL,
assert(SharedRuntime::polling_page_return_handler_blob() != nullptr,
"polling page return stub not created yet");
address stub = SharedRuntime::polling_page_return_handler_blob()->entry_point();
@@ -334,7 +334,7 @@ void ArrayCopyStub::emit_code(LIR_Assembler* ce) {
Address resolve(SharedRuntime::get_resolve_static_call_stub(),
relocInfo::static_call_type);
address call = __ trampoline_call(resolve);
if (call == NULL) {
if (call == nullptr) {
ce->bailout("trampoline stub overflow");
return;
}

View File

@@ -111,7 +111,7 @@ LIR_Opr LIR_Assembler::osrBufferPointer() {
address LIR_Assembler::float_constant(float f) {
address const_addr = __ float_constant(f);
if (const_addr == NULL) {
if (const_addr == nullptr) {
bailout("const section overflow");
return __ code()->consts()->start();
} else {
@@ -122,7 +122,7 @@ address LIR_Assembler::float_constant(float f) {
address LIR_Assembler::double_constant(double d) {
address const_addr = __ double_constant(d);
if (const_addr == NULL) {
if (const_addr == nullptr) {
bailout("const section overflow");
return __ code()->consts()->start();
} else {
@@ -132,7 +132,7 @@ address LIR_Assembler::double_constant(double d) {
address LIR_Assembler::int_constant(jlong n) {
address const_addr = __ long_constant(n);
if (const_addr == NULL) {
if (const_addr == nullptr) {
bailout("const section overflow");
return __ code()->consts()->start();
} else {
@@ -278,7 +278,7 @@ void LIR_Assembler::osr_entry() {
Label L;
__ ldr(rscratch1, Address(OSR_buf, slot_offset + 1*BytesPerWord));
__ cbnz(rscratch1, L);
__ stop("locked object is NULL");
__ stop("locked object is null");
__ bind(L);
}
#endif
@@ -328,7 +328,7 @@ void LIR_Assembler::clinit_barrier(ciMethod* method) {
}
void LIR_Assembler::jobject2reg(jobject o, Register reg) {
if (o == NULL) {
if (o == nullptr) {
__ mov(reg, zr);
} else {
__ movoop(reg, o);
@@ -336,7 +336,7 @@ void LIR_Assembler::jobject2reg(jobject o, Register reg) {
}
void LIR_Assembler::deoptimize_trap(CodeEmitInfo *info) {
address target = NULL;
address target = nullptr;
relocInfo::relocType reloc_type = relocInfo::none;
switch (patching_id(info)) {
@@ -379,7 +379,7 @@ int LIR_Assembler::initial_frame_size_in_bytes() const {
int LIR_Assembler::emit_exception_handler() {
// generate code for exception handler
address handler_base = __ start_a_stub(exception_handler_size());
if (handler_base == NULL) {
if (handler_base == nullptr) {
// not enough space left for the handler
bailout("exception handler overflow");
return -1;
@@ -427,11 +427,11 @@ int LIR_Assembler::emit_unwind_handler() {
}
// Perform needed unlocking
MonitorExitStub* stub = NULL;
MonitorExitStub* stub = nullptr;
if (method()->is_synchronized()) {
monitor_address(0, FrameMap::r0_opr);
stub = new MonitorExitStub(FrameMap::r0_opr, true, 0);
if (UseHeavyMonitors) {
if (LockingMode == LM_MONITOR) {
__ b(*stub->entry());
} else {
__ unlock_object(r5, r4, r0, *stub->entry());
@@ -455,7 +455,7 @@ int LIR_Assembler::emit_unwind_handler() {
__ far_jump(RuntimeAddress(Runtime1::entry_for(Runtime1::unwind_exception_id)));
// Emit the slow path assembly
if (stub != NULL) {
if (stub != nullptr) {
stub->emit_code(this);
}
@@ -466,7 +466,7 @@ int LIR_Assembler::emit_unwind_handler() {
int LIR_Assembler::emit_deopt_handler() {
// generate code for exception handler
address handler_base = __ start_a_stub(deopt_handler_size());
if (handler_base == NULL) {
if (handler_base == nullptr) {
// not enough space left for the handler
bailout("deopt handler overflow");
return -1;
@@ -487,7 +487,7 @@ void LIR_Assembler::add_debug_info_for_branch(address adr, CodeEmitInfo* info) {
int pc_offset = code_offset();
flush_debug_info(pc_offset);
info->record_debug_info(compilation()->debug_info_recorder(), pc_offset);
if (info->exception_handlers() != NULL) {
if (info->exception_handlers() != nullptr) {
compilation()->add_exception_handlers_for_pco(pc_offset, info->exception_handlers());
}
}
@@ -509,7 +509,7 @@ void LIR_Assembler::return_op(LIR_Opr result, C1SafepointPollStub* code_stub) {
}
int LIR_Assembler::safepoint_poll(LIR_Opr tmp, CodeEmitInfo* info) {
guarantee(info != NULL, "Shouldn't be NULL");
guarantee(info != nullptr, "Shouldn't be null");
__ get_polling_page(rscratch1, relocInfo::poll_type);
add_debug_info_for_branch(info); // This isn't just debug info:
// it's the oop map
@@ -604,14 +604,14 @@ void LIR_Assembler::const2stack(LIR_Opr src, LIR_Opr dest) {
if (! c->as_jobject())
__ str(zr, frame_map()->address_for_slot(dest->single_stack_ix()));
else {
const2reg(src, FrameMap::rscratch1_opr, lir_patch_none, NULL);
const2reg(src, FrameMap::rscratch1_opr, lir_patch_none, nullptr);
reg2stack(FrameMap::rscratch1_opr, dest, c->type(), false);
}
}
break;
case T_ADDRESS:
{
const2reg(src, FrameMap::rscratch1_opr, lir_patch_none, NULL);
const2reg(src, FrameMap::rscratch1_opr, lir_patch_none, nullptr);
reg2stack(FrameMap::rscratch1_opr, dest, c->type(), false);
}
case T_INT:
@@ -775,7 +775,7 @@ void LIR_Assembler::reg2stack(LIR_Opr src, LIR_Opr dest, BasicType type, bool po
void LIR_Assembler::reg2mem(LIR_Opr src, LIR_Opr dest, BasicType type, LIR_PatchCode patch_code, CodeEmitInfo* info, bool pop_fpu_stack, bool wide) {
LIR_Address* to_addr = dest->as_address_ptr();
PatchingStub* patch = NULL;
PatchingStub* patch = nullptr;
Register compressed_src = rscratch1;
if (patch_code != lir_patch_none) {
@@ -847,7 +847,7 @@ void LIR_Assembler::reg2mem(LIR_Opr src, LIR_Opr dest, BasicType type, LIR_Patch
default:
ShouldNotReachHere();
}
if (info != NULL) {
if (info != nullptr) {
add_debug_info_for_null_check(null_check_here, info);
}
}
@@ -890,7 +890,7 @@ void LIR_Assembler::stack2reg(LIR_Opr src, LIR_Opr dest, BasicType type) {
void LIR_Assembler::klass2reg_with_patching(Register reg, CodeEmitInfo* info) {
address target = NULL;
address target = nullptr;
relocInfo::relocType reloc_type = relocInfo::none;
switch (patching_id(info)) {
@@ -943,7 +943,7 @@ void LIR_Assembler::mem2reg(LIR_Opr src, LIR_Opr dest, BasicType type, LIR_Patch
return;
}
if (info != NULL) {
if (info != nullptr) {
add_debug_info_for_null_check_here(info);
}
int null_check_here = code_offset();
@@ -1010,7 +1010,7 @@ void LIR_Assembler::mem2reg(LIR_Opr src, LIR_Opr dest, BasicType type, LIR_Patch
__ decode_heap_oop(dest->as_register());
}
if (!UseZGC) {
if (!(UseZGC && !ZGenerational)) {
// Load barrier has not yet been applied, so ZGC can't verify the oop here
__ verify_oop(dest->as_register());
}
@@ -1053,13 +1053,13 @@ void LIR_Assembler::emit_op3(LIR_Op3* op) {
void LIR_Assembler::emit_opBranch(LIR_OpBranch* op) {
#ifdef ASSERT
assert(op->block() == NULL || op->block()->label() == op->label(), "wrong label");
if (op->block() != NULL) _branch_target_blocks.append(op->block());
if (op->ublock() != NULL) _branch_target_blocks.append(op->ublock());
assert(op->block() == nullptr || op->block()->label() == op->label(), "wrong label");
if (op->block() != nullptr) _branch_target_blocks.append(op->block());
if (op->ublock() != nullptr) _branch_target_blocks.append(op->ublock());
#endif
if (op->cond() == lir_cond_always) {
if (op->info() != NULL) add_debug_info_for_branch(op->info());
if (op->info() != nullptr) add_debug_info_for_branch(op->info());
__ b(*(op->label()));
} else {
Assembler::Condition acond;
@@ -1288,12 +1288,12 @@ void LIR_Assembler::emit_typecheck_helper(LIR_OpTypeCheck *op, Label* success, L
if (should_profile) {
ciMethod* method = op->profiled_method();
assert(method != NULL, "Should have method");
assert(method != nullptr, "Should have method");
int bci = op->profiled_bci();
md = method->method_data_or_null();
assert(md != NULL, "Sanity");
assert(md != nullptr, "Sanity");
data = md->bci_to_data(bci);
assert(data != NULL, "need data for type check");
assert(data != nullptr, "need data for type check");
assert(data->is_ReceiverTypeData(), "need ReceiverTypeData for type check");
}
Label profile_cast_success, profile_cast_failure;
@@ -1375,7 +1375,7 @@ void LIR_Assembler::emit_typecheck_helper(LIR_OpTypeCheck *op, Label* success, L
}
} else {
// perform the fast part of the checking logic
__ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1, success_target, failure_target, NULL);
__ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1, success_target, failure_target, nullptr);
// call out-of-line instance of __ check_klass_subtype_slow_path(...):
__ stp(klass_RInfo, k_RInfo, Address(__ pre(sp, -2 * wordSize)));
__ far_call(RuntimeAddress(Runtime1::entry_for(Runtime1::slow_subtype_check_id)));
@@ -1428,12 +1428,12 @@ void LIR_Assembler::emit_opTypeCheck(LIR_OpTypeCheck* op) {
if (should_profile) {
ciMethod* method = op->profiled_method();
assert(method != NULL, "Should have method");
assert(method != nullptr, "Should have method");
int bci = op->profiled_bci();
md = method->method_data_or_null();
assert(md != NULL, "Sanity");
assert(md != nullptr, "Sanity");
data = md->bci_to_data(bci);
assert(data != NULL, "need data for type check");
assert(data != nullptr, "need data for type check");
assert(data->is_ReceiverTypeData(), "need ReceiverTypeData for type check");
}
Label profile_cast_success, profile_cast_failure, done;
@@ -1466,7 +1466,7 @@ void LIR_Assembler::emit_opTypeCheck(LIR_OpTypeCheck* op) {
// get instance klass (it's already uncompressed)
__ ldr(k_RInfo, Address(k_RInfo, ObjArrayKlass::element_klass_offset()));
// perform the fast part of the checking logic
__ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1, success_target, failure_target, NULL);
__ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1, success_target, failure_target, nullptr);
// call out-of-line instance of __ check_klass_subtype_slow_path(...):
__ stp(klass_RInfo, k_RInfo, Address(__ pre(sp, -2 * wordSize)));
__ far_call(RuntimeAddress(Runtime1::entry_for(Runtime1::slow_subtype_check_id)));
@@ -1620,7 +1620,7 @@ void LIR_Assembler::cmove(LIR_Condition condition, LIR_Opr opr1, LIR_Opr opr2, L
} else if (opr1->is_constant()) {
LIR_Opr tmp
= opr1->type() == T_LONG ? FrameMap::rscratch1_long_opr : FrameMap::rscratch1_opr;
const2reg(opr1, tmp, lir_patch_none, NULL);
const2reg(opr1, tmp, lir_patch_none, nullptr);
opr1 = tmp;
}
@@ -1630,7 +1630,7 @@ void LIR_Assembler::cmove(LIR_Condition condition, LIR_Opr opr1, LIR_Opr opr2, L
} else if (opr2->is_constant()) {
LIR_Opr tmp
= opr2->type() == T_LONG ? FrameMap::rscratch2_long_opr : FrameMap::rscratch2_opr;
const2reg(opr2, tmp, lir_patch_none, NULL);
const2reg(opr2, tmp, lir_patch_none, nullptr);
opr2 = tmp;
}
@@ -1641,7 +1641,7 @@ void LIR_Assembler::cmove(LIR_Condition condition, LIR_Opr opr1, LIR_Opr opr2, L
}
void LIR_Assembler::arith_op(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr dest, CodeEmitInfo* info, bool pop_fpu_stack) {
assert(info == NULL, "should never be used, idiv/irem and ldiv/lrem not handled by this method");
assert(info == nullptr, "should never be used, idiv/irem and ldiv/lrem not handled by this method");
if (left->is_single_cpu()) {
Register lreg = left->as_register();
@@ -2033,7 +2033,7 @@ void LIR_Assembler::align_call(LIR_Code code) { }
void LIR_Assembler::call(LIR_OpJavaCall* op, relocInfo::relocType rtype) {
address call = __ trampoline_call(Address(op->addr(), rtype));
if (call == NULL) {
if (call == nullptr) {
bailout("trampoline stub overflow");
return;
}
@@ -2044,7 +2044,7 @@ void LIR_Assembler::call(LIR_OpJavaCall* op, relocInfo::relocType rtype) {
void LIR_Assembler::ic_call(LIR_OpJavaCall* op) {
address call = __ ic_call(op->addr());
if (call == NULL) {
if (call == nullptr) {
bailout("trampoline stub overflow");
return;
}
@@ -2055,7 +2055,7 @@ void LIR_Assembler::ic_call(LIR_OpJavaCall* op) {
void LIR_Assembler::emit_static_call_stub() {
address call_pc = __ pc();
address stub = __ start_a_stub(call_stub_size());
if (stub == NULL) {
if (stub == nullptr) {
bailout("static call stub overflow");
return;
}
@@ -2226,11 +2226,11 @@ void LIR_Assembler::emit_arraycopy(LIR_OpArrayCopy* op) {
CodeStub* stub = op->stub();
int flags = op->flags();
BasicType basic_type = default_type != NULL ? default_type->element_type()->basic_type() : T_ILLEGAL;
BasicType basic_type = default_type != nullptr ? default_type->element_type()->basic_type() : T_ILLEGAL;
if (is_reference_type(basic_type)) basic_type = T_OBJECT;
// if we don't know anything, just go through the generic arraycopy
if (default_type == NULL // || basic_type == T_OBJECT
if (default_type == nullptr // || basic_type == T_OBJECT
) {
Label done;
assert(src == r1 && src_pos == r2, "mismatch in calling convention");
@@ -2242,7 +2242,7 @@ void LIR_Assembler::emit_arraycopy(LIR_OpArrayCopy* op) {
__ str(src, Address(sp, 4*BytesPerWord));
address copyfunc_addr = StubRoutines::generic_arraycopy();
assert(copyfunc_addr != NULL, "generic arraycopy stub required");
assert(copyfunc_addr != nullptr, "generic arraycopy stub required");
// The arguments are in java calling convention so we shift them
// to C convention
@@ -2282,7 +2282,7 @@ void LIR_Assembler::emit_arraycopy(LIR_OpArrayCopy* op) {
return;
}
assert(default_type != NULL && default_type->is_array_klass() && default_type->is_loaded(), "must be true at this point");
assert(default_type != nullptr && default_type->is_array_klass() && default_type->is_loaded(), "must be true at this point");
int elem_size = type2aelembytes(basic_type);
int scale = exact_log2(elem_size);
@@ -2292,7 +2292,7 @@ void LIR_Assembler::emit_arraycopy(LIR_OpArrayCopy* op) {
Address src_klass_addr = Address(src, oopDesc::klass_offset_in_bytes());
Address dst_klass_addr = Address(dst, oopDesc::klass_offset_in_bytes());
// test for NULL
// test for null
if (flags & LIR_OpArrayCopy::src_null_check) {
__ cbz(src, *stub->entry());
}
@@ -2377,7 +2377,7 @@ void LIR_Assembler::emit_arraycopy(LIR_OpArrayCopy* op) {
__ load_klass(src, src);
__ load_klass(dst, dst);
__ check_klass_subtype_fast_path(src, dst, tmp, &cont, &slow, NULL);
__ check_klass_subtype_fast_path(src, dst, tmp, &cont, &slow, nullptr);
__ PUSH(src, dst);
__ far_call(RuntimeAddress(Runtime1::entry_for(Runtime1::slow_subtype_check_id)));
@@ -2389,7 +2389,7 @@ void LIR_Assembler::emit_arraycopy(LIR_OpArrayCopy* op) {
__ POP(src, dst);
address copyfunc_addr = StubRoutines::checkcast_arraycopy();
if (copyfunc_addr != NULL) { // use stub if available
if (copyfunc_addr != nullptr) { // use stub if available
// src is not a sub class of dst so we have to do a
// per-element check.
@@ -2558,8 +2558,8 @@ void LIR_Assembler::emit_lock(LIR_OpLock* op) {
Register obj = op->obj_opr()->as_register(); // may not be an oop
Register hdr = op->hdr_opr()->as_register();
Register lock = op->lock_opr()->as_register();
if (UseHeavyMonitors) {
if (op->info() != NULL) {
if (LockingMode == LM_MONITOR) {
if (op->info() != nullptr) {
add_debug_info_for_null_check_here(op->info());
__ null_check(obj, -1);
}
@@ -2568,7 +2568,7 @@ void LIR_Assembler::emit_lock(LIR_OpLock* op) {
assert(BasicLock::displaced_header_offset_in_bytes() == 0, "lock_reg must point to the displaced header");
// add debug info for NullPointerException only if one is possible
int null_check_offset = __ lock_object(hdr, obj, lock, *op->stub()->entry());
if (op->info() != NULL) {
if (op->info() != nullptr) {
add_debug_info_for_null_check(null_check_offset, op->info());
}
// done
@@ -2586,7 +2586,7 @@ void LIR_Assembler::emit_load_klass(LIR_OpLoadKlass* op) {
Register result = op->result_opr()->as_pointer_register();
CodeEmitInfo* info = op->info();
if (info != NULL) {
if (info != nullptr) {
add_debug_info_for_null_check_here(info);
}
@@ -2605,9 +2605,9 @@ void LIR_Assembler::emit_profile_call(LIR_OpProfileCall* op) {
// Update counter for all call types
ciMethodData* md = method->method_data_or_null();
assert(md != NULL, "Sanity");
assert(md != nullptr, "Sanity");
ciProfileData* data = md->bci_to_data(bci);
assert(data != NULL && data->is_CounterData(), "need CounterData for calls");
assert(data != nullptr && data->is_CounterData(), "need CounterData for calls");
assert(op->mdo()->is_single_cpu(), "mdo must be allocated");
Register mdo = op->mdo()->as_register();
__ mov_metadata(mdo, md->constant_encoding());
@@ -2620,7 +2620,7 @@ void LIR_Assembler::emit_profile_call(LIR_OpProfileCall* op) {
assert_different_registers(mdo, recv);
assert(data->is_VirtualCallData(), "need VirtualCallData for virtual calls");
ciKlass* known_klass = op->known_holder();
if (C1OptimizeVirtualCallProfiling && known_klass != NULL) {
if (C1OptimizeVirtualCallProfiling && known_klass != nullptr) {
// We know the type that will be seen at this call site; we can
// statically update the MethodData* rather than needing to do
// dynamic tests on the receiver type
@@ -2645,7 +2645,7 @@ void LIR_Assembler::emit_profile_call(LIR_OpProfileCall* op) {
// VirtualCallData rather than just the first time
for (i = 0; i < VirtualCallData::row_limit(); i++) {
ciKlass* receiver = vc_data->receiver(i);
if (receiver == NULL) {
if (receiver == nullptr) {
Address recv_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_offset(i)));
__ mov_metadata(rscratch1, known_klass->constant_encoding());
__ lea(rscratch2, recv_addr);
@@ -2712,7 +2712,7 @@ void LIR_Assembler::emit_profile_type(LIR_OpProfileType* op) {
Label update, next, none;
bool do_null = !not_null;
bool exact_klass_set = exact_klass != NULL && ciTypeEntries::valid_ciklass(current_klass) == exact_klass;
bool exact_klass_set = exact_klass != nullptr && ciTypeEntries::valid_ciklass(current_klass) == exact_klass;
bool do_update = !TypeEntries::is_type_unknown(current_klass) && !exact_klass_set;
assert(do_null || do_update, "why are we here?");
@@ -2748,7 +2748,7 @@ void LIR_Assembler::emit_profile_type(LIR_OpProfileType* op) {
if (do_update) {
#ifdef ASSERT
if (exact_klass != NULL) {
if (exact_klass != nullptr) {
Label ok;
__ load_klass(tmp, tmp);
__ mov_metadata(rscratch1, exact_klass->constant_encoding());
@@ -2759,8 +2759,8 @@ void LIR_Assembler::emit_profile_type(LIR_OpProfileType* op) {
}
#endif
if (!no_conflict) {
if (exact_klass == NULL || TypeEntries::is_type_none(current_klass)) {
if (exact_klass != NULL) {
if (exact_klass == nullptr || TypeEntries::is_type_none(current_klass)) {
if (exact_klass != nullptr) {
__ mov_metadata(tmp, exact_klass->constant_encoding());
} else {
__ load_klass(tmp, tmp);
@@ -2789,7 +2789,7 @@ void LIR_Assembler::emit_profile_type(LIR_OpProfileType* op) {
__ cbz(rscratch1, next);
}
} else {
assert(ciTypeEntries::valid_ciklass(current_klass) != NULL &&
assert(ciTypeEntries::valid_ciklass(current_klass) != nullptr &&
ciTypeEntries::valid_ciklass(current_klass) != exact_klass, "conflict only");
__ ldr(tmp, mdo_addr);
@@ -2810,7 +2810,7 @@ void LIR_Assembler::emit_profile_type(LIR_OpProfileType* op) {
}
} else {
// There's a single possible klass at this profile point
assert(exact_klass != NULL, "should be");
assert(exact_klass != nullptr, "should be");
if (TypeEntries::is_type_none(current_klass)) {
__ mov_metadata(tmp, exact_klass->constant_encoding());
__ ldr(rscratch2, mdo_addr);
@@ -2839,7 +2839,7 @@ void LIR_Assembler::emit_profile_type(LIR_OpProfileType* op) {
// first time here. Set profile type.
__ str(tmp, mdo_addr);
} else {
assert(ciTypeEntries::valid_ciklass(current_klass) != NULL &&
assert(ciTypeEntries::valid_ciklass(current_klass) != nullptr &&
ciTypeEntries::valid_ciklass(current_klass) != exact_klass, "inconsistent");
__ ldr(tmp, mdo_addr);
@@ -2903,7 +2903,7 @@ void LIR_Assembler::rt_call(LIR_Opr result, address dest, const LIR_OprList* arg
__ blr(rscratch1);
}
if (info != NULL) {
if (info != nullptr) {
add_call_info_here(info);
}
__ post_call_nop();

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -60,7 +60,7 @@ friend class ArrayCopyStub;
void casw(Register addr, Register newval, Register cmpval);
void casl(Register addr, Register newval, Register cmpval);
void poll_for_safepoint(relocInfo::relocType rtype, CodeEmitInfo* info = NULL);
void poll_for_safepoint(relocInfo::relocType rtype, CodeEmitInfo* info = nullptr);
static const int max_tableswitches = 20;
struct tableswitch switches[max_tableswitches];

View File

@@ -107,11 +107,11 @@ LIR_Opr LIRGenerator::rlock_byte(BasicType type) {
bool LIRGenerator::can_store_as_constant(Value v, BasicType type) const {
if (v->type()->as_IntConstant() != NULL) {
if (v->type()->as_IntConstant() != nullptr) {
return v->type()->as_IntConstant()->value() == 0L;
} else if (v->type()->as_LongConstant() != NULL) {
} else if (v->type()->as_LongConstant() != nullptr) {
return v->type()->as_LongConstant()->value() == 0L;
} else if (v->type()->as_ObjectConstant() != NULL) {
} else if (v->type()->as_ObjectConstant() != nullptr) {
return v->type()->as_ObjectConstant()->value()->is_null_object();
} else {
return false;
@@ -120,11 +120,11 @@ bool LIRGenerator::can_store_as_constant(Value v, BasicType type) const {
bool LIRGenerator::can_inline_as_constant(Value v) const {
// FIXME: Just a guess
if (v->type()->as_IntConstant() != NULL) {
if (v->type()->as_IntConstant() != nullptr) {
return Assembler::operand_valid_for_add_sub_immediate(v->type()->as_IntConstant()->value());
} else if (v->type()->as_LongConstant() != NULL) {
} else if (v->type()->as_LongConstant() != nullptr) {
return v->type()->as_LongConstant()->value() == 0L;
} else if (v->type()->as_ObjectConstant() != NULL) {
} else if (v->type()->as_ObjectConstant() != nullptr) {
return v->type()->as_ObjectConstant()->value()->is_null_object();
} else {
return false;
@@ -315,7 +315,7 @@ void LIRGenerator::do_MonitorEnter(MonitorEnter* x) {
// "lock" stores the address of the monitor stack slot, so this is not an oop
LIR_Opr lock = new_register(T_INT);
CodeEmitInfo* info_for_exception = NULL;
CodeEmitInfo* info_for_exception = nullptr;
if (x->needs_null_check()) {
info_for_exception = state_for(x);
}
@@ -466,7 +466,7 @@ void LIRGenerator::do_ArithmeticOp_Long(ArithmeticOp* x) {
}
}
rlock_result(x);
arithmetic_op_long(x->op(), x->operand(), left.result(), right.result(), NULL);
arithmetic_op_long(x->op(), x->operand(), left.result(), right.result(), nullptr);
}
}
@@ -512,9 +512,9 @@ void LIRGenerator::do_ArithmeticOp_Int(ArithmeticOp* x) {
LIR_Opr ill = LIR_OprFact::illegalOpr;
if (x->op() == Bytecodes::_irem) {
__ irem(left_arg->result(), right_arg->result(), x->operand(), ill, NULL);
__ irem(left_arg->result(), right_arg->result(), x->operand(), ill, nullptr);
} else if (x->op() == Bytecodes::_idiv) {
__ idiv(left_arg->result(), right_arg->result(), x->operand(), ill, NULL);
__ idiv(left_arg->result(), right_arg->result(), x->operand(), ill, nullptr);
}
} else if (x->op() == Bytecodes::_iadd || x->op() == Bytecodes::_isub) {
@@ -547,7 +547,7 @@ void LIRGenerator::do_ArithmeticOp_Int(ArithmeticOp* x) {
void LIRGenerator::do_ArithmeticOp(ArithmeticOp* x) {
// when an operand with use count 1 is the left operand, then it is
// likely that no move for 2-operand-LIR-form is necessary
if (x->is_commutative() && x->y()->as_Constant() == NULL && x->x()->use_count() > x->y()->use_count()) {
if (x->is_commutative() && x->y()->as_Constant() == nullptr && x->x()->use_count() > x->y()->use_count()) {
x->swap_operands();
}
@@ -800,7 +800,7 @@ void LIRGenerator::do_LibmIntrinsic(Intrinsic* x) {
LIR_Opr calc_result = rlock_result(x);
LIR_Opr result_reg = result_register_for(x->type());
CallingConvention* cc = NULL;
CallingConvention* cc = nullptr;
if (x->id() == vmIntrinsics::_dpow) {
LIRItem value1(x->argument_at(1), this);
@@ -822,49 +822,49 @@ void LIRGenerator::do_LibmIntrinsic(Intrinsic* x) {
switch (x->id()) {
case vmIntrinsics::_dexp:
if (StubRoutines::dexp() != NULL) {
if (StubRoutines::dexp() != nullptr) {
__ call_runtime_leaf(StubRoutines::dexp(), getThreadTemp(), result_reg, cc->args());
} else {
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dexp), getThreadTemp(), result_reg, cc->args());
}
break;
case vmIntrinsics::_dlog:
if (StubRoutines::dlog() != NULL) {
if (StubRoutines::dlog() != nullptr) {
__ call_runtime_leaf(StubRoutines::dlog(), getThreadTemp(), result_reg, cc->args());
} else {
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dlog), getThreadTemp(), result_reg, cc->args());
}
break;
case vmIntrinsics::_dlog10:
if (StubRoutines::dlog10() != NULL) {
if (StubRoutines::dlog10() != nullptr) {
__ call_runtime_leaf(StubRoutines::dlog10(), getThreadTemp(), result_reg, cc->args());
} else {
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dlog10), getThreadTemp(), result_reg, cc->args());
}
break;
case vmIntrinsics::_dpow:
if (StubRoutines::dpow() != NULL) {
if (StubRoutines::dpow() != nullptr) {
__ call_runtime_leaf(StubRoutines::dpow(), getThreadTemp(), result_reg, cc->args());
} else {
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dpow), getThreadTemp(), result_reg, cc->args());
}
break;
case vmIntrinsics::_dsin:
if (StubRoutines::dsin() != NULL) {
if (StubRoutines::dsin() != nullptr) {
__ call_runtime_leaf(StubRoutines::dsin(), getThreadTemp(), result_reg, cc->args());
} else {
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dsin), getThreadTemp(), result_reg, cc->args());
}
break;
case vmIntrinsics::_dcos:
if (StubRoutines::dcos() != NULL) {
if (StubRoutines::dcos() != nullptr) {
__ call_runtime_leaf(StubRoutines::dcos(), getThreadTemp(), result_reg, cc->args());
} else {
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dcos), getThreadTemp(), result_reg, cc->args());
}
break;
case vmIntrinsics::_dtan:
if (StubRoutines::dtan() != NULL) {
if (StubRoutines::dtan() != nullptr) {
__ call_runtime_leaf(StubRoutines::dtan(), getThreadTemp(), result_reg, cc->args());
} else {
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dtan), getThreadTemp(), result_reg, cc->args());
@@ -1161,7 +1161,7 @@ void LIRGenerator::do_NewObjectArray(NewObjectArray* x) {
LIRItem length(x->length(), this);
// in case of patching (i.e., object class is not yet loaded), we need to reexecute the instruction
// and therefore provide the state before the parameters have been consumed
CodeEmitInfo* patching_info = NULL;
CodeEmitInfo* patching_info = nullptr;
if (!x->klass()->is_loaded() || PatchALot) {
patching_info = state_for(x, x->state_before());
}
@@ -1194,14 +1194,14 @@ void LIRGenerator::do_NewObjectArray(NewObjectArray* x) {
void LIRGenerator::do_NewMultiArray(NewMultiArray* x) {
Values* dims = x->dims();
int i = dims->length();
LIRItemList* items = new LIRItemList(i, i, NULL);
LIRItemList* items = new LIRItemList(i, i, nullptr);
while (i-- > 0) {
LIRItem* size = new LIRItem(dims->at(i), this);
items->at_put(i, size);
}
// Evaluate state_for early since it may emit code.
CodeEmitInfo* patching_info = NULL;
CodeEmitInfo* patching_info = nullptr;
if (!x->klass()->is_loaded() || PatchALot) {
patching_info = state_for(x, x->state_before());
@@ -1248,7 +1248,7 @@ void LIRGenerator::do_BlockBegin(BlockBegin* x) {
void LIRGenerator::do_CheckCast(CheckCast* x) {
LIRItem obj(x->obj(), this);
CodeEmitInfo* patching_info = NULL;
CodeEmitInfo* patching_info = nullptr;
if (!x->klass()->is_loaded() || (PatchALot && !x->is_incompatible_class_change_check() && !x->is_invokespecial_receiver_check())) {
// must do this before locking the destination register as an oop register,
// and before the obj is loaded (the latter is for deoptimization)
@@ -1263,10 +1263,10 @@ void LIRGenerator::do_CheckCast(CheckCast* x) {
CodeStub* stub;
if (x->is_incompatible_class_change_check()) {
assert(patching_info == NULL, "can't patch this");
assert(patching_info == nullptr, "can't patch this");
stub = new SimpleExceptionStub(Runtime1::throw_incompatible_class_change_error_id, LIR_OprFact::illegalOpr, info_for_exception);
} else if (x->is_invokespecial_receiver_check()) {
assert(patching_info == NULL, "can't patch this");
assert(patching_info == nullptr, "can't patch this");
stub = new DeoptimizeStub(info_for_exception,
Deoptimization::Reason_class_check,
Deoptimization::Action_none);
@@ -1289,7 +1289,7 @@ void LIRGenerator::do_InstanceOf(InstanceOf* x) {
// result and test object may not be in same register
LIR_Opr reg = rlock_result(x);
CodeEmitInfo* patching_info = NULL;
CodeEmitInfo* patching_info = nullptr;
if ((!x->klass()->is_loaded() || PatchALot)) {
// must do this before locking the destination register as an oop register
patching_info = state_for(x, x->state_before());

View File

@@ -63,14 +63,13 @@ void C1_MacroAssembler::float_cmp(bool is_float, int unordered_result,
int C1_MacroAssembler::lock_object(Register hdr, Register obj, Register disp_hdr, Label& slow_case) {
const int aligned_mask = BytesPerWord -1;
const int hdr_offset = oopDesc::mark_offset_in_bytes();
assert(hdr != obj && hdr != disp_hdr && obj != disp_hdr, "registers must be different");
Label done;
assert_different_registers(hdr, obj, disp_hdr);
int null_check_offset = -1;
verify_oop(obj);
// save object being locked into the BasicObjectLock
str(obj, Address(disp_hdr, BasicObjectLock::obj_offset_in_bytes()));
str(obj, Address(disp_hdr, BasicObjectLock::obj_offset()));
null_check_offset = offset();
@@ -83,39 +82,44 @@ int C1_MacroAssembler::lock_object(Register hdr, Register obj, Register disp_hdr
// Load object header
ldr(hdr, Address(obj, hdr_offset));
// and mark it as unlocked
orr(hdr, hdr, markWord::unlocked_value);
// save unlocked object header into the displaced header location on the stack
str(hdr, Address(disp_hdr, 0));
// test if object header is still the same (i.e. unlocked), and if so, store the
// displaced header address in the object header - if it is not the same, get the
// object header instead
lea(rscratch2, Address(obj, hdr_offset));
cmpxchgptr(hdr, disp_hdr, rscratch2, rscratch1, done, /*fallthough*/NULL);
// if the object header was the same, we're done
// if the object header was not the same, it is now in the hdr register
// => test if it is a stack pointer into the same stack (recursive locking), i.e.:
//
// 1) (hdr & aligned_mask) == 0
// 2) sp <= hdr
// 3) hdr <= sp + page_size
//
// these 3 tests can be done by evaluating the following expression:
//
// (hdr - sp) & (aligned_mask - page_size)
//
// assuming both the stack pointer and page_size have their least
// significant 2 bits cleared and page_size is a power of 2
mov(rscratch1, sp);
sub(hdr, hdr, rscratch1);
ands(hdr, hdr, aligned_mask - (int)os::vm_page_size());
// for recursive locking, the result is zero => save it in the displaced header
// location (NULL in the displaced hdr location indicates recursive locking)
str(hdr, Address(disp_hdr, 0));
// otherwise we don't care about the result and handle locking via runtime call
cbnz(hdr, slow_case);
// done
bind(done);
if (LockingMode == LM_LIGHTWEIGHT) {
fast_lock(obj, hdr, rscratch1, rscratch2, slow_case);
} else if (LockingMode == LM_LEGACY) {
Label done;
// and mark it as unlocked
orr(hdr, hdr, markWord::unlocked_value);
// save unlocked object header into the displaced header location on the stack
str(hdr, Address(disp_hdr, 0));
// test if object header is still the same (i.e. unlocked), and if so, store the
// displaced header address in the object header - if it is not the same, get the
// object header instead
lea(rscratch2, Address(obj, hdr_offset));
cmpxchgptr(hdr, disp_hdr, rscratch2, rscratch1, done, /*fallthough*/nullptr);
// if the object header was the same, we're done
// if the object header was not the same, it is now in the hdr register
// => test if it is a stack pointer into the same stack (recursive locking), i.e.:
//
// 1) (hdr & aligned_mask) == 0
// 2) sp <= hdr
// 3) hdr <= sp + page_size
//
// these 3 tests can be done by evaluating the following expression:
//
// (hdr - sp) & (aligned_mask - page_size)
//
// assuming both the stack pointer and page_size have their least
// significant 2 bits cleared and page_size is a power of 2
mov(rscratch1, sp);
sub(hdr, hdr, rscratch1);
ands(hdr, hdr, aligned_mask - (int)os::vm_page_size());
// for recursive locking, the result is zero => save it in the displaced header
// location (null in the displaced hdr location indicates recursive locking)
str(hdr, Address(disp_hdr, 0));
// otherwise we don't care about the result and handle locking via runtime call
cbnz(hdr, slow_case);
// done
bind(done);
}
increment(Address(rthread, JavaThread::held_monitor_count_offset()));
return null_check_offset;
}
@@ -127,27 +131,40 @@ void C1_MacroAssembler::unlock_object(Register hdr, Register obj, Register disp_
assert(hdr != obj && hdr != disp_hdr && obj != disp_hdr, "registers must be different");
Label done;
// load displaced header
ldr(hdr, Address(disp_hdr, 0));
// if the loaded hdr is NULL we had recursive locking
// if we had recursive locking, we are done
cbz(hdr, done);
// load object
ldr(obj, Address(disp_hdr, BasicObjectLock::obj_offset_in_bytes()));
verify_oop(obj);
// test if object header is pointing to the displaced header, and if so, restore
// the displaced header in the object - if the object header is not pointing to
// the displaced header, get the object header instead
// if the object header was not pointing to the displaced header,
// we do unlocking via runtime call
if (hdr_offset) {
lea(rscratch1, Address(obj, hdr_offset));
cmpxchgptr(disp_hdr, hdr, rscratch1, rscratch2, done, &slow_case);
} else {
cmpxchgptr(disp_hdr, hdr, obj, rscratch2, done, &slow_case);
if (LockingMode != LM_LIGHTWEIGHT) {
// load displaced header
ldr(hdr, Address(disp_hdr, 0));
// if the loaded hdr is null we had recursive locking
// if we had recursive locking, we are done
cbz(hdr, done);
}
// load object
ldr(obj, Address(disp_hdr, BasicObjectLock::obj_offset()));
verify_oop(obj);
if (LockingMode == LM_LIGHTWEIGHT) {
ldr(hdr, Address(obj, oopDesc::mark_offset_in_bytes()));
// We cannot use tbnz here, the target might be too far away and cannot
// be encoded.
tst(hdr, markWord::monitor_value);
br(Assembler::NE, slow_case);
fast_unlock(obj, hdr, rscratch1, rscratch2, slow_case);
} else if (LockingMode == LM_LEGACY) {
// test if object header is pointing to the displaced header, and if so, restore
// the displaced header in the object - if the object header is not pointing to
// the displaced header, get the object header instead
// if the object header was not pointing to the displaced header,
// we do unlocking via runtime call
if (hdr_offset) {
lea(rscratch1, Address(obj, hdr_offset));
cmpxchgptr(disp_hdr, hdr, rscratch1, rscratch2, done, &slow_case);
} else {
cmpxchgptr(disp_hdr, hdr, obj, rscratch2, done, &slow_case);
}
// done
bind(done);
}
// done
bind(done);
decrement(Address(rthread, JavaThread::held_monitor_count_offset()));
}
@@ -294,7 +311,7 @@ void C1_MacroAssembler::allocate_array(Register obj, Register len, Register t1,
void C1_MacroAssembler::inline_cache_check(Register receiver, Register iCache) {
verify_oop(receiver);
// explicit NULL check not needed since load from [klass_offset] causes a trap
// explicit null check not needed since load from [klass_offset] causes a trap
// check against inline cache
assert(!MacroAssembler::needs_explicit_null_check(oopDesc::klass_offset_in_bytes()), "must add explicit null check");
@@ -311,7 +328,7 @@ void C1_MacroAssembler::build_frame(int framesize, int bang_size_in_bytes) {
// Insert nmethod entry barrier into frame.
BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
bs->nmethod_entry_barrier(this, NULL /* slow_path */, NULL /* continuation */, NULL /* guard */);
bs->nmethod_entry_barrier(this, nullptr /* slow_path */, nullptr /* continuation */, nullptr /* guard */);
}
void C1_MacroAssembler::remove_frame(int framesize) {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2021, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2021, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -106,7 +106,7 @@ using MacroAssembler::null_check;
void invalidate_registers(bool inv_r0, bool inv_r19, bool inv_r2, bool inv_r3, bool inv_r4, bool inv_r5) PRODUCT_RETURN;
// This platform only uses signal-based null checks. The Label is not needed.
void null_check(Register r, Label *Lnull = NULL) { MacroAssembler::null_check(r); }
void null_check(Register r, Label *Lnull = nullptr) { MacroAssembler::null_check(r); }
void load_parameter(int offset_in_words, Register reg);

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2021, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -369,7 +369,7 @@ OopMapSet* Runtime1::generate_handle_exception(StubID id, StubAssembler *sasm) {
// Save registers, if required.
OopMapSet* oop_maps = new OopMapSet();
OopMap* oop_map = NULL;
OopMap* oop_map = nullptr;
switch (id) {
case forward_exception_id:
// We're handling an exception in the context of a compiled frame.
@@ -542,7 +542,7 @@ OopMapSet* Runtime1::generate_patching(StubAssembler* sasm, address target) {
// Note: This number affects also the RT-Call in generate_handle_exception because
// the oop-map is shared for all calls.
DeoptimizationBlob* deopt_blob = SharedRuntime::deopt_blob();
assert(deopt_blob != NULL, "deoptimization blob must have been created");
assert(deopt_blob != nullptr, "deoptimization blob must have been created");
OopMap* oop_map = save_live_registers(sasm);
@@ -616,8 +616,8 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) {
bool save_fpu_registers = true;
// stub code & info for the different stubs
OopMapSet* oop_maps = NULL;
OopMap* oop_map = NULL;
OopMapSet* oop_maps = nullptr;
OopMap* oop_map = nullptr;
switch (id) {
{
case forward_exception_id:
@@ -834,7 +834,7 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) {
__ ldp(r4, r0, Address(sp, (sup_k_off) * VMRegImpl::stack_slot_size));
Label miss;
__ check_klass_subtype_slow_path(r4, r0, r2, r5, NULL, &miss);
__ check_klass_subtype_slow_path(r4, r0, r2, r5, nullptr, &miss);
// fallthrough on success:
__ mov(rscratch1, 1);
@@ -904,7 +904,7 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) {
oop_maps->add_gc_map(call_offset, oop_map);
restore_live_registers(sasm);
DeoptimizationBlob* deopt_blob = SharedRuntime::deopt_blob();
assert(deopt_blob != NULL, "deoptimization blob must have been created");
assert(deopt_blob != nullptr, "deoptimization blob must have been created");
__ leave();
__ far_jump(RuntimeAddress(deopt_blob->unpack_with_reexecution()));
}
@@ -991,7 +991,7 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) {
restore_live_registers(sasm);
__ leave();
DeoptimizationBlob* deopt_blob = SharedRuntime::deopt_blob();
assert(deopt_blob != NULL, "deoptimization blob must have been created");
assert(deopt_blob != nullptr, "deoptimization blob must have been created");
__ far_jump(RuntimeAddress(deopt_blob->unpack_with_reexecution()));
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2020, 2023, 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
@@ -25,6 +25,7 @@
#include "precompiled.hpp"
#include "opto/c2_MacroAssembler.hpp"
#include "opto/c2_CodeStubs.hpp"
#include "runtime/objectMonitor.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/stubRoutines.hpp"
@@ -35,7 +36,7 @@ int C2SafepointPollStub::max_size() const {
}
void C2SafepointPollStub::emit(C2_MacroAssembler& masm) {
assert(SharedRuntime::polling_page_return_handler_blob() != NULL,
assert(SharedRuntime::polling_page_return_handler_blob() != nullptr,
"polling page return stub not created yet");
address stub = SharedRuntime::polling_page_return_handler_blob()->entry_point();
@@ -63,4 +64,31 @@ void C2EntryBarrierStub::emit(C2_MacroAssembler& masm) {
__ emit_int32(0); // nmethod guard value
}
int C2HandleAnonOMOwnerStub::max_size() const {
// Max size of stub has been determined by testing with 0, in which case
// C2CodeStubList::emit() will throw an assertion and report the actual size that
// is needed.
return 24;
}
void C2HandleAnonOMOwnerStub::emit(C2_MacroAssembler& masm) {
__ bind(entry());
Register mon = monitor();
Register t = tmp();
assert(t != noreg, "need tmp register");
// Fix owner to be the current thread.
__ str(rthread, Address(mon, ObjectMonitor::owner_offset()));
// Pop owner object from lock-stack.
__ ldrw(t, Address(rthread, JavaThread::lock_stack_top_offset()));
__ subw(t, t, oopSize);
#ifdef ASSERT
__ str(zr, Address(rthread, t));
#endif
__ strw(t, Address(rthread, JavaThread::lock_stack_top_offset()));
__ b(continuation());
}
#undef __

View File

@@ -46,6 +46,7 @@
typedef void (MacroAssembler::* chr_insn)(Register Rt, const Address &adr);
// Search for str1 in str2 and return index or -1
// Clobbers: rscratch1, rscratch2, rflags. May also clobber v0-v1, when icnt1==-1.
void C2_MacroAssembler::string_indexof(Register str2, Register str1,
Register cnt2, Register cnt1,
Register tmp1, Register tmp2,
@@ -287,16 +288,16 @@ void C2_MacroAssembler::string_indexof(Register str2, Register str1,
cmp(cnt1, (u1)16); // small patterns still should be handled by simple algorithm
br(LT, LINEAR_MEDIUM);
mov(result, zr);
RuntimeAddress stub = NULL;
RuntimeAddress stub = nullptr;
if (isL) {
stub = RuntimeAddress(StubRoutines::aarch64::string_indexof_linear_ll());
assert(stub.target() != NULL, "string_indexof_linear_ll stub has not been generated");
assert(stub.target() != nullptr, "string_indexof_linear_ll stub has not been generated");
} else if (str1_isL) {
stub = RuntimeAddress(StubRoutines::aarch64::string_indexof_linear_ul());
assert(stub.target() != NULL, "string_indexof_linear_ul stub has not been generated");
assert(stub.target() != nullptr, "string_indexof_linear_ul stub has not been generated");
} else {
stub = RuntimeAddress(StubRoutines::aarch64::string_indexof_linear_uu());
assert(stub.target() != NULL, "string_indexof_linear_uu stub has not been generated");
assert(stub.target() != nullptr, "string_indexof_linear_uu stub has not been generated");
}
address call = trampoline_call(stub);
if (call == nullptr) {
@@ -844,7 +845,7 @@ void C2_MacroAssembler::string_compare(Register str1, Register str2,
}
bind(STUB);
RuntimeAddress stub = NULL;
RuntimeAddress stub = nullptr;
switch(ae) {
case StrIntrinsicNode::LL:
stub = RuntimeAddress(StubRoutines::aarch64::compare_long_string_LL());
@@ -861,7 +862,7 @@ void C2_MacroAssembler::string_compare(Register str1, Register str2,
default:
ShouldNotReachHere();
}
assert(stub.target() != NULL, "compare_long_string stub has not been generated");
assert(stub.target() != nullptr, "compare_long_string stub has not been generated");
address call = trampoline_call(stub);
if (call == nullptr) {
DEBUG_ONLY(reset_labels(DONE, SHORT_LOOP, SHORT_STRING, SHORT_LAST, SHORT_LOOP_TAIL, SHORT_LAST2, SHORT_LAST_INIT, SHORT_LOOP_START));
@@ -2049,9 +2050,9 @@ void C2_MacroAssembler::vector_signum_sve(FloatRegister dst, FloatRegister src,
}
bool C2_MacroAssembler::in_scratch_emit_size() {
if (ciEnv::current()->task() != NULL) {
if (ciEnv::current()->task() != nullptr) {
PhaseOutput* phase_output = Compile::current()->output();
if (phase_output != NULL && phase_output->in_scratch_emit_size()) {
if (phase_output != nullptr && phase_output->in_scratch_emit_size()) {
return true;
}
}

View File

@@ -69,7 +69,7 @@ static bool emit_shared_trampolines(CodeBuffer* cb, CodeBuffer::SharedTrampoline
assert(requests->number_of_entries() >= 1, "at least one");
const int total_requested_size = MacroAssembler::max_trampoline_stub_size() * requests->number_of_entries();
if (cb->stubs()->maybe_expand_to_ensure_remaining(total_requested_size) && cb->blob() == NULL) {
if (cb->stubs()->maybe_expand_to_ensure_remaining(total_requested_size) && cb->blob() == nullptr) {
return false;
}

View File

@@ -44,7 +44,7 @@ address CompiledStaticCall::emit_to_interp_stub(CodeBuffer &cbuf, address mark)
// mov rmethod, 0
// jmp -4 # to self
if (mark == NULL) {
if (mark == nullptr) {
mark = cbuf.insts_mark(); // Get mark within main instrs section.
}
@@ -54,8 +54,8 @@ address CompiledStaticCall::emit_to_interp_stub(CodeBuffer &cbuf, address mark)
address base = __ start_a_stub(to_interp_stub_size());
int offset = __ offset();
if (base == NULL) {
return NULL; // CodeBuffer::expand failed
if (base == nullptr) {
return nullptr; // CodeBuffer::expand failed
}
// static stub relocation stores the instruction address of the call
__ relocate(static_stub_Relocation::spec(mark));
@@ -88,7 +88,7 @@ int CompiledStaticCall::reloc_to_interp_stub() {
void CompiledDirectStaticCall::set_to_interpreted(const methodHandle& callee, address entry) {
address stub = find_stub();
guarantee(stub != NULL, "stub not found");
guarantee(stub != nullptr, "stub not found");
if (TraceICs) {
ResourceMark rm;
@@ -117,7 +117,7 @@ void CompiledDirectStaticCall::set_to_interpreted(const methodHandle& callee, ad
void CompiledDirectStaticCall::set_stub_to_clean(static_stub_Relocation* static_stub) {
// Reset stub.
address stub = static_stub->addr();
assert(stub != NULL, "stub not found");
assert(stub != nullptr, "stub not found");
assert(CompiledICLocker::is_safe(stub), "mt unsafe call");
// Creation also verifies the object.
NativeMovConstReg* method_holder
@@ -138,7 +138,7 @@ void CompiledDirectStaticCall::verify() {
// Verify stub.
address stub = find_stub();
assert(stub != NULL, "no stub found for static call");
assert(stub != nullptr, "no stub found for static call");
// Creation also verifies the object.
NativeMovConstReg* method_holder
= nativeMovConstReg_at(stub + NativeInstruction::instruction_size);

View File

@@ -149,7 +149,7 @@ inline void FreezeBase::relativize_interpreted_frame_metadata(const frame& f, co
// because we freeze the padding word (see recurse_freeze_interpreted_frame) in order to keep the same relativized
// locals value, we don't need to change the locals value here.
// at(frame::interpreter_frame_last_sp_offset) can be NULL at safepoint preempts
// at(frame::interpreter_frame_last_sp_offset) can be null at safepoint preempts
*hf.addr_at(frame::interpreter_frame_last_sp_offset) = hf.unextended_sp() - hf.fp();
relativize_one(vfp, hfp, frame::interpreter_frame_initial_sp_offset); // == block_top == block_bottom

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -39,7 +39,7 @@
// the perfect job. In those cases, decode_instruction0 may kick in
// and do it right.
// If nothing had to be done, just return "here", otherwise return "here + instr_len(here)"
static address decode_instruction0(address here, outputStream* st, address virtual_begin = NULL) {
static address decode_instruction0(address here, outputStream* st, address virtual_begin = nullptr) {
return here;
}

View File

@@ -75,7 +75,7 @@ public:
_needs_transition(needs_transition),
_frame_complete(0),
_frame_size_slots(0),
_oop_maps(NULL) {
_oop_maps(nullptr) {
}
void generate();
@@ -168,7 +168,7 @@ void DowncallStubGenerator::generate() {
assert(_abi._shadow_space_bytes == 0, "not expecting shadow space on AArch64");
allocated_frame_size += arg_shuffle.out_arg_bytes();
bool should_save_return_value = !_needs_return_buffer && _needs_transition;
bool should_save_return_value = !_needs_return_buffer;
RegSpiller out_reg_spiller(_output_registers);
int spill_offset = -1;

View File

@@ -96,7 +96,7 @@ bool frame::safe_for_sender(JavaThread *thread) {
// to construct the sender and do some validation of it. This goes a long way
// toward eliminating issues when we get in frame construction code
if (_cb != NULL ) {
if (_cb != nullptr ) {
// First check if frame is complete and tester is reliable
// Unfortunately we can only check frame complete for runtime stubs and nmethod
@@ -122,10 +122,10 @@ bool frame::safe_for_sender(JavaThread *thread) {
return fp_safe;
}
intptr_t* sender_sp = NULL;
intptr_t* sender_unextended_sp = NULL;
address sender_pc = NULL;
intptr_t* saved_fp = NULL;
intptr_t* sender_sp = nullptr;
intptr_t* sender_unextended_sp = nullptr;
address sender_pc = nullptr;
intptr_t* saved_fp = nullptr;
if (is_interpreted_frame()) {
// fp must be safe
@@ -189,7 +189,7 @@ bool frame::safe_for_sender(JavaThread *thread) {
// We must always be able to find a recognizable pc
CodeBlob* sender_blob = CodeCache::find_blob(sender_pc);
if (sender_pc == NULL || sender_blob == NULL) {
if (sender_pc == nullptr || sender_blob == nullptr) {
return false;
}
@@ -222,7 +222,7 @@ bool frame::safe_for_sender(JavaThread *thread) {
}
CompiledMethod* nm = sender_blob->as_compiled_method_or_null();
if (nm != NULL) {
if (nm != nullptr) {
if (nm->is_deopt_mh_entry(sender_pc) || nm->is_deopt_entry(sender_pc) ||
nm->method()->is_method_handle_intrinsic()) {
return false;
@@ -264,7 +264,7 @@ bool frame::safe_for_sender(JavaThread *thread) {
// Will the pc we fetch be non-zero (which we'll find at the oldest frame)
if ( (address) this->fp()[return_addr_offset] == NULL) return false;
if ( (address) this->fp()[return_addr_offset] == nullptr) return false;
// could try and do some more potential verification of native frame if we could think of some...
@@ -298,7 +298,7 @@ void frame::patch_pc(Thread* thread, address pc) {
*pc_addr = signed_pc;
_pc = pc; // must be set before call to get_deopt_original_pc
address original_pc = CompiledMethod::get_deopt_original_pc(this);
if (original_pc != NULL) {
if (original_pc != nullptr) {
assert(original_pc == old_pc, "expected original PC to be stored before patching");
_deopt_state = is_deoptimized;
_pc = original_pc;
@@ -364,7 +364,7 @@ void frame::interpreter_frame_set_extended_sp(intptr_t* sp) {
}
frame frame::sender_for_entry_frame(RegisterMap* map) const {
assert(map != NULL, "map must be set");
assert(map != nullptr, "map must be set");
// Java frame called from C; skip all C frames and return top C
// frame of that chunk as the sender
JavaFrameAnchor* jfa = entry_frame_call_wrapper()->anchor();
@@ -392,11 +392,11 @@ bool frame::upcall_stub_frame_is_first() const {
assert(is_upcall_stub_frame(), "must be optimzed entry frame");
UpcallStub* blob = _cb->as_upcall_stub();
JavaFrameAnchor* jfa = blob->jfa_for_frame(*this);
return jfa->last_Java_sp() == NULL;
return jfa->last_Java_sp() == nullptr;
}
frame frame::sender_for_upcall_stub_frame(RegisterMap* map) const {
assert(map != NULL, "map must be set");
assert(map != nullptr, "map must be set");
UpcallStub* blob = _cb->as_upcall_stub();
// Java frame called from C; skip all C frames and return top C
// frame of that chunk as the sender
@@ -441,9 +441,9 @@ void frame::adjust_unextended_sp() {
// as any other call site. Therefore, no special action is needed when we are
// returning to any of these call sites.
if (_cb != NULL) {
if (_cb != nullptr) {
CompiledMethod* sender_cm = _cb->as_compiled_method_or_null();
if (sender_cm != NULL) {
if (sender_cm != nullptr) {
// If the sender PC is a deoptimization point, get the original PC.
if (sender_cm->is_deopt_entry(_pc) ||
sender_cm->is_deopt_mh_entry(_pc)) {
@@ -568,7 +568,7 @@ BasicType frame::interpreter_frame_result(oop* oop_result, jvalue* value_result)
obj = cast_to_oop(at(interpreter_frame_oop_temp_offset));
} else {
oop* obj_p = (oop*)tos_addr;
obj = (obj_p == NULL) ? (oop)NULL : *obj_p;
obj = (obj_p == nullptr) ? (oop)nullptr : *obj_p;
}
assert(Universe::is_in_heap_or_null(obj), "sanity check");
*oop_result = obj;
@@ -636,7 +636,7 @@ void frame::describe_pd(FrameValues& values, int frame_no) {
intptr_t *frame::initial_deoptimization_info() {
// Not used on aarch64, but we must return something.
return NULL;
return nullptr;
}
#undef DESCRIBE_FP_OFFSET
@@ -716,7 +716,7 @@ void internal_pf(uintptr_t sp, uintptr_t fp, uintptr_t pc, uintptr_t bcx) {
printf("not a Method\n");
} else {
CodeBlob *cb = CodeCache::find_blob((address)pc);
if (cb != NULL) {
if (cb != nullptr) {
if (cb->is_nmethod()) {
ResourceMark rm;
nmethod* nm = (nmethod*)cb;
@@ -782,11 +782,11 @@ frame::frame(void* sp, void* fp, void* pc) {
void JavaFrameAnchor::make_walkable() {
// last frame set?
if (last_Java_sp() == NULL) return;
if (last_Java_sp() == nullptr) return;
// already walkable?
if (walkable()) return;
vmassert(last_Java_sp() != NULL, "not called from Java code?");
vmassert(last_Java_pc() == NULL, "already walkable");
vmassert(last_Java_sp() != nullptr, "not called from Java code?");
vmassert(last_Java_pc() == nullptr, "already walkable");
_last_Java_pc = (address)_last_Java_sp[-1];
vmassert(walkable(), "something went wrong");
}

View File

@@ -39,11 +39,11 @@
// Constructors:
inline frame::frame() {
_pc = NULL;
_sp = NULL;
_unextended_sp = NULL;
_fp = NULL;
_cb = NULL;
_pc = nullptr;
_sp = nullptr;
_unextended_sp = nullptr;
_fp = nullptr;
_cb = nullptr;
_deopt_state = unknown;
_sp_is_trusted = false;
_on_heap = false;
@@ -60,11 +60,11 @@ inline void frame::init(intptr_t* sp, intptr_t* fp, address pc) {
_unextended_sp = sp;
_fp = fp;
_pc = pc;
_oop_map = NULL;
_oop_map = nullptr;
_on_heap = false;
DEBUG_ONLY(_frame_index = -1;)
assert(pc != NULL, "no pc?");
assert(pc != nullptr, "no pc?");
_cb = CodeCache::find_blob(pc);
setup(pc);
}
@@ -73,10 +73,10 @@ inline void frame::setup(address pc) {
adjust_unextended_sp();
address original_pc = CompiledMethod::get_deopt_original_pc(this);
if (original_pc != NULL) {
if (original_pc != nullptr) {
_pc = original_pc;
_deopt_state = is_deoptimized;
assert(_cb == NULL || _cb->as_compiled_method()->insts_contains_inclusive(_pc),
assert(_cb == nullptr || _cb->as_compiled_method()->insts_contains_inclusive(_pc),
"original PC must be in the main code section of the compiled method (or must be immediately following it)");
} else {
if (_cb == SharedRuntime::deopt_blob()) {
@@ -100,10 +100,10 @@ inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address
_unextended_sp = unextended_sp;
_fp = fp;
_pc = pc;
assert(pc != NULL, "no pc?");
assert(pc != nullptr, "no pc?");
_cb = cb;
_oop_map = NULL;
assert(_cb != NULL, "pc: " INTPTR_FORMAT, p2i(pc));
_oop_map = nullptr;
assert(_cb != nullptr, "pc: " INTPTR_FORMAT, p2i(pc));
_on_heap = false;
DEBUG_ONLY(_frame_index = -1;)
@@ -124,7 +124,7 @@ inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address
// In thaw, non-heap frames use this constructor to pass oop_map. I don't know why.
assert(_on_heap || _cb != nullptr, "these frames are always heap frames");
if (cb != NULL) {
if (cb != nullptr) {
setup(pc);
}
#ifdef ASSERT
@@ -144,8 +144,8 @@ inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address
_fp = fp;
_pc = pc;
_cb = CodeCache::find_blob_fast(pc);
_oop_map = NULL;
assert(_cb != NULL, "pc: " INTPTR_FORMAT " sp: " INTPTR_FORMAT " unextended_sp: " INTPTR_FORMAT " fp: " INTPTR_FORMAT, p2i(pc), p2i(sp), p2i(unextended_sp), p2i(fp));
_oop_map = nullptr;
assert(_cb != nullptr, "pc: " INTPTR_FORMAT " sp: " INTPTR_FORMAT " unextended_sp: " INTPTR_FORMAT " fp: " INTPTR_FORMAT, p2i(pc), p2i(sp), p2i(unextended_sp), p2i(fp));
_on_heap = false;
DEBUG_ONLY(_frame_index = -1;)
@@ -171,13 +171,13 @@ inline frame::frame(intptr_t* sp, intptr_t* fp) {
// call a specilaized frame constructor instead of this one.
// Then we could use the assert below. However this assert is of somewhat dubious
// value.
// assert(_pc != NULL, "no pc?");
// assert(_pc != nullptr, "no pc?");
_cb = CodeCache::find_blob(_pc);
adjust_unextended_sp();
address original_pc = CompiledMethod::get_deopt_original_pc(this);
if (original_pc != NULL) {
if (original_pc != nullptr) {
_pc = original_pc;
_deopt_state = is_deoptimized;
} else {
@@ -198,19 +198,19 @@ inline bool frame::equal(frame other) const {
}
// Return unique id for this frame. The id must have a value where we can distinguish
// identity and younger/older relationship. NULL represents an invalid (incomparable)
// identity and younger/older relationship. null represents an invalid (incomparable)
// frame.
inline intptr_t* frame::id(void) const { return unextended_sp(); }
// Return true if the frame is older (less recent activation) than the frame represented by id
inline bool frame::is_older(intptr_t* id) const { assert(this->id() != NULL && id != NULL, "NULL frame id");
inline bool frame::is_older(intptr_t* id) const { assert(this->id() != nullptr && id != nullptr, "null frame id");
return this->id() > id ; }
inline intptr_t* frame::link() const { return (intptr_t*) *(intptr_t **)addr_at(link_offset); }
inline intptr_t* frame::link_or_null() const {
intptr_t** ptr = (intptr_t **)addr_at(link_offset);
return os::is_readable_pointer(ptr) ? *ptr : NULL;
return os::is_readable_pointer(ptr) ? *ptr : nullptr;
}
inline intptr_t* frame::unextended_sp() const { assert_absolute(); return _unextended_sp; }
@@ -219,7 +219,7 @@ inline int frame::offset_unextended_sp() const { assert_offset(); retu
inline void frame::set_offset_unextended_sp(int value) { assert_on_heap(); _offset_unextended_sp = value; }
inline intptr_t* frame::real_fp() const {
if (_cb != NULL) {
if (_cb != nullptr) {
// use the frame size if valid
int size = _cb->frame_size();
if (size > 0) {
@@ -243,7 +243,7 @@ inline int frame::compiled_frame_stack_argsize() const {
}
inline void frame::interpreted_frame_oop_map(InterpreterOopMap* mask) const {
assert(mask != NULL, "");
assert(mask != nullptr, "");
Method* m = interpreter_frame_method();
int bci = interpreter_frame_bci();
m->mask_for(bci, mask); // OopMapCache::compute_one_oop_map(m, bci, mask);
@@ -296,7 +296,7 @@ inline oop* frame::interpreter_frame_mirror_addr() const {
// top of expression stack
inline intptr_t* frame::interpreter_frame_tos_address() const {
intptr_t* last_sp = interpreter_frame_last_sp();
if (last_sp == NULL) {
if (last_sp == nullptr) {
return sp();
} else {
// sp() may have been extended or shrunk by an adapter. At least
@@ -336,13 +336,13 @@ inline JavaCallWrapper** frame::entry_frame_call_wrapper_addr() const {
inline oop frame::saved_oop_result(RegisterMap* map) const {
oop* result_adr = (oop *)map->location(r0->as_VMReg(), sp());
guarantee(result_adr != NULL, "bad register save location");
guarantee(result_adr != nullptr, "bad register save location");
return *result_adr;
}
inline void frame::set_saved_oop_result(RegisterMap* map, oop obj) {
oop* result_adr = (oop *)map->location(r0->as_VMReg(), sp());
guarantee(result_adr != NULL, "bad register save location");
guarantee(result_adr != nullptr, "bad register save location");
*result_adr = obj;
}
@@ -356,17 +356,17 @@ inline int frame::sender_sp_ret_address_offset() {
}
inline const ImmutableOopMap* frame::get_oop_map() const {
if (_cb == NULL) return NULL;
if (_cb->oop_maps() != NULL) {
if (_cb == nullptr) return nullptr;
if (_cb->oop_maps() != nullptr) {
NativePostCallNop* nop = nativePostCallNop_at(_pc);
if (nop != NULL && nop->displacement() != 0) {
if (nop != nullptr && nop->displacement() != 0) {
int slot = ((nop->displacement() >> 24) & 0xff);
return _cb->oop_map_for_slot(slot, _pc);
}
const ImmutableOopMap* oop_map = OopMapSet::find_map(this);
return oop_map;
}
return NULL;
return nullptr;
}
//------------------------------------------------------------------------------
@@ -395,7 +395,7 @@ inline frame frame::sender_raw(RegisterMap* map) const {
if (is_interpreted_frame()) return sender_for_interpreter_frame(map);
assert(_cb == CodeCache::find_blob(pc()), "Must be the same");
if (_cb != NULL) return sender_for_compiled_frame(map);
if (_cb != nullptr) return sender_for_compiled_frame(map);
// Must be native-compiled frame, i.e. the marshaling code for native
// methods that exists in the core system.
@@ -428,13 +428,13 @@ inline frame frame::sender_for_compiled_frame(RegisterMap* map) const {
// outside of update_register_map.
if (!_cb->is_compiled()) { // compiled frames do not use callee-saved registers
map->set_include_argument_oops(_cb->caller_must_gc_arguments(map->thread()));
if (oop_map() != NULL) {
if (oop_map() != nullptr) {
_oop_map->update_register_map(this, map);
}
} else {
assert(!_cb->caller_must_gc_arguments(map->thread()), "");
assert(!map->include_argument_oops(), "");
assert(oop_map() == NULL || !oop_map()->has_any(OopMapValue::callee_saved_value), "callee-saved value in compiled frame");
assert(oop_map() == nullptr || !oop_map()->has_any(OopMapValue::callee_saved_value), "callee-saved value in compiled frame");
}
// Since the prolog does the save and restore of FP there is no oopmap

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2018, 2023, 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
@@ -159,7 +159,7 @@ void G1BarrierSetAssembler::g1_write_barrier_pre(MacroAssembler* masm,
// Calling the runtime using the regular call_VM_leaf mechanism generates
// code (generated by InterpreterMacroAssember::call_VM_leaf_base)
// that checks that the *(rfp+frame::interpreter_frame_last_sp) == NULL.
// that checks that the *(rfp+frame::interpreter_frame_last_sp) == nullptr.
//
// If we care generating the pre-barrier without a frame (e.g. in the
// intrinsified Reference.get() routine) then rfp might be pointing to
@@ -210,11 +210,11 @@ void G1BarrierSetAssembler::g1_write_barrier_post(MacroAssembler* masm,
__ lsr(tmp1, tmp1, HeapRegion::LogOfHRGrainBytes);
__ cbz(tmp1, done);
// crosses regions, storing NULL?
// crosses regions, storing null?
__ cbz(new_val, done);
// storing region crossing non-NULL, is card already dirty?
// storing region crossing non-null, is card already dirty?
const Register card_addr = tmp1;
@@ -234,7 +234,7 @@ void G1BarrierSetAssembler::g1_write_barrier_post(MacroAssembler* masm,
__ ldrb(tmp2, Address(card_addr));
__ cbzw(tmp2, done);
// storing a region crossing, non-NULL oop, card is clean.
// storing a region crossing, non-null oop, card is clean.
// dirty card and log.
__ strb(zr, Address(card_addr));
@@ -427,7 +427,7 @@ void G1BarrierSetAssembler::generate_c1_post_barrier_runtime_stub(StubAssembler*
Label done;
Label runtime;
// At this point we know new_value is non-NULL and the new_value crosses regions.
// At this point we know new_value is non-null and the new_value crosses regions.
// Must check to see if card is already dirty
const Register thread = rthread;
@@ -454,7 +454,7 @@ void G1BarrierSetAssembler::generate_c1_post_barrier_runtime_stub(StubAssembler*
__ ldrb(rscratch1, Address(byte_map_base, card_offset));
__ cbzw(rscratch1, done);
// storing region crossing non-NULL, card is clean.
// storing region crossing non-null, card is clean.
// dirty card and log.
__ strb(zr, Address(byte_map_base, card_offset));

View File

@@ -297,7 +297,7 @@ void BarrierSetAssembler::clear_patching_epoch() {
void BarrierSetAssembler::nmethod_entry_barrier(MacroAssembler* masm, Label* slow_path, Label* continuation, Label* guard) {
BarrierSetNMethod* bs_nm = BarrierSet::barrier_set()->barrier_set_nmethod();
if (bs_nm == NULL) {
if (bs_nm == nullptr) {
return;
}
@@ -305,13 +305,13 @@ void BarrierSetAssembler::nmethod_entry_barrier(MacroAssembler* masm, Label* slo
Label skip_barrier;
NMethodPatchingType patching_type = nmethod_patching_type();
if (slow_path == NULL) {
if (slow_path == nullptr) {
guard = &local_guard;
}
// If the slow path is out of line in a stub, we flip the condition
Assembler::Condition condition = slow_path == NULL ? Assembler::EQ : Assembler::NE;
Label& barrier_target = slow_path == NULL ? skip_barrier : *slow_path;
Assembler::Condition condition = slow_path == nullptr ? Assembler::EQ : Assembler::NE;
Label& barrier_target = slow_path == nullptr ? skip_barrier : *slow_path;
__ ldrw(rscratch1, *guard);
@@ -357,7 +357,7 @@ void BarrierSetAssembler::nmethod_entry_barrier(MacroAssembler* masm, Label* slo
}
__ br(condition, barrier_target);
if (slow_path == NULL) {
if (slow_path == nullptr) {
__ movptr(rscratch1, (uintptr_t) StubRoutines::aarch64::method_entry_barrier());
__ blr(rscratch1);
__ b(skip_barrier);
@@ -374,7 +374,7 @@ void BarrierSetAssembler::nmethod_entry_barrier(MacroAssembler* masm, Label* slo
void BarrierSetAssembler::c2i_entry_barrier(MacroAssembler* masm) {
BarrierSetNMethod* bs = BarrierSet::barrier_set()->barrier_set_nmethod();
if (bs == NULL) {
if (bs == nullptr) {
return;
}
@@ -417,5 +417,5 @@ void BarrierSetAssembler::check_oop(MacroAssembler* masm, Register obj, Register
// make sure klass is 'reasonable', which is not zero.
__ load_klass(obj, obj); // get klass
__ cbz(obj, error); // if klass is NULL it is broken
__ cbz(obj, error); // if klass is null it is broken
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2018, 2023, 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
@@ -32,17 +32,21 @@
#include "memory/resourceArea.hpp"
#include "runtime/frame.inline.hpp"
#include "runtime/javaThread.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/registerMap.hpp"
#include "runtime/sharedRuntime.hpp"
#include "utilities/align.hpp"
#include "utilities/debug.hpp"
#include "utilities/formatBuffer.hpp"
#if INCLUDE_JVMCI
#include "jvmci/jvmciRuntime.hpp"
#endif
static int slow_path_size(nmethod* nm) {
// The slow path code is out of line with C2
return nm->is_compiled_by_c2() ? 0 : 6;
}
// This is the offset of the entry barrier from where the frame is completed.
// This is the offset of the entry barrier relative to where the frame is completed.
// If any code changes between the end of the verified entry where the entry
// barrier resides, and the completion of the frame, then
// NativeNMethodCmpBarrier::verify() will immediately complain when it does
@@ -62,58 +66,80 @@ static int entry_barrier_offset(nmethod* nm) {
return 0;
}
class NativeNMethodBarrier: public NativeInstruction {
address instruction_address() const { return addr_at(0); }
class NativeNMethodBarrier {
address _instruction_address;
int* _guard_addr;
nmethod* _nm;
address instruction_address() const { return _instruction_address; }
int *guard_addr() {
return _guard_addr;
}
int local_guard_offset(nmethod* nm) {
// It's the last instruction
return (-entry_barrier_offset(nm)) - 4;
}
int *guard_addr(nmethod* nm) {
if (nm->is_compiled_by_c2()) {
// With c2 compiled code, the guard is out-of-line in a stub
// We find it using the RelocIterator.
RelocIterator iter(nm);
while (iter.next()) {
if (iter.type() == relocInfo::entry_guard_type) {
entry_guard_Relocation* const reloc = iter.entry_guard_reloc();
return reinterpret_cast<int*>(reloc->addr());
}
}
ShouldNotReachHere();
}
return reinterpret_cast<int*>(instruction_address() + local_guard_offset(nm));
}
public:
int get_value(nmethod* nm) {
return Atomic::load_acquire(guard_addr(nm));
NativeNMethodBarrier(nmethod* nm): _nm(nm) {
#if INCLUDE_JVMCI
if (nm->is_compiled_by_jvmci()) {
address pc = nm->code_begin() + nm->jvmci_nmethod_data()->nmethod_entry_patch_offset();
RelocIterator iter(nm, pc, pc + 4);
guarantee(iter.next(), "missing relocs");
guarantee(iter.type() == relocInfo::section_word_type, "unexpected reloc");
_guard_addr = (int*) iter.section_word_reloc()->target();
_instruction_address = pc;
} else
#endif
{
_instruction_address = nm->code_begin() + nm->frame_complete_offset() + entry_barrier_offset(nm);
if (nm->is_compiled_by_c2()) {
// With c2 compiled code, the guard is out-of-line in a stub
// We find it using the RelocIterator.
RelocIterator iter(nm);
while (iter.next()) {
if (iter.type() == relocInfo::entry_guard_type) {
entry_guard_Relocation* const reloc = iter.entry_guard_reloc();
_guard_addr = reinterpret_cast<int*>(reloc->addr());
return;
}
}
ShouldNotReachHere();
}
_guard_addr = reinterpret_cast<int*>(instruction_address() + local_guard_offset(nm));
}
}
void set_value(nmethod* nm, int value) {
Atomic::release_store(guard_addr(nm), value);
int get_value() {
return Atomic::load_acquire(guard_addr());
}
void verify() const;
};
void set_value(int value) {
Atomic::release_store(guard_addr(), value);
}
// Store the instruction bitmask, bits and name for checking the barrier.
struct CheckInsn {
uint32_t mask;
uint32_t bits;
const char *name;
bool check_barrier(err_msg& msg) const;
void verify() const {
err_msg msg("%s", "");
assert(check_barrier(msg), "%s", msg.buffer());
}
};
// The first instruction of the nmethod entry barrier is an ldr (literal)
// instruction. Verify that it's really there, so the offsets are not skewed.
void NativeNMethodBarrier::verify() const {
bool NativeNMethodBarrier::check_barrier(err_msg& msg) const {
uint32_t* addr = (uint32_t*) instruction_address();
uint32_t inst = *addr;
if ((inst & 0xff000000) != 0x18000000) {
tty->print_cr("Addr: " INTPTR_FORMAT " Code: 0x%x", (intptr_t)addr, inst);
fatal("not an ldr (literal) instruction.");
msg.print("Nmethod entry barrier did not start with ldr (literal) as expected. "
"Addr: " PTR_FORMAT " Code: " UINT32_FORMAT, p2i(addr), inst);
return false;
}
return true;
}
@@ -156,13 +182,6 @@ void BarrierSetNMethod::deoptimize(nmethod* nm, address* return_address_ptr) {
new_frame->pc = SharedRuntime::get_handle_wrong_method_stub();
}
static NativeNMethodBarrier* native_nmethod_barrier(nmethod* nm) {
address barrier_address = nm->code_begin() + nm->frame_complete_offset() + entry_barrier_offset(nm);
NativeNMethodBarrier* barrier = reinterpret_cast<NativeNMethodBarrier*>(barrier_address);
debug_only(barrier->verify());
return barrier;
}
void BarrierSetNMethod::set_guard_value(nmethod* nm, int value) {
if (!supports_entry_barrier(nm)) {
return;
@@ -179,8 +198,8 @@ void BarrierSetNMethod::set_guard_value(nmethod* nm, int value) {
bs_asm->increment_patching_epoch();
}
NativeNMethodBarrier* barrier = native_nmethod_barrier(nm);
barrier->set_value(nm, value);
NativeNMethodBarrier barrier(nm);
barrier.set_value(value);
}
int BarrierSetNMethod::guard_value(nmethod* nm) {
@@ -188,6 +207,13 @@ int BarrierSetNMethod::guard_value(nmethod* nm) {
return disarmed_guard_value();
}
NativeNMethodBarrier* barrier = native_nmethod_barrier(nm);
return barrier->get_value(nm);
NativeNMethodBarrier barrier(nm);
return barrier.get_value();
}
#if INCLUDE_JVMCI
bool BarrierSetNMethod::verify_barrier(nmethod* nm, err_msg& msg) {
NativeNMethodBarrier barrier(nm);
return barrier.check_barrier(msg);
}
#endif

View File

@@ -157,7 +157,7 @@ void ShenandoahBarrierSetAssembler::satb_write_barrier_pre(MacroAssembler* masm,
// Calling the runtime using the regular call_VM_leaf mechanism generates
// code (generated by InterpreterMacroAssember::call_VM_leaf_base)
// that checks that the *(rfp+frame::interpreter_frame_last_sp) == NULL.
// that checks that the *(rfp+frame::interpreter_frame_last_sp) == nullptr.
//
// If we care generating the pre-barrier without a frame (e.g. in the
// intrinsified Reference.get() routine) then rfp might be pointing to
@@ -447,7 +447,7 @@ void ShenandoahBarrierSetAssembler::try_resolve_jobject_in_native(MacroAssembler
// b) A parallel thread may heal the contents of addr, replacing a
// from-space pointer held in addr with the to-space pointer
// representing the new location of the object.
// Upon entry to cmpxchg_oop, it is assured that new_val equals NULL
// Upon entry to cmpxchg_oop, it is assured that new_val equals null
// or it refers to an object that is not being evacuated out of
// from-space, or it refers to the to-space version of an object that
// is being evacuated out of from-space.

View File

@@ -0,0 +1,462 @@
/*
* Copyright (c) 2019, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
#include "precompiled.hpp"
#include "asm/macroAssembler.inline.hpp"
#include "code/codeBlob.hpp"
#include "code/vmreg.inline.hpp"
#include "gc/x/xBarrier.inline.hpp"
#include "gc/x/xBarrierSet.hpp"
#include "gc/x/xBarrierSetAssembler.hpp"
#include "gc/x/xBarrierSetRuntime.hpp"
#include "gc/x/xThreadLocalData.hpp"
#include "memory/resourceArea.hpp"
#include "runtime/sharedRuntime.hpp"
#include "utilities/macros.hpp"
#ifdef COMPILER1
#include "c1/c1_LIRAssembler.hpp"
#include "c1/c1_MacroAssembler.hpp"
#include "gc/x/c1/xBarrierSetC1.hpp"
#endif // COMPILER1
#ifdef COMPILER2
#include "gc/x/c2/xBarrierSetC2.hpp"
#endif // COMPILER2
#ifdef PRODUCT
#define BLOCK_COMMENT(str) /* nothing */
#else
#define BLOCK_COMMENT(str) __ block_comment(str)
#endif
#undef __
#define __ masm->
void XBarrierSetAssembler::load_at(MacroAssembler* masm,
DecoratorSet decorators,
BasicType type,
Register dst,
Address src,
Register tmp1,
Register tmp2) {
if (!XBarrierSet::barrier_needed(decorators, type)) {
// Barrier not needed
BarrierSetAssembler::load_at(masm, decorators, type, dst, src, tmp1, tmp2);
return;
}
assert_different_registers(rscratch1, rscratch2, src.base());
assert_different_registers(rscratch1, rscratch2, dst);
Label done;
// Load bad mask into scratch register.
__ ldr(rscratch1, address_bad_mask_from_thread(rthread));
__ lea(rscratch2, src);
__ ldr(dst, src);
// Test reference against bad mask. If mask bad, then we need to fix it up.
__ tst(dst, rscratch1);
__ br(Assembler::EQ, done);
__ enter(/*strip_ret_addr*/true);
__ push_call_clobbered_registers_except(RegSet::of(dst));
if (c_rarg0 != dst) {
__ mov(c_rarg0, dst);
}
__ mov(c_rarg1, rscratch2);
__ call_VM_leaf(XBarrierSetRuntime::load_barrier_on_oop_field_preloaded_addr(decorators), 2);
// Make sure dst has the return value.
if (dst != r0) {
__ mov(dst, r0);
}
__ pop_call_clobbered_registers_except(RegSet::of(dst));
__ leave();
__ bind(done);
}
#ifdef ASSERT
void XBarrierSetAssembler::store_at(MacroAssembler* masm,
DecoratorSet decorators,
BasicType type,
Address dst,
Register val,
Register tmp1,
Register tmp2,
Register tmp3) {
// Verify value
if (is_reference_type(type)) {
// Note that src could be noreg, which means we
// are storing null and can skip verification.
if (val != noreg) {
Label done;
// tmp1, tmp2 and tmp3 are often set to noreg.
RegSet savedRegs = RegSet::of(rscratch1);
__ push(savedRegs, sp);
__ ldr(rscratch1, address_bad_mask_from_thread(rthread));
__ tst(val, rscratch1);
__ br(Assembler::EQ, done);
__ stop("Verify oop store failed");
__ should_not_reach_here();
__ bind(done);
__ pop(savedRegs, sp);
}
}
// Store value
BarrierSetAssembler::store_at(masm, decorators, type, dst, val, tmp1, tmp2, noreg);
}
#endif // ASSERT
void XBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm,
DecoratorSet decorators,
bool is_oop,
Register src,
Register dst,
Register count,
RegSet saved_regs) {
if (!is_oop) {
// Barrier not needed
return;
}
BLOCK_COMMENT("XBarrierSetAssembler::arraycopy_prologue {");
assert_different_registers(src, count, rscratch1);
__ push(saved_regs, sp);
if (count == c_rarg0) {
if (src == c_rarg1) {
// exactly backwards!!
__ mov(rscratch1, c_rarg0);
__ mov(c_rarg0, c_rarg1);
__ mov(c_rarg1, rscratch1);
} else {
__ mov(c_rarg1, count);
__ mov(c_rarg0, src);
}
} else {
__ mov(c_rarg0, src);
__ mov(c_rarg1, count);
}
__ call_VM_leaf(XBarrierSetRuntime::load_barrier_on_oop_array_addr(), 2);
__ pop(saved_regs, sp);
BLOCK_COMMENT("} XBarrierSetAssembler::arraycopy_prologue");
}
void XBarrierSetAssembler::try_resolve_jobject_in_native(MacroAssembler* masm,
Register jni_env,
Register robj,
Register tmp,
Label& slowpath) {
BLOCK_COMMENT("XBarrierSetAssembler::try_resolve_jobject_in_native {");
assert_different_registers(jni_env, robj, tmp);
// Resolve jobject
BarrierSetAssembler::try_resolve_jobject_in_native(masm, jni_env, robj, tmp, slowpath);
// The Address offset is too large to direct load - -784. Our range is +127, -128.
__ mov(tmp, (int64_t)(in_bytes(XThreadLocalData::address_bad_mask_offset()) -
in_bytes(JavaThread::jni_environment_offset())));
// Load address bad mask
__ add(tmp, jni_env, tmp);
__ ldr(tmp, Address(tmp));
// Check address bad mask
__ tst(robj, tmp);
__ br(Assembler::NE, slowpath);
BLOCK_COMMENT("} XBarrierSetAssembler::try_resolve_jobject_in_native");
}
#ifdef COMPILER1
#undef __
#define __ ce->masm()->
void XBarrierSetAssembler::generate_c1_load_barrier_test(LIR_Assembler* ce,
LIR_Opr ref) const {
assert_different_registers(rscratch1, rthread, ref->as_register());
__ ldr(rscratch1, address_bad_mask_from_thread(rthread));
__ tst(ref->as_register(), rscratch1);
}
void XBarrierSetAssembler::generate_c1_load_barrier_stub(LIR_Assembler* ce,
XLoadBarrierStubC1* stub) const {
// Stub entry
__ bind(*stub->entry());
Register ref = stub->ref()->as_register();
Register ref_addr = noreg;
Register tmp = noreg;
if (stub->tmp()->is_valid()) {
// Load address into tmp register
ce->leal(stub->ref_addr(), stub->tmp());
ref_addr = tmp = stub->tmp()->as_pointer_register();
} else {
// Address already in register
ref_addr = stub->ref_addr()->as_address_ptr()->base()->as_pointer_register();
}
assert_different_registers(ref, ref_addr, noreg);
// Save r0 unless it is the result or tmp register
// Set up SP to accommodate parameters and maybe r0..
if (ref != r0 && tmp != r0) {
__ sub(sp, sp, 32);
__ str(r0, Address(sp, 16));
} else {
__ sub(sp, sp, 16);
}
// Setup arguments and call runtime stub
ce->store_parameter(ref_addr, 1);
ce->store_parameter(ref, 0);
__ far_call(stub->runtime_stub());
// Verify result
__ verify_oop(r0);
// Move result into place
if (ref != r0) {
__ mov(ref, r0);
}
// Restore r0 unless it is the result or tmp register
if (ref != r0 && tmp != r0) {
__ ldr(r0, Address(sp, 16));
__ add(sp, sp, 32);
} else {
__ add(sp, sp, 16);
}
// Stub exit
__ b(*stub->continuation());
}
#undef __
#define __ sasm->
void XBarrierSetAssembler::generate_c1_load_barrier_runtime_stub(StubAssembler* sasm,
DecoratorSet decorators) const {
__ prologue("zgc_load_barrier stub", false);
__ push_call_clobbered_registers_except(RegSet::of(r0));
// Setup arguments
__ load_parameter(0, c_rarg0);
__ load_parameter(1, c_rarg1);
__ call_VM_leaf(XBarrierSetRuntime::load_barrier_on_oop_field_preloaded_addr(decorators), 2);
__ pop_call_clobbered_registers_except(RegSet::of(r0));
__ epilogue();
}
#endif // COMPILER1
#ifdef COMPILER2
OptoReg::Name XBarrierSetAssembler::refine_register(const Node* node, OptoReg::Name opto_reg) {
if (!OptoReg::is_reg(opto_reg)) {
return OptoReg::Bad;
}
const VMReg vm_reg = OptoReg::as_VMReg(opto_reg);
if (vm_reg->is_FloatRegister()) {
return opto_reg & ~1;
}
return opto_reg;
}
#undef __
#define __ _masm->
class XSaveLiveRegisters {
private:
MacroAssembler* const _masm;
RegSet _gp_regs;
FloatRegSet _fp_regs;
PRegSet _p_regs;
public:
void initialize(XLoadBarrierStubC2* stub) {
// Record registers that needs to be saved/restored
RegMaskIterator rmi(stub->live());
while (rmi.has_next()) {
const OptoReg::Name opto_reg = rmi.next();
if (OptoReg::is_reg(opto_reg)) {
const VMReg vm_reg = OptoReg::as_VMReg(opto_reg);
if (vm_reg->is_Register()) {
_gp_regs += RegSet::of(vm_reg->as_Register());
} else if (vm_reg->is_FloatRegister()) {
_fp_regs += FloatRegSet::of(vm_reg->as_FloatRegister());
} else if (vm_reg->is_PRegister()) {
_p_regs += PRegSet::of(vm_reg->as_PRegister());
} else {
fatal("Unknown register type");
}
}
}
// Remove C-ABI SOE registers, scratch regs and _ref register that will be updated
_gp_regs -= RegSet::range(r19, r30) + RegSet::of(r8, r9, stub->ref());
}
XSaveLiveRegisters(MacroAssembler* masm, XLoadBarrierStubC2* stub) :
_masm(masm),
_gp_regs(),
_fp_regs(),
_p_regs() {
// Figure out what registers to save/restore
initialize(stub);
// Save registers
__ push(_gp_regs, sp);
__ push_fp(_fp_regs, sp);
__ push_p(_p_regs, sp);
}
~XSaveLiveRegisters() {
// Restore registers
__ pop_p(_p_regs, sp);
__ pop_fp(_fp_regs, sp);
// External runtime call may clobber ptrue reg
__ reinitialize_ptrue();
__ pop(_gp_regs, sp);
}
};
#undef __
#define __ _masm->
class XSetupArguments {
private:
MacroAssembler* const _masm;
const Register _ref;
const Address _ref_addr;
public:
XSetupArguments(MacroAssembler* masm, XLoadBarrierStubC2* stub) :
_masm(masm),
_ref(stub->ref()),
_ref_addr(stub->ref_addr()) {
// Setup arguments
if (_ref_addr.base() == noreg) {
// No self healing
if (_ref != c_rarg0) {
__ mov(c_rarg0, _ref);
}
__ mov(c_rarg1, 0);
} else {
// Self healing
if (_ref == c_rarg0) {
// _ref is already at correct place
__ lea(c_rarg1, _ref_addr);
} else if (_ref != c_rarg1) {
// _ref is in wrong place, but not in c_rarg1, so fix it first
__ lea(c_rarg1, _ref_addr);
__ mov(c_rarg0, _ref);
} else if (_ref_addr.base() != c_rarg0 && _ref_addr.index() != c_rarg0) {
assert(_ref == c_rarg1, "Mov ref first, vacating c_rarg0");
__ mov(c_rarg0, _ref);
__ lea(c_rarg1, _ref_addr);
} else {
assert(_ref == c_rarg1, "Need to vacate c_rarg1 and _ref_addr is using c_rarg0");
if (_ref_addr.base() == c_rarg0 || _ref_addr.index() == c_rarg0) {
__ mov(rscratch2, c_rarg1);
__ lea(c_rarg1, _ref_addr);
__ mov(c_rarg0, rscratch2);
} else {
ShouldNotReachHere();
}
}
}
}
~XSetupArguments() {
// Transfer result
if (_ref != r0) {
__ mov(_ref, r0);
}
}
};
#undef __
#define __ masm->
void XBarrierSetAssembler::generate_c2_load_barrier_stub(MacroAssembler* masm, XLoadBarrierStubC2* stub) const {
BLOCK_COMMENT("XLoadBarrierStubC2");
// Stub entry
__ bind(*stub->entry());
{
XSaveLiveRegisters save_live_registers(masm, stub);
XSetupArguments setup_arguments(masm, stub);
__ mov(rscratch1, stub->slow_path());
__ blr(rscratch1);
}
// Stub exit
__ b(*stub->continuation());
}
#endif // COMPILER2
#undef __
#define __ masm->
void XBarrierSetAssembler::check_oop(MacroAssembler* masm, Register obj, Register tmp1, Register tmp2, Label& error) {
// Check if mask is good.
// verifies that XAddressBadMask & r0 == 0
__ ldr(tmp2, Address(rthread, XThreadLocalData::address_bad_mask_offset()));
__ andr(tmp1, obj, tmp2);
__ cbnz(tmp1, error);
BarrierSetAssembler::check_oop(masm, obj, tmp1, tmp2, error);
}
#undef __

View File

@@ -0,0 +1,110 @@
/*
* Copyright (c) 2019, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
#ifndef CPU_AARCH64_GC_X_XBARRIERSETASSEMBLER_AARCH64_HPP
#define CPU_AARCH64_GC_X_XBARRIERSETASSEMBLER_AARCH64_HPP
#include "code/vmreg.hpp"
#include "oops/accessDecorators.hpp"
#ifdef COMPILER2
#include "opto/optoreg.hpp"
#endif // COMPILER2
#ifdef COMPILER1
class LIR_Assembler;
class LIR_Opr;
class StubAssembler;
#endif // COMPILER1
#ifdef COMPILER2
class Node;
#endif // COMPILER2
#ifdef COMPILER1
class XLoadBarrierStubC1;
#endif // COMPILER1
#ifdef COMPILER2
class XLoadBarrierStubC2;
#endif // COMPILER2
class XBarrierSetAssembler : public XBarrierSetAssemblerBase {
public:
virtual void load_at(MacroAssembler* masm,
DecoratorSet decorators,
BasicType type,
Register dst,
Address src,
Register tmp1,
Register tmp2);
#ifdef ASSERT
virtual void store_at(MacroAssembler* masm,
DecoratorSet decorators,
BasicType type,
Address dst,
Register val,
Register tmp1,
Register tmp2,
Register tmp3);
#endif // ASSERT
virtual void arraycopy_prologue(MacroAssembler* masm,
DecoratorSet decorators,
bool is_oop,
Register src,
Register dst,
Register count,
RegSet saved_regs);
virtual void try_resolve_jobject_in_native(MacroAssembler* masm,
Register jni_env,
Register robj,
Register tmp,
Label& slowpath);
virtual NMethodPatchingType nmethod_patching_type() { return NMethodPatchingType::conc_data_patch; }
#ifdef COMPILER1
void generate_c1_load_barrier_test(LIR_Assembler* ce,
LIR_Opr ref) const;
void generate_c1_load_barrier_stub(LIR_Assembler* ce,
XLoadBarrierStubC1* stub) const;
void generate_c1_load_barrier_runtime_stub(StubAssembler* sasm,
DecoratorSet decorators) const;
#endif // COMPILER1
#ifdef COMPILER2
OptoReg::Name refine_register(const Node* node,
OptoReg::Name opto_reg);
void generate_c2_load_barrier_stub(MacroAssembler* masm,
XLoadBarrierStubC2* stub) const;
#endif // COMPILER2
void check_oop(MacroAssembler* masm, Register obj, Register tmp1, Register tmp2, Label& error);
};
#endif // CPU_AARCH64_GC_X_XBARRIERSETASSEMBLER_AARCH64_HPP

View File

@@ -24,7 +24,7 @@
#include "precompiled.hpp"
#include "gc/shared/gcLogPrecious.hpp"
#include "gc/shared/gc_globals.hpp"
#include "gc/z/zGlobals.hpp"
#include "gc/x/xGlobals.hpp"
#include "runtime/globals.hpp"
#include "runtime/os.hpp"
#include "utilities/globalDefinitions.hpp"
@@ -196,15 +196,15 @@ static size_t probe_valid_max_address_bit() {
#endif // LINUX
}
size_t ZPlatformAddressOffsetBits() {
size_t XPlatformAddressOffsetBits() {
const static size_t valid_max_address_offset_bits = probe_valid_max_address_bit() + 1;
const size_t max_address_offset_bits = valid_max_address_offset_bits - 3;
const size_t min_address_offset_bits = max_address_offset_bits - 2;
const size_t address_offset = round_up_power_of_2(MaxHeapSize * ZVirtualToPhysicalRatio);
const size_t address_offset = round_up_power_of_2(MaxHeapSize * XVirtualToPhysicalRatio);
const size_t address_offset_bits = log2i_exact(address_offset);
return clamp(address_offset_bits, min_address_offset_bits, max_address_offset_bits);
}
size_t ZPlatformAddressMetadataShift() {
return ZPlatformAddressOffsetBits();
size_t XPlatformAddressMetadataShift() {
return XPlatformAddressOffsetBits();
}

View File

@@ -0,0 +1,33 @@
/*
* Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
#ifndef CPU_AARCH64_GC_X_XGLOBALS_AARCH64_HPP
#define CPU_AARCH64_GC_X_XGLOBALS_AARCH64_HPP
const size_t XPlatformHeapViews = 3;
const size_t XPlatformCacheLineSize = 64;
size_t XPlatformAddressOffsetBits();
size_t XPlatformAddressMetadataShift();
#endif // CPU_AARCH64_GC_X_XGLOBALS_AARCH64_HPP

View File

@@ -0,0 +1,243 @@
//
// Copyright (c) 2019, 2021, Oracle and/or its affiliates. All rights reserved.
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
//
// This code is free software; you can redistribute it and/or modify it
// under the terms of the GNU General Public License version 2 only, as
// published by the Free Software Foundation.
//
// This code is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// version 2 for more details (a copy is included in the LICENSE file that
// accompanied this code).
//
// You should have received a copy of the GNU General Public License version
// 2 along with this work; if not, write to the Free Software Foundation,
// Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
//
// Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
// or visit www.oracle.com if you need additional information or have any
// questions.
//
source_hpp %{
#include "gc/shared/gc_globals.hpp"
#include "gc/x/c2/xBarrierSetC2.hpp"
#include "gc/x/xThreadLocalData.hpp"
%}
source %{
static void x_load_barrier(MacroAssembler& _masm, const MachNode* node, Address ref_addr, Register ref, Register tmp, uint8_t barrier_data) {
if (barrier_data == XLoadBarrierElided) {
return;
}
XLoadBarrierStubC2* const stub = XLoadBarrierStubC2::create(node, ref_addr, ref, tmp, barrier_data);
__ ldr(tmp, Address(rthread, XThreadLocalData::address_bad_mask_offset()));
__ andr(tmp, tmp, ref);
__ cbnz(tmp, *stub->entry());
__ bind(*stub->continuation());
}
static void x_load_barrier_slow_path(MacroAssembler& _masm, const MachNode* node, Address ref_addr, Register ref, Register tmp) {
XLoadBarrierStubC2* const stub = XLoadBarrierStubC2::create(node, ref_addr, ref, tmp, XLoadBarrierStrong);
__ b(*stub->entry());
__ bind(*stub->continuation());
}
%}
// Load Pointer
instruct xLoadP(iRegPNoSp dst, memory8 mem, rFlagsReg cr)
%{
match(Set dst (LoadP mem));
predicate(UseZGC && !ZGenerational && !needs_acquiring_load(n) && (n->as_Load()->barrier_data() != 0));
effect(TEMP dst, KILL cr);
ins_cost(4 * INSN_COST);
format %{ "ldr $dst, $mem" %}
ins_encode %{
const Address ref_addr = mem2address($mem->opcode(), as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp);
__ ldr($dst$$Register, ref_addr);
x_load_barrier(_masm, this, ref_addr, $dst$$Register, rscratch2 /* tmp */, barrier_data());
%}
ins_pipe(iload_reg_mem);
%}
// Load Pointer Volatile
instruct xLoadPVolatile(iRegPNoSp dst, indirect mem /* sync_memory */, rFlagsReg cr)
%{
match(Set dst (LoadP mem));
predicate(UseZGC && !ZGenerational && needs_acquiring_load(n) && n->as_Load()->barrier_data() != 0);
effect(TEMP dst, KILL cr);
ins_cost(VOLATILE_REF_COST);
format %{ "ldar $dst, $mem\t" %}
ins_encode %{
__ ldar($dst$$Register, $mem$$Register);
x_load_barrier(_masm, this, Address($mem$$Register), $dst$$Register, rscratch2 /* tmp */, barrier_data());
%}
ins_pipe(pipe_serial);
%}
instruct xCompareAndSwapP(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
match(Set res (CompareAndSwapP mem (Binary oldval newval)));
match(Set res (WeakCompareAndSwapP mem (Binary oldval newval)));
predicate(UseZGC && !ZGenerational && !needs_acquiring_load_exclusive(n) && n->as_LoadStore()->barrier_data() == XLoadBarrierStrong);
effect(KILL cr, TEMP_DEF res);
ins_cost(2 * VOLATILE_REF_COST);
format %{ "cmpxchg $mem, $oldval, $newval\n\t"
"cset $res, EQ" %}
ins_encode %{
guarantee($mem$$index == -1 && $mem$$disp == 0, "impossible encoding");
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
false /* acquire */, true /* release */, false /* weak */, rscratch2);
__ cset($res$$Register, Assembler::EQ);
if (barrier_data() != XLoadBarrierElided) {
Label good;
__ ldr(rscratch1, Address(rthread, XThreadLocalData::address_bad_mask_offset()));
__ andr(rscratch1, rscratch1, rscratch2);
__ cbz(rscratch1, good);
x_load_barrier_slow_path(_masm, this, Address($mem$$Register), rscratch2 /* ref */, rscratch1 /* tmp */);
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
false /* acquire */, true /* release */, false /* weak */, rscratch2);
__ cset($res$$Register, Assembler::EQ);
__ bind(good);
}
%}
ins_pipe(pipe_slow);
%}
instruct xCompareAndSwapPAcq(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
match(Set res (CompareAndSwapP mem (Binary oldval newval)));
match(Set res (WeakCompareAndSwapP mem (Binary oldval newval)));
predicate(UseZGC && !ZGenerational && needs_acquiring_load_exclusive(n) && (n->as_LoadStore()->barrier_data() == XLoadBarrierStrong));
effect(KILL cr, TEMP_DEF res);
ins_cost(2 * VOLATILE_REF_COST);
format %{ "cmpxchg $mem, $oldval, $newval\n\t"
"cset $res, EQ" %}
ins_encode %{
guarantee($mem$$index == -1 && $mem$$disp == 0, "impossible encoding");
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
true /* acquire */, true /* release */, false /* weak */, rscratch2);
__ cset($res$$Register, Assembler::EQ);
if (barrier_data() != XLoadBarrierElided) {
Label good;
__ ldr(rscratch1, Address(rthread, XThreadLocalData::address_bad_mask_offset()));
__ andr(rscratch1, rscratch1, rscratch2);
__ cbz(rscratch1, good);
x_load_barrier_slow_path(_masm, this, Address($mem$$Register), rscratch2 /* ref */, rscratch1 /* tmp */ );
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
true /* acquire */, true /* release */, false /* weak */, rscratch2);
__ cset($res$$Register, Assembler::EQ);
__ bind(good);
}
%}
ins_pipe(pipe_slow);
%}
instruct xCompareAndExchangeP(iRegPNoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
match(Set res (CompareAndExchangeP mem (Binary oldval newval)));
predicate(UseZGC && !ZGenerational && !needs_acquiring_load_exclusive(n) && n->as_LoadStore()->barrier_data() == XLoadBarrierStrong);
effect(TEMP_DEF res, KILL cr);
ins_cost(2 * VOLATILE_REF_COST);
format %{ "cmpxchg $res = $mem, $oldval, $newval" %}
ins_encode %{
guarantee($mem$$index == -1 && $mem$$disp == 0, "impossible encoding");
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
false /* acquire */, true /* release */, false /* weak */, $res$$Register);
if (barrier_data() != XLoadBarrierElided) {
Label good;
__ ldr(rscratch1, Address(rthread, XThreadLocalData::address_bad_mask_offset()));
__ andr(rscratch1, rscratch1, $res$$Register);
__ cbz(rscratch1, good);
x_load_barrier_slow_path(_masm, this, Address($mem$$Register), $res$$Register /* ref */, rscratch1 /* tmp */);
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
false /* acquire */, true /* release */, false /* weak */, $res$$Register);
__ bind(good);
}
%}
ins_pipe(pipe_slow);
%}
instruct xCompareAndExchangePAcq(iRegPNoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
match(Set res (CompareAndExchangeP mem (Binary oldval newval)));
predicate(UseZGC && !ZGenerational && needs_acquiring_load_exclusive(n) && n->as_LoadStore()->barrier_data() == XLoadBarrierStrong);
effect(TEMP_DEF res, KILL cr);
ins_cost(2 * VOLATILE_REF_COST);
format %{ "cmpxchg $res = $mem, $oldval, $newval" %}
ins_encode %{
guarantee($mem$$index == -1 && $mem$$disp == 0, "impossible encoding");
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
true /* acquire */, true /* release */, false /* weak */, $res$$Register);
if (barrier_data() != XLoadBarrierElided) {
Label good;
__ ldr(rscratch1, Address(rthread, XThreadLocalData::address_bad_mask_offset()));
__ andr(rscratch1, rscratch1, $res$$Register);
__ cbz(rscratch1, good);
x_load_barrier_slow_path(_masm, this, Address($mem$$Register), $res$$Register /* ref */, rscratch1 /* tmp */);
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
true /* acquire */, true /* release */, false /* weak */, $res$$Register);
__ bind(good);
}
%}
ins_pipe(pipe_slow);
%}
instruct xGetAndSetP(indirect mem, iRegP newv, iRegPNoSp prev, rFlagsReg cr) %{
match(Set prev (GetAndSetP mem newv));
predicate(UseZGC && !ZGenerational && !needs_acquiring_load_exclusive(n) && n->as_LoadStore()->barrier_data() != 0);
effect(TEMP_DEF prev, KILL cr);
ins_cost(2 * VOLATILE_REF_COST);
format %{ "atomic_xchg $prev, $newv, [$mem]" %}
ins_encode %{
__ atomic_xchg($prev$$Register, $newv$$Register, $mem$$Register);
x_load_barrier(_masm, this, Address(noreg, 0), $prev$$Register, rscratch2 /* tmp */, barrier_data());
%}
ins_pipe(pipe_serial);
%}
instruct xGetAndSetPAcq(indirect mem, iRegP newv, iRegPNoSp prev, rFlagsReg cr) %{
match(Set prev (GetAndSetP mem newv));
predicate(UseZGC && !ZGenerational && needs_acquiring_load_exclusive(n) && (n->as_LoadStore()->barrier_data() != 0));
effect(TEMP_DEF prev, KILL cr);
ins_cost(VOLATILE_REF_COST);
format %{ "atomic_xchg_acq $prev, $newv, [$mem]" %}
ins_encode %{
__ atomic_xchgal($prev$$Register, $newv$$Register, $mem$$Register);
x_load_barrier(_masm, this, Address(noreg, 0), $prev$$Register, rscratch2 /* tmp */, barrier_data());
%}
ins_pipe(pipe_serial);
%}

View File

@@ -0,0 +1,108 @@
/*
* Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
#include "precompiled.hpp"
#include "gc/shared/gcLogPrecious.hpp"
#include "gc/shared/gc_globals.hpp"
#include "gc/z/zAddress.hpp"
#include "gc/z/zBarrierSetAssembler.hpp"
#include "gc/z/zGlobals.hpp"
#include "runtime/globals.hpp"
#include "runtime/os.hpp"
#include "utilities/globalDefinitions.hpp"
#include "utilities/powerOfTwo.hpp"
#ifdef LINUX
#include <sys/mman.h>
#endif // LINUX
// Default value if probing is not implemented for a certain platform: 128TB
static const size_t DEFAULT_MAX_ADDRESS_BIT = 47;
// Minimum value returned, if probing fails: 64GB
static const size_t MINIMUM_MAX_ADDRESS_BIT = 36;
static size_t probe_valid_max_address_bit() {
#ifdef LINUX
size_t max_address_bit = 0;
const size_t page_size = os::vm_page_size();
for (size_t i = DEFAULT_MAX_ADDRESS_BIT; i > MINIMUM_MAX_ADDRESS_BIT; --i) {
const uintptr_t base_addr = ((uintptr_t) 1U) << i;
if (msync((void*)base_addr, page_size, MS_ASYNC) == 0) {
// msync suceeded, the address is valid, and maybe even already mapped.
max_address_bit = i;
break;
}
if (errno != ENOMEM) {
// Some error occured. This should never happen, but msync
// has some undefined behavior, hence ignore this bit.
#ifdef ASSERT
fatal("Received '%s' while probing the address space for the highest valid bit", os::errno_name(errno));
#else // ASSERT
log_warning_p(gc)("Received '%s' while probing the address space for the highest valid bit", os::errno_name(errno));
#endif // ASSERT
continue;
}
// Since msync failed with ENOMEM, the page might not be mapped.
// Try to map it, to see if the address is valid.
void* const result_addr = mmap((void*) base_addr, page_size, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0);
if (result_addr != MAP_FAILED) {
munmap(result_addr, page_size);
}
if ((uintptr_t) result_addr == base_addr) {
// address is valid
max_address_bit = i;
break;
}
}
if (max_address_bit == 0) {
// probing failed, allocate a very high page and take that bit as the maximum
const uintptr_t high_addr = ((uintptr_t) 1U) << DEFAULT_MAX_ADDRESS_BIT;
void* const result_addr = mmap((void*) high_addr, page_size, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0);
if (result_addr != MAP_FAILED) {
max_address_bit = BitsPerSize_t - count_leading_zeros((size_t) result_addr) - 1;
munmap(result_addr, page_size);
}
}
log_info_p(gc, init)("Probing address space for the highest valid bit: " SIZE_FORMAT, max_address_bit);
return MAX2(max_address_bit, MINIMUM_MAX_ADDRESS_BIT);
#else // LINUX
return DEFAULT_MAX_ADDRESS_BIT;
#endif // LINUX
}
size_t ZPlatformAddressOffsetBits() {
const static size_t valid_max_address_offset_bits = probe_valid_max_address_bit() + 1;
const size_t max_address_offset_bits = valid_max_address_offset_bits - 3;
const size_t min_address_offset_bits = max_address_offset_bits - 2;
const size_t address_offset = round_up_power_of_2(MaxHeapSize * ZVirtualToPhysicalRatio);
const size_t address_offset_bits = log2i_exact(address_offset);
return clamp(address_offset_bits, min_address_offset_bits, max_address_offset_bits);
}
size_t ZPlatformAddressHeapBaseShift() {
return ZPlatformAddressOffsetBits();
}
void ZGlobalsPointers::pd_set_good_masks() {
BarrierSetAssembler::clear_patching_epoch();
}

View File

@@ -0,0 +1,34 @@
/*
* Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
#ifndef CPU_AARCH64_GC_Z_ZADDRESS_AARCH64_HPP
#define CPU_AARCH64_GC_Z_ZADDRESS_AARCH64_HPP
#include "utilities/globalDefinitions.hpp"
const size_t ZPointerLoadShift = 16;
size_t ZPlatformAddressOffsetBits();
size_t ZPlatformAddressHeapBaseShift();
#endif // CPU_AARCH64_GC_Z_ZADDRESS_AARCH64_HPP

View File

@@ -0,0 +1,37 @@
/*
* Copyright (c) 2019, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
#ifndef CPU_AARCH64_GC_Z_ZADDRESS_AARCH64_INLINE_HPP
#define CPU_AARCH64_GC_Z_ZADDRESS_AARCH64_INLINE_HPP
#include "utilities/globalDefinitions.hpp"
inline uintptr_t ZPointer::remap_bits(uintptr_t colored) {
return (colored ^ ZPointerRemappedMask) & ZPointerRemappedMask;
}
inline constexpr int ZPointer::load_shift_lookup(uintptr_t value) {
return ZPointerLoadShift;
}
#endif // CPU_AARCH64_GC_Z_ZADDRESS_AARCH64_INLINE_HPP

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019, 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2019, 2023, 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
@@ -27,21 +27,32 @@
#include "code/vmreg.hpp"
#include "oops/accessDecorators.hpp"
#ifdef COMPILER2
#include "gc/z/c2/zBarrierSetC2.hpp"
#include "opto/optoreg.hpp"
#endif // COMPILER2
#ifdef COMPILER1
class LIR_Address;
class LIR_Assembler;
class LIR_Opr;
class StubAssembler;
class ZLoadBarrierStubC1;
class ZStoreBarrierStubC1;
#endif // COMPILER1
#ifdef COMPILER2
class MachNode;
class Node;
class ZLoadBarrierStubC2;
#endif // COMPILER2
// ZBarrierRelocationFormatLoadGoodBeforeTbX is used for both tbnz and tbz
// They are patched in the same way, their immediate value has the same
// structure
const int ZBarrierRelocationFormatLoadGoodBeforeTbX = 0;
const int ZBarrierRelocationFormatMarkBadBeforeMov = 1;
const int ZBarrierRelocationFormatStoreGoodBeforeMov = 2;
const int ZBarrierRelocationFormatStoreBadBeforeMov = 3;
class ZBarrierSetAssembler : public ZBarrierSetAssemblerBase {
public:
virtual void load_at(MacroAssembler* masm,
@@ -52,7 +63,27 @@ public:
Register tmp1,
Register tmp2);
#ifdef ASSERT
void store_barrier_fast(MacroAssembler* masm,
Address ref_addr,
Register rnew_zaddress,
Register rnew_zpointer,
Register rtmp,
bool in_nmethod,
bool is_atomic,
Label& medium_path,
Label& medium_path_continuation) const;
void store_barrier_medium(MacroAssembler* masm,
Address ref_addr,
Register rtmp1,
Register rtmp2,
Register rtmp3,
bool is_native,
bool is_atomic,
Label& medium_path_continuation,
Label& slow_path,
Label& slow_path_continuation) const;
virtual void store_at(MacroAssembler* masm,
DecoratorSet decorators,
BasicType type,
@@ -61,7 +92,6 @@ public:
Register tmp1,
Register tmp2,
Register tmp3);
#endif // ASSERT
virtual void arraycopy_prologue(MacroAssembler* masm,
DecoratorSet decorators,
@@ -71,23 +101,89 @@ public:
Register count,
RegSet saved_regs);
virtual void copy_load_at(MacroAssembler* masm,
DecoratorSet decorators,
BasicType type,
size_t bytes,
Register dst1,
Register dst2,
Address src,
Register tmp);
virtual void copy_store_at(MacroAssembler* masm,
DecoratorSet decorators,
BasicType type,
size_t bytes,
Address dst,
Register src1,
Register src2,
Register tmp1,
Register tmp2,
Register tmp3);
virtual void copy_load_at(MacroAssembler* masm,
DecoratorSet decorators,
BasicType type,
size_t bytes,
FloatRegister dst1,
FloatRegister dst2,
Address src,
Register tmp1,
Register tmp2,
FloatRegister vec_tmp);
virtual void copy_store_at(MacroAssembler* masm,
DecoratorSet decorators,
BasicType type,
size_t bytes,
Address dst,
FloatRegister src1,
FloatRegister src2,
Register tmp1,
Register tmp2,
Register tmp3,
FloatRegister vec_tmp1,
FloatRegister vec_tmp2,
FloatRegister vec_tmp3);
virtual void try_resolve_jobject_in_native(MacroAssembler* masm,
Register jni_env,
Register robj,
Register tmp,
Label& slowpath);
virtual NMethodPatchingType nmethod_patching_type() { return NMethodPatchingType::conc_data_patch; }
virtual NMethodPatchingType nmethod_patching_type() { return NMethodPatchingType::conc_instruction_and_data_patch; }
void patch_barrier_relocation(address addr, int format);
void patch_barriers() {}
#ifdef COMPILER1
void generate_c1_load_barrier_test(LIR_Assembler* ce,
LIR_Opr ref) const;
void generate_c1_color(LIR_Assembler* ce, LIR_Opr ref) const;
void generate_c1_uncolor(LIR_Assembler* ce, LIR_Opr ref) const;
void generate_c1_load_barrier(LIR_Assembler* ce,
LIR_Opr ref,
ZLoadBarrierStubC1* stub,
bool on_non_strong) const;
void generate_c1_load_barrier_stub(LIR_Assembler* ce,
ZLoadBarrierStubC1* stub) const;
void generate_c1_load_barrier_runtime_stub(StubAssembler* sasm,
DecoratorSet decorators) const;
void generate_c1_store_barrier(LIR_Assembler* ce,
LIR_Address* addr,
LIR_Opr new_zaddress,
LIR_Opr new_zpointer,
ZStoreBarrierStubC1* stub) const;
void generate_c1_store_barrier_stub(LIR_Assembler* ce,
ZStoreBarrierStubC1* stub) const;
void generate_c1_store_barrier_runtime_stub(StubAssembler* sasm,
bool self_healing) const;
#endif // COMPILER1
#ifdef COMPILER2
@@ -96,9 +192,103 @@ public:
void generate_c2_load_barrier_stub(MacroAssembler* masm,
ZLoadBarrierStubC2* stub) const;
void generate_c2_store_barrier_stub(MacroAssembler* masm,
ZStoreBarrierStubC2* stub) const;
#endif // COMPILER2
void check_oop(MacroAssembler* masm, Register obj, Register tmp1, Register tmp2, Label& error);
};
#ifdef COMPILER2
// Load barriers on aarch64 are implemented with a test-and-branch immediate instruction.
// This immediate has a max delta of 32K. Because of this the branch is implemented with
// a small jump, as follows:
// __ tbz(ref, barrier_Relocation::unpatched, good);
// __ b(*stub->entry());
// __ bind(good);
//
// If we can guarantee that the *stub->entry() label is within 32K we can replace the above
// code with:
// __ tbnz(ref, barrier_Relocation::unpatched, *stub->entry());
//
// From the branch shortening part of PhaseOutput we get a pessimistic code size that the code
// will not grow beyond.
//
// The stubs objects are created and registered when the load barriers are emitted. The decision
// between emitting the long branch or the test and branch is done at this point and uses the
// pessimistic code size from branch shortening.
//
// After the code has been emitted the barrier set will emit all the stubs. When the stubs are
// emitted we know the real code size. Because of this the trampoline jump can be skipped in
// favour of emitting the stub directly if it does not interfere with the next trampoline stub.
// (With respect to test and branch distance)
//
// The algorithm for emitting the load barrier branches and stubs now have three versions
// depending on the distance between the barrier and the stub.
// Version 1: Not Reachable with a test-and-branch immediate
// Version 2: Reachable with a test-and-branch immediate via trampoline
// Version 3: Reachable with a test-and-branch immediate without trampoline
//
// +--------------------- Code ----------------------+
// | *** |
// | b(stub1) | (Version 1)
// | *** |
// | tbnz(ref, barrier_Relocation::unpatched, tramp) | (Version 2)
// | *** |
// | tbnz(ref, barrier_Relocation::unpatched, stub3) | (Version 3)
// | *** |
// +--------------------- Stub ----------------------+
// | tramp: b(stub2) | (Trampoline slot)
// | stub3: |
// | * Stub Code* |
// | stub1: |
// | * Stub Code* |
// | stub2: |
// | * Stub Code* |
// +-------------------------------------------------+
//
// Version 1: Is emitted if the pessimistic distance between the branch instruction and the current
// trampoline slot cannot fit in a test and branch immediate.
//
// Version 2: Is emitted if the distance between the branch instruction and the current trampoline
// slot can fit in a test and branch immediate. But emitting the stub directly would
// interfere with the next trampoline.
//
// Version 3: Same as version two but emitting the stub directly (skipping the trampoline) does not
// interfere with the next trampoline.
//
class ZLoadBarrierStubC2Aarch64 : public ZLoadBarrierStubC2 {
private:
Label _test_and_branch_reachable_entry;
const int _offset;
bool _deferred_emit;
bool _test_and_branch_reachable;
ZLoadBarrierStubC2Aarch64(const MachNode* node, Address ref_addr, Register ref, int offset);
int get_stub_size();
public:
static ZLoadBarrierStubC2Aarch64* create(const MachNode* node, Address ref_addr, Register ref, int offset);
virtual void emit_code(MacroAssembler& masm);
bool is_test_and_branch_reachable();
Label* entry();
};
class ZStoreBarrierStubC2Aarch64 : public ZStoreBarrierStubC2 {
private:
bool _deferred_emit;
ZStoreBarrierStubC2Aarch64(const MachNode* node, Address ref_addr, Register new_zaddress, Register new_zpointer, bool is_native, bool is_atomic);
public:
static ZStoreBarrierStubC2Aarch64* create(const MachNode* node, Address ref_addr, Register new_zaddress, Register new_zpointer, bool is_native, bool is_atomic);
virtual void emit_code(MacroAssembler& masm);
};
#endif // COMPILER2
#endif // CPU_AARCH64_GC_Z_ZBARRIERSETASSEMBLER_AARCH64_HPP

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2023, 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
@@ -24,10 +24,8 @@
#ifndef CPU_AARCH64_GC_Z_ZGLOBALS_AARCH64_HPP
#define CPU_AARCH64_GC_Z_ZGLOBALS_AARCH64_HPP
const size_t ZPlatformHeapViews = 3;
#include "utilities/globalDefinitions.hpp"
const size_t ZPlatformCacheLineSize = 64;
size_t ZPlatformAddressOffsetBits();
size_t ZPlatformAddressMetadataShift();
#endif // CPU_AARCH64_GC_Z_ZGLOBALS_AARCH64_HPP

View File

@@ -1,5 +1,5 @@
//
// Copyright (c) 2019, 2021, Oracle and/or its affiliates. All rights reserved.
// Copyright (c) 2019, 2023, 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
@@ -31,30 +31,79 @@ source_hpp %{
source %{
static void z_load_barrier(MacroAssembler& _masm, const MachNode* node, Address ref_addr, Register ref, Register tmp, uint8_t barrier_data) {
if (barrier_data == ZLoadBarrierElided) {
return;
}
ZLoadBarrierStubC2* const stub = ZLoadBarrierStubC2::create(node, ref_addr, ref, tmp, barrier_data);
__ ldr(tmp, Address(rthread, ZThreadLocalData::address_bad_mask_offset()));
__ andr(tmp, tmp, ref);
__ cbnz(tmp, *stub->entry());
#include "gc/z/zBarrierSetAssembler.hpp"
static void z_color(MacroAssembler& _masm, const MachNode* node, Register dst, Register src) {
assert_different_registers(src, dst);
__ relocate(barrier_Relocation::spec(), ZBarrierRelocationFormatStoreGoodBeforeMov);
__ movzw(dst, barrier_Relocation::unpatched);
__ orr(dst, dst, src, Assembler::LSL, ZPointerLoadShift);
}
static void z_uncolor(MacroAssembler& _masm, const MachNode* node, Register ref) {
__ lsr(ref, ref, ZPointerLoadShift);
}
static void z_keep_alive_load_barrier(MacroAssembler& _masm, const MachNode* node, Address ref_addr, Register ref, Register tmp) {
__ relocate(barrier_Relocation::spec(), ZBarrierRelocationFormatMarkBadBeforeMov);
__ movzw(tmp, barrier_Relocation::unpatched);
__ tst(ref, tmp);
ZLoadBarrierStubC2* const stub = ZLoadBarrierStubC2::create(node, ref_addr, ref);
__ br(Assembler::NE, *stub->entry());
z_uncolor(_masm, node, ref);
__ bind(*stub->continuation());
}
static void z_load_barrier_slow_path(MacroAssembler& _masm, const MachNode* node, Address ref_addr, Register ref, Register tmp) {
ZLoadBarrierStubC2* const stub = ZLoadBarrierStubC2::create(node, ref_addr, ref, tmp, ZLoadBarrierStrong);
__ b(*stub->entry());
static void z_load_barrier(MacroAssembler& _masm, const MachNode* node, Address ref_addr, Register ref, Register tmp) {
Assembler::InlineSkippedInstructionsCounter skipped_counter(&_masm);
const bool on_non_strong =
((node->barrier_data() & ZBarrierWeak) != 0) ||
((node->barrier_data() & ZBarrierPhantom) != 0);
if (on_non_strong) {
z_keep_alive_load_barrier(_masm, node, ref_addr, ref, tmp);
return;
}
if (node->barrier_data() == ZBarrierElided) {
z_uncolor(_masm, node, ref);
return;
}
ZLoadBarrierStubC2Aarch64* const stub = ZLoadBarrierStubC2Aarch64::create(node, ref_addr, ref, __ offset());
if (stub->is_test_and_branch_reachable()) {
__ relocate(barrier_Relocation::spec(), ZBarrierRelocationFormatLoadGoodBeforeTbX);
__ tbnz(ref, barrier_Relocation::unpatched, *stub->entry());
} else {
Label good;
__ relocate(barrier_Relocation::spec(), ZBarrierRelocationFormatLoadGoodBeforeTbX);
__ tbz(ref, barrier_Relocation::unpatched, good);
__ b(*stub->entry());
__ bind(good);
}
z_uncolor(_masm, node, ref);
__ bind(*stub->continuation());
}
static void z_store_barrier(MacroAssembler& _masm, const MachNode* node, Address ref_addr, Register rnew_zaddress, Register rnew_zpointer, Register tmp, bool is_atomic) {
Assembler::InlineSkippedInstructionsCounter skipped_counter(&_masm);
if (node->barrier_data() == ZBarrierElided) {
z_color(_masm, node, rnew_zpointer, rnew_zaddress);
} else {
bool is_native = (node->barrier_data() & ZBarrierNative) != 0;
ZStoreBarrierStubC2Aarch64* const stub = ZStoreBarrierStubC2Aarch64::create(node, ref_addr, rnew_zaddress, rnew_zpointer, is_native, is_atomic);
ZBarrierSetAssembler* bs_asm = ZBarrierSet::assembler();
bs_asm->store_barrier_fast(&_masm, ref_addr, rnew_zaddress, rnew_zpointer, tmp, true /* in_nmethod */, is_atomic, *stub->entry(), *stub->continuation());
}
}
%}
// Load Pointer
instruct zLoadP(iRegPNoSp dst, memory8 mem, rFlagsReg cr)
%{
match(Set dst (LoadP mem));
predicate(UseZGC && !needs_acquiring_load(n) && (n->as_Load()->barrier_data() != 0));
predicate(UseZGC && ZGenerational && !needs_acquiring_load(n) && n->as_Load()->barrier_data() != 0);
effect(TEMP dst, KILL cr);
ins_cost(4 * INSN_COST);
@@ -64,7 +113,7 @@ instruct zLoadP(iRegPNoSp dst, memory8 mem, rFlagsReg cr)
ins_encode %{
const Address ref_addr = mem2address($mem->opcode(), as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp);
__ ldr($dst$$Register, ref_addr);
z_load_barrier(_masm, this, ref_addr, $dst$$Register, rscratch2 /* tmp */, barrier_data());
z_load_barrier(_masm, this, ref_addr, $dst$$Register, rscratch1);
%}
ins_pipe(iload_reg_mem);
@@ -74,7 +123,7 @@ instruct zLoadP(iRegPNoSp dst, memory8 mem, rFlagsReg cr)
instruct zLoadPVolatile(iRegPNoSp dst, indirect mem /* sync_memory */, rFlagsReg cr)
%{
match(Set dst (LoadP mem));
predicate(UseZGC && needs_acquiring_load(n) && n->as_Load()->barrier_data() != 0);
predicate(UseZGC && ZGenerational && needs_acquiring_load(n) && n->as_Load()->barrier_data() != 0);
effect(TEMP dst, KILL cr);
ins_cost(VOLATILE_REF_COST);
@@ -82,18 +131,53 @@ instruct zLoadPVolatile(iRegPNoSp dst, indirect mem /* sync_memory */, rFlagsReg
format %{ "ldar $dst, $mem\t" %}
ins_encode %{
const Address ref_addr = Address($mem$$Register);
__ ldar($dst$$Register, $mem$$Register);
z_load_barrier(_masm, this, Address($mem$$Register), $dst$$Register, rscratch2 /* tmp */, barrier_data());
z_load_barrier(_masm, this, ref_addr, $dst$$Register, rscratch1);
%}
ins_pipe(pipe_serial);
%}
instruct zCompareAndSwapP(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
// Store Pointer
instruct zStoreP(memory mem, iRegP src, iRegPNoSp tmp, rFlagsReg cr)
%{
predicate(UseZGC && ZGenerational && !needs_releasing_store(n) && n->as_Store()->barrier_data() != 0);
match(Set mem (StoreP mem src));
effect(TEMP tmp, KILL cr);
ins_cost(125); // XXX
format %{ "movq $mem, $src\t# ptr" %}
ins_encode %{
const Address ref_addr = mem2address($mem->opcode(), as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp);
z_store_barrier(_masm, this, ref_addr, $src$$Register, $tmp$$Register, rscratch2, false /* is_atomic */);
__ str($tmp$$Register, ref_addr);
%}
ins_pipe(pipe_serial);
%}
// Store Pointer Volatile
instruct zStorePVolatile(indirect mem, iRegP src, iRegPNoSp tmp, rFlagsReg cr)
%{
predicate(UseZGC && ZGenerational && needs_releasing_store(n) && n->as_Store()->barrier_data() != 0);
match(Set mem (StoreP mem src));
effect(TEMP tmp, KILL cr);
ins_cost(125); // XXX
format %{ "movq $mem, $src\t# ptr" %}
ins_encode %{
const Address ref_addr = Address($mem$$Register);
z_store_barrier(_masm, this, ref_addr, $src$$Register, $tmp$$Register, rscratch2, false /* is_atomic */);
__ stlr($tmp$$Register, $mem$$Register);
%}
ins_pipe(pipe_serial);
%}
instruct zCompareAndSwapP(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, iRegPNoSp oldval_tmp, iRegPNoSp newval_tmp, rFlagsReg cr) %{
match(Set res (CompareAndSwapP mem (Binary oldval newval)));
match(Set res (WeakCompareAndSwapP mem (Binary oldval newval)));
predicate(UseZGC && !needs_acquiring_load_exclusive(n) && n->as_LoadStore()->barrier_data() == ZLoadBarrierStrong);
effect(KILL cr, TEMP_DEF res);
predicate(UseZGC && ZGenerational && !needs_acquiring_load_exclusive(n) && n->as_LoadStore()->barrier_data() != 0);
effect(TEMP oldval_tmp, TEMP newval_tmp, TEMP res, KILL cr);
ins_cost(2 * VOLATILE_REF_COST);
@@ -102,108 +186,83 @@ instruct zCompareAndSwapP(iRegINoSp res, indirect mem, iRegP oldval, iRegP newva
ins_encode %{
guarantee($mem$$index == -1 && $mem$$disp == 0, "impossible encoding");
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
false /* acquire */, true /* release */, false /* weak */, rscratch2);
Address ref_addr($mem$$Register);
z_store_barrier(_masm, this, ref_addr, $newval$$Register, $newval_tmp$$Register, rscratch2, true /* is_atomic */);
z_color(_masm, this, $oldval_tmp$$Register, $oldval$$Register);
__ cmpxchg($mem$$Register, $oldval_tmp$$Register, $newval_tmp$$Register, Assembler::xword,
false /* acquire */, true /* release */, false /* weak */, noreg);
__ cset($res$$Register, Assembler::EQ);
if (barrier_data() != ZLoadBarrierElided) {
Label good;
__ ldr(rscratch1, Address(rthread, ZThreadLocalData::address_bad_mask_offset()));
__ andr(rscratch1, rscratch1, rscratch2);
__ cbz(rscratch1, good);
z_load_barrier_slow_path(_masm, this, Address($mem$$Register), rscratch2 /* ref */, rscratch1 /* tmp */);
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
false /* acquire */, true /* release */, false /* weak */, rscratch2);
__ cset($res$$Register, Assembler::EQ);
__ bind(good);
}
%}
ins_pipe(pipe_slow);
%}
instruct zCompareAndSwapPAcq(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
instruct zCompareAndSwapPAcq(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, iRegPNoSp oldval_tmp, iRegPNoSp newval_tmp, rFlagsReg cr) %{
match(Set res (CompareAndSwapP mem (Binary oldval newval)));
match(Set res (WeakCompareAndSwapP mem (Binary oldval newval)));
predicate(UseZGC && needs_acquiring_load_exclusive(n) && (n->as_LoadStore()->barrier_data() == ZLoadBarrierStrong));
effect(KILL cr, TEMP_DEF res);
predicate(UseZGC && ZGenerational && needs_acquiring_load_exclusive(n) && n->as_LoadStore()->barrier_data() != 0);
effect(TEMP oldval_tmp, TEMP newval_tmp, TEMP res, KILL cr);
ins_cost(2 * VOLATILE_REF_COST);
format %{ "cmpxchg $mem, $oldval, $newval\n\t"
"cset $res, EQ" %}
format %{ "cmpxchg $mem, $oldval, $newval\n\t"
"cset $res, EQ" %}
ins_encode %{
guarantee($mem$$index == -1 && $mem$$disp == 0, "impossible encoding");
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
true /* acquire */, true /* release */, false /* weak */, rscratch2);
Address ref_addr($mem$$Register);
z_store_barrier(_masm, this, ref_addr, $newval$$Register, $newval_tmp$$Register, rscratch2, true /* is_atomic */);
z_color(_masm, this, $oldval_tmp$$Register, $oldval$$Register);
__ cmpxchg($mem$$Register, $oldval_tmp$$Register, $newval_tmp$$Register, Assembler::xword,
true /* acquire */, true /* release */, false /* weak */, noreg);
__ cset($res$$Register, Assembler::EQ);
if (barrier_data() != ZLoadBarrierElided) {
Label good;
__ ldr(rscratch1, Address(rthread, ZThreadLocalData::address_bad_mask_offset()));
__ andr(rscratch1, rscratch1, rscratch2);
__ cbz(rscratch1, good);
z_load_barrier_slow_path(_masm, this, Address($mem$$Register), rscratch2 /* ref */, rscratch1 /* tmp */ );
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
true /* acquire */, true /* release */, false /* weak */, rscratch2);
__ cset($res$$Register, Assembler::EQ);
__ bind(good);
}
%}
ins_pipe(pipe_slow);
%}
instruct zCompareAndExchangeP(iRegPNoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
instruct zCompareAndExchangeP(iRegPNoSp res, indirect mem, iRegP oldval, iRegP newval, iRegPNoSp oldval_tmp, iRegPNoSp newval_tmp, rFlagsReg cr) %{
match(Set res (CompareAndExchangeP mem (Binary oldval newval)));
predicate(UseZGC && !needs_acquiring_load_exclusive(n) && n->as_LoadStore()->barrier_data() == ZLoadBarrierStrong);
effect(TEMP_DEF res, KILL cr);
predicate(UseZGC && ZGenerational && !needs_acquiring_load_exclusive(n) && n->as_LoadStore()->barrier_data() != 0);
effect(TEMP oldval_tmp, TEMP newval_tmp, TEMP res, KILL cr);
ins_cost(2 * VOLATILE_REF_COST);
format %{ "cmpxchg $res = $mem, $oldval, $newval" %}
format %{ "cmpxchg $mem, $oldval, $newval\n\t"
"cset $res, EQ" %}
ins_encode %{
guarantee($mem$$index == -1 && $mem$$disp == 0, "impossible encoding");
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
Address ref_addr($mem$$Register);
z_store_barrier(_masm, this, ref_addr, $newval$$Register, $newval_tmp$$Register, rscratch2, true /* is_atomic */);
z_color(_masm, this, $oldval_tmp$$Register, $oldval$$Register);
__ cmpxchg($mem$$Register, $oldval_tmp$$Register, $newval_tmp$$Register, Assembler::xword,
false /* acquire */, true /* release */, false /* weak */, $res$$Register);
if (barrier_data() != ZLoadBarrierElided) {
Label good;
__ ldr(rscratch1, Address(rthread, ZThreadLocalData::address_bad_mask_offset()));
__ andr(rscratch1, rscratch1, $res$$Register);
__ cbz(rscratch1, good);
z_load_barrier_slow_path(_masm, this, Address($mem$$Register), $res$$Register /* ref */, rscratch1 /* tmp */);
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
false /* acquire */, true /* release */, false /* weak */, $res$$Register);
__ bind(good);
}
z_uncolor(_masm, this, $res$$Register);
%}
ins_pipe(pipe_slow);
%}
instruct zCompareAndExchangePAcq(iRegPNoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
instruct zCompareAndExchangePAcq(iRegPNoSp res, indirect mem, iRegP oldval, iRegP newval, iRegPNoSp oldval_tmp, iRegPNoSp newval_tmp, rFlagsReg cr) %{
match(Set res (CompareAndExchangeP mem (Binary oldval newval)));
predicate(UseZGC && needs_acquiring_load_exclusive(n) && n->as_LoadStore()->barrier_data() == ZLoadBarrierStrong);
effect(TEMP_DEF res, KILL cr);
predicate(UseZGC && ZGenerational && needs_acquiring_load_exclusive(n) && n->as_LoadStore()->barrier_data() != 0);
effect(TEMP oldval_tmp, TEMP newval_tmp, TEMP res, KILL cr);
ins_cost(2 * VOLATILE_REF_COST);
format %{ "cmpxchg $res = $mem, $oldval, $newval" %}
format %{ "cmpxchg $mem, $oldval, $newval\n\t"
"cset $res, EQ" %}
ins_encode %{
guarantee($mem$$index == -1 && $mem$$disp == 0, "impossible encoding");
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
Address ref_addr($mem$$Register);
z_store_barrier(_masm, this, ref_addr, $newval$$Register, $newval_tmp$$Register, rscratch2, true /* is_atomic */);
z_color(_masm, this, $oldval_tmp$$Register, $oldval$$Register);
__ cmpxchg($mem$$Register, $oldval_tmp$$Register, $newval_tmp$$Register, Assembler::xword,
true /* acquire */, true /* release */, false /* weak */, $res$$Register);
if (barrier_data() != ZLoadBarrierElided) {
Label good;
__ ldr(rscratch1, Address(rthread, ZThreadLocalData::address_bad_mask_offset()));
__ andr(rscratch1, rscratch1, $res$$Register);
__ cbz(rscratch1, good);
z_load_barrier_slow_path(_masm, this, Address($mem$$Register), $res$$Register /* ref */, rscratch1 /* tmp */);
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register, Assembler::xword,
true /* acquire */, true /* release */, false /* weak */, $res$$Register);
__ bind(good);
}
z_uncolor(_masm, this, $res$$Register);
%}
ins_pipe(pipe_slow);
@@ -211,16 +270,17 @@ instruct zCompareAndExchangePAcq(iRegPNoSp res, indirect mem, iRegP oldval, iReg
instruct zGetAndSetP(indirect mem, iRegP newv, iRegPNoSp prev, rFlagsReg cr) %{
match(Set prev (GetAndSetP mem newv));
predicate(UseZGC && !needs_acquiring_load_exclusive(n) && n->as_LoadStore()->barrier_data() != 0);
effect(TEMP_DEF prev, KILL cr);
predicate(UseZGC && ZGenerational && !needs_acquiring_load_exclusive(n) && n->as_LoadStore()->barrier_data() != 0);
effect(TEMP prev, KILL cr);
ins_cost(2 * VOLATILE_REF_COST);
format %{ "atomic_xchg $prev, $newv, [$mem]" %}
ins_encode %{
__ atomic_xchg($prev$$Register, $newv$$Register, $mem$$Register);
z_load_barrier(_masm, this, Address(noreg, 0), $prev$$Register, rscratch2 /* tmp */, barrier_data());
z_store_barrier(_masm, this, Address($mem$$Register), $newv$$Register, $prev$$Register, rscratch2, true /* is_atomic */);
__ atomic_xchg($prev$$Register, $prev$$Register, $mem$$Register);
z_uncolor(_masm, this, $prev$$Register);
%}
ins_pipe(pipe_serial);
@@ -228,16 +288,18 @@ instruct zGetAndSetP(indirect mem, iRegP newv, iRegPNoSp prev, rFlagsReg cr) %{
instruct zGetAndSetPAcq(indirect mem, iRegP newv, iRegPNoSp prev, rFlagsReg cr) %{
match(Set prev (GetAndSetP mem newv));
predicate(UseZGC && needs_acquiring_load_exclusive(n) && (n->as_LoadStore()->barrier_data() != 0));
effect(TEMP_DEF prev, KILL cr);
predicate(UseZGC && ZGenerational && needs_acquiring_load_exclusive(n) && n->as_LoadStore()->barrier_data() != 0);
effect(TEMP prev, KILL cr);
ins_cost(VOLATILE_REF_COST);
ins_cost(2 * VOLATILE_REF_COST);
format %{ "atomic_xchg_acq $prev, $newv, [$mem]" %}
format %{ "atomic_xchg $prev, $newv, [$mem]" %}
ins_encode %{
__ atomic_xchgal($prev$$Register, $newv$$Register, $mem$$Register);
z_load_barrier(_masm, this, Address(noreg, 0), $prev$$Register, rscratch2 /* tmp */, barrier_data());
z_store_barrier(_masm, this, Address($mem$$Register), $newv$$Register, $prev$$Register, rscratch2, true /* is_atomic */);
__ atomic_xchgal($prev$$Register, $prev$$Register, $mem$$Register);
z_uncolor(_masm, this, $prev$$Register);
%}
ins_pipe(pipe_serial);
%}

Some files were not shown because too many files have changed in this diff Show More