Compare commits

...

732 Commits
1010 ... 1419

Author SHA1 Message Date
Dmitry Batrak
529857d8c8 JBR-3307 First character is dropped when editing a table cell
(cherry picked from commit 2ccf6b65a7)
2021-04-14 14:14:10 +03:00
Dmitry Batrak
7ce18cfc17 JBR-3291 Input of characters using Alt+<NumPad> stopped working on Windows
(cherry picked from commit ba6b9c085e)
2021-04-14 14:07:43 +03:00
Artem Semenov
04f1cf9b47 JBR-3241: MAke a11y element for combobox 2021-04-07 17:23:49 +03:00
Jim Laskey
80c6e03ec4 JBR-2607 backport the fix for crash in [libjimage] ImageStrings::find from OpenJDK
backported from OpenJDK - 8166727: javac crashed: [jimage.dll+0x1942] ImageStrings::find+0x28

Reviewed-by: iklam, alanb
2021-04-07 14:33:38 +07:00
Artem Semenov
9001a78701 JBR-3274: macOS: SIGILL at [libsystem_kernel] __kill -[PlatformAxNavigableText accessibilitySelectedTextAttribute] 2021-04-05 14:47:34 +03:00
Artem Semenov
703cab8d0d JBR-3240: MAke a11y element for TabGroup 2021-04-02 15:51:57 +03:00
Nikita Gubarkov
3c9cdc9251 JBR-3269 Disabled subpixel antialiasing for MacOS Big Sur and newer 2021-04-02 01:24:57 +03:00
Denis Konoplev
032805520d JBR-3214: CR: remove double negation 2021-04-01 16:54:47 +03:00
Dmitry Batrak
b37f7cfdb1 JBR-3255 Applying 'incline' transform might change character's advance 2021-03-30 18:37:21 +03:00
Denis Konoplev
3668d631ca JBR-3214: Reuse openjdk logic and add unicode keycodes 2021-03-30 16:12:29 +03:00
Denis Konoplev
7fa3ea24ac JBR-2509: Fix Escape emulation after Cmd . 2021-03-30 16:05:16 +03:00
Artem Semenov
8a521cbf64 JR-CR-776: JBR-3239: MAke a11y component for ScrollView 2021-03-30 13:43:22 +03:00
Denis Konoplev
fe9601aa6d JBR-3214: Initialize stack variables to fix dead key prefix and enable support on aarch64 2021-03-29 20:06:22 +03:00
Artem Semenov
65e8162d67 JR-CR-775: JBR-3188: NSAccessibilityNavigableStaticText 2021-03-26 14:35:34 +03:00
Artem Semenov
b99be427ce JR-CR-774: JBR-3218: IDEA crash with opening drop down menu and click whatever next. 2021-03-24 18:38:32 +03:00
Denis Konoplev
6b3b011d0b Revert "JBR-2509: Fix Escape emulation after Cmd ."
This reverts commit f096bd2b
2021-03-24 14:01:10 +03:00
Denis Konoplev
b53ef867e4 Revert "JBR-2509: Remove Fokin code."
This reverts commit 99a8e455
2021-03-24 14:01:10 +03:00
Denis Konoplev
215fd32738 Revert "JBR-2509: Turn on option on M1"
This reverts commit 542ee611
2021-03-24 14:01:10 +03:00
Artem Semenov
921603e356 JBR-3028: macOS: SIGILL at [libsystem_kernel] __kill -[PlatformAxList accessibilityParent]
JR-CR-773: JBR-3028: macOS: SIGILL at [libsystem_kernel] __kill -[PlatformAxList accessibilityParent]
2021-03-23 21:04:25 +03:00
Denis Konoplev
542ee611fc JBR-2509: Turn on option on M1 2021-03-23 19:38:58 +03:00
Denis Konoplev
99a8e45598 JBR-2509: Remove Fokin code.
Reuse openjdk logic and add unicode keycodes
2021-03-23 16:45:33 +03:00
Denis Konoplev
f096bd2b0d JBR-2509: Fix Escape emulation after Cmd . 2021-03-23 16:45:33 +03:00
Ivan Migalev
26dd87ab7c JBR-3227 Reload type of required native file dialogs each time a file dialog is requested 2021-03-23 16:00:08 +03:00
Alexey Ushakov
a6ea081ba2 JBR-3023 Gray idea frame after project open with ide.mac.transparentTitleBarAppearance.
Initiate move/resize event on first appearance of window having FULL_WINDOW_CONTENT property set
2021-03-23 00:44:30 +03:00
Artem Semenov
2e87610593 JR-CR-771: JBR-3187: NSAccessibilityStaticText 2021-03-22 20:26:07 +03:00
Artem Semenov
1c336fc03a JR-CR-768: Test for JBR-3187 and JBR-3188
Test for JBR-3187 and JBR-3188
2021-03-22 20:26:07 +03:00
Dmitry Batrak
8eafcaab24 JBR-3215 'deriveFont(float)' can return a different font (not just change the size) 2021-03-22 15:56:46 +03:00
Vitaly Provodin
c096f12994 updated JTreg exclude list 2021-03-22 06:40:23 +07:00
Alexey Ushakov
5cfc8b3629 JBR-3217 [bkp to JBR11] JDK-8262446 DragAndDrop hangs on Windows
backported JDK-8262446 without any conflicts
2021-03-20 00:26:45 +03:00
Denis Konoplev
65b3d32eca JBR-1718: Fix regression java/awt/MenuBar/DefaultMenuBarDispose.java 2021-03-19 21:30:41 +03:00
Alexey Ushakov
61de3c3065 JBR-3208 bkp from JDK17: 8255790: GTKL&F: Java 16 crashes on initialising GTKL&F on Manjaro Linux
Review: disable coretext for now, cleanup
2021-03-18 13:33:55 +03:00
Nikita Gubarkov
3b101f673b JBR-2910 Fixed font size computation (extended glyph cache for MacOS) 2021-03-18 03:59:42 +03:00
Phil Race
bd79159249 8249142: java/awt/FontClass/CreateFont/DeleteFont.sh is unstable
Reviewed-by: serb
2021-03-18 05:47:50 +07:00
Alexey Ushakov
ca4425cb21 JBR-3208 bkp from JDK17: 8255790: GTKL&F: Java 16 crashes on initialising GTKL&F on Manjaro Linux
Backported fix with some minor corrections
2021-03-17 20:50:22 +03:00
Alexey Ushakov
b386e44bf5 Revert "JBR-3066 jbr 11_10 (1145-88) crashes on IDEA startup, jbr 11_09 (1145-77) works fine"
This reverts commit e03c9829, 97c0e96a, 746affd7, e766df4b, 847705dc, f10e7aca, 9ee15508, 553e5ca6
2021-03-17 16:31:05 +03:00
Nikita Gubarkov
03995a0327 JBR-2910 Implemented extended glyph cache for MacOS 2021-03-17 01:25:08 +03:00
Vitaly Provodin
bd6a088aaf remove links to bintray - download zulu as BOOT JDK 2021-03-17 04:46:44 +07:00
Denis Konoplev
c2582f8e03 JBR-1718: Add backward compatibility 2021-03-15 16:00:58 +03:00
Denis Konoplev
c122e27068 JBR-1718: Fix MacOs handlers 2021-03-15 16:00:58 +03:00
Dmitry Batrak
52a2428c28 use GPL copyright header 2021-03-15 14:53:42 +03:00
Konstantin Bulenkov
87b60afdf7 Remove links to bintray 2021-03-14 13:03:11 +01:00
Vitaly Provodin
10069846d5 Follow-up to 8221852: reporting actual error when unprivileged symlink creation fails
fix the misprint
2021-03-12 15:47:01 +07:00
Roman Shevchenko
f06f9fe734 Follow-up to 8221852: reporting actual error when unprivileged symlink creation fails
... for a reason other that ERROR_INVALID_PARAMETER.
2021-03-11 12:16:11 +03:00
Vitaly Provodin
348e538d10 updated JTreg exclude list
JBR-3167 excluding java2d tests causing Xwayland crash
2021-03-09 06:37:34 +07:00
Dmitry Batrak
5b9ff9a29e JBR-2766 java/awt/Window/MinimumSizeDPIVariation/MinimumSizeDPIVariation.java: Wrong size 2021-03-02 19:42:44 +03:00
Dmitry Batrak
62b04983f2 JBR-3157 Maximized window with custom decorations isn't focused on showing 2021-03-02 19:00:15 +03:00
Vitaly Provodin
c40b9c8b9e JBR-1505 add jdk.jcmd module into JBR 2021-03-02 05:43:59 +07:00
Artem Semenov
46dfaeecc9 JR-CR-760:
JBR-3144 Extend test for list with list nested in Heavy Weight Window popup
2021-02-24 14:25:30 +03:00
Alexey Ushakov
e03c9829e3 JBR-3066 jbr 11_10 (1145-88) crashes on IDEA startup, jbr 11_09 (1145-77) works fine
Optimised failure handling
2021-02-20 06:57:05 -08:00
Alexey Ushakov
97c0e96a5a JBR-3066 jbr 11_10 (1145-88) crashes on IDEA startup, jbr 11_09 (1145-77) works fine
Optimised failure handling
2021-02-20 02:57:25 -08:00
Vitaly Provodin
2b559a30df JBR-3138 fix the issues with signing JNF (follow up) 2021-02-20 16:39:00 +07:00
Sean Coffey
73b4a7e79e JBR-3139 backport the fix for 8253368: TLS connection always receives close_notify exception
Reviewed-by: xuelei
(cherry picked from commit 780ac896b1)
2021-02-20 16:38:20 +07:00
Anton Tarasov
7d8aeaf7de revert: JBR-1434 "New file dialog" popup remains above all windows on switching application
java.awt.peer.WindowPeer.isLightweightDialog() method does not exist.
2021-02-20 11:23:59 +03:00
Vitaly Provodin
94390c3f1e JBR-3138 fix the issues with signing JNF 2021-02-20 14:23:45 +07:00
Artem Bochkarev
78d509ac0f JBR-3131: support custom view for system menu items 2021-02-19 19:46:11 +03:00
Nikita Gubarkov
0b6238990b JBR-2910 Implemented extended glyph cache for Linux 2021-02-17 15:13:06 +03:00
Nikita Gubarkov
c0e4afcddd JBR-2910 Implemented extended glyph cache for Windows 2021-02-17 15:12:40 +03:00
Artem Bochkarev
be6a2c4f0c JBR-3127: add possibility to load NSJavaVirtualMachine
JavaVM framework is deprecated but this class is still checked by AppKit, see https://youtrack.jetbrains.com/issue/JBR-3127#focus=Comments-27-4684465.0-0
2021-02-17 15:00:21 +03:00
Artem Bochkarev
0b8ff1a7e6 JBR-3127: set NSWindowAllowsImplicitFullScreen=NO
fixed JBR-3127 Modal dialogs invoked from modal or floating dialogs are opened in full screen
2021-02-17 15:00:20 +03:00
Dmitry Batrak
63134e091b JBR-3119 Application's panel in KDE taskbar blinks when popup window is shown
this re-fixes JBR-2934 in a different way
2021-02-17 10:43:46 +03:00
Dmitry Batrak
50ab4690de JBR-1752 Floating windows overlap modal dialogs
fix for file dialog case
2021-02-11 12:52:14 +03:00
Ivan Migalev
c790bf3ebc JBR-3068: pass default button localization if not overridden 2021-02-11 11:16:56 +03:00
Alexey Ushakov
746affd753 JBR-3066 jbr 11_10 (1145-88) crashes on IDEA startup, jbr 11_09 (1145-77) works fine
Corrected symbol name
2021-02-10 08:44:59 -08:00
Alexey Ushakov
e766df4bcc JBR-3066 jbr 11_10 (1145-88) crashes on IDEA startup, jbr 11_09 (1145-77) works fine
Added missing initializations
2021-02-10 06:17:56 -08:00
Alexey Ushakov
847705dc96 JBR-3066 jbr 11_10 (1145-88) crashes on IDEA startup, jbr 11_09 (1145-77) works fine
One more fix of compilation (on windows)
2021-02-10 09:53:00 +03:00
Alexey Ushakov
f10e7aca70 JBR-3066 jbr 11_10 (1145-88) crashes on IDEA startup, jbr 11_09 (1145-77) works fine
Fixed compile problem
2021-02-09 23:18:52 +03:00
Alexey Ushakov
9ee1550815 JBR-3066 jbr 11_10 (1145-88) crashes on IDEA startup, jbr 11_09 (1145-77) works fine
Added manual loading of harfbuzz library. Use pointers to functions to access it's API.
2021-02-09 22:31:18 +03:00
Konstantin Bulenkov
1de6eed0e1 compilation fix 2021-02-09 12:02:41 +01:00
Konstantin Bulenkov
78510922c5 Update JetBrains Mono stylistic set 2021-02-08 19:43:05 +01:00
Vitaly Provodin
41de3a4cb1 JBR-3064 Disable AllowEnhancedClassRedefinition in flight recorder 2021-02-08 16:35:14 +07:00
Dmitry Batrak
304eb7f919 make AwtListGarbageCollectionTest pass reliably 2021-02-08 12:22:09 +03:00
Ivan Migalev
442bb7eecc JBR-3068 Update path selector behavior when sun.awt.windows.useCommonItemDialog is enabled 2021-02-08 12:00:28 +03:00
Dmitry Batrak
09941119e1 JBR-3017 Focus issue in presence of third-party accessibility tool
Guard against possible deadlocks, if UI-related methods are invoked not on EDT.
Sample deadlock scenario:
* Application thread attempts to show the window, this involves calling CWrapper.NSWindow.makeKeyAndOrderFront under AWT tree lock, which blocks till 'makeKeyAndOrderFront' completes on AppKit thread
* AppKit thread, while executing 'makeKeyAndOrderFront' performs 'back-call' to CAccessibility.getFocusOwner, which waits for execution on EDT
* EDT performs some activity requiring AWT tree lock (e.g. processing of PaintEvent)
2021-02-05 19:46:17 +03:00
Dmitry Batrak
e3aaff5db4 JBR-3017 Focus issue in presence of third-party accessibility tool
use the new invocation approach for 'makeKeyAndOrderFront' as well, as it can also cause synchronous back-calls to accessibility subsystem, and change the global call order unexpectedly

this commit fixes TypeaheadSetVisibleTest and TypeaheadToFrontTest, when they are run with AltTab active
2021-02-05 19:46:16 +03:00
Dmitry Batrak
99242748ee JBR-3072 Deadlock on nested dialog hiding 2021-02-04 14:14:01 +03:00
Vitaly Provodin
c1f4b0ca72 JBR-2124 remove JavaFX from JBR 2021-02-04 07:08:36 +07:00
Alexey Ushakov
553e5ca631 JBR-3066 jbr 11_10 (1145-88) crashes on IDEA startup, jbr 11_09 (1145-77) works fine
Renamed bundled harfbuzz with a new name (jharfbuzz) to use only inside libfontmanager.
2021-02-03 09:02:49 -08:00
Dmitry Batrak
aee4b48d20 JBR-3071 Remove naming workaround for Fira Code 2021-02-03 13:08:03 +03:00
Mikhail Grishchenko
bef85f8cea updated JTreg exclude list 2021-02-03 16:20:09 +07:00
Dmitry Batrak
0161050077 JBR-1752 Floating windows overlap modal dialogs 2021-02-01 17:00:13 +03:00
Denis Konoplev
a7c8b0b535 JBR-1995: Last character issue with korean
Fix for JTextComponent
2021-01-29 18:18:28 +03:00
Alexey Ushakov
985a1c8426 JBR-3023 Gray idea frame after project open with ide.mac.transparentTitleBarAppearance.
Set styleBits default values for WINDOW_TRANSPARENT_TITLEBAR_APPEARANCE property
2021-01-28 22:08:25 +03:00
Konstantin Bulenkov
2106b67380 Merge pull request #51 from JetBrains/mono/2.225
JetBrains Mono release 2.225
2021-01-27 14:51:07 +01:00
Prasanta Sadhukhan
58493967cd 8257242: [macOS] Java app crashes while switching input methods
Reviewed-by: serb
(cherry picked from commit 706d936ebe)
2021-01-27 19:01:43 +07:00
Prasanta Sadhukhan
2c82032f4c 8248532: Every time I change keyboard language at my MacBook, Java crashes
Reviewed-by: serb, prr
(cherry picked from commit 532775249f)
2021-01-27 19:01:32 +07:00
Vitaly Provodin
c571f300c6 Revert "JBR-2340 Frequent IDEA 2020.2 crashes on macOS"
This reverts commit 08f9ba66
2021-01-27 19:01:15 +07:00
Vitaly Provodin
9d8b89962f merge DCEVM patches with update_11.0.10 2021-01-27 19:00:48 +07:00
Vitaly Provodin
af014f4c2d Merge branch 'update_11.0.10' 2021-01-27 19:00:25 +07:00
MonoBot
b1c1b24890 Fonts release 2.225 2021-01-27 14:23:44 +03:00
Dmitry Batrak
0c2b6e1c04 JBR-3054 Focus is not returned to frame after closing of second-level popup on Windows 2021-01-27 11:19:58 +03:00
Vitaly Provodin
44d8b28b0b JBR-3045 add pressing ESC to close the dialog after test completion 2021-01-27 05:04:04 +07:00
Vitaly Provodin
bd43a4298c JBR-410 add golden emoji for macOS 10.14 x64 2021-01-27 04:57:28 +07:00
Dmitry Batrak
0ed7deabaa JBR-2702 Tooltips display through other applications on hover
make code compile with older SDK
2021-01-26 13:55:11 +03:00
Alexey Ushakov
56629e4c90 JBR-2996 M1 warnings: CoreText note: Client requested name “.SFCompact-Black”, it will get Times-Roman rather than the intended font
Cached system fonts family names
2021-01-26 10:45:44 +03:00
Dmitry Batrak
11732c2469 JBR-2702 Tooltips display through other applications on hover 2021-01-25 19:17:57 +03:00
Elena Sayapina
c356f37efc updated JTreg exclude list 2021-01-22 19:41:00 +07:00
Alexey Ushakov
d987707b0d JBR-3023 Gray idea frame after project open with ide.mac.transparentTitleBarAppearance.
Fixed test/jdk/java/awt/Window/setLocRelativeTo/SetLocationRelativeToTest.java test failure by aligning code with OpenJDK
2021-01-22 11:11:07 +03:00
andrew
29a0e37cb2 Added tag jdk-11.0.10-ga for changeset 8b3498547395 2021-01-21 22:02:37 -05:00
bpb
9397a10682 8247619: Improve Direct Buffering of Characters
Reviewed-by: alanb, ahgross, rhalade, psandoz
2021-01-21 22:01:36 -05:00
alitvinov
5f0af9b0f7 8249183: JVM crash in "AwtFrame::WmSize" method Reviewed-by: serb, aivanov 2021-01-21 22:01:36 -05:00
coleenp
2af72dec9c 8235829: graal crashes with Zombie.java test
Summary: Start ServiceThread before compiler threads, and run nmethod barriers for zgc before adding to the service thread queues, or posting events from the java thread.
Reviewed-by: pliden, dholmes, rehn
2021-01-21 22:01:35 -05:00
sspitsyn
73802596bf 8236124: Minimal VM slowdebug build failed after JDK-8212160
Summary: Use macro JVMTI_ONLY to avoid slowdebug build fail
Reviewed-by: coleenp, cjplummer, dholmes
2021-01-21 22:01:35 -05:00
jiefu
10a677632d 8235456: Minimal VM is broken after JDK-8212160
Reviewed-by: dholmes
2021-01-21 22:01:34 -05:00
coleenp
7dc0618259 8212160: JVMTI agent crashes with "assert(_value != 0LL) failed: resolving NULL _value"
Summary: Add local deferred event list to thread to post events outside CodeCache_lock.
Reviewed-by: eosterlund, dholmes, sspitsyn
2021-01-21 22:01:34 -05:00
coleenp
3f4e205ed7 8173658: JvmtiExport::post_class_unload() is broken for non-JavaThread initiators
Summary: call extension ClassUnload event as a deferred event from the ServiceThread and remove unsafe arguments
Reviewed-by: sspitsyn, dholmes
2021-01-21 22:01:33 -05:00
sgehwolf
a9320f9a7c 8256557: libharfbuzz fails to link on gcc 4.4.x due to -Wl,-z,defs
Reviewed-by: phh
2021-01-21 22:01:33 -05:00
prr
f2157fc2a3 8244621: [macos10.15] Garbled FX printing plus CoreText warnings on Catalina when building with Xcode 11
Reviewed-by: kcr, psadhukhan
2021-01-21 22:01:33 -05:00
igerasim
10a904bd65 8234147: Avoid looking up standard charsets in core libraries
Reviewed-by: alanb
2021-01-21 22:01:32 -05:00
ysuenaga
478314786d 8250598: Hyper-V is detected in spite of running on host OS
Reviewed-by: mbaesken, mdoerr, dholmes
2021-01-21 22:01:32 -05:00
prr
87b4f75c81 8250894: Provide a configure option to build and run against the platform libharfbuzz
Reviewed-by: erikj
2021-01-21 22:01:31 -05:00
shade
3cb8a371cf 8250605: Linux x86_32 builds fail after JDK-8249821
Reviewed-by: erikj, prr
2021-01-21 22:01:31 -05:00
prr
2be0650a3c 8249821: Separate libharfbuzz from libfontmanager
Reviewed-by: erikj
2021-01-21 22:01:30 -05:00
chegar
38f59e7a39 8217976: test/jdk/java/net/httpclient/websocket/WebSocketProxyTest.java fails intermittently
Reviewed-by: dfuchs
2021-01-21 22:01:30 -05:00
goetz
9cae35c8fe 8252415: Bump update version for OpenJDK: jdk-11.0.10
Reviewed-by: shade
2021-01-21 22:01:29 -05:00
rhalade
d56539e2ef 8225072: Add LuxTrust certificate that is expiring in March 2021 to list of allowed but expired certs
8258630: Add expiry exception for QuoVadis root certificate
Reviewed-by: ascarpino
2021-01-21 21:57:52 -05:00
clanger
894c226ce0 8255050: Add pkcs11/KeyStore/ClientAuth.sh to Problem list
Reviewed-by: mbaesken
2021-01-21 21:57:51 -05:00
mseledtsov
8ad2c4c130 8215583: Exclude runtime/handshake/HandshakeWalkSuspendExitTest.java
Summary: Added test to problem list
Reviewed-by: iignatyev
2021-01-21 21:57:51 -05:00
zgu
513fce6d1f 8257701: Shenandoah: objArrayKlass metadata is not marked with chunked arrays
Reviewed-by: shade
2021-01-21 21:57:50 -05:00
zgu
6ce327bba0 8257641: Shenandoah: Query is_at_shenandoah_safepoint() from control thread should return false
Reviewed-by: shade
2021-01-21 21:57:49 -05:00
mbalao
a5182b1bc8 8257545: SunJSSE FIPS regression in key exchange after JDK-8171279 11u backport
Reviewed-by: aph, goetz
2021-01-21 21:57:49 -05:00
stuefe
81e42d8949 8251257: NMT: jcmd VM.native_memory scale=1 crashes target VM
Reviewed-by: zgu, dholmes
2021-01-21 21:57:48 -05:00
stuefe
534de1d9d3 8249748: gtest silently ignores bad jvm arguments
Reviewed-by: shade, dholmes, iignatyev
2021-01-21 21:57:48 -05:00
andrew
d26d470f41 8222527: HttpClient doesn't send HOST header when tunelling HTTP/1.1 through http proxy
Summary: HttpClient no longer filters out system host header when sending tunelling CONNECT request to proxy
Reviewed-by: dfuchs
2021-01-21 21:57:47 -05:00
shade
6ecddfb581 8256736: Zero: GTest tests fail with "unsuppported vm variant"
Reviewed-by: dholmes
2021-01-21 21:57:46 -05:00
sspitsyn
382093e49b 8222072: JVMTI GenerateEvents() sends CompiledMethodLoad events to wrong jvmtiEnv
Summary: Fix GenerateEvents() to send CompiledMethodLoad events to requesting agent only
Reviewed-by: jcbeyler, amenkov
2021-01-21 21:57:43 -05:00
stuefe
de1b27c174 8227275: Within native OOM error handling, assertions may hang the process
Reviewed-by: mdoerr, coleenp
2021-01-21 21:57:42 -05:00
shade
d0445b53b8 8257181: s390x builds are very noisy with gc-sections messages
Reviewed-by: mdoerr, lucy
2021-01-21 21:57:42 -05:00
stuefe
7c49be5fbf 8230910: libsspi_bridge does not build on Windows 32bit
Reviewed-by: alanb, weijun
2021-01-21 21:57:41 -05:00
psadhukhan
14bd84f9b6 8234393: [macos] printing ignores printer tray
Reviewed-by: psadhukhan, prr
Contributed-by: Vipin Menon <vipinmv1@in.ibm.com>
2021-01-21 21:57:40 -05:00
tonyp
4775d5b564 8239497: SEGV in EdgeUtils::field_name_symbol(Edge const&)
Reviewed-by: adinn
Contributed-by: Markus Gronlund <markus.gronlund@oracle.com>, Jon Spurling <jspurling@twitter.com>
2021-01-21 21:57:40 -05:00
jlahoda
24d1124689 8218287: jshell tool: input behavior unstable after 12-ea+24 on Windows
Summary: Ensure correct wrapping of input on Windows.
Reviewed-by: rfield
2021-01-21 21:57:39 -05:00
shade
dc80bc7a42 8256618: Zero: Linux x86_32 build still fails
Reviewed-by: aph, dholmes, stuefe
2021-01-21 21:57:39 -05:00
ebaron
913c60c2e3 8256809: Annotation processing causes NPE during flow analysis
Reviewed-by: jlahoda
2021-01-21 21:57:38 -05:00
serb
20e6a76d22 8253269: The CheckCommonColors test should provide more info on failure
Reviewed-by: prr
2021-01-21 21:57:37 -05:00
weijun
67fa05a1d2 8225687: Newly added sspi.cpp in JDK-6722928 still contains some small errors
Reviewed-by: xuelei
2021-01-21 21:57:36 -05:00
dcherepanov
b101e233a0 8251365: Build failure on AIX after 8250636
Reviewed-by: dholmes
2021-01-21 21:57:35 -05:00
dcherepanov
dcecd60677 8250636: iso8601_time returns incorrect offset part on MacOS
Reviewed-by: dholmes, gziemski
2021-01-21 21:57:35 -05:00
weijun
085a4aadcb 6722928: Support SSPI as a native GSS-API provider
Reviewed-by: erikj, nwilliams, valeriep, sgehwolf
2021-01-21 21:57:34 -05:00
roland
f25553eb0b 8229495: SIGILL in C2 generated OSR compilation
Reviewed-by: kvn, chagedorn
2021-01-21 21:57:33 -05:00
sgehwolf
7debe89a72 8254854: [cgroups v1] Metric limits not properly detected on some join controller combinations
Reviewed-by: phh
2021-01-21 21:57:33 -05:00
thartmann
7ac0ac677b 8214242: compiler/arguments/TestScavengeRootsInCode.java fails because of missing UnlockDiagnosticVMOptions
Summary: Added missing UnlockDiagnosticVMOptions.
Reviewed-by: tschatzl
2021-01-21 21:57:31 -05:00
thartmann
c00a394007 8214025: assert(t->singleton()) failed: must be a constant when ScavengeRootsInCode < 2
Summary: Added missing null checks and checks for pending exception.
Reviewed-by: kvn
2021-01-21 21:57:31 -05:00
serb
98ec465085 8255937: Better cleanup for test/jdk/javax/imageio/stream/StreamFlush.java
Reviewed-by: jdv
2021-01-21 21:57:30 -05:00
kravikumar
6dd3a81c0b 8255226: (tz) Upgrade time-zone data to tzdata2020d
Reviewed-by: naoto
2021-01-21 21:57:29 -05:00
bulasevich
f8d939adaf 8254016: Test8237524 fails with -XX:-CompactStrings option
Reviewed-by: shade
2021-01-21 21:57:28 -05:00
enikitin
2fbb8399e2 8244282: test/hotspot/jtreg/compiler/intrinsics/Test8237524.java fails with --illegal-access=deny
Summary: Add modules to test/hotspot/jtreg/compiler/intrinsics/Test8237524
Reviewed-by: iignatyev
2021-01-21 21:57:28 -05:00
clanger
6f149720d0 8256452: Integrate missing part of JDK-8232370 to 11u
Reviewed-by: mbaesken, sgehwolf
2021-01-21 21:57:27 -05:00
clanger
f777d886f5 8256427: Test com/sun/jndi/dns/ConfigTests/PortUnreachable.java does not work on AIX
Reviewed-by: jiefu, mbaesken
2021-01-21 21:57:26 -05:00
vtewari
ce51e61fb4 8238579: HttpsURLConnection drops the timeout and hangs forever in read
Summary: HttpsURLConnection drops the timeout and hangs forever in read
Reviewed-by: dfuchs
2021-01-21 21:57:26 -05:00
shade
79f7442e0f 8255760: Shenandoah: match constants style in ShenandoahMarkTask fallback
Reviewed-by: zgu, rkennke
2021-01-21 21:57:25 -05:00
shade
10e00dd573 8255457: Shenandoah: cleanup ShenandoahMarkTask
Reviewed-by: rkennke
2021-01-21 21:57:24 -05:00
sgehwolf
797483db7f 8256483: [TESTBUG] serviceability/jvmti/GetClassMethods/libOverpassMethods.c fails to compile on gcc 4.4.x
Reviewed-by: shade, goetz
2021-01-21 21:57:24 -05:00
shade
9263119a35 8214787: Zero builds fail with "undefined JavaThread::thread_state()"
Reviewed-by: stuefe, zgu
2021-01-21 21:57:23 -05:00
vromero
d121ff949d 8211450: UndetVar::dup is not copying the kind field to the duplicated instance
Reviewed-by: mcimadamore
Contributed-by: filipe.roque@premium-minds.com
2021-01-21 21:57:23 -05:00
coffeys
a06c43399c 8250968: Symlinks attributes not preserved when using jarsigner on zip files
Reviewed-by: lancea, weijun, hchao
2021-01-21 21:57:22 -05:00
coffeys
6acc706e26 8218021: Have jarsigner preserve posix permission attributes
Reviewed-by: weijun, lancea, alanb
2021-01-21 21:57:21 -05:00
pconcannon
94d5941cc1 8243488: Add tests for set/get SendBufferSize and getReceiveBufferSize in DatagramSocket
Summary: Tests added for methods: setSendBufferSize(int), getSendBufferSize(), and getReceieveBufferSize() to increase test coverage in the DatagramSocket class
Reviewed-by: alanb, chegar, dfuchs
2021-01-21 21:57:21 -05:00
thartmann
e05c7d817c 8251535: Partial peeling at unsigned test adds incorrect loop exit check
Reviewed-by: chagedorn, neliasso, kvn
2021-01-21 21:57:20 -05:00
kvn
7f8de5ab98 8255466: C2 crashes at ciObject::get_oop() const+0x0
Reviewed-by: vlivanov
2021-01-21 21:57:19 -05:00
jiefu
5921410376 8250825: C2 crashes with assert(field != __null) failed: missing field
Reviewed-by: kvn, thartmann
2021-01-21 21:57:19 -05:00
kravikumar
c0452cc7c5 8254982: (tz) Upgrade time-zone data to tzdata2020c
Reviewed-by: erikj, naoto
2021-01-21 21:57:18 -05:00
shade
e8f3d2efca 8253219: Epsilon: clean up unnecessary includes
Reviewed-by: tschatzl, kbarrett
2021-01-21 21:57:18 -05:00
ihse
e6d2594fea 8245168: jlink should not be treated as a "small" tool
Reviewed-by: erikj
2021-01-21 21:57:17 -05:00
shade
24e40f463e 8255550: x86: Assembler::cmpq(Address dst, Register src) encoding is incorrect
Reviewed-by: kvn, eosterlund
2021-01-21 21:57:16 -05:00
xliu
66c9c759a3 8245051: c1 is broken if it is compiled by gcc without -fno-lifetime-dse
Summary: Initialize BlockBegin block id in constructor rather than operator new
Reviewed-by: kbarrett, thartmann
2021-01-21 21:57:16 -05:00
prr
4f90bf87af 8255365: Problem list failing client manual tests
Reviewed-by: kizune, serb
2021-01-21 21:57:15 -05:00
jiefu
86961069ef 8235218: Minimal VM is broken after JDK-8173361
Reviewed-by: dholmes
2021-01-21 21:57:15 -05:00
coleenp
32d1f9a117 8173361: various crashes in JvmtiExport::post_compiled_method_load
Summary: Don't post information that uses metadata from unloaded nmethods
Reviewed-by: eosterlund, dholmes, sspitsyn
2021-01-21 21:57:14 -05:00
redestad
2da1b23e0a 8234863: Increase default value of MaxInlineLevel
Reviewed-by: kvn, neliasso
2021-01-21 21:57:13 -05:00
serb
10fc5ddab4 8252679: Two windows specific FileDIalog tests may fail on some Windows_Server_2016_Standard
Reviewed-by: prr
2021-01-21 21:57:13 -05:00
shade
6589997f4f 8255065: Zero: accessor_entry misses the IRIW case
Reviewed-by: mdoerr
2021-01-21 21:57:12 -05:00
shade
b335abd5ba 8197981: Missing return statement in __sync_val_compare_and_swap_8
Reviewed-by: andrew, dholmes
2021-01-21 21:57:11 -05:00
shade
22a7c3d601 8254144: Non-x86 Zero builds fail with return-type warning in os_linux_zero.cpp
Reviewed-by: zgu
2021-01-21 21:57:11 -05:00
jjiang
dfaaa4bad2 8243549: sun/security/ssl/CipherSuite/NamedGroupsWithCipherSuite.java failed with Unsupported signature algorithm: DSA
Reviewed-by: xuelei
2021-01-21 21:57:10 -05:00
jjiang
6cf1b086b9 8224650: Add tests to support X25519 and X448 in TLS
Reviewed-by: xuelei
2021-01-21 21:57:10 -05:00
wetmore
3d7f44bda6 8171279: Support X25519 and X448 in TLS
Reviewed-by: xuelei, mullan
2021-01-21 21:57:09 -05:00
phh
4c1cb2b327 8255269: Unsigned overflow in g1Policy.cpp
Reviewed-by: yan
Contributed-by: William Kemper <kemperw@amazon.com>
2021-01-21 21:57:08 -05:00
hseigel
94e531fafc 8250984: Memory Docker tests fail on some Linux kernels w/o cgroupv1 swap limit capabilities
Reviewed-by: bobv, sgehwolf
2021-01-21 21:57:08 -05:00
clanger
34482f2d45 8255603: Memory/Performance regression after JDK-8210985
Reviewed-by: simonis, xuelei, aph
2021-01-21 21:57:07 -05:00
mdoerr
ba756da969 8254190: [s390] interpreter misses exception check after calling monitorenter
Reviewed-by: shade, rrich
2021-01-21 21:57:06 -05:00
serb
dded997fe2 8198334: java/awt/FileDialog/8003399/bug8003399.java fails in headless mode
Reviewed-by: pbansal, psadhukhan
2021-01-21 21:57:06 -05:00
chagedorn
e4cba90584 8249607: C2: assert(!had_error) failed: bad dominance
Summary: Fix prevented igvn optimization in SplitIf for LoadNodes which resulted in dominanance errors with loop strip mining.
Reviewed-by: roland, kvn
2021-01-21 21:57:05 -05:00
aefimov
1ad4bb39b8 8250772: Test com/sun/jndi/ldap/NamingExceptionMessageTest.java fails intermittently with javax.naming.ServiceUnavailableException
Reviewed-by: dfuchs
2021-01-21 21:57:04 -05:00
mgronlun
d9e062c03e 8252090: JFR: StreamWriterHost::write_unbuffered() stucks in an infinite loop OpenJDK (build 13.0.1+9)
Reviewed-by: hseigel
Contributed-by: Harold Seigel <harold.seigel@oracle.com>
2021-01-21 21:57:04 -05:00
iignatyev
30be19ce1b 8244142: some hotspot/runtime tests don't check exit code of forked JVM
Reviewed-by: gziemski, minqi
2021-01-21 21:57:03 -05:00
andrew
5f619d4a4d 8254177: (tz) Upgrade time-zone data to tzdata2020b
Summary: Remove obsolete systemv & pacificnew files and US/Pacific-New zone
Reviewed-by: yan
2021-01-21 21:57:02 -05:00
sviswanathan
c1e592568f 8254790: SIGSEGV in string_indexof_char and stringL_indexof_char intrinsics
Reviewed-by: kvn, thartmann
2021-01-21 21:57:02 -05:00
pli
ae7be26205 8237524: AArch64: String.compareTo() may return incorrect result
Reviewed-by: aph
2021-01-21 21:57:01 -05:00
shade
6ab515ca7f 8254166: Zero: return-type warning in zeroInterpreter_zero.cpp
Reviewed-by: sgehwolf
2021-01-21 21:57:00 -05:00
akolarkunnu
7908ea4a00 8248745: Add jarsigner and keytool tests for restricted algorithms
Reviewed-by: mullan, hchao
2021-01-21 21:57:00 -05:00
neliasso
87a402cce6 8244278: Excessive code cache flushes and sweeps
Reviewed-by: neliasso
Contributed-by: Man Cao <manc@google.com>
2021-01-21 21:56:59 -05:00
jiefu
da219becdc 8239886: Minimal VM build fails after JDK-8237499
Reviewed-by: dholmes
2021-01-21 21:56:58 -05:00
ddong
54d6fe8a30 8237499: JFR: Include stack trace in the ThreadStart event
Reviewed-by: egahlin
2021-01-21 21:56:58 -05:00
rhalade
8b674ce700 8249176: Update GlobalSignR6CA test certificates
Reviewed-by: xuelei
2021-01-21 21:56:56 -05:00
mhorie
fd882abe71 8248190: Enable Power10 system and implement new byte-reverse instructions
Reviewed-by: mdoerr, stuefe
Contributed-by: Jose Ziviani <joserz@linux.ibm.com>
2021-01-21 21:56:56 -05:00
neliasso
cee0a5a21b 8254185: Fix Code cache sweeper heuristics for JDK 11
Reviewed-by: thartmann, kvn
2021-01-21 21:56:55 -05:00
aefimov
08d859c5e1 8251189: com/sun/jndi/ldap/LdapDnsProviderTest.java failed due to timeout
Reviewed-by: dfuchs, vtewari
2021-01-21 21:56:54 -05:00
xyin
96f470b00d 8242614: cleanup duplicated test ldap server in some com/sun/jndi/ldap/ tests
Reviewed-by: aefimov, vtewari, dfuchs
2021-01-21 21:56:54 -05:00
xyin
98fd06a58d 8210339: Add 10 JNDI tests to com/sun/jndi/dns/FedTests/
Reviewed-by: vtewari, rriggs
2021-01-21 21:56:53 -05:00
xyin
2d7662cef9 8208542: Add 4 JNDI tests to com/sun/jndi/dns/ListTests/
Reviewed-by: vtewari, rriggs
2021-01-21 21:56:53 -05:00
xyin
bb5b8a47d2 8200151: Add 8 JNDI tests to com/sun/jndi/dns/ConfigTests/
Reviewed-by: vtewari, rriggs
2021-01-21 21:56:52 -05:00
xyin
ba0b40f364 8208483: Add 5 JNDI tests to com/sun/jndi/dns/FactoryTests/
Reviewed-by: vtewari, rriggs
2021-01-21 21:56:51 -05:00
xyin
d71e96da19 8208279: Add 8 JNDI tests to com/sun/jndi/dns/EnvTests/
Reviewed-by: vtewari, rriggs
2021-01-21 21:56:51 -05:00
rhalade
91cff3e686 8239105: Add exception for expiring Digicert root certificates to VerifyCACerts test
Summary: "8239105: added verisigntsaca and thawtepremiumserverca to EXPIRY_EXC_ENTRIES list"
Reviewed-by: mullan
2021-01-21 21:56:50 -05:00
shade
da5cfa80d9 8253284: Zero OrderAccess barrier mappings are incorrect
Reviewed-by: dholmes, aph, andrew
2021-01-21 21:56:49 -05:00
shade
739a0d94ed 8253778: ShenandoahSafepoint::is_at_shenandoah_safepoint should not access VMThread state from other threads
Reviewed-by: jiefu, rehn, rkennke
2021-01-21 21:56:49 -05:00
dtitov
e4a59bd712 8216324: GetClassMethods is confused by the presence of default methods in super interfaces
Reviewed-by: sspitsyn, amenkov
2021-01-21 21:56:48 -05:00
simonis
6ebab37627 8213698: Improve devkit creation and add support for linux/ppc64/ppc64le/s390x
Reviewed-by: erikj, ihse
2021-01-21 21:56:47 -05:00
roland
2437c2b79e 8252696: Loop unswitching may cause out of bound array load to be executed
Reviewed-by: neliasso, chagedorn
2021-01-21 21:56:47 -05:00
serb
9c64f005d4 8152332: [macosx] JFileChooser cannot be serialized on Mac OS X
Reviewed-by: pbansal, jdv
2021-01-21 21:56:46 -05:00
serb
13ff94ac5d 8240690: Race condition between EDT and BasicDirectoryModel.FilesLoader.run0()
Reviewed-by: psadhukhan
2021-01-21 21:56:45 -05:00
serb
9e3413ee97 8240633: Memory leaks in the implementations of FileChooserUI
Reviewed-by: pbansal, psadhukhan
2021-01-21 21:56:45 -05:00
sviswanathan
efd9998e42 8236944: The legVecZ operand should be limited to zmm0-zmm15 registers
Summary: Associate legVecZ operand with vectorz_reg_legacy register class
Reviewed-by: vlivanov, thartmann
2021-01-21 21:56:44 -05:00
lmesnik
6dce86ebc4 8161684: [testconf] Add VerifyOops' testing into compiler tiers
Reviewed-by: kvn
2021-01-21 21:56:44 -05:00
ngasson
6a5e116ae0 8248845: AArch64: stack corruption after spilling vector register
Reviewed-by: kvn
2021-01-21 21:56:42 -05:00
sgehwolf
1aba60c958 8251397: NPE on ClassValue.ClassValueMap.cacheArray
Summary: Add release fence to ClassValueMap constructor.
Reviewed-by: shade, psandoz
Contributed-by: Galder Zamarreno <galder@redhat.com>
2021-01-21 21:56:41 -05:00
jcm
ccc74a719c 8246381: VM crashes with "Current BasicObjectLock* below than low_mark"
Summary: save and restores "donotunlock" flag in check_and_handle_async_exceptions
Reviewed-by: coleenp, dholmes
2021-01-21 21:56:41 -05:00
mdoerr
1d46c49052 8225329: -XX:+PrintBiasedLockingStatistics causes crash during initialization on Windows platforms
Reviewed-by: stuefe, dholmes
2021-01-21 21:56:40 -05:00
dmarkov
7fe093cf22 8252470: java/awt/dnd/DisposeFrameOnDragCrash/DisposeFrameOnDragTest.java fails on Windows
Reviewed-by: serb, prr
2021-01-21 21:56:38 -05:00
dmarkov
02d123c56a 8232114: JVM crashed at imjpapi.dll in native code
Reviewed-by: serb, alitvinov
2021-01-21 21:56:38 -05:00
thartmann
fc9d253d07 8239477: jdk/jfr/jcmd/TestJcmdStartStopDefault.java fails -XX:+VerifyOops with "verify_oop: rsi: broken oop"
Summary: Use T_ADDRESS instead of T_OBJECT to load metadata.
Reviewed-by: kvn
2021-01-21 21:56:37 -05:00
ssahoo
a57acf85d5 8242335: Additional Tests for RSASSA-PSS
Summary: New Tests for RSASSA-PSS
Reviewed-by: valeriep
2021-01-21 21:56:36 -05:00
chagedorn
e1ef260c8d 8248791: sun/util/resources/cldr/TimeZoneNamesTest.java fails with -XX:-ReduceInitialCardMarks -XX:-ReduceBulkZeroing
Summary: Fix wrong replacement of loads by zero for non-completed InitializationNodes belonging to a clone when ReduceBulkZeroing is disabled.
Reviewed-by: kvn, thartmann
2021-01-21 21:56:36 -05:00
chagedorn
5cb8539ef7 8249605: C2: assert(no_dead_loop) failed: dead loop detected
Summary: Fixed dead loop detection in PhiNode::Ideal() to additionally account for dead MergeMemNodes
Reviewed-by: kvn, thartmann
2021-01-21 21:56:34 -05:00
mbaesken
c2832bdca3 8246648: issue with OperatingSystemImpl getFreeSwapSpaceSize in docker after 8242480
Reviewed-by: bobv, sgehwolf
2021-01-21 21:56:34 -05:00
jiefu
341d176e43 8242480: Negative value may be returned by getFreeSwapSpaceSize() in the docker
Reviewed-by: sgehwolf, dholmes
2021-01-21 21:56:33 -05:00
bobv
094ac647d8 8227006: [linux] Runtime.availableProcessors execution time increased by factor of 100
Reviewed-by: dholmes, sgehwolf, redestad
2021-01-21 21:56:33 -05:00
bobv
f2ac092d37 8224506: [TESTBUG] TestDockerMemoryMetrics.java fails with exitValue = 137
Reviewed-by: sgehwolf, mseledtsov
2021-01-21 21:56:32 -05:00
bobv
fae5f81fdd 8222533: jtreg test jdk/internal/platform/cgroup/TestCgroupMetrics.java fails on SLES12.3 linux ppc64le machine
Reviewed-by: mseledtsov, dholmes
2021-01-21 21:56:31 -05:00
naoto
0c621e96a6 8241311: Move some charset mapping tests from closed to open
Reviewed-by: iris, joehw, itakiguchi, amlu
2021-01-21 21:56:31 -05:00
shade
b845d916f0 8253226: Shenandoah: remove unimplemented ShenandoahStrDedupQueue::verify
Reviewed-by: rkennke, zgu
2021-01-21 21:56:30 -05:00
shade
521c6e6b50 8253224: Shenandoah: ShenandoahStrDedupQueue destructor calls virtual num_queues()
Reviewed-by: rkennke, zgu
2021-01-21 21:56:29 -05:00
valeriep
c783454707 8216012: Infinite loop in RSA KeyPairGenerator
Summary: Check and error out on even RSA public exponents
Reviewed-by: valeriep
Contributed-by: Masanori Yano <yano-masanori@fujitsu.com>
2021-01-21 21:56:29 -05:00
shade
cc127b2513 8208665: Amend cross-compilation docs with qemu-debootstrap recipe
Reviewed-by: martin, glaubitz, erikj
2021-01-21 21:56:28 -05:00
sundar
fdc81b4580 8242846: Bring back test/jdk/tools/jlink/plugins/OrderResourcesPluginTest.java
Reviewed-by: alanb, sundar
Contributed-by: Ao Qi <aoqi@loongson.cn>
2021-01-21 21:56:28 -05:00
iignatyev
8fe37f1355 8243619: compiler/codecache/CheckSegmentedCodeCache.java test misses -version
Reviewed-by: thartmann
2021-01-21 21:56:27 -05:00
chagedorn
7c7689c284 8249602: C2: assert(cnt == _outcnt) failed: no insertions allowed
Summary: Use DUIterator instead of DUIterator_Fast due to legit insertions.
Reviewed-by: kvn, thartmann
2021-01-21 21:56:26 -05:00
stefank
7149dc2118 8246434: Threads::print_on_error assumes that the heap has been set up
Reviewed-by: dholmes
2021-01-21 21:56:25 -05:00
ngasson
aba4cf9326 8242029: AArch64: skip G1 array copy pre-barrier if marking not active
Reviewed-by: aph
2021-01-21 21:56:24 -05:00
stefank
28110a97bd 8247201: Print potential pointer value of readable stack memory in hs_err file
Reviewed-by: eosterlund, dholmes, tschatzl
2021-01-21 21:56:23 -05:00
chagedorn
42d0b2714f 8248596: [TESTBUG] compiler/loopopts/PartialPeelingUnswitch.java times out with Graal enabled
Summary: Change C2 specific test to be executed only with server compiler.
Reviewed-by: roland, kvn, thartmann
2021-01-21 21:56:22 -05:00
sspitsyn
659a86e3a4 8224555: vmTestbase/nsk/jvmti/scenarios/contention/TC02/tc02t001/TestDescription.java failed
Summary: Improve synchronization in the test
Reviewed-by: dcubed, amenkov
2021-01-21 21:56:22 -05:00
jbachorik
cbb3a98a03 8252754: Hash code calculation of JfrStackTrace is inconsistent
Reviewed-by: egahlin
2021-01-21 21:56:21 -05:00
egahlin
0534cff8c3 8250928: JFR: Improve hash algorithm for stack traces
Reviewed-by: egahlin
Contributed-by: Gabriel Reid <gabriel.reid@datadoghq.com>
2021-01-21 21:56:21 -05:00
coleenp
1e6d3bd27a 8210088: ProblemList gc/epsilon/TestMemoryMXBeans.java
Reviewed-by: kbarrett, jiangli
2021-01-21 21:56:20 -05:00
shade
ea8bf3a792 8252660: Shenandoah: support manageable SoftMaxHeapSize option
Reviewed-by: zgu
2021-01-21 21:56:20 -05:00
andrew
4a4ca84e39 8222286: Fix for JDK-8213419 is broken on s390
Summary: Cast sizeof argument to log2_intptr to uintptr_t to remove ambiguity
Reviewed-by: aph, clanger
2021-01-21 21:56:19 -05:00
chagedorn
29c749a870 8248552: C2 crashes with SIGFPE due to division by zero
Summary: Bail out in PhaseIdealLoop:split_thru_phi when trying to split a Div or ModNode iv phi whose zero check was removed but could potentially still be zero based on type information.
Reviewed-by: kvn, thartmann
2021-01-21 21:56:19 -05:00
iignatyev
65c673e873 8243617: compiler/onSpinWait/TestOnSpinWaitC1.java test uses wrong class
Reviewed-by: thartmann
2021-01-21 21:56:18 -05:00
ljiang
39a5127d8f 8250665: Wrong translation for the month name of May in ar_JO,LB,SY
Reviewed-by: naoto
2021-01-21 21:56:18 -05:00
yan
14bf91f59b 8252497: Incorrect numeric currency code for ROL
Reviewed-by: naoto
2021-01-21 21:56:17 -05:00
valeriep
ece7a22aed 8236512: PKCS11 Connection closed after Cipher.doFinal and NoPadding
Summary: Removed killSession() calls in certain impl classes when cancelling operations
Reviewed-by: xuelei
2021-01-21 21:56:17 -05:00
sviswanathan
5edf0a5a18 8249672: Include microcode revision in features_string on x86
Reviewed-by: kvn, stuefe
Contributed-by: vladimir.a.ivanov@intel.com
2021-01-21 21:56:16 -05:00
chagedorn
1c12fa294a 8248226: TestCloneAccessStressGCM fails with -XX:-ReduceBulkZeroing
Summary: Taking GC barriers into account in LoadNode::find_previous_arraycopy() when ReduceInitialCardMarks is disabled.
Reviewed-by: kvn, roland
2021-01-21 21:56:16 -05:00
mdoerr
03c19f4da7 8241234: Unify monitor enter/exit runtime entries.
Reviewed-by: dcubed, coleenp
Contributed-by: Yudi Zheng <yudi.zheng@oracle.com>
2021-01-21 21:56:14 -05:00
ngasson
a2dd176afa 8237512: AArch64: aarch64TestHook leaks a BufferBlob
Reviewed-by: adinn, aph
2021-01-21 21:56:14 -05:00
bpb
d6f2d66235 8237186: Fix typo in copyright header of java/io/Reader/TransferTo.java
Reviewed-by: mchung, lancea, prappo
2021-01-21 21:56:13 -05:00
thartmann
7c718843a3 8251458: Parse::do_lookupswitch fails with "assert(_cnt >= 0) failed"
Summary: Limit the counter value to max_jint.
Reviewed-by: kvn, vlivanov, chagedorn
2021-01-21 21:56:13 -05:00
thartmann
73b7915762 8251456: [TESTBUG] compiler/vectorization/TestVectorsNotSavedAtSafepoint.java failed OutOfMemoryError
Summary: Removed allocation of large arrays to avoid OOME.
Reviewed-by: kvn, chagedorn
2021-01-21 21:56:12 -05:00
thartmann
e29237b197 8249608: Vector register used by C2 compiled method corrupted at safepoint
Summary: Always update 'max_vlen_in_bytes'.
Reviewed-by: kvn, vlivanov, chagedorn
2021-01-21 21:56:12 -05:00
chagedorn
60fb3522a9 8249603: C1: assert(has_error == false) failed: register allocation invalid
Summary: Added bailout in combine_spilled_intervals() to avoid an overlap between two intervals
Reviewed-by: kvn, thartmann
2021-01-21 21:56:11 -05:00
redestad
24a1d8e195 8220420: Cleanup c1_LinearScan
Reviewed-by: thartmann, neliasso
2021-01-21 21:56:11 -05:00
shade
d71b35062c 8251949: ZGC: Set explicit heap size for compiler/gcbarriers tests
Reviewed-by: pliden
2021-01-21 21:56:10 -05:00
serb
78895cf47f 8213535: Windows HiDPI html lightweight tooltips are truncated
Reviewed-by: kizune
2021-01-21 21:56:10 -05:00
prr
8c44afebf9 8245400: Upgrade to LittleCMS 2.11
Reviewed-by: serb, jdv
2021-01-21 21:56:09 -05:00
pchilanomate
e228d72cfb 8251118: BiasedLocking::preserve_marks should not have a HandleMark
Summary: Removed HandleMark from BiasedLocking::preserve_marks() method
Reviewed-by: hseigel, coleenp, dcubed, tschatzl, dholmes
2021-01-21 21:56:09 -05:00
tschatzl
51719b3e8c 8249192: MonitorInfo stores raw oops across safepoints
Summary: Change raw oops in MonitorInfo to Handles and update Resource/HandleMarks.
Reviewed-by: sspitsyn, dholmes, coleenp, dcubed
2021-01-21 21:56:08 -05:00
prr
24960a2c2a 8247867: Upgrade to freetype 2.10.2
Reviewed-by: serb
2021-01-21 21:56:08 -05:00
kvn
88e7487067 8248347: windows build broken by JDK-8243114
Reviewed-by: dcubed, dholmes
2021-01-21 21:56:07 -05:00
stooke
a8922e6e16 8243114: Implement montgomery{Multiply,Square}intrinsics on Windows
Reviewed-by: dholmes, andrew
Contributed-by: Andrew Haley <aph@redhat.com>
2021-01-21 21:56:07 -05:00
ysuenaga
a7083a3b57 8244819: hsdis does not compile with binutils 2.34+
Reviewed-by: kvn, thartmann
2021-01-21 21:56:06 -05:00
dbuck
05b6cf6205 8191006: hsdis disassembler plugin does not compile with binutils 2.29+
Summary: update call to disassembler() function to match new signature used by Binutils
Reviewed-by: gromero, kvn
2021-01-21 21:56:06 -05:00
kizune
57ee4e4733 8212226: SurfaceManager throws "Invalid Image variant" for MultiResolutionImage (Windows)
Reviewed-by: serb
2021-01-21 21:56:05 -05:00
roland
a5d280c81f 8247763: assert(outer->outcnt() == 2) failed: 'only phis' failure in LoopNode::verify_strip_mined()
Reviewed-by: kvn, thartmann
2021-01-21 21:56:05 -05:00
thartmann
9165fafc08 8237950: C2 compilation fails with "Live Node limit exceeded limit" during ConvI2L::Ideal optimization
Summary: Postpone ConvI2L::Ideal optimization to IGVN.
Reviewed-by: kvn, neliasso
2021-01-21 21:56:04 -05:00
poonam
30c9dc3799 8243290: Improve diagnostic messages for class verification and redefinition failures
Reviewed-by: coleenp, hseigel, sspitsyn
2021-01-21 21:56:04 -05:00
kvn
3a97a8e4ab 8227647: [Graal] Test8009761.java fails due to "RuntimeException: static java.lang.Object compiler.uncommontrap.Test8009761.m3(boolean,boolean) not compiled"
Summary: Wait Graal compilation to finish if request came from testing environment.
Reviewed-by: thartmann, iignatyev
2021-01-21 21:56:03 -05:00
serb
ba8b830efb 7185258: [macosx] Deadlock in SunToolKit.realSync()
Reviewed-by: prr
2021-01-21 21:56:03 -05:00
serb
4ec99bd75c 8241797: Add some tests to the problem list
Reviewed-by: jdv, prr, pbansal
2021-01-21 21:56:02 -05:00
coleenp
12ff105a3d 8218851: JVM crash in custom classloader stress test, JDK 12 & 13
Summary: Handle NULL and unloaded constraint class in loader constraint table, also cope with unloaded but not cleaned out klass in loader constraint entries.
Reviewed-by: hseigel, huntch, stuefe
2021-01-21 21:56:02 -05:00
weijun
428e88994d 8213400: Support choosing group name in keytool keypair generation
Reviewed-by: apetcher, xuelei
2021-01-21 21:56:01 -05:00
Alexey Ushakov
76351ec45e JBR-3023 Gray idea frame after project open with ide.mac.transparentTitleBarAppearance.
Reused apple.awt.fullWindowContent and apple.awt.transparentTitleBar client properties. Introduced the new one: apple.awt.windowTitleVisible
2021-01-21 23:27:57 +03:00
Elena Sayapina
50b24a147b JBR-1388 [TESTBUG] Regression test java/awt/Graphics2D/DrawString/LCDTextSrcEa.java fails on macOS Mojave 2021-01-21 17:32:30 +07:00
Vitaly Provodin
e00b5ee977 updated JTreg exclude list 2021-01-21 11:24:53 +07:00
Dmitry Batrak
ddda860f42 JBR-3038 Unexpected windows z-order change on workspace switch 2021-01-20 16:31:58 +03:00
Elena Sayapina
18580ed527 updated JTreg exclude list 2021-01-20 19:10:30 +07:00
Vitaly Provodin
1c2bf33db2 JBR-3040 press the button END at the beggining in order to avoid text selection 2021-01-20 16:03:12 +07:00
Vitaly Provodin
45cf0422f9 JBR-410 add golden emoji for macOS 10.15&11 x64 2021-01-20 16:03:12 +07:00
Elena Sayapina
515e38030d updated JTreg exclude lis 2021-01-20 14:39:16 +07:00
Dmitry Batrak
470c3bd1b5 JBR-3035 The Confirm Exit pop-up window remains hidden behind a window of another application 2021-01-19 13:53:03 +03:00
Dmitry Batrak
ee298f5287 JBR-3024 Popups are shown with 1x1 size sometimes 2021-01-15 17:49:24 +03:00
Dmitry Batrak
a7fd723e43 log LWCToolkit invokeAndWait requests
as part of JBR-3017, to make investigation of similar issues simpler in the future
2021-01-15 15:21:05 +03:00
Dmitry Batrak
7e6db54f77 fix occasional freezes of JBR-3017 reproducer after the fix 2021-01-15 15:21:04 +03:00
Dmitry Batrak
88ead5d9e3 JBR-3017 Focus issue in presence of third-party accessibility tool 2021-01-15 15:21:04 +03:00
Dmitry Batrak
eeef67a335 refactor nativeCreateNSWindow call wrapping
as part of JBR-3017
2021-01-15 15:21:02 +03:00
Dmitry Batrak
f1dd523ba8 remove excessive wrapping with AccessController (AWTThreading does it internally now)
as part of JBR-3017
2021-01-15 15:21:01 +03:00
Vitaly Provodin
84ff4eab21 JBR-1718 add a regression test 2021-01-14 05:34:23 +07:00
Vitaly Provodin
0e7f9ce4ca JBR-2957 notarize JBR and JBRSDK as APPL 2021-01-02 07:01:23 +07:00
Elena Sayapina
1714d7b627 JBR-2890 [TESTUPDATE] Enable jcef tests on macOS aarch64 platform 2020-12-29 20:37:14 +07:00
Dmitry Batrak
95be4351d4 JBR-2934 Serious usability issue with GoLand 2020.3 caused by JBR 2020-12-28 20:37:55 +03:00
Artem Bochkarev
8e6710213e JBR-2526: disable national layouts in osx-aarch64 2020-12-27 23:28:07 +03:00
Artem Bochkarev
1fe160783a Revert "JBR-2526: make CPlatformResponder logic the same as in openjdk"
This reverts commit d2ee9bd6
2020-12-27 23:11:36 +03:00
Alexander Lobas
a84736ebcc JBR-2893 Big Sur: Add support of opening project as tabs IDEA-257932 Big Sur: IDEA hangs after closing a project tab after exiting and entering full screen 2020-12-25 20:40:32 +03:00
Alexander Lobas
f02e31a440 JBR-2893 Big Sur: Add support of opening project as tabs IDEA-257932 Big Sur: IDEA hangs after closing a project tab after exiting and entering full screen 2020-12-25 20:40:32 +03:00
Alexey Ushakov
809ae5fedc Merge pull request #38 from trespasserw/patch-1
README: correcting proper nouns
2020-12-25 18:40:19 +03:00
Alexey Ushakov
8a58a000e3 Merge pull request #44 from bell-sw/update_188
jdk-11.0.9.1-ga update
2020-12-25 18:35:50 +03:00
Alexey Ushakov
bfc6ed7f6e Merge pull request #34 from JetBrains/mono/2.002
JetBrains Mono release 2.002
2020-12-25 18:33:11 +03:00
Alexey Ushakov
3dbd4af7ae JBR-1370 White square when running on dwm or bspwm
Added support of dwm via GDMSESSION env property
2020-12-24 10:29:54 -08:00
Dmitry Batrak
2d9fb9e7b8 JBR-2977 Opening a recent project in a new window doesn't bring this window to the front 2020-12-24 17:39:18 +03:00
Nikita Gubarkov
f37901ffb0 JBR-2910 Fixed fractional metrics for outline glyphs in freetypeScaler 2020-12-23 20:16:59 +03:00
Vitaly Provodin
e15dad041c JBR-667 add shenandoahgc feature 2020-12-23 08:35:17 +07:00
Vitaly Provodin
580a370d19 JBR-2956 add JNF into jbrsdk binaries & fix signing JBRSDK 2020-12-23 04:37:54 +07:00
Vitaly Provodin
7642ffdd5a JBR-2957 do not stop tar from including hidden ._ files in archives 2020-12-23 04:34:56 +07:00
Vitaly Provodin
d8443a1cbe JBR-2938 force codesign on macOS 2020-12-23 04:14:57 +07:00
Vitaly Provodin
0718402ff5 JBR-2526 specify default value for the architecture parameter 2020-12-23 04:14:56 +07:00
Artem Bochkarev
4281b031e6 JBR-2526: support aarch64 in build script 2020-12-23 04:14:55 +07:00
Artem Bochkarev
d2ee9bd66e JBR-2526: make CPlatformResponder logic the same as in openjdk
this fixes problems with keyboard input on BigSur-AARCH64
2020-12-23 04:14:54 +07:00
Artem Bochkarev
bf7d47e3bf JBR-2526: remove obsolete code
minor fixes for azul patches
2020-12-23 04:14:53 +07:00
Artem Bochkarev
4b519165aa ZULU-18344: Fix gtests to do W^X on VM code calls 2020-12-23 04:14:52 +07:00
Artem Bochkarev
ca1ab64827 8253791: Issue with useAppleColor check in CSystemColors.m
Reviewed-by: phh, lucy, serb
2020-12-23 04:14:52 +07:00
Artem Bochkarev
c18cb04d88 8253375: OSX build fails with Xcode 12.0 (12A7209)
Summary: Replace double array with short array in AdapterHandlerLibrary::create_native_wrapper, add parens around ?: in CSystemColors:getColor
Reviewed-by: prr, kbarrett, lucy
2020-12-23 04:14:51 +07:00
Artem Bochkarev
3b7443c997 ZULU-18865: Disable CDS on macarm 2020-12-23 04:14:50 +07:00
Artem Bochkarev
5fead08584 ZULU-18973: Support macarm builds on apple silicon host 2020-12-23 04:14:49 +07:00
Artem Bochkarev
598cf7049c ZULU-17241: MacARM: CPU feature detection 2020-12-23 04:14:48 +07:00
Artem Bochkarev
8a8349defe 8253015: Aarch64: Move linux code out from generic CPU feature detection
Reviewed-by: aph
2020-12-23 04:14:47 +07:00
Artem Bochkarev
bc4b8e593c Backed out changeset 43ca3f690588: ZULU-17255: Disable CPU feature detection 2020-12-23 04:14:46 +07:00
Artem Bochkarev
b67de1a1e3 Backed out changeset b5afa94104cb: ZULU-18140: Remove unexpected JVM output 2020-12-23 04:14:45 +07:00
Artem Bochkarev
370727ad41 ZULU-18362: Failure in runtime/NMT/CheckForProperDetailStackTrace.java - 'AllocateHeap' found in stdout 2020-12-23 04:14:44 +07:00
Artem Bochkarev
48cc9e5374 ZULU-18759: Implement SA for macarm 2020-12-23 04:14:42 +07:00
Artem Bochkarev
510fab2c07 ZULU-18361: [TESTBUG] Failure in runtime/CompressedOops/CompressedClassPointers.java - 'Narrow klass base: 0x0000000000000000' missing from stdout/stderr 2020-12-23 04:14:41 +07:00
Artem Bochkarev
aea9725329 ZULU-18130: Refactor ZULU-17389 for inclusion into openjdk 2020-12-23 04:14:41 +07:00
Artem Bochkarev
1bc60057f4 ZULU-18388: Fix X->W transition in JVMTI 2020-12-23 04:14:40 +07:00
Artem Bochkarev
81649c99de ZULU-18417: Implement JVMTI call declaration for mac_aarch64 2020-12-23 04:14:39 +07:00
Artem Bochkarev
d2cadcef11 ZULU-18387: zulu_macarm crashes in C1 when working with above 32-bit memory regions 2020-12-23 04:14:38 +07:00
Artem Bochkarev
ac4e1f5be0 ZULU-18290: [TESTBUG]Fix missing separator in ArgumentHandler.java 2020-12-23 04:14:37 +07:00
Artem Bochkarev
5d545329ad ZULU-18251: Update dt_shmem block list for many jdi tests 2020-12-23 04:14:36 +07:00
Artem Bochkarev
9e8db31e71 ZULU-18231: Make codesign to rewrite signature when signing 2020-12-23 04:14:35 +07:00
Artem Bochkarev
f8d7b9e0b9 ZULU-18202: Solaris builds are broken after ZULU-17910 on 13 and 11 part2 2020-12-23 04:14:34 +07:00
Artem Bochkarev
9c6f6f2a12 ZULU-18200: Solaris builds are broken after ZULU-17910 on 13 and 11 2020-12-23 04:14:33 +07:00
Artem Bochkarev
3e8f36e723 ZULU-18198: Solaris builds are broken after ZULU-17141 on 13 and 11 2020-12-23 04:14:32 +07:00
Artem Bochkarev
db476a1787 ZULU-18174: Make tier1 is broken with xcode12 2020-12-23 04:14:31 +07:00
Artem Bochkarev
740e6c6534 ZULU-17141: Lock JIT memory when executing 2020-12-23 04:14:29 +07:00
Artem Bochkarev
f317336a65 ZULU-17910: Import JDK-8234930: Use MAP_JIT when allocating pages for code cache on macOS
http://cr.openjdk.java.net/~akozlov/8234930/webrev.00/
2020-12-23 04:14:28 +07:00
Artem Bochkarev
49c7d75922 ZULU-17387: Port X18 exclusion patch from win_aarch64 jep 2020-12-23 04:14:27 +07:00
Artem Bochkarev
06e1ffdccb ZULU-17389: Support macos aarch64 packed abi 2020-12-23 04:13:56 +07:00
Artem Bochkarev
9398632bdb ZULU-18140: Remove unexpected JVM output 2020-12-23 04:13:23 +07:00
Artem Bochkarev
c762636c1a ZULU-17243: Implement aarch64_get_thread_helper 2020-12-23 04:13:22 +07:00
Artem Bochkarev
8e9b28f521 ZULU-17253: Disable SA for macos/aarch64 2020-12-23 04:12:56 +07:00
Artem Bochkarev
00c3e8774a ZULU-17145: Do not use objc_msgSend_stret 2020-12-23 04:12:29 +07:00
Artem Bochkarev
cfd633b9fe ZULU-17255: Disable CPU feature detection 2020-12-23 04:12:28 +07:00
Artem Bochkarev
79371ddf34 ZULU-17139: Add os_cpu/bsd_aarch64 based on linux_aarch64
ZULU-17386: Remove sigtrap leftovers from bsd_aarch64
2020-12-23 04:11:59 +07:00
Artem Bochkarev
73ac0cc856 8251930: Native types mismatch in hotspot 2020-12-23 04:11:57 +07:00
Artem Bochkarev
9718b44236 8250824: AArch64: follow up for JDK-8248414
Summary: The original change missed to update an assert.
Reviewed-by: dholmes
Contributed-by: monica.beckwith@microsoft.com, luhenry@microsoft.com, beurba@microsoft.com
2020-12-23 04:11:56 +07:00
Artem Bochkarev
3d9a4eef55 8248414: AArch64: Remove uses of long and unsigned long ints 2020-12-23 04:11:55 +07:00
Artem Bochkarev
6ef822dd72 ZULU-17909: Initial load 2020-12-23 04:11:46 +07:00
Artem Bochkarev
20750eaf89 ZULU-17256: Remove obsolete code in AWTView.m 2020-12-23 04:10:41 +07:00
Artem Bochkarev
072d69f050 8250876: Fix issues with cross-compile on macos
Reviewed-by: erikj, ihse
2020-12-23 04:10:40 +07:00
Artem Bochkarev
4754d939e5 8233787: Break cycle in vm_version* includes 2020-12-23 04:10:39 +07:00
Artem Bochkarev
9c5d643170 8211296: Remove HotSpot deprecation warning suppression for Mac/clang
Summary: Removed deprecation warning suppression, fixed uses of deprecated functions.
Reviewed-by: dholmes, mikael
2020-12-23 04:10:39 +07:00
Denis Konoplev
c811c295c2 JBR-2891: Post PhaseEvents in the begin and end of Magnify and Rotate 2020-12-22 14:25:31 +03:00
Dmitry Batrak
20fe78b650 JBR-2973 Copy/Move dialog not in the focus on drag-n-drop to Project Tool window from external application 2020-12-21 18:31:49 +03:00
Dmitry Batrak
9d86b4d235 JBR-2971 Log more information about window creation and property changes 2020-12-21 13:05:38 +03:00
Dmitry Batrak
0a9f16dc90 JBR-2907 [JCK] Font.equals(Font) returns false after serialization/deserialization. 2020-12-16 17:05:59 +03:00
Dmitry Batrak
53489fab27 IDEA-257525 Unable to show Chinese when using IDEA mac ARM version
fix typo
2020-12-16 09:32:11 +03:00
Dmitry Batrak
92b00d50b5 IDEA-257525 Unable to show Chinese when using IDEA mac ARM version
update following JR-CR-714
2020-12-15 19:35:57 +03:00
Artem Semenov
2e0b486c59 JR-CR-712 JBR-2928 In trees in which the root is not displayed, nodes of the first level are not pronounced 2020-12-15 13:48:16 +03:00
Dmitry Batrak
9b7113a6cf IDEA-257525 Unable to show Chinese when using IDEA mac ARM version
The proposed solution is to use a 'normal' font as a base for 'San Francisco' font fallback.
Most of its fallback components/candidates (provided by the OS) are expected to be normal
fonts as well, and so the resulting coverage of Unicode character repertoire should be much better.
2020-12-14 20:12:43 +03:00
Conor Cleary
8dc3fcd392 JBR-2932 backport fix for NetworkInterface/UniqueMacAddressesTest
8246741: NetworkInterface/UniqueMacAddressesTest: mac address uniqueness test failed

Reviewed-by: chegar, dfuchs
2020-12-11 18:37:05 +07:00
Elena Sayapina
4deb3bbe61 JBR-2585 [TESTBUG] TouchScreenEvent tests affect tests simulating mouse actions
- added workaround for JBR-2585
- added README.md about manual test run
- made an update to close LinuxTouchScreenDevice properly
- added an error exit from linux shell script if sudo password is empty or chown fails
2020-12-09 18:43:24 +07:00
Elena Sayapina
eda8e4d50e JBR-2657 [TESTBUG] ChainOfPopupsFocusTest misbehaving on Windows
- changed open popup shortcut from Ctrl+N to Ctrl+M, so no new explorer windows appear if desktop gets focused by error
- added a click on the main test frame, so it gets focus when running from background cygwin process on Windows, otherwise it just flashes on the taskbar
2020-12-09 18:38:45 +07:00
Sergey Bylokhov
84d4918aa2 IDEA-157583 Backport fix for Wrong popup menu position on dual screen
8223045: GraphicsEnvironment does not detect resolution changes in multiscreen systems

Reviewed-by: prr
2020-12-09 17:03:01 +07:00
Artem Semenov
c8d46c2c23 JR-CR-702 JBR-2785 Implement accessibility for JTRee 2020-12-08 16:43:11 +03:00
Artem Bochkarev
f8c0077b2f JBR-2562: log suppressed exception into jbr_err 2020-12-04 12:21:08 +03:00
Egor Ushakov
1437ff8717 fixed navigation to issues from vcs log 2020-12-02 19:18:25 +03:00
Artem Bochkarev
93cbab2f2d JBR-2562: fixed invokation of parent method 2020-12-02 12:56:59 +03:00
Artem Bochkarev
dd055b5970 JBR-2562: suppress exceptions from [NSWindow _changeJustMain]
temporary workaround to prevent crashes
2020-11-30 18:46:29 +03:00
Alexey Ushakov
2c8cdb221b JBR-2382 Provide detailed stack trace in crash dumps for unhandled ObjC exceptions
Used user home dir for jbr_err files. Removed logging with reportException method
2020-11-25 20:12:54 +03:00
Mikhail Grishchenko
d34d6528fe JBR-2890 Disable jcef tests on 32-bit and aarch64 platforms 2020-11-25 21:06:09 +07:00
Dmitry Batrak
1d525a2d2f added RobotSmokeTest
this test failing in jtreg launch most probably indicates either some problem with the environment (e.g. some windows left open from previously launched processes) or with java.awt.Robot implementation
2020-11-25 16:33:47 +03:00
Artem Semenov
3038fc95c6 JR-CR-698: JBR-2877 Fix accessibility Label for lists 2020-11-24 11:04:53 +03:00
Artem Semenov
10a30e2135 JR-CR-673: JBR-2649 A11y Make accessibility for JTable 2020-11-24 11:04:52 +03:00
Artem Semenov
b46c4429b4 [a11y] Renderer lists are not spoken: JBR-2457 2020-11-24 11:04:52 +03:00
Anton Tarasov
e51648f368 [a11y] Rename JavaAxObjectProvider and PlatformAxObject
Renamed:
  JavaAxObjectProvider -> JavaBaseProvider
  PlatformAxObject -> PlatformAxElement
  PlatformAxObjectProvider -> PlatformAxElementProvider

Reasoning:
  JavaBaseProvider provides JavaBaseAccessibility and subclasses
  PlatformAxElement inherits from NSAccessibilityElement
2020-11-24 11:04:52 +03:00
Anton Tarasov
235dbdc3f0 [a11y] Add getAccessibilityWindow to PlatformAxObject 2020-11-24 11:04:52 +03:00
Anton Tarasov
c8f68f23d9 [a11y] Add JavaElementAccessibility for all NSAccessibilityElement subclasses
- JavaElementAccessibility (and respective PlatformAxObject) is the base class for elements conforming to the new a11y protocol
2020-11-24 11:04:52 +03:00
Anton Tarasov
5cc0870756 [a11y] Split NSElementAccessibilty and NSObject hierarchies
- Mixing the two hierarchies does not work, so split it
- Implement binding b/w associated objects of the two hierarchies via new protocols: JavaAxObjectProvider, PlatformAxObjectProvider
2020-11-24 11:04:52 +03:00
Anton Tarasov
a50a5f1bea [a11y] Separate base part from JavaComponentAccessibility
- Create JavaBaseAccessibility and JavaListAccessibility for the new a11y
- Adopt NSAccessibilityList protocol (based on investigations by Artem Semenov)
- Use JavaComponentAccessibility for the legacy a11y
2020-11-24 11:04:52 +03:00
Alexey Ushakov
95a47810d5 JBR-2382 Provide detailed stack trace in crash dumps for unhandled ObjC exceptions
Used process workdir for jbr_err files. Added one more logging to reportException method
2020-11-23 21:04:02 +03:00
Alexey Ushakov
8cb0377a31 JBR-2879 Big Sur: Opening project in new window results in opening project in another tab
Disabled Tabbing mode for all NSWindows
2020-11-20 16:52:53 +03:00
Mikhail Grishchenko
66ad6472ae JBR-2412 [windows] mouse listener does not work for jcef
fixed test name in @run tag
2020-11-20 18:26:52 +07:00
Vitaly Provodin
0a37bf022c updated JTreg exclude list 2020-11-20 05:42:17 +07:00
Mikhail Grishchenko
bed977e88e JBR-2865 Disable jcef tests on 32-bit platforms 2020-11-19 18:24:03 +07:00
Mikhail Grishchenko
04246aac57 JBR-2412 [windows] mouse listener does not work for jcef
Rename test.
2020-11-19 17:53:12 +07:00
Artem Semenov
cd5682f5b9 JR-CR-693 JBR-2786 Create a manual test to test Accessibility in JTree 2020-11-19 12:09:09 +03:00
Anton Tarasov
bad748e3d0 JBR-2872 improve: JBR-2866 JCEF: Markdown editor steals focus from a different frame 2020-11-18 19:35:01 +03:00
Thejasvi Voniadka
176016c7db 8158880: test/java/time/tck/java/time/format/TCKDateTimeFormatterBuilder.java fail with zh_CN locale
Reviewed-by: naoto
2020-11-17 18:11:10 +07:00
Dmitry Batrak
98a9219c23 improve TitleBarClickTest stability on Linux 2020-11-17 13:47:56 +03:00
Anton Tarasov
697259b968 JBR-2866 JCEF: Markdown editor steals focus from a different frame 2020-11-16 19:39:10 +03:00
Dmitry Batrak
010f6fc951 fix WindowWithoutParentTest failures on Windows 2020-11-16 18:28:15 +03:00
Dmitry Batrak
e8bbd8ffdd add comments explaining delays used in focus tests 2020-11-16 18:06:23 +03:00
Dmitry Batrak
cd6dd5c3cf improve stability of focus tests on Linux
* use 'WINDOW_GAINED_FOCUS' event instead of 'WINDOW_OPENED' to track window creation - on Linux the latter can be dispatched before the window is actually mapped
* add additional delay before mouse click emulation - under GNOME, even if window is known to be mapped and focused, click at its location can be dispatched to another (underlying) window (probably because GNOME might not have updated its internal state right after new window appearing)
2020-11-16 18:03:27 +03:00
goetz
f9a5f5e009 Added tag jdk-11.0.9.1-ga for changeset 31affc22b3b5 2020-11-15 05:58:16 +07:00
thartmann
8b8d0ccb9a 8250861: Crash in MinINode::Ideal(PhaseGVN*, bool)
Summary: Added missing NULL checks.
Reviewed-by: kvn, chagedorn
2020-11-15 05:58:12 +07:00
goetz
c21fec4119 8255781: Bump patch update version for OpenJDK: jdk-11.0.9.1
Reviewed-by: clanger
2020-11-15 05:58:08 +07:00
Alexander Zuev
0fa5500adf JBR-2859 backport fix for JFrame memory leak
4907798: MEMORY LEAK: javax.swing.plaf.basic.BasicPopupMenuUI$MenuKeyboardHelper

Reviewed-by: psadhukhan, serb
2020-11-13 16:57:34 +07:00
goetz
9f835d753e Added tag jdk-11.0.9.1-ga for changeset 31affc22b3b5 2020-11-12 11:37:15 -05:00
thartmann
387470fc07 8250861: Crash in MinINode::Ideal(PhaseGVN*, bool)
Summary: Added missing NULL checks.
Reviewed-by: kvn, chagedorn
2020-11-12 11:28:35 -05:00
goetz
72a9541a6c 8255781: Bump patch update version for OpenJDK: jdk-11.0.9.1
Reviewed-by: clanger
2020-11-12 11:28:34 -05:00
Mikhail Grishchenko
b7cde4fd05 JBR-2639, JBR-2412 [jcef] Tests that checks mouse events 2020-11-12 17:49:21 +07:00
Vitaly Provodin
e89ed58cfa JBR-2853 fix issues with remote debugging 2020-11-12 06:18:23 +07:00
Dmitry Batrak
cd863bac0d JBR-2854 [macOS] Undecorated window without parent steals focus on showing 2020-11-10 19:12:08 +03:00
Dmitry Batrak
e94f6057a4 JBR-2847 Always dispatch KEY_TYPED event to the same component as KEY_PRESSED event
also fixes JBR-2834, IDEA-254466, IDEA-254466
2020-11-09 12:17:50 +03:00
Dmitry Batrak
e30ef51d71 revert fix for JBR-2834 (Typing happens in the editor when comparing editor to clipboard)
the problem will be fixed with JBR-2847
2020-11-08 17:03:05 +03:00
Dmitry Batrak
acd7e3b2da JBR-2843 No caret in merge window 2020-11-05 13:07:52 +03:00
Vitaly Provodin
83f1177a90 JBR-2846 fix misprint causing the jbrsdk-fastdebug build miss 2020-11-05 08:11:57 +07:00
Vitaly Provodin
5e7e8fcc97 updated JTreg exclude list 2020-11-04 05:01:09 +07:00
Dmitry Batrak
504c17b3b0 JBR-2834 Typing happens in the editor when comparing editor to clipboard 2020-10-30 12:07:15 +03:00
Vitaly Provodin
ca9d268797 merge DCEVM patches with update from bell-sw/update_11.0.9 2020-10-30 06:24:07 +07:00
Vitaly Provodin
967e760aa0 updated JTreg exclude list 2020-10-30 04:47:14 +07:00
Vitaly Provodin
8bed43092c Merge pull request #43 from bell-sw/update_11.0.9 2020-10-30 04:40:58 +07:00
Dmitry Batrak
89e519a4ef JBR-2819 Create API to determine typographic family/subfamily for available fonts 2020-10-28 10:41:55 +03:00
Vitaly Provodin
44bafba5fe JBR-2813 add patches containing a fix for metadataOnStack bug 2020-10-26 08:15:35 +07:00
Denis Konoplev
5acc7680a1 JBR-2490 Add option to work with Surface Pen 2020-10-23 11:42:02 +03:00
andrew
7408fa9ed9 Added tag jdk-11.0.9-ga for changeset 4397fa4529b2 2020-10-22 18:46:22 -04:00
prr
fb12c14831 8253019: Enhanced JPEG decoding
Reviewed-by: rhalade, mschoene, serb, psadhukhan
2020-10-22 18:45:39 -04:00
prr
7bf8eb1eb9 8248574: Improve jpeg processing
Reviewed-by: serb, jdv, mschoene, rhalade
2020-10-22 18:45:39 -04:00
jnimeh
1c1f5fd22f 8245417: Improve certificate chain handling
Reviewed-by: mullan, jnimeh, mbalao, andrew
Contributed-by: hai-may.chao@oracle.com
2020-10-22 18:45:38 -04:00
iklam
a5543e7396 8245412: Better class definitions
Reviewed-by: coleenp, rhalade, jwilhelm, skoivu, mbalao, andrew
2020-10-22 18:45:38 -04:00
naoto
d22040a4cd 8245407: Enhance zoning of times
Reviewed-by: rriggs, rhalade, skoivu
2020-10-22 18:45:37 -04:00
mullan
5b66b914fd 8244479: Further constrain certificates
Reviewed-by: ascarpino, ahgross, rhalade
2020-10-22 18:45:37 -04:00
bpb
bb41825c5b 8244136: Improved Buffer supports
Reviewed-by: alanb, ahgross, rhalade, psandoz
2020-10-22 18:45:37 -04:00
hseigel
7802653d57 8243302: Advanced class supports
Reviewed-by: coleenp, lfoltan, mschoene, rhalade
Contributed-by: harold.seigel@oracle.com
2020-10-22 18:45:36 -04:00
bpb
f1289c29b9 8242685: Better Path Validation
Reviewed-by: alanb, rhalade
2020-10-22 18:45:36 -04:00
bpb
e540ba996f 8242680: Improved URI Support
Reviewed-by: alanb, rhalade
2020-10-22 18:45:35 -04:00
thartmann
f0f38dfde8 8241114: Better range handling
Reviewed-by: kvn, vlivanov, rhalade, ahgross, mbalao, andrew
2020-10-22 18:45:35 -04:00
vkempik
3ff5734088 8244955: Additional Fix for JDK-8240124
Reviewed-by: mbalao, andrew
2020-10-22 18:45:34 -04:00
vkempik
098d97bd64 8240124: Better VM Interning
Reviewed-by: mbalao, andrew
2020-10-22 18:45:34 -04:00
mullan
f40d642800 8237995: Enhance certificate processing
Reviewed-by: weijun, rhalade, ahgross, erikj, mbalao, andrew
2020-10-22 18:45:33 -04:00
aefimov
9891148867 8237990: Enhanced LDAP contexts
Reviewed-by: dfuchs, robm, weijun, xyin, rhalade, ahgross
2020-10-22 18:45:33 -04:00
kravikumar
ed95bcd45a 8236862: Enhance support of Proxy class
8249927: Specify limits of jdk.serialProxyInterfaceLimit
Reviewed-by: rriggs, coffeys, andrew
2020-10-22 18:45:32 -04:00
egahlin
899a28c552 8236196: Improve string pooling
Reviewed-by: mgronlun, rehn, ahgross, jwilhelm, rhalade
2020-10-22 18:45:32 -04:00
vkempik
e101be357c 8233624: Enhance JNI linkage
Reviewed-by: dholmes, jrose, rhalade, mschoene, mbalao, andrew
2020-10-22 18:45:32 -04:00
goetz
da443a34b4 8253813: Backout JDK-8244287 from 11u: it causes several crashes
Reviewed-by: mdoerr, goetz
Contributed-by: jaroslav.bachorik@datadoghq.com, martin.doerr@sap.com
2020-10-22 18:45:31 -04:00
alvdavi
89da1e8daf 8250787: Provider.put no longer registering aliases in FIPS env
Summary: Allows parseLegacyPut to search algorithms added to the non-legacy map
Reviewed-by: mbalao
2020-10-22 18:45:31 -04:00
jbachorik
0f1f77659c 8244287: JFR: Methods samples have line number 0
Reviewed-by: goetz
2020-10-22 18:45:30 -04:00
clanger
905ff191da 8253283: [11u] Test build/translations/VerifyTranslations.java failing after JDK-8252258
Reviewed-by: goetz
2020-10-22 18:45:30 -04:00
phh
c9e0ac1f9f 8253134: JMM_VERSION should remain at 0x20020000 (JDK 10) in JDK 11
Summary: Change JMM_VERSION to 0x2002000, use @since 11.0.9 for c.s.m.ThreadMXBean.currentThreadAllocatedBytes
Reviewed-by: simonis
2020-10-22 18:45:29 -04:00
andrew
a26ac2cad8 8252258: [11u] JDK-8242154 changes the default vendor
Summary: Change the default vendor back to "Oracle Corporation"
Reviewed-by: clanger
2020-10-22 18:45:29 -04:00
simonis
26d260a938 8252804: [test] Fix 'ReleaseDeflater.java' test after downport of 8234011
Reviewed-by: phh
2020-10-22 18:45:28 -04:00
aefimov
51b08ef9b3 8062947: Fix exception message to correctly represent LDAP connection failure
Reviewed-by: dfuchs, xyin, vtewari
2020-10-22 18:45:28 -04:00
serb
45e863a853 8022535: [TEST BUG] javax/swing/text/html/parser/Test8017492.java fails
Reviewed-by: prr, pbansal
2020-10-22 18:45:27 -04:00
prappo
d252c95851 8151678: com/sun/jndi/ldap/LdapTimeoutTest.java failed due to timeout on DeadServerNoTimeoutTest is incorrect
Reviewed-by: dfuchs, martin, robm
2020-10-22 18:45:27 -04:00
prappo
8b7722cd74 8245981: Upgrade to jQuery 3.5.1
Reviewed-by: hannesw
2020-10-22 18:45:27 -04:00
tnakamura
ef6c86a47e 8233829: javac cannot find non-ASCII module name under non-UTF8 environment
Reviewed-by: jjg
2020-10-22 18:45:26 -04:00
alanb
46082dba1a 8243453: java --describe-module failed with non-ASCII module name under non-UTF8 environment
Reviewed-by: alanb
Contributed-by: Toshio Nakamura <toshiona@jp.ibm.com>
2020-10-22 18:45:26 -04:00
cgo
308588eec5 8234535: Cross compilation fails due to missing CFLAGS for the BUILD_CC
Reviewed-by: erikj
2020-10-22 18:45:25 -04:00
mbalao
7701382ce3 8250582: Revert Principal Name type to NT-UNKNOWN when requesting TGS Kerberos tickets
Reviewed-by: weijun
2020-10-22 18:45:25 -04:00
clanger
7a4385aefa 8160768: Add capability to custom resolve host/domain names within the default JNDI LDAP provider
Reviewed-by: alanb, dfuchs, chegar, mchung, vtewari, goetz
Contributed-by: rob.mckenna@oracle.com, christoph.langer@sap.com
2020-10-22 18:45:24 -04:00
xyin
697645c757 8241130: com.sun.jndi.ldap.EventSupport.removeDeadNotifier: java.lang.NullPointerException
Reviewed-by: dfuchs
2020-10-22 18:45:24 -04:00
jcbeyler
79ac49a4cc 8247615: Initialize the bytes left for the heap sampler
Summary: Initialize the heap sampler correctly before usage
Reviewed-by: sspitsyn, martin, manc
2020-10-22 18:45:23 -04:00
kbarrett
ef7399d356 8210131: vmTestbase/nsk/jvmti/scenarios/allocation/AP10/ap10t001/TestDescription.java failed with ObjectFree: GetCurrentThreadCpuTimerInfo returned unexpected error code
Summary: Expanded permitted threads to include all NamedThreads.
Reviewed-by: dcubed, sspitsyn
2020-10-22 18:45:23 -04:00
phh
17f5bc5b98 8252157: JDK-8231209 11u backport breaks jmm binary compatibility
Summary: Move jmm_GetOneThreadAllocatedMemory to reserved_2 jmm_interface slot
Reviewed-by: simonis, clanger
2020-10-22 18:45:22 -04:00
ysuenaga
8c49afc8f0 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 on Japanese Windows.
Reviewed-by: prr, serb
2020-10-22 18:45:22 -04:00
zgu
1ef499823d 8251487: Shenandoah: missing detail timing tracking for final mark cleaning phase
Reviewed-by: rkennke
2020-10-22 18:45:21 -04:00
valeriep
5094b9b5ee 8244151: Update MUSCLE PC/SC-Lite headers to the latest release 1.8.26
Summary: Updated from 1.8.24 to 1.8.26
Reviewed-by: xuelei
2020-10-22 18:45:21 -04:00
darcy
37896f558c 8226809: Circular reference in printed stack trace is not correctly indented & ambiguous
Reviewed-by: bpb
2020-10-22 18:45:20 -04:00
roland
07281583bd 8247824: CTW: C2 (Shenandoah) compilation fails with SEGV in SBC2Support::pin_and_expand
Reviewed-by: rkennke, thartmann
2020-10-22 18:45:20 -04:00
amenkov
a7108cbfc5 8212665: com/sun/jdi/DeferredStepTest.java: jj1 (line 57) - unexpected. lastLine=52, minLine=52, maxLine=55
Reviewed-by: jcbeyler, gadams, sspitsyn
2020-10-22 18:45:20 -04:00
amenkov
256eb1a6aa 8212629: [TEST] wrong breakpoint in test/jdk/com/sun/jdi/DeferredStepTest
Reviewed-by: cjplummer, jcbeyler
2020-10-22 18:45:19 -04:00
amenkov
6e1d1b3a9b 8211292: [TEST] convert com/sun/jdi/DeferredStepTest.sh test
Reviewed-by: sspitsyn, jcbeyler
2020-10-22 18:45:18 -04:00
amenkov
f523654c21 8209332: [TEST] test/jdk/com/sun/jdi/CatchPatternTest.sh is incorrect
Reviewed-by: jcbeyler, dtitov, cjplummer
2020-10-22 18:45:18 -04:00
amenkov
a0b9796b9f 8203928: [Test] Convert non-JDB scaffolding serviceability shell script tests to java
Reviewed-by: jcbeyler, cjplummer
2020-10-22 18:45:18 -04:00
amenkov
2d2730faf8 8210760: [TEST] rewrite com/sun/jdi shell tests to java version - step4
Reviewed-by: jcbeyler, sspitsyn, cjplummer
2020-10-22 18:45:17 -04:00
amenkov
83a7c4beda 8210725: com/sun/jdi/RedefineClearBreakpoint.java fails with waitForPrompt timed out after 60 seconds
8210748: [TESTBUG] lib.jdb.Jdb.waitForPrompt() should clarify which output is the pending reply after a timeout
Reviewed-by: jcbeyler, gadams, sspitsyn
2020-10-22 18:45:17 -04:00
amenkov
09cb3da751 8210560: [TEST] convert com/sun/jdi redefineClass-related tests
Reviewed-by: jcbeyler, sspitsyn
2020-10-22 18:45:16 -04:00
amenkov
a1507f6e90 8210243: [TEST] rewrite com/sun/jdi shell tests to java version - step3
Reviewed-by: jcbeyler, cjplummer, sspitsyn
2020-10-22 18:45:16 -04:00
amenkov
ae7606fe6c 8067354: com/sun/jdi/GetLocalVariables4Test.sh failed
Reviewed-by: jcbeyler, sspitsyn
2020-10-22 18:45:15 -04:00
amenkov
05b36c091c 8209604: [TEST] rewrite com/sun/jdi shell tests to java version - step2
Reviewed-by: jcbeyler, sspitsyn, cjplummer
2020-10-22 18:45:15 -04:00
amenkov
90dc74e1b9 8203393: com/sun/jdi/JdbMethodExitTest.sh and JdbExprTest.sh fail due to timeout
Reviewed-by: sspitsyn, cjplummer
2020-10-22 18:45:14 -04:00
amenkov
3e3444472e 8209605: com/sun/jdi/BreakpointWithFullGC.java fails with ZGC
Reviewed-by: sspitsyn, dholmes
2020-10-22 18:45:14 -04:00
amenkov
503586a51c 8209608: Problem list com/sun/jdi/BreakpointWithFullGC.java
Reviewed-by: mikael, dtitov, dcubed
2020-10-22 18:45:13 -04:00
amenkov
a327489b0f 8209517: com/sun/jdi/BreakpointWithFullGC.java fails with timeout
Reviewed-by: dcubed, mikael
2020-10-22 18:45:13 -04:00
amenkov
f99295be02 8209109: [TEST] rewrite com/sun/jdi shell tests to java version - step1
Reviewed-by: sspitsyn, jcbeyler
2020-10-22 18:45:12 -04:00
serb
564c903844 8251469: Better cleanup for test/jdk/javax/imageio/SetOutput.java
Reviewed-by: prr, pbansal
2020-10-22 18:45:12 -04:00
shade
1ea536d294 8252120: compiler/oracle/TestCompileCommand.java misspells "occured"
Reviewed-by: iignatyev
2020-10-22 18:45:11 -04:00
jpai
e5d9e1a4f8 8241138: http.nonProxyHosts=* causes StringIndexOutOfBoundsException in DefaultProxySelector
Reviewed-by: dfuchs, chegar
2020-10-22 18:45:11 -04:00
shade
70723e80ce 8244729: Shenandoah: remove resolve paths from SBSA::generate_shenandoah_lrb
Reviewed-by: rkennke
2020-10-22 18:45:10 -04:00
shade
55ba81e3d4 8250844: Make sure {type,obj}ArrayOopDesc accessors check the bounds
Reviewed-by: rrich, coleenp
2020-10-22 18:45:10 -04:00
zgu
62057eadd5 8245880: Shenandoah: check class unloading flag early in concurrent code root scan
Reviewed-by: shade
2020-10-22 18:45:09 -04:00
rkennke
b14e837e87 8251451: Shenandoah: Remark ObjectSynchronizer roots with I-U
Reviewed-by: shade
2020-10-22 18:45:09 -04:00
rkennke
868a4b8348 8241065: Shenandoah: remove leftover code after JDK-8231086
Reviewed-by: rkennke
Contributed-by: Charlie Gracie <charlie.gracie@microsoft.com>
2020-10-22 18:45:08 -04:00
rkennke
e3a31d2bbd 8222079: Don't use memset to initialize fields decode_env constructor in disassembler.cpp
Reviewed-by: dlong, stuefe, mdoerr
2020-10-22 18:45:08 -04:00
simonis
0a50aad915 8234011: (zipfs) Memory leak in ZipFileSystem.releaseDeflater()
Reviewed-by: clanger, lancea
2020-10-22 18:45:08 -04:00
dfuchs
43c4798b50 8230000: some httpclients testng tests run zero test
Summary: two tests needed to declared their test methods public, the last one was a simple abstract framework for subclasses and needed its @test keyword removed.
Reviewed-by: chegar, aefimov, dfuchs
Contributed-by: Julia Boes <julia.boes@oracle.com>
2020-10-22 18:45:07 -04:00
rkennke
d956cd691a 8249560: Shenandoah: Fix racy GC request handling
Reviewed-by: shade
2020-10-22 18:45:06 -04:00
jdv
51f5bc0aae 6532025: GIF reader throws misleading exception with truncated images
Reviewed-by: prr, bpb
2020-10-22 18:45:06 -04:00
amenkov
03c98cd7b0 8238710: LingeredApp doesn't log stdout/stderr if exits with non-zero code
Reviewed-by: cjplummer, sspitsyn
2020-10-22 18:45:06 -04:00
shade
175fceb89e 8241007: Shenandoah: remove ShenandoahCriticalControlThreadPriority support
Reviewed-by: adityam, shade
Contributed-by: Nikola Grcevski <nikola.grcevski@microsoft.com>
2020-10-22 18:45:05 -04:00
shade
80c4abef7b 8241574: Shenandoah: remove ShenandoahAssertToSpaceClosure
Reviewed-by: zgu, bmathiske, shade
Contributed-by: Charlie Gracie <charlie.gracie@microsoft.com>
2020-10-22 18:45:05 -04:00
rkennke
88f949d66f 8251354: Shenandoah: Fix jdk/jfr/tool/TestPrintJSON.java test failure
Reviewed-by: clanger, stuefe
2020-10-22 18:45:04 -04:00
erikj
19da89a193 8246094: [macos] Sound Recording and playback is not working
Reviewed-by: prr, serb
2020-10-22 18:45:04 -04:00
ysuenaga
8cab555838 8250826: jhsdb does not work with coredump which comes from Substrate VM
Reviewed-by: cjplummer, sspitsyn
2020-10-22 18:45:03 -04:00
mbalao
72a8d326e3 8251117: Cannot check P11Key size in P11Cipher and P11AEADCipher
Reviewed-by: valeriep
Contributed-by: zzambers@redhat.com
2020-10-22 18:45:03 -04:00
lmesnik
710c814a3d 8241478: vmTestbase/gc/gctests/Steal/steal001/steal001.java fails with OOME
Reviewed-by: tschatzl, kbarrett
2020-10-22 18:45:02 -04:00
coleenp
f12a95f6cd 8231953: Wrong assumption in assertion in oop::register_oop
Summary: On ARM32 thumb mode, the pc of the current frame is always zero
Reviewed-by: coleenp, dcubed
Contributed-by: christoph.goettschkes@microdoc.com
2020-10-22 18:45:02 -04:00
joehw
980226f337 8230094: CCE in createXMLEventWriter(Result) over an arbitrary XMLStreamWriter
Reviewed-by: lancea
2020-10-22 18:45:01 -04:00
rhalade
8a22af8929 8243320: Add SSL root certificates to Oracle Root CA program
Reviewed-by: mullan
2020-10-22 18:45:01 -04:00
kvn
a9507bbe7a 8248987: AOT's Linker.java seems to eagerly fail-fast on Windows
Summary: Treat all problems in getVC141AndNewerLinker() as non-fatal. Print error messages with --verbose flag.
Reviewed-by: iignatyev, iveresov
2020-10-22 18:45:00 -04:00
shade
7b06c4f724 8249953: Shenandoah: gc/shenandoah/mxbeans tests should account for corner cases
Reviewed-by: rkennke
2020-10-22 18:45:00 -04:00
rkennke
dcf11b2f29 8249801: Shenandoah: Clear soft-refs on requested GC cycle
Reviewed-by: shade
2020-10-22 18:44:59 -04:00
lancea
8089f329af 8212807: tools/jar/multiRelease/Basic.java times out
Reviewed-by: bchristi
2020-10-22 18:44:59 -04:00
rfield
20ec00a07e 8223688: JShell: crash on the instantiation of raw anonymous class
Reviewed-by: jlahoda
2020-10-22 18:44:58 -04:00
rfield
e7ff20c013 8210527: JShell: NullPointerException in jdk.jshell.Eval.translateExceptionStack
8232855: jshell missing word in /help help
Reviewed-by: jlahoda
2020-10-22 18:44:58 -04:00
rfield
44e6abfbc3 8211694: JShell: Redeclared variable should be reset
Reviewed-by: sundar
2020-10-22 18:44:58 -04:00
jjg
9d174c2b84 8234687: change javap reporting on unknown attributes
Reviewed-by: mchung
2020-10-22 18:44:57 -04:00
chegar
f85669d99e 8225037: java.net.JarURLConnection::getJarEntry() throws NullPointerException
Reviewed-by: coffeys, vtewari
2020-10-22 18:44:56 -04:00
lmesnik
7bf0cd4cf8 8241319: WB_GetCodeBlob doesn't have ResourceMark
Reviewed-by: iignatyev, thartmann
2020-10-22 18:44:56 -04:00
phh
024b17cd07 8234541: C1 emits an empty message when it inlines successfully
Summary: Use "inline" as the message when successfull
Reviewed-by: thartmann, mdoerr
Contributed-by: navy.xliu@gmail.com
2020-10-22 18:44:56 -04:00
mli
dccbd0645a 8134599: TEST_BUG: java/rmi/transport/closeServerSocket/CloseServerSocket.java fails intermittently with Address already in use
Reviewed-by: weijun, darcy, rriggs, coffeys
2020-10-22 18:44:55 -04:00
xyin
cbd80b1dff 8202117: com/sun/jndi/ldap/RemoveNamingListenerTest.java fails intermittently: Connection reset
Reviewed-by: dfuchs, vtewari
2020-10-22 18:44:55 -04:00
itakiguchi
e97f001647 8232161: Align some one-way conversion in MS950 charset with Windows
Summary: MS950 charset encoder's conversion table is changed
Reviewed-by: naoto
2020-10-22 18:44:54 -04:00
fyang
288cb01d1e 8221658: aarch64: add necessary predicate for ubfx patterns
Reviewed-by: aph
2020-10-22 18:44:54 -04:00
fyang
58e50eade3 8250609: C2 crash in IfNode::fold_compares
Reviewed-by: kvn, chagedorn
Contributed-by: wanghuang3@huawei.com
2020-10-22 18:44:53 -04:00
zgu
b5bfaf2468 8250827: Shenandoah: needs to reset/finish StringTable's dead count before/after parallel walk
Reviewed-by: rkennke
2020-10-22 18:44:53 -04:00
serb
60b928fe4c 8250755: Better cleanup for jdk/test/javax/imageio/plugins/shared/CanWriteSequence.java
Reviewed-by: jdv
2020-10-22 18:44:52 -04:00
sgehwolf
c2f5f25ee6 8250627: Use -XX:+/-UseContainerSupport for enabling/disabling Java container metrics
Reviewed-by: aph, dholmes, bobv, shade
2020-10-22 18:44:52 -04:00
fyuan
e16a88ee6c 8230010: Remove jdk8037819/BasicTest1.java
8230002: javax/xml/jaxp/unittest/transform/SecureProcessingTest.java runs zero test
Reviewed-by: joehw, vtewari
2020-10-22 18:44:51 -04:00
dfuchs
7f90bbf2fc 8208281: java/nio/channels/AsynchronousSocketChannel/Basic.java timed out
Summary: modify the test to accept the peer socket before closing the client socket
Reviewed-by: alanb
2020-10-22 18:44:51 -04:00
joehw
6e6d2b85d4 8233686: XML transformer uses excessive amount of memory
Summary: remove unnecessary object creation and also update xalan.md file
Reviewed-by: lancea
2020-10-22 18:44:50 -04:00
coleenp
fd99818ccd 8233386: Initialize NULL fields for unused decorations
Reviewed-by: shade, hseigel, dcubed
2020-10-22 18:44:50 -04:00
lancea
8c43f76d41 8230870: (zipfs) Add a ZIP FS test that is similar to test/jdk/java/util/zip/EntryCount64k.java
Reviewed-by: clanger, martin
2020-10-22 18:44:50 -04:00
jlahoda
77b9fb7dae 8221759: Crash when completing \"java.io.File.path\"
Summary: Do not provide documentation for inaccessible elements.
Reviewed-by: rfield
2020-10-22 18:44:49 -04:00
vlivanov
e390eafb22 8247502: PhaseStringOpts crashes while optimising effectively dead code
Reviewed-by: kvn, thartmann
2020-10-22 18:44:49 -04:00
neliasso
f65a021bf0 8226536: Catch OOM from deopt that fails rematerializing objects
Reviewed-by: vlivanov, thartmann
2020-10-22 18:44:48 -04:00
rhalade
0d12b95241 8243321: Add Entrust root CA - G4 to Oracle Root CA program
Reviewed-by: mullan
2020-10-22 18:44:48 -04:00
rkennke
fbf2030820 8250784: Shenandoah: A Low-Pause-Time Garbage Collector
Reviewed-by: aph, kdnilsen, adityam
2020-10-22 18:44:47 -04:00
mikael
d131ad342c 8237182: Update copyright header for shenandoah and epsilon files
Reviewed-by: iignatyev, zgu
2020-10-22 18:44:46 -04:00
sviswanathan
793e0ddfa6 8224234: compiler/codegen/TestCharVect2.java fails in test_mulc
Reviewed-by: vlivanov, thartmann
2020-10-22 18:44:46 -04:00
sviswanathan
bee394f465 8222074: Enhance auto vectorization for x86
Reviewed-by: kvn, vlivanov
2020-10-22 18:44:45 -04:00
erikj
bf58975c4e 8249255: Build fails if source code in cygwin home dir
Reviewed-by: tbell
2020-10-22 18:44:45 -04:00
jjiang
3616dee7a0 8243029: Rewrite javax/net/ssl/compatibility/Compatibility.java with a flexible interop test framework
Reviewed-by: xuelei
2020-10-22 18:44:44 -04:00
stuefe
76af57e5d9 8223777: In posix_spawn mode, failing to exec() jspawnhelper does not result in an error
Reviewed-by: rriggs, martin, fweimer
2020-10-22 18:44:44 -04:00
bsrbnd
f93f4ab75e 8193367: Annotated type variable bounds crash javac
Reviewed-by: mcimadamore, vromero
2020-10-22 18:44:43 -04:00
valeriep
ad19522db0 8242556: Cannot load RSASSA-PSS public key with non-null params from byte array
Summary: Update AlgorithmId to use alg name before oid str when parsing DER bytes
Reviewed-by: mullan
2020-10-22 18:44:43 -04:00
vkempik
b26694a0f9 8238284: [macos] Zero VM build fails due to an obvious typo
Reviewed-by: goetz
2020-10-22 18:44:42 -04:00
amenkov
36ab405269 8204994: SA might fail to attach to process with "Windbg Error: WaitForEvent failed"
Reviewed-by: sspitsyn, cjplummer
2020-10-22 18:44:42 -04:00
vkempik
4620397dbe 8248495: [macos] zerovm is broken due to libffi headers location
Reviewed-by: ihse, erikj
2020-10-22 18:44:42 -04:00
fyang
a42c526b18 8248851: CMS: Missing memory fences between free chunk check and klass read
Reviewed-by: aph, kbarrett, dholmes
Contributed-by: wangshuai94@huawei.com
2020-10-22 18:44:41 -04:00
fyang
14c7fe0b61 8247979: aarch64: missing side effect of killing flags for clearArray_reg_reg
Reviewed-by: adinn
Contributed-by: wangyadong4@huawei.com
2020-10-22 18:44:41 -04:00
ysuenaga
e6cfd63ecd 8238388: libj2gss/NativeFunc.o "multiple definition" link errors with GCC10
Summary: Fixed libj2gss link errors caused by GCC10 default -fno-common
Reviewed-by: weijun
2020-10-22 18:44:40 -04:00
ysuenaga
b625ec36f2 8238386: (sctp) jdk.sctp/unix/native/libsctp/SctpNet.c "multiple definition" link errors with GCC10
Summary: Fixed libsctp link errors caused by GCC10 default -fno-common
Reviewed-by: chegar
2020-10-22 18:44:40 -04:00
ysuenaga
9f8b577206 8238380: java.base/unix/native/libjava/childproc.c "multiple definition" link errors with GCC10
Reviewed-by: stuefe, clanger, rriggs
Contributed-by: patrick@os.amperecomputing.com
2020-10-22 18:44:39 -04:00
arapte
00e9dff047 8249278: Revert JDK-8226253 which breaks the spec of AccessibleState.SHOWING for JList
Reviewed-by: prr, serb
2020-10-22 18:44:39 -04:00
mbaesken
4defecb1ea 8236617: jtreg test containers/docker/TestMemoryAwareness.java fails after 8226575
Reviewed-by: bobv, clanger, mdoerr, adinn
2020-10-22 18:44:38 -04:00
sgehwolf
ea22d2debd 8226575: OperatingSystemMXBean should be made container aware
Reviewed-by: adinn
2020-10-22 18:44:38 -04:00
pbansal
4d9f67b93b 8249251: [dark_mode ubuntu 20.04] The selected menu is not highlighted in GTKLookAndFeel
Reviewed-by: serb, prr
2020-10-22 18:44:37 -04:00
joehw
aae6ac4f69 8248348: Regression caused by the update to BCEL 6.0
Reviewed-by: smarks, plevart
2020-10-22 18:44:37 -04:00
jlahoda
f3765eca39 8244763: Update --release 8 symbol information after JSR 337 MR3
Reviewed-by: jjg, wetmore
2020-10-22 18:44:36 -04:00
hchao
9350c687e0 8245151: jarsigner should not raise duplicate warnings on verification
Reviewed-by: weijun
2020-10-22 18:44:36 -04:00
naoto
af7e73eb27 8234347: "Turkey" meta time zone does not generate composed localized names
8236548: Localized time zone name inconsistency between English and other locales
Reviewed-by: joehw, rriggs
2020-10-22 18:44:35 -04:00
vromero
48341a9b4f 8213703: LambdaConversionException: Invalid receiver type not a subtype of implementation type interface
Reviewed-by: mcimadamore
2020-10-22 18:44:35 -04:00
shade
7781717e37 8213182: Minimal VM build failure after JDK-8212200 (assert when shared java.lang.Object is redefined by JVMTI agent)
Reviewed-by: dholmes, iklam
2020-10-22 18:44:34 -04:00
goetz
6f7c21121a 8249277: TestVerifyIterativeGVN.java is failing with timeout in OpenJDK 11
Summary: See also 8248521: TestVerifyIterativeGVN.java is failing with timeout
Reviewed-by: mbaesken, chagedorn
2020-10-22 18:44:34 -04:00
sshivang
ac7bb087e4 8246330: Add TLS Tests for Legacy ECDSA curves
Reviewed-by: rhalade
2020-10-22 18:44:33 -04:00
jjiang
ce59727cb2 8249159: Downport test rework for SSLSocketTemplate from 8224650
Reviewed-by: mbaesken
2020-10-22 18:44:33 -04:00
xuelei
f2da7b5e8c 8236464: SO_LINGER option is ignored by SSLSocket in JDK 11
Reviewed-by: ascarpino
2020-10-22 18:44:32 -04:00
erikj
d8dc0ea467 8213214: Set -Djava.io.tmpdir= when running tests
Reviewed-by: alanb, mikael
2020-10-22 18:44:32 -04:00
hannesw
1f39a87a62 8240169: javadoc fails to link to non-modular api docs
Reviewed-by: jjg
2020-10-22 18:44:31 -04:00
weijun
b11f050cfd 8227595: keytool/fakegen/DefaultSignatureAlgorithm.java fails due to "exitValue = 6"
Reviewed-by: mullan
2020-10-22 18:44:31 -04:00
phh
ff039d5fe4 8231968: getCurrentThreadAllocatedBytes default implementation s/b getThreadAllocatedBytes
Summary: Pass Thread.currentThread().getId() to getThreadAllocatedBytes, remove its implSpec
Reviewed-by: dholmes, mchung, sspitsyn
2020-10-22 18:44:30 -04:00
phh
9f836984f1 8231209: [REDO] ThreadMXBean::getThreadAllocatedBytes() can be quicker for self thread
Summary: Add com.sun.management.getCurrentThreadAllocatedBytes, implement getThreadAllocatedBytes(long) independent of getThreadAllocatedBytes(long[])
Reviewed-by: mchung, dholmes, sspitsyn
2020-10-22 18:44:30 -04:00
shade
56fd51cd53 8221918: runtime/SharedArchiveFile/serviceability/ReplaceCriticalClasses.java fails: Shared archive not found
Reviewed-by: jiangli, dholmes
2020-10-22 18:44:29 -04:00
iklam
282c7b3195 8213275: ReplaceCriticalClasses.java fails with jdk.internal.vm.PostVMInitHook not found
Reviewed-by: lfoltan, sspitsyn, shade
2020-10-22 18:44:29 -04:00
iklam
0eeb0f5772 8212200: assert when shared java.lang.Object is redefined by JVMTI agent
Reviewed-by: dholmes, jiangli, hseigel, lfoltan, sspitsyn
2020-10-22 18:44:29 -04:00
vkempik
d9cc1dae70 8243470: [macos] bring back O2 opt level for unsafe.cpp
Summary: Remove special case for unsafe.cpp on clang macos
Reviewed-by: erikj, ihse
2020-10-22 18:44:28 -04:00
never
ece8fcc91b 8247246: Add explicit ResolvedJavaType.link and expose presence of default methods
Reviewed-by: kvn, sgehwolf, adinn
Contributed-by: Foivos Zakkak <fzakkak@redhat.com>
2020-10-22 18:44:27 -04:00
mseledtsov
4d01f061fb 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
Summary: Using InetAddress.getLocalHost()
Reviewed-by: egahlin, lmesnik
Contributed-by: Severin Gehwolf <sgehwolf@redhat.com>
2020-10-22 18:44:27 -04:00
psadhukhan
8318f44a43 8203281: [Windows] JComboBox change in ui when editor.setBorder() is called
Reviewed-by: psadhukhan
Contributed-by: mraz.martin.dev@gmail.com
2020-10-22 18:44:27 -04:00
chagedorn
75f5e42208 8246203: Segmentation fault in verification due to stack overflow with -XX:+VerifyIterativeGVN
Summary: Replace the recursive verification algorithm with an iterative one to avoid a stack overflow for large graphs.
Reviewed-by: kvn, thartmann
2020-10-22 18:44:26 -04:00
chagedorn
85da04fb94 8244719: CTW: C2 compilation fails with "assert(!VerifyHashTableKeys || _hash_lock == 0) failed: remove node from hash table before modifying it"
Summary: Fix Parse::Block::init_graph() to also count predecessors for exception blocks because they can have a direct bytecode jump to them resulting in this assertion failure.
Reviewed-by: kvn, thartmann
2020-10-22 18:44:26 -04:00
weijun
5c79be3ac4 8242184: CRL generation error with RSASSA-PSS
Reviewed-by: xuelei
2020-10-22 18:44:25 -04:00
kevinw
92e0697af3 8240295: hs_err elapsed time in seconds is not accurate enough
Reviewed-by: dholmes, sspitsyn
2020-10-22 18:44:25 -04:00
valeriep
ac1091da41 8238448: RSASSA-PSS signature verification fail when using certain odd key sizes
Summary: Calculate and set offset for correct verification for such key sizes
Reviewed-by: xuelei
2020-10-22 18:44:24 -04:00
amenkov
a78c0a9dbb 8235846: Improve WindbgDebuggerLocal implementation
Reviewed-by: sspitsyn, cjplummer
2020-10-22 18:44:24 -04:00
weijun
728f1ee8b2 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
Reviewed-by: xuelei
2020-10-22 18:44:23 -04:00
fyang
792e69edc6 8248219: aarch64: missing memory barrier in fast_storefield and fast_accessfield
Reviewed-by: aph
Contributed-by: songyaofei2@huawei.com
2020-10-22 18:44:23 -04:00
naoto
27c4c1ae43 8218948: SimpleDateFormat :: format - Zone Names are not reflected correctly during run time
Reviewed-by: lancea, rgoel
2020-10-22 18:44:22 -04:00
roland
6a410fc890 8240676: Meet not symmetric failure when running lucene on jdk8
Reviewed-by: kvn, thartmann
2020-10-22 18:44:22 -04:00
qpzhang
155efb6dce 8248214: Add paddings for TaskQueueSuper to reduce false-sharing cache contention
Summary: This is a downport of a part of JDK-8243326
Reviewed-by: goetz, clanger
2020-10-22 18:44:21 -04:00
iklam
fa1e491340 8203382: Rename SystemDictionary::initialize_wk_klass to resolve_wk_klass
Reviewed-by: jiangli
2020-10-22 18:44:21 -04:00
dtitov
35ecf979a3 8246196: javax/management/MBeanServer/OldMBeanServerTest fails with AssertionError
Reviewed-by: amenkov, dholmes, sspitsyn
2020-10-22 18:44:21 -04:00
kvn
f32fefb57a 8247350: [aarch64] assert(false) failed: wrong size of mach node
Summary: use movptr() to load address of string
Reviewed-by: adinn, azeemj
2020-10-22 18:44:20 -04:00
goetz
ea9a7e808c 8248385: [testbug][11u] Adapt TestInitiExceptions to jtreg 5.1
Summary: Downport fix for TestInitException from 8246387
Reviewed-by: clanger
2020-10-22 18:44:20 -04:00
weijun
42b2ce754a 8244087: 2020-04-24 public suffix list update
Reviewed-by: mullan
2020-10-22 18:44:19 -04:00
thartmann
ece3569549 8246153: TestEliminateArrayCopy fails with -XX:+StressReflectiveCode
Summary: Use the memory input instead of the control input to find the membar.
Reviewed-by: kvn, neliasso
2020-10-22 18:44:19 -04:00
bobv
73d45929ea 8245832: JDK build make-static-libs should build all JDK libraries
Reviewed-by: erikj, aph
2020-10-22 18:44:18 -04:00
thartmann
a2fc77de24 8246453: TestClone crashes with "all collected exceptions must come from the same place"
Summary: Set deoptimize_on_exception for slow paths.
Reviewed-by: neliasso
2020-10-22 18:44:18 -04:00
chagedorn
310f6de15a 8239083: C1 assert(known_holder == NULL || (known_holder->is_instance_klass() && (!known_holder->is_interface() || ((ciInstanceKlass*)known_holder)->has_nonstatic_concrete_methods())), "should be non-static concrete method");
Summary: Remove unnecessary preparation to profile the holder of a static method called by a method handle in C1.
Reviewed-by: thartmann, kvn
2020-10-22 18:44:17 -04:00
weijun
22d21b77a7 8246193: Possible NPE in ENC-PA-REP search in AS-REQ
Reviewed-by: xuelei
2020-10-22 18:44:17 -04:00
aoqi
1039a2a78c 8246027: Minimal fastdebug build broken after JDK-8245801
Summary: Added COMPILER2_PRESENT macro
Reviewed-by: shade, thartmann
2020-10-22 18:44:16 -04:00
thartmann
c5525de5f0 8245801: StressRecompilation triggers assert "redundunt OSR recompilation detected. memory leak in CodeCache!"
Summary: Assert is too strong.
Reviewed-by: roland
2020-10-22 18:44:16 -04:00
xyin
d5b5777bed 8243138: Enhance BaseLdapServer to support starttls extended request
Reviewed-by: aefimov, dfuchs
2020-10-22 18:44:15 -04:00
prr
c5be925d70 8220150: macos10.14 Mojave returns anti-aliased glyphs instead of aliased B&W glyphs
Reviewed-by: serb, kcr
2020-10-22 18:44:15 -04:00
rraghavan
3336e5a993 8228448: Jconsole can't connect to itself
Summary: Additions done to allow jconsole to connect to itself
Reviewed-by: erikj
Contributed-by: ramkumar.sunderbabu@oracle.com
2020-10-22 18:44:14 -04:00
gadams
f1b9ac5b74 8203026: java.rmi.NoSuchObjectException: no such object in table
Reviewed-by: rriggs, sspitsyn
2020-10-22 18:44:14 -04:00
weijun
71417ea192 8172404: Tools should warn if weak algorithms are used before restricting them
Reviewed-by: mullan, weijun
Contributed-by: Hai-May Chao <hai-may.chao@oracle.com>
2020-10-22 18:44:14 -04:00
sgehwolf
72a603ebfb 8247874: Replacement in VersionProps.java.template not working when --with-vendor-bug-url contains '&'
Summary: Backports parts of 8223319: Add copyright footer to specs and man pages
Reviewed-by: andrew, phh
2020-10-22 18:44:13 -04:00
psadhukhan
b02e5c6dbb 8209343: Test javax/swing/border/TestTitledBorderLeak.java should be marked as headful
Reviewed-by: jdv
2020-10-22 18:44:13 -04:00
psadhukhan
292903d050 8234385: [TESTBUG] java/awt/EventQueue/6980209/bug6980209.java fails in linux nightly
Reviewed-by: serb
2020-10-22 18:44:12 -04:00
jjiang
14f80f197a 8228967: Trust/Key store and SSL context utilities for tests
Reviewed-by: xuelei, mbaesken
2020-10-22 18:44:12 -04:00
egahlin
301391b751 8230767: FlightRecorderListener returns null recording
Reviewed-by: mseledtsov, mgronlun
2020-10-22 18:44:11 -04:00
michaelm
9366c54ad3 8233958: Memory retention due to HttpsURLConnection finalizer that serves no purpose
Reviewed-by: dfuchs, rriggs
2020-10-22 18:44:11 -04:00
afarley
36272958ae 8229378: jdwp library loader in linker_md.c quietly truncates on buffer overflow
Summary: Check buffer overflow when the jdwp agent full dll name is built
Reviewed-by: cjplummer, sspitsyn, andrew
2020-10-22 18:44:10 -04:00
mbaesken
51aaccc7b6 8244196: adjust output in os_linux
Reviewed-by: dholmes, mdoerr
2020-10-22 18:44:10 -04:00
mbaesken
5aecb93b5e 8243389: enhance os::pd_print_cpu_info on linux
Reviewed-by: dholmes, mdoerr
2020-10-22 18:44:09 -04:00
ddong
110ad3d6dc 8240360: NativeLibraryEvent has wrong library name on Linux
Reviewed-by: ysuenaga, clanger
2020-10-22 18:44:09 -04:00
amenkov
eb335668c7 8244703: "platform encoding not initialized" exceptions with debugger, JNI
Reviewed-by: alanb, sspitsyn
2020-10-22 18:44:08 -04:00
goetz
5edbfcd631 8244225: stringop-overflow warning on strncpy call from compile_the_world_in
Reviewed-by: aph
2020-10-22 18:44:08 -04:00
psadhukhan
34f48c3c25 8234149: Several regression tests do not dispose Frame at end
Reviewed-by: serb
2020-10-22 18:44:08 -04:00
xuelei
1a908f2143 8223940: Private key not supported by chosen signature algorithm
Reviewed-by: valeriep
2020-10-22 18:44:07 -04:00
rehn
d5b78cd8c4 8213574: Deadlock in string table expansion when dumping lots of CDS classes
Reviewed-by: jiangli, iklam, dholmes
2020-10-22 18:44:07 -04:00
roland
d00809040a 8245714: "Bad graph detected in build_loop_late" when loads are pinned on loop limit check uncommon branch
Reviewed-by: thartmann
2020-10-22 18:44:06 -04:00
mullan
83e3a4f792 8237888: security/infra/java/security/cert/CertPathValidator/certification/LuxTrustCA.java fails when checking validity interval
Reviewed-by: xuelei
2020-10-22 18:44:06 -04:00
erikj
872a3be669 8216021: RunTest.gmk might set concurrency level to 1 on Windows
Reviewed-by: ctornqvi, tbell
2020-10-22 18:44:05 -04:00
ascarpino
6d53cf16f8 8233228: Disable weak named curves by default in TLS, CertPath, and Signed JAR
Reviewed-by: mullan, xuelei, weijun
2020-10-22 18:44:05 -04:00
prr
c9d3a45626 6949753: [TEST BUG]: java/awt/print/PageFormat/PDialogTest.java needs update by removing a infinite loop
Reviewed-by: jdv
2020-10-22 18:44:04 -04:00
chagedorn
939d481396 8230402: Allocation of compile task fails with assert: "Leaking compilation tasks?"
Summary: Remove assert that is only hit with hand written edge case tests.
Reviewed-by: kvn, thartmann
2020-10-22 18:44:04 -04:00
cjplummer
569ede41a0 8214797: TestJmapCoreMetaspace.java timed out
Reviewed-by: dcubed
2020-10-22 18:44:03 -04:00
jjiang
2b4e4637e6 8237977: Further update javax/net/ssl/compatibility/Compatibility.java
Reviewed-by: rhalade
2020-10-22 18:44:03 -04:00
darcy
511f78097c 8233452: java.math.BigDecimal.sqrt() with RoundingMode.FLOOR results in incorrect result
Reviewed-by: bpb, dfuchs
2020-10-22 18:44:02 -04:00
kvn
db08174fd1 8233741: AES Countermode (AES-CTR) optimization using AVX512 + VAES instructions
Reviewed-by: kvn
Contributed-by: smita.kamath@intel.com, regev.shemy@intel.com, shay.gueron@intel.com
2020-10-22 18:44:02 -04:00
srukmannagar
01dd0e2432 8225625: AES Electronic Codebook (ECB) encryption and decryption optimization using AVX512 + VAES instructions
Summary: AES-ECB encryption and decryption optimization for x86_64 architectures supporting AVX3+VAES
Reviewed-by: kvn, valeriep
Contributed-by: shravya.rukmannagari@intel.com, smita.kamath@intel.com
2020-10-22 18:44:01 -04:00
prr
4ed81251c5 8226697: Several tests which need the @key headful keyword are missing it.
Reviewed-by: serb
2020-10-22 18:44:01 -04:00
mbalao
0cb7085706 8239385: KerberosTicket client name refers wrongly to sAMAccountName in AD
Reviewed-by: weijun
2020-10-22 18:44:00 -04:00
jbachorik
5cb460ee1d 8243489: Thread CPU Load event may contain wrong data for CPU time under certain conditions
Reviewed-by: jbachorik
Contributed-by: Nikolay Martynov <nikolay.martynov@datadoghq.com>
2020-10-22 18:44:00 -04:00
hseigel
dcabdc3f8c 8234058: runtime/CompressedOops/CompressedClassPointers.java fails with 'Narrow klass base: 0x0000000000000000' missing from stdout/stderr
Summary: Don't run test on Windows because ASLR can cause unexpected memory addresses
Reviewed-by: coleenp
2020-10-22 18:43:59 -04:00
jlahoda
9c82b4a1fa 8229815: Upgrade Jline to 3.12.1
Reviewed-by: rfield
2020-10-22 18:43:59 -04:00
never
6c1953558c 8233027: OopMapSet::all_do does oms.next() twice during iteration
Reviewed-by: shade, kvn
2020-10-22 18:43:58 -04:00
never
b3819957e5 8232083: Minimal VM is broken after JDK-8231586
Reviewed-by: dlong
2020-10-22 18:43:57 -04:00
never
74a916cc26 8231586: enlarge encoding space for OopMapValue offsets
Reviewed-by: dlong
2020-10-22 18:43:57 -04:00
tnakamura
e9e9a2b097 8224184: jshell got IOException at exiting with AIX
Reviewed-by: rfield, jlahoda
2020-10-22 18:43:57 -04:00
jlahoda
c1a84aca31 8215244: jdk/jshell/ToolBasicTest.java testHistoryReference failed
Summary: Mark history entries from previous sessions with timestamp that is definitelly in the past.
Reviewed-by: rfield
2020-10-22 18:43:56 -04:00
rschmelter
622fbd4f12 8219712: code_size2 (defined in stub_routines_x86.hpp) is too small on new Skylake CPUs
Reviewed-by: mbaesken, dholmes, kvn
2020-10-22 18:43:56 -04:00
shade
82d723bfe2 8215354: x86_32 build failures after JDK-8214074 (Ghash optimization using AVX instructions)
Reviewed-by: thartmann
2020-10-22 18:43:55 -04:00
ascarpino
4efed15025 8214074: Ghash optimization using AVX instructions
Reviewed-by: kvn, ascarpino
Contributed-by: smita.kamath@intel.com
2020-10-22 18:43:55 -04:00
egahlin
457295440e 8210977: jdk/jfr/event/oldobject/TestThreadLocalLeak.java fails to find ThreadLocalObject
Reviewed-by: mgronlun, mseledtsov
2020-10-22 18:43:54 -04:00
jlahoda
81330e61e0 8215438: jshell tool: Ctrl-D causes EOF
Summary: Properly handling EndOfFileException so that jshell can be closed with Ctrl-D.
Reviewed-by: rfield
2020-10-22 18:43:54 -04:00
jlahoda
0c8610cf4d 8215243: JShell tests failing intermitently with \"Problem cleaning up the following threads:\"
Summary: Do not reset closed state in the StopDetectingInputStream.write
Reviewed-by: rfield
2020-10-22 18:43:53 -04:00
jlahoda
586dfe6b76 8214491: Upgrade to JLine 3.9.0
Summary: Upgrading JLine to 3.9.0 and updating jshell and jjs to the new JLine.
Reviewed-by: rfield, sundar
2020-10-22 18:43:53 -04:00
sballal
35af20e342 8209342: Problemlist SA tests on Solaris due to Error attaching to process: Can't create thread_db agent!
Reviewed-by: dcubed, iklam, jgeorge
2020-10-22 18:43:52 -04:00
coleenp
d56e6f97a7 8206309: Tier1 SA tests fail
Summary: remove tests that should have been removed with JDK-8205534
Reviewed-by: hseigel
2020-10-22 18:43:52 -04:00
coleenp
7e571bb76b 8205534: Remove SymbolTable dependency from serviceability agent
Reviewed-by: gziemski, poonam, jgeorge, hseigel
2020-10-22 18:43:51 -04:00
ngasson
de1643f260 8244164: AArch64: jaotc generates incorrect code for compressed OOPs with non-zero heap base
Reviewed-by: aph
2020-10-22 18:43:51 -04:00
goetz
36e4dd081b 8245616: Bump update version for OpenJDK: jdk-11.0.9
Reviewed-by: clanger
2020-10-22 18:43:50 -04:00
bpb
e2c56236da 8242695: Enhanced buffer support
Reviewed-by: alanb, rhalade, mbalao, andrew
2020-10-22 18:43:34 -04:00
dfuchs
32394a0091 8238270: java.net HTTP/2 client does not decrease stream count when receives 204 response
Summary: The HTTP/2 Stream is updated to register a trivial data subscriber in case of 204 so that the END_STREAM is correctly processed.
Reviewed-by: chegar
2020-10-22 18:43:33 -04:00
dfuchs
3a2177dcd5 8216974: HttpConnection not returned to the pool after 204 response
Summary: MultiExchange now call nullBody() on Exchange after receiving 204
Reviewed-by: chegar
2020-10-22 18:43:32 -04:00
serb
b66a21a9d1 8243925: Toolkit#getScreenInsets() returns wrong value on HiDPI screens (Windows)
Reviewed-by: prr, psadhukhan
2020-10-22 18:43:32 -04:00
Dmitry Batrak
f5b6222835 JBR-2712 Typeahead mechanism doesn't work on Windows
fix issue with newly opened popup not being recognized by screen reader
2020-10-22 11:26:58 +03:00
Vitaly Provodin
557b87f774 JBR-2810 refactor dcevm patches 2020-10-21 05:12:40 +07:00
Denis Konoplev
bf3e1c0c31 JBR-2795: Add explicit conversion 2020-10-19 20:08:36 +03:00
Dmitry Batrak
b20c56ff3e JBR-2759, JBR-2798 Typeahead issue on Linux
remove test that fails after the fix
there doesn't seem to be a sense in fixing an applet-related behaviour (captured in a synthetic test), when testing with a real applet isn't possible
2020-10-19 17:38:48 +03:00
Dmitry Batrak
a507cab6d3 JBR-2696 Log focus API invocations with stack traces
add com.apple.eawt.Application.requestForeground to the set of logged requests
2020-10-19 15:56:08 +03:00
Phil Race
35fc070473 JBR-2790 backport the fix from OpenJDK
8244818: Java2D Queue Flusher crash while moving application window to external monitor

Reviewed-by: serb, jdv, kcr
2020-10-16 17:09:46 +07:00
Vitaly Provodin
1813c24330 JBR-2762 add patch fixing DCEVM JVM Crashes on sun.instrument.InstrumentationImpl.retransformClasses method 2020-10-16 17:09:14 +07:00
Dmitry Batrak
76bdaf1131 JBR-2759 Typeahead issue on Linux 2020-10-15 13:32:30 +03:00
Vitaly Provodin
fcc56cc8a2 JBR-2787 fix copying jcef files into jbr/jbrsdk binaries 2020-10-15 08:56:23 +07:00
Dmitry Batrak
1a9838082e JBR-2712 Typeahead mechanism doesn't work on Windows 2020-10-13 13:12:03 +03:00
Dmitry Batrak
d60027e12b JBR-2778 Revert fix for JBR-1973 (IDEA-215004)
This reverts commit c8b3c854
2020-10-12 12:40:03 +03:00
Rajan Halade
bd27263ec7 JBR-2774 Backport: Updated GetPolicyQualifiers.java test
8254081: java/security/cert/PolicyNode/GetPolicyQualifiers.java fails due to an expired certificate

Perform backdated validation of test certificate.

Reviewed-by: mullan, xuelei
2020-10-09 16:25:53 +07:00
Vitaly Provodin
27eafd8a53 Remove jogl and gluegen modules from module-info and modules list
These modules will be added via patch during building corresponding JBR binaries
2020-10-06 07:18:50 +07:00
Anton Tarasov
96da1139c0 Add jogl and gluegen modules to support jcef osr mode
OSR - off-screen rendering
2020-10-05 20:52:49 +03:00
Vitaly Provodin
668570bc61 JBR-2758 refactor building scripts to apply patches adding required modules instead of excluding them 2020-10-05 17:03:54 +07:00
Vitaly Provodin
d3ec3d899d JBR-2736 provide writeObjects implementation for copying files/folders (fix review notes) 2020-10-02 13:52:15 +07:00
Mikhail Grishchenko
d1479872f2 JBR-2412 [windows] mouse listener does not work for jcef
added regression test
2020-09-30 19:43:42 +07:00
Mikhail Grishchenko
e8e4741bb0 JBR-2639 [win] jcef does not recognize vertical mouse wheel events
added regression test
2020-09-30 12:53:32 +07:00
Andrey Starovoyt
33db034d49 JBR-2736 provide writeObjects implementation for copying files/folders from Project Explorer to the Finder 2020-09-30 06:50:13 +07:00
Roman Shevchenko
6a85e88e94 README: correcting proper nouns 2020-09-29 21:45:34 +02:00
Vitaly Provodin
8b7ad2e58f updated JTreg exclude list 2020-09-29 06:20:36 +07:00
Artem Semenov
696a9a4128 JR-CR-667 JBR-2738 Create a test for JTable Accessibility 2020-09-28 13:01:39 +03:00
Artem Semenov
54bb49caeb Review JR-CR-645 JBR-2504 A11y Create a test to test the accessibility of lists on MAc
(cherry picked from commit 92e40bf92c00fb5ce46dff41fc23ad39e460fcc1)
2020-09-25 12:55:34 +03:00
Vitaly Provodin
9c0afe3a7d updated JTreg exclude list 2020-09-24 05:04:33 +07:00
Dmitry Batrak
6dd334f9f0 JBR-2648 Cannot input Japanese and Chinese text in Search Everywhere
code being removed (added to fix JRE-665) is not needed after JBR-2533 fix, as 'simple' windows are natively focused now
2020-09-23 17:27:37 +03:00
Dmitry Batrak
96dd8fcf48 JBR-2735 PopupIncomingFocusTest is failing on KDE when launched via jtreg 2020-09-23 12:47:19 +03:00
Egor Ushakov
9b960dd02a navigation to issues from vcs log 2020-09-16 15:38:20 +03:00
Mikhail Grishchenko
6b7d5fd58c updated JTreg exclude list 2020-09-16 16:25:07 +07:00
Dmitry Batrak
ebcdeb7d80 JBR-2698 setAutoRequestFocus(false) breaks focus logic under i3 window manager on Linux 2020-09-11 11:11:17 +03:00
Vitaly Provodin
67870df19e updated JTreg exclude list 2020-09-11 10:36:59 +07:00
Nikita Gubarkov
afd19dbefd JBR-2614 Fixed LCD glyph width to include both left & right padding, so that rowBytes = width * 3 2020-09-10 15:45:25 +03:00
Nikita Gubarkov
a55097289b Revert "JBR-2614 Passed real glyph type from native code instead of guessing on rowBytes & width"
This reverts commit 8de39b80
2020-09-10 15:39:00 +03:00
Nikita Gubarkov
8de39b80cd JBR-2614 Passed real glyph type from native code instead of guessing on rowBytes & width 2020-09-10 01:50:34 +03:00
Dmitry Batrak
0f038754e5 JBR-2696 Log focus API invocations with stack traces 2020-09-07 14:19:43 +03:00
Vitaly Provodin
4aa278e4a0 Revert "JBR-2577 implemented precise CompilationMXBean#getTotalCompilationTime"
This reverts commit 89163e73
2020-09-07 16:44:40 +07:00
Vitaly Provodin
e3562ecc99 Revert "thread.cpp:4574:43: error: ‘nullptr’ quick fix"
This reverts commit 82a36017
2020-09-07 16:44:20 +07:00
Vitaly Provodin
b62d47da9c updated JTreg exclude list 2020-09-06 06:27:20 +07:00
MonoBot
715e8d345a Fonts release 2.002 2020-08-27 14:05:47 +03:00
Vitaly Provodin
e748f39e20 updated JTreg exclude list 2020-08-26 11:41:35 +07:00
Brian Burkhalter
428ade4fd8 8221852: SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE should be selected at runtime, not build time
Reviewed-by: alanb, shade
2020-08-24 11:36:15 +07:00
Alexey Ushakov
e28ff71e97 JBR-2617 Text with opacity renders black
Some more adjustments in font thickness for dark text. Added JVM properties for fine tuning
2020-08-21 23:52:21 +03:00
Elena Sayapina
f826eb992e IDEA-242347: [TESTUPDATE] Added a comment 2020-08-20 18:10:47 +07:00
Denis Konoplev
ba3f14c83a JBR-2669: set unicode for both keyCode and extendedKeyCode 2020-08-19 21:56:51 +03:00
Alexey Titov
82a3601748 thread.cpp:4574:43: error: ‘nullptr’ quick fix 2020-08-19 14:58:35 +03:00
Kirill Kirichenko
eeab5252e6 JBR-2667 Post review: rename win.darkTheme.on to win.lightTheme.on and reversed the logic 2020-08-19 11:32:58 +03:00
Alexey Ushakov
838bbedd1a Merge pull request #33 from JetBrains/alexey.titov/precise-compilation-time
JBR-2577 implemented precise CompilationMXBean#getTotalCompilationTime
2020-08-18 17:40:47 +03:00
Kirill Kirichenko
0e4ad056dd JBR-2667 Add new AWT desktop property for light/dark theme detection on Windows 10 2020-08-18 14:12:37 +03:00
Alexey Titov
89163e73d0 JBR-2577 implemented precise CompilationMXBean#getTotalCompilationTime 2020-08-13 15:37:22 +03:00
Dmitry Batrak
665ebc5d47 JBR-2652 Window is not focused in some cases on Linux 2020-08-11 13:44:58 +03:00
denis.konoplev
32b1c35305 IDEA-242347: Remove sun.awt.event.KeyEvent import 2020-08-10 12:25:10 +03:00
Alexey Ushakov
55c7be5fe9 JBR-2617 Text with opacity renders black
Minor adjustments of dark text according to UX-1320
2020-08-07 19:52:02 +03:00
denis.konoplev
5017e2e385 IDEA-242347: Remove redundant conversion for Latin unicode 2020-08-07 15:00:02 +03:00
Anton Tarasov
492c217125 JBR-2645 enable CefBrowser.close(true) in jcef reg tests 2020-08-06 16:19:03 +03:00
Alexey Ushakov
269c9580fb JBR-2617 Text with opacity renders black
Corrected bright text thickness (smooth on), bright and dark text thickness (smooth off)
2020-08-06 13:47:28 +03:00
Elena Sayapina
5f691bb788 JBR-2630 Typing speed in IDE editor was dropped after switching to 11.0.8
Introduced sun.awt.osx.RobotSafeDelayMillis property to control macOS specific safe delay for Robot methods.
50 ms safe delay was initially hardcoded in 3862142d (JDK-8242174: [macos] The NestedModelessDialogTest test make the macOS unstable) which affected performance tests execution.
2020-08-06 12:29:37 +07:00
Vitaly Provodin
bcdd2242ef JBR-2634 add facilities generating windows fastdebug builds 2020-08-06 09:53:42 +07:00
Rahul Yadav
faee138574 8240666: Websocket client’s OpeningHandshake discards the HTTP response body
The fix updates jdk.internal.net.http.websocket. OpeningHandshake.send() method to process the response body from server

Reviewed-by: chegar, dfuchs, prappo
(cherry picked from commit ed24927500)
2020-08-05 15:32:40 +07:00
Daniel Fuchs
fb69e212ba 8236859: WebSocket over authenticating proxy fails with NPE
This change fixes several issues with WebSocket and proxy authentication. The AuthenticationFilter is changed to support an authenticating server accessed through an authenticating proxy. MultiExchange is fixed to close the previous connection if a new connection is necessary to establish the websocket (websocket connections are not cached and must be closed in that case). WebSocket OpeningHandshake is fixed to close the connection (without creating the RawChannel) if the opening handshake doesn't result in 101 upgrade protocol.

Reviewed-by: prappo, chegar
(cherry picked from commit c6da6681d4)
2020-08-05 15:32:40 +07:00
Daniel Fuchs
d8cc648a18 8216478: Cleanup HttpResponseImpl back reference to HttpConnection
Retain a reference to Exchange and HttpConnection only when necessary, i.e. for WebSocket initial connection.

Reviewed-by: chegar
(cherry picked from commit ad67fe1baf)
2020-08-05 15:32:40 +07:00
Julia Boes
15d2b6217d 8232853: AuthenticationFilter.Cache::remove may throw ConcurrentModificationException
Change implementation to use iterator instead of plain LinkedList

Reviewed-by: dfuchs, vtewari
(cherry picked from commit d948bfd584)
2020-08-05 15:32:40 +07:00
Michael McMahon
b92f4a73b4 8199849: Add support for UTF-8 encoded credentials in HTTP Basic Authentication
Reviewed-by: chegar, dfuchs
(cherry picked from commit e3b6b7f842)
2020-08-05 15:32:40 +07:00
Michael McMahon
5f0e3bcd37 8217237: HttpClient does not deal well with multi-valued WWW-Authenticate challenge headers
Reviewed-by: chegar, dfuchs
(cherry picked from commit d089a4ae51)
2020-08-05 15:32:40 +07:00
Chris Hegarty
e6f336ae8b 8217429: WebSocket over authenticating proxy fails to send Upgrade headers
Reviewed-by: dfuchs, prappo
(cherry picked from commit 46f4ab603b)
2020-08-05 15:32:40 +07:00
Brian Burkhalter
7c0f78edf1 8227080: (fs) Files.newInputStream(...).skip(n) is slow
Reviewed-by: sbordet, rriggs, fweimer
(cherry picked from commit c6c82dd736)
2020-08-05 15:22:14 +07:00
Brian Burkhalter
a2ba1bd211 8215467: Files.isHidden should return true for hidden directories on Windows
Reviewed-by: alanb, bchristi, darcy
(cherry picked from commit 5c5d27962a)
2020-08-05 15:22:14 +07:00
Alexey Ushakov
c95adeb8f2 JBR-2617 Text with opacity renders black
Fix compilation on windows
2020-08-04 20:58:47 +03:00
Alexey Ushakov
c30306f779 JBR-2617 Text with opacity renders black
Implemented alpha blending in grayscale text rendering
2020-08-04 19:09:37 +03:00
Konstantin Bulenkov
ad8ac1f3bc Merge pull request #28 from JetBrains/mono/2.001
JetBrains Mono release 2.001
2020-07-31 09:05:46 +02:00
Aleksey Shipilev
63719b57ed 8221824: Build failure with MSVS 2013 after JDK-8218418
Reviewed-by: stuefe, alanb
2020-07-31 13:47:51 +07:00
bpb
0f775c6d66 8218418: (fs) Files.createSymbolicLink should use SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE (win)
Reviewed-by: alanb
2020-07-31 13:46:11 +07:00
Sergey Malenkov
523d80cafd EA-235126 - CME: HighlightableComponent.getPreferredSize 2020-07-29 22:05:39 +03:00
Mikhail Grishchenko
ca48245ee3 updated JTreg exclude list 2020-07-29 16:26:39 +07:00
Zhengyu Gu
fd6991529e JBR-2616 Backport: disable test for 32bit platforms
8241086: Test runtime/NMT/HugeArenaTracking.java is failing on 32bit Windows

Reviewed-by: stuefe
2020-07-29 16:25:07 +07:00
MonoBot
3f5ee10c34 Fonts release 2.001 2020-07-13 15:14:30 +03:00
2819 changed files with 901791 additions and 47503 deletions

1
.gitignore vendored
View File

@@ -24,3 +24,4 @@ test/nashorn/lib
NashornProfile.txt
**/JTreport/**
**/JTwork/**
/jb/project/java-gradle/.idea/workspace.xml

25
.hgtags
View File

@@ -598,3 +598,28 @@ e42c6d1a1993c720a4643140190bb1ba6f1bbf9f jdk-11.0.8+6
59f8565ee5e224697a9e09ee2c557836733bc579 jdk-11.0.8+9
0b0d55cb09b29360ab254edeef32a3b386e9713e jdk-11.0.8+10
0b0d55cb09b29360ab254edeef32a3b386e9713e jdk-11.0.8-ga
5cc275af8419178813299cc0ed81a2a85dadfdcd jdk-11.0.9+1
3112657edde9491fb83f098f1a8b7e9275bcb2f7 jdk-11.0.9+2
d8a0513b92ee262d4e64c1e13d43e1b3f3e5c5d5 jdk-11.0.9+3
cb299db4a5698b814f6b3ba1f3d73d01f6a0e1f6 jdk-11.0.9+4
55237fa85afb404bc0dc0f4948a6459d8d3e5dac jdk-11.0.9+5
c07e785e36f587b95e151de382844cea3d1a5868 jdk-11.0.9+6
1ba4c16a8afa3f5aaa7830fc1f14a0137cc2553b jdk-11.0.9+7
8711e8554e15ae2fa38718d5c7dc858da10e8a4a jdk-11.0.9+8
e872676174c7f171a9864becba83cb783cfec9d0 jdk-11.0.9+9
6ac1b68e7c0034e08a96d7d37e93e5075a6e8d61 jdk-11.0.9+10
4397fa4529b2794ddcdf3445c0611fe383243fb4 jdk-11.0.9+11
4397fa4529b2794ddcdf3445c0611fe383243fb4 jdk-11.0.9-ga
4fd46d208f0a4b55924af8e0c2fb6bcf46e18ec6 jdk-11.0.9.1+0
27723943c0dd65a191cbefe031cec001521e4b13 jdk-11.0.9.1+1
31affc22b3b5f5d43783ffadf57f22848bad9db8 jdk-11.0.9.1-ga
f3168de4eb0dd74bf8e81537f62742bde5e412c3 jdk-11.0.10+1
a35aa07b57bab3690224e3af939ee085d50eb476 jdk-11.0.10+2
bca12c00a776f8cee7a0eeaf788499b9eab9cf9d jdk-11.0.10+3
9504fa6f98f5aad0aa1ac36d5bff3260a32020c8 jdk-11.0.10+4
5f5c3544ccb4d0bbc638e665524b292860dd9515 jdk-11.0.10+5
4b9bc2a1dde0631958393125997855382325964d jdk-11.0.10+6
c45f74d45787a857d35b5a66c9b0304c91a9c5d0 jdk-11.0.10+7
43428f69099f6f87f6e1922deacbf13e1adb751f jdk-11.0.10+8
8b3498547395ee80a6e731078056b2aeb3e3c5e8 jdk-11.0.10+9
8b3498547395ee80a6e731078056b2aeb3e3c5e8 jdk-11.0.10-ga

View File

@@ -1,9 +1,7 @@
<component name="CopyrightManager">
<copyright>
<option name="notice" value="Copyright 2000-&amp;#36;today.year JetBrains s.r.o.&#10;&#10;Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);&#10;you may not use this file except in compliance with the License.&#10;You may obtain a copy of the License at&#10;&#10;http://www.apache.org/licenses/LICENSE-2.0&#10;&#10;Unless required by applicable law or agreed to in writing, software&#10;distributed under the License is distributed on an &quot;AS IS&quot; BASIS,&#10;WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#10;See the License for the specific language governing permissions and&#10;limitations under the License." />
<option name="keyword" value="Copyright" />
<option name="allowReplaceKeyword" value="JetBrains" />
<option name="allowReplaceRegexp" value="JetBrains" />
<option name="notice" value="Copyright 2000-&amp;#36;today.year JetBrains s.r.o.&#10;DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.&#10; &#10;This code is free software; you can redistribute it and/or modify it&#10;under the terms of the GNU General Public License version 2 only, as&#10;published by the Free Software Foundation.&#10;&#10;This code is distributed in the hope that it will be useful, but WITHOUT&#10;ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or&#10;FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License&#10;version 2 for more details (a copy is included in the LICENSE file that&#10;accompanied this code).&#10;&#10;You should have received a copy of the GNU General Public License version&#10;2 along with this work; if not, write to the Free Software Foundation,&#10;Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.&#10;&#10;Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA&#10;or visit www.oracle.com if you need additional information or have any&#10;questions." />
<option name="myName" value="JetBrains" />
<option name="myLocal" value="true" />
</copyright>
</component>

14
.idea/vcs.xml generated
View File

@@ -1,5 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="IssueNavigationConfiguration">
<option name="links">
<list>
<IssueNavigationLink>
<option name="issueRegexp" value="[A-Z]+\-\d+" />
<option name="linkRegexp" value="http://youtrack.jetbrains.com/issue/$0" />
</IssueNavigationLink>
<IssueNavigationLink>
<option name="issueRegexp" value="^(\d+)\:" />
<option name="linkRegexp" value="https://bugs.openjdk.java.net/browse/JDK-$1" />
</IssueNavigationLink>
</list>
</option>
</component>
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>

View File

@@ -1,19 +1,12 @@
[![official JetBrains project](http://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
# Downloads
|Windows-x64 |macOS |Linux-x64 |
|-------------|-------------|-------------|
|[ ![Download](https://api.bintray.com/packages/jetbrains/intellij-jdk/openjdk11-windows-x64/images/download.svg) ](https://bintray.com/jetbrains/intellij-jdk/openjdk11-windows-x64/_latestVersion)|[ ![Download](https://api.bintray.com/packages/jetbrains/intellij-jdk/openjdk11-osx-x64/images/download.svg) ](https://bintray.com/jetbrains/intellij-jdk/openjdk11-osx-x64/_latestVersion)|[ ![Download](https://api.bintray.com/packages/jetbrains/intellij-jdk/openjdk11-linux-x64/images/download.svg) ](https://bintray.com/jetbrains/intellij-jdk/openjdk11-linux-x64/_latestVersion)|
# How JetBrains Runtime is organised
## Workspaces
[github.com/JetBrains/JetBrainsRuntime](https://github.com/JetBrains/JetBrainsRuntime)
## Getting sources
__OSX, Linux:__
__macOS, Linux:__
```
git config --global core.autocrlf input
git clone git@github.com:JetBrains/JetBrainsRuntime.git
@@ -25,12 +18,12 @@ git config --global core.autocrlf false
git clone git@github.com:JetBrains/JetBrainsRuntime.git
```
# Configure Local Build Environment
# Configure local build environment
[OpenJDK build docs](http://hg.openjdk.java.net/jdk/jdk11/raw-file/tip/doc/building.html)
Tip for all platforms: run ./configure and check output.
Tip for all platforms: run `./configure` and check output.
Usually, it has meaningful advice how to solve your problem.
## Linux (docker)
## Linux (Docker)
```
$ cd jb/project/docker
$ docker build .
@@ -42,7 +35,6 @@ $ docker run -v `pwd`../../../../:/JetBrainsRuntime -it 942ea9900054
# cd /JetBrainsRuntime
# sh ./configure
# make images CONF=linux-x86_64-normal-server-release
```
## Linux (Ubuntu 18.10 desktop)
@@ -56,35 +48,33 @@ $ make images
## Windows
Install:
* [Cygwin x64](http://www.cygwin.com/)
Required packages: autoconf, binutils, cpio, diffutils, file, gawk, gcc-core, make, m4, unzip, zip.
**Install them while installing cygwin**.
**Install them while installing Cygwin**.
* Visual Studio compiler toolset [Download](https://visualstudio.microsoft.com/downloads/)
Visual Studio 2015 has support by default.
**Install with desktop development kit, it includes Windows SDK and compilers**.
* [Java 11](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
If you have problems while configuring [read java tips on cygwin](http://horstmann.com/articles/cygwin-tips.html)
If you have problems while configuring [read Java tips on Cygwin](http://horstmann.com/articles/cygwin-tips.html)
From command line
From command line:
```
"c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
"c:\Program_Files\cygwin64\bin\mintty.exe" /bin/bash -l
```
First command will set env vars, the second will run cygwin shell with proper environment.
In cygwin shell
First command will set env vars, the second will run Cygwin shell with proper environment.
In Cygwin shell:
```
cd JetBrainsRuntime
bash configure --enable-option-checking=fatal --with-toolchain-version=2015 --with-boot-jdk="/cygdrive/c/Program Files/Java/jdk-11.0.5" --disable-warnings-as-errors
make images
```
## OSX
install Xcode console tools, autoconf (via homebrew)
run
## macOS
Install Xcode command line developer tools, autoconf (via Homebrew).
Run:
```
sh ./configure --prefix=$(pwd)/build --disable-warnings-as-errors
make images

View File

@@ -68,10 +68,12 @@
</ul></li>
<li><a href="#running-tests">Running Tests</a></li>
<li><a href="#cross-compiling">Cross-compiling</a><ul>
<li><a href="#cross-compiling-the-easy-way-with-openjdk-devkits">Cross compiling the easy way with OpenJDK devkits</a></li>
<li><a href="#boot-jdk-and-build-jdk">Boot JDK and Build JDK</a></li>
<li><a href="#specifying-the-target-platform">Specifying the Target Platform</a></li>
<li><a href="#toolchain-considerations">Toolchain Considerations</a></li>
<li><a href="#native-libraries">Native Libraries</a></li>
<li><a href="#creating-and-using-sysroots-with-qemu-deboostrap">Creating And Using Sysroots With qemu-deboostrap</a></li>
<li><a href="#building-for-armaarch64">Building for ARM/aarch64</a></li>
<li><a href="#verifying-the-build">Verifying the Build</a></li>
</ul></li>
@@ -565,6 +567,47 @@ CC: Sun C++ 5.13 SunOS_i386 151846-10 2015/10/30</code></pre>
<p>This requires a more complex setup and build procedure. This section assumes you are familiar with cross-compiling in general, and will only deal with the particularities of cross-compiling the JDK. If you are new to cross-compiling, please see the <a href="https://en.wikipedia.org/wiki/Cross_compiler#External_links">external links at Wikipedia</a> for a good start on reading materials.</p>
<p>Cross-compiling the JDK requires you to be able to build both for the build platform and for the target platform. The reason for the former is that we need to build and execute tools during the build process, both native tools and Java tools.</p>
<p>If all you want to do is to compile a 32-bit version, for the same OS, on a 64-bit machine, consider using <code>--with-target-bits=32</code> instead of doing a full-blown cross-compilation. (While this surely is possible, it's a lot more work and will take much longer to build.)</p>
<h3 id="cross-compiling-the-easy-way-with-openjdk-devkits">Cross compiling the easy way with OpenJDK devkits</h3>
<p>The OpenJDK build system provides out-of-the box support for creating and using so called devkits. A <code>devkit</code> is basically a collection of a cross-compiling toolchain and a sysroot environment which can easily be used together with the <code>--with-devkit</code> configure option to cross compile the OpenJDK. On Linux/x86_64, the following command:</p>
<pre><code>bash configure --with-devkit=&lt;devkit-path&gt; --openjdk-target=ppc64-linux-gnu &amp;&amp; make</code></pre>
<p>will configure and build OpenJDK for Linux/ppc64 assuming that <code>&lt;devkit-path&gt;</code> points to a Linux/x86_64 to Linux/ppc64 devkit.</p>
<p>Devkits can be created from the <code>make/devkit</code> directory by executing:</p>
<pre><code>make [ TARGETS=&quot;&lt;TARGET_TRIPLET&gt;+&quot; ] [ BASE_OS=&lt;OS&gt; ] [ BASE_OS_VERSION=&lt;VER&gt; ]</code></pre>
<p>where <code>TARGETS</code> contains one or more <code>TARGET_TRIPLET</code>s of the form described in <a href="https://sourceware.org/autobook/autobook/autobook_17.html">section 3.4 of the GNU Autobook</a>. 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:</p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Supported devkit targets</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">x86_64-linux-gnu</td>
</tr>
<tr class="even">
<td style="text-align: left;">aarch64-linux-gnu</td>
</tr>
<tr class="odd">
<td style="text-align: left;">arm-linux-gnueabihf</td>
</tr>
<tr class="even">
<td style="text-align: left;">ppc64-linux-gnu</td>
</tr>
<tr class="odd">
<td style="text-align: left;">ppc64le-linux-gnu</td>
</tr>
<tr class="even">
<td style="text-align: left;">s390x-linux-gnu</td>
</tr>
</tbody>
</table>
<p><code>BASE_OS</code> must be one of &quot;OEL6&quot; for Oracle Enterprise Linux 6 or &quot;Fedora&quot; (if not specified &quot;OEL6&quot; will be the default). If the base OS is &quot;Fedora&quot; the corresponding Fedora release can be specified with the help of the <code>BASE_OS_VERSION</code> option (with &quot;27&quot; as default version). If the build is successful, the new devkits can be found in the <code>build/devkit/result</code> subdirectory:</p>
<pre><code>cd make/devkit
make TARGETS=&quot;ppc64le-linux-gnu aarch64-linux-gnu&quot; BASE_OS=Fedora BASE_OS_VERSION=21
ls -1 ../../build/devkit/result/
x86_64-linux-gnu-to-aarch64-linux-gnu
x86_64-linux-gnu-to-ppc64le-linux-gnu</code></pre>
<p>Notice that devkits are not only useful for targeting different build platforms. Because they contain the full build dependencies for a system (i.e. compiler and root file system), they can easily be used to build well-known, reliable and reproducible build environments. You can for example create and use a devkit with GCC 7.3 and a Fedora 12 sysroot environment (with glibc 2.11) on Ubuntu 14.04 (which doesn't have GCC 7.3 by default) to produce OpenJDK binaries which will run on all Linux systems with runtime libraries newer than the ones from Fedora 12 (e.g. Ubuntu 16.04, SLES 11 or RHEL 6).</p>
<h3 id="boot-jdk-and-build-jdk">Boot JDK and Build JDK</h3>
<p>When cross-compiling, make sure you use a boot JDK that runs on the <em>build</em> system, and not on the <em>target</em> system.</p>
<p>To be able to build, we need a &quot;Build JDK&quot;, which is a JDK built from the current sources (that is, the same as the end result of the entire build process), but able to run on the <em>build</em> system, and not the <em>target</em> system. (In contrast, the Boot JDK should be from an older release, e.g. JDK 8 when building JDK 9.)</p>
@@ -634,6 +677,72 @@ cp: cannot stat `arm-linux-gnueabihf/libSM.so&#39;: No such file or directory
cp: cannot stat `arm-linux-gnueabihf/libXt.so&#39;: No such file or directory</code></pre></li>
<li><p>If the X11 libraries are not properly detected by <code>configure</code>, you can point them out by <code>--with-x</code>.</p></li>
</ul>
<h3 id="creating-and-using-sysroots-with-qemu-deboostrap">Creating And Using Sysroots With qemu-deboostrap</h3>
<p>Fortunately, you can create sysroots for foreign architectures with tools provided by your OS. On Debian/Ubuntu systems, one could use <code>qemu-deboostrap</code> to create the <em>target</em> system chroot, which would have the native libraries and headers specific to that <em>target</em> system. After that, we can use the cross-compiler on the <em>build</em> system, pointing into chroot to get the build dependencies right. This allows building for foreign architectures with native compilation speed.</p>
<p>For example, cross-compiling to AArch64 from x86_64 could be done like this:</p>
<ul>
<li><p>Install cross-compiler on the <em>build</em> system:</p>
<pre><code>apt install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu</code></pre></li>
<li><p>Create chroot on the <em>build</em> system, configuring it for <em>target</em> system:</p>
<pre><code>sudo qemu-debootstrap --arch=arm64 --verbose \
--include=fakeroot,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng12-dev \
--resolve-deps jessie /chroots/arm64 http://httpredir.debian.org/debian/</code></pre></li>
<li><p>Configure and build with newly created chroot as sysroot/toolchain-path:</p>
<pre><code>CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure --openjdk-target=aarch64-linux-gnu --with-sysroot=/chroots/arm64/ --with-toolchain-path=/chroots/arm64/
make images
ls build/linux-aarch64-normal-server-release/</code></pre></li>
</ul>
<p>The build does not create new files in that chroot, so it can be reused for multiple builds without additional cleanup.</p>
<p>Architectures that are known to successfully cross-compile like this are:</p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Target</th>
<th style="text-align: left;"><code>CC</code></th>
<th style="text-align: left;"><code>CXX</code></th>
<th style="text-align: left;"><code>--arch=...</code></th>
<th style="text-align: left;"><code>--openjdk-target=...</code></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">x86</td>
<td style="text-align: left;">default</td>
<td style="text-align: left;">default</td>
<td style="text-align: left;">i386</td>
<td style="text-align: left;">i386-linux-gnu</td>
</tr>
<tr class="even">
<td style="text-align: left;">armhf</td>
<td style="text-align: left;">gcc-arm-linux-gnueabihf</td>
<td style="text-align: left;">g++-arm-linux-gnueabihf</td>
<td style="text-align: left;">armhf</td>
<td style="text-align: left;">arm-linux-gnueabihf</td>
</tr>
<tr class="odd">
<td style="text-align: left;">aarch64</td>
<td style="text-align: left;">gcc-aarch64-linux-gnu</td>
<td style="text-align: left;">g++-aarch64-linux-gnu</td>
<td style="text-align: left;">arm64</td>
<td style="text-align: left;">aarch64-linux-gnu</td>
</tr>
<tr class="even">
<td style="text-align: left;">ppc64el</td>
<td style="text-align: left;">gcc-powerpc64le-linux-gnu</td>
<td style="text-align: left;">g++-powerpc64le-linux-gnu</td>
<td style="text-align: left;">ppc64el</td>
<td style="text-align: left;">powerpc64le-linux-gnu</td>
</tr>
<tr class="odd">
<td style="text-align: left;">s390x</td>
<td style="text-align: left;">gcc-s390x-linux-gnu</td>
<td style="text-align: left;">g++-s390x-linux-gnu</td>
<td style="text-align: left;">s390x</td>
<td style="text-align: left;">s390x-linux-gnu</td>
</tr>
</tbody>
</table>
<p>Additional architectures might be supported by Debian/Ubuntu Ports.</p>
<h3 id="building-for-armaarch64">Building for ARM/aarch64</h3>
<p>A common cross-compilation target is the ARM CPU. When building for ARM, it is useful to set the ABI profile. A number of pre-defined ABI profiles are available using <code>--with-abi-profile</code>: arm-vfp-sflt, arm-vfp-hflt, arm-sflt, armv5-vfp-sflt, armv6-vfp-hflt. Note that soft-float ABIs are no longer properly supported by the JDK.</p>
<p>The JDK contains two different ports for the aarch64 platform, one is the original aarch64 port from the <a href="http://openjdk.java.net/projects/aarch64-port">AArch64 Port Project</a> and one is a 64-bit version of the Oracle contributed ARM port. When targeting aarch64, by the default the original aarch64 port is used. To select the Oracle ARM 64 port, use <code>--with-cpu-port=arm64</code>. Also set the corresponding value (<code>aarch64</code> or <code>arm64</code>) to --with-abi-profile, to ensure a consistent build.</p>
@@ -743,7 +852,12 @@ cannot create ... Permission denied
spawn failed</code></pre>
<p>This can be a sign of a Cygwin problem. See the information about solving problems in the <a href="#cygwin">Cygwin</a> section. Rebooting the computer might help temporarily.</p>
<h3 id="getting-help">Getting Help</h3>
<p>If none of the suggestions in this document helps you, or if you find what you believe is a bug in the build system, please contact the Build Group by sending a mail to <a href="mailto:build-dev@openjdk.java.net">build-dev@openjdk.java.net</a>. Please include the relevant parts of the configure and/or build log.</p>
<p>If none of the suggestions in this document helps you, or if you find what you believe is a bug in the build system, please contact the Build Group by sending a mail to <script type="text/javascript">
<!--
h='&#x6f;&#112;&#x65;&#110;&#106;&#100;&#x6b;&#46;&#106;&#x61;&#118;&#x61;&#46;&#110;&#x65;&#116;';a='&#64;';n='&#98;&#x75;&#x69;&#108;&#100;&#x2d;&#100;&#x65;&#118;';e=n+a+h;
document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'" clas'+'s="em' + 'ail">'+e+'<\/'+'a'+'>');
// -->
</script><noscript>&#98;&#x75;&#x69;&#108;&#100;&#x2d;&#100;&#x65;&#118;&#32;&#x61;&#116;&#32;&#x6f;&#112;&#x65;&#110;&#106;&#100;&#x6b;&#32;&#100;&#x6f;&#116;&#32;&#106;&#x61;&#118;&#x61;&#32;&#100;&#x6f;&#116;&#32;&#110;&#x65;&#116;</noscript>. Please include the relevant parts of the configure and/or build log.</p>
<p>If you need general help or advice about developing for the JDK, you can also contact the Adoption Group. See the section on <a href="#contributing-to-openjdk">Contributing to OpenJDK</a> for more information.</p>
<h2 id="hints-and-suggestions-for-advanced-users">Hints and Suggestions for Advanced Users</h2>
<h3 id="setting-up-a-forest-for-pushing-changes-defpath">Setting Up a Forest for Pushing Changes (defpath)</h3>

View File

@@ -875,6 +875,64 @@ If all you want to do is to compile a 32-bit version, for the same OS, on a
full-blown cross-compilation. (While this surely is possible, it's a lot more
work and will take much longer to build.)
### Cross compiling the easy way with OpenJDK devkits
The OpenJDK build system provides out-of-the box support for creating and using
so called devkits. A `devkit` is basically a collection of a cross-compiling
toolchain and a sysroot environment which can easily be used together with the
`--with-devkit` configure option to cross compile the OpenJDK. On Linux/x86_64,
the following command:
```
bash configure --with-devkit=<devkit-path> --openjdk-target=ppc64-linux-gnu && make
```
will configure and build OpenJDK for Linux/ppc64 assuming that `<devkit-path>`
points to a Linux/x86_64 to Linux/ppc64 devkit.
Devkits can be created from the `make/devkit` directory by executing:
```
make [ TARGETS="<TARGET_TRIPLET>+" ] [ BASE_OS=<OS> ] [ BASE_OS_VERSION=<VER> ]
```
where `TARGETS` contains one or more `TARGET_TRIPLET`s of the form
described in [section 3.4 of the GNU Autobook](
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
`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
is "Fedora" the corresponding Fedora release can be specified with the
help of the `BASE_OS_VERSION` option (with "27" as default version).
If the build is successful, the new devkits can be found in the
`build/devkit/result` subdirectory:
```
cd make/devkit
make TARGETS="ppc64le-linux-gnu aarch64-linux-gnu" BASE_OS=Fedora BASE_OS_VERSION=21
ls -1 ../../build/devkit/result/
x86_64-linux-gnu-to-aarch64-linux-gnu
x86_64-linux-gnu-to-ppc64le-linux-gnu
```
Notice that devkits are not only useful for targeting different build
platforms. Because they contain the full build dependencies for a
system (i.e. compiler and root file system), they can easily be used
to build well-known, reliable and reproducible build environments. You
can for example create and use a devkit with GCC 7.3 and a Fedora 12
sysroot environment (with glibc 2.11) on Ubuntu 14.04 (which doesn't
have GCC 7.3 by default) to produce OpenJDK binaries which will run on
all Linux systems with runtime libraries newer than the ones from
Fedora 12 (e.g. Ubuntu 16.04, SLES 11 or RHEL 6).
### Boot JDK and Build JDK
When cross-compiling, make sure you use a boot JDK that runs on the *build*
@@ -1018,6 +1076,51 @@ Note that X11 is needed even if you only want to build a headless JDK.
* If the X11 libraries are not properly detected by `configure`, you can
point them out by `--with-x`.
### Creating And Using Sysroots With qemu-deboostrap
Fortunately, you can create sysroots for foreign architectures with tools
provided by your OS. On Debian/Ubuntu systems, one could use `qemu-deboostrap` to
create the *target* system chroot, which would have the native libraries and headers
specific to that *target* system. After that, we can use the cross-compiler on the *build*
system, pointing into chroot to get the build dependencies right. This allows building
for foreign architectures with native compilation speed.
For example, cross-compiling to AArch64 from x86_64 could be done like this:
* Install cross-compiler on the *build* system:
```
apt install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu
```
* Create chroot on the *build* system, configuring it for *target* system:
```
sudo qemu-debootstrap --arch=arm64 --verbose \
--include=fakeroot,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng12-dev \
--resolve-deps jessie /chroots/arm64 http://httpredir.debian.org/debian/
```
* Configure and build with newly created chroot as sysroot/toolchain-path:
```
CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure --openjdk-target=aarch64-linux-gnu --with-sysroot=/chroots/arm64/ --with-toolchain-path=/chroots/arm64/
make images
ls build/linux-aarch64-normal-server-release/
```
The build does not create new files in that chroot, so it can be reused for multiple builds
without additional cleanup.
Architectures that are known to successfully cross-compile like this are:
Target `CC` `CXX` `--arch=...` `--openjdk-target=...`
------------ ------------------------- --------------------------- ------------ ----------------------
x86 default default i386 i386-linux-gnu
armhf gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf armhf arm-linux-gnueabihf
aarch64 gcc-aarch64-linux-gnu g++-aarch64-linux-gnu arm64 aarch64-linux-gnu
ppc64el gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu ppc64el powerpc64le-linux-gnu
s390x gcc-s390x-linux-gnu g++-s390x-linux-gnu s390x s390x-linux-gnu
Additional architectures might be supported by Debian/Ubuntu Ports.
### Building for ARM/aarch64
A common cross-compilation target is the ARM CPU. When building for ARM, it is

View File

@@ -4,10 +4,9 @@ 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 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 11
RUN wget https://bintray.com/jetbrains/intellij-jbr/download_file?file_path=jbrsdk-11_0_3-linux-x64-b360.2.tar.gz \
RUN wget https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-linux_x64.tar.gz \
-O - | tar xz -C /
ENV JAVA_HOME /jbrsdk
ENV JAVA_HOME /zulu11.45.27-ca-jdk11.0.10-linux_x64
ENV PATH $JAVA_HOME/bin:/opt/rh/devtoolset-8/root/usr/bin:$PATH
RUN mkdir .git
RUN git config user.email "builduser@jetbrains.com"
RUN git config user.name "builduser"
RUN git config --global user.email "teamcity@buildserver.intellij.net"
RUN git config --global user.name "builduser"

View File

@@ -1,3 +1,16 @@
VENDOR_NAME="JetBrains s.r.o."
VENDOR_VERSION_STRING="JBR-${JBSDK_VERSION_WITH_DOTS}.${JDK_BUILD_NUMBER}-${build_number}"
[ -z ${bundle_type} ] || VENDOR_VERSION_STRING="${VENDOR_VERSION_STRING}-${bundle_type}"
do_reset_changes=0
do_reset_dcevm=0
HEAD_REVISION=0
function do_exit() {
exit_code=$1
[ $do_reset_changes -eq 1 ] && git checkout HEAD modules.list src/java.desktop/share/classes/module-info.java
if [ $do_reset_dcevm -eq 1 ]; then
[ ! -z $HEAD_REVISION ] && git reset --hard $HEAD_REVISION
fi
exit $exit_code
}

View File

@@ -1,10 +0,0 @@
#!/bin/bash -x
JBSDK_VERSION=$1
JDK_BUILD_NUMBER=$2
build_number=$3
script_dir=jb/project/tools/linux/scripts
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jcef" || exit $?
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx" || exit $?
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "dcevm" || exit $?
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx_jcef" || exit $?

View File

@@ -6,7 +6,6 @@
# build_number - specifies the number of JetBrainsRuntime build
# bundle_type - specifies bundle to bu built; possible values:
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
# jfx - the bundle 1) jbr with javafx only will be created
#
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
@@ -32,6 +31,7 @@ sh configure \
--with-debug-level=release \
--with-vendor-name="${VENDOR_NAME}" \
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
--with-jvm-features=shenandoahgc \
--with-version-pre= \
--with-version-build=${JDK_BUILD_NUMBER} \
--with-version-opt=b${build_number} \

View File

@@ -1,12 +1,14 @@
#!/bin/bash -x
# The following parameters must be specified:
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
# JBSDK_VERSION - specifies major version of OpenJDK e.g. 11_0_6 (instead of dots '.' underbars "_" are used)
# JDK_BUILD_NUMBER - specifies update release of OpenJDK build or the value of --with-version-build argument to configure
# build_number - specifies the number of JetBrainsRuntime build
# bundle_type - specifies bundle to bu built; possible values:
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
# jfx - the bundle 1) jbr with javafx only will be created
# bundle_type - specifies bundle to be built; possible values:
# jcef - the release bundles with jcef
# dcevm - the release bundles with dcevm patches
# nomod - the release bundles without any additional modules (jcef)
# fd - the fastdebug bundles which also include the jcef module
#
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
@@ -19,8 +21,8 @@
# Environment variables:
# MODULAR_SDK_PATH - specifies the path to the directory where imported modules are located.
# By default imported modules should be located in ./modular-sdk
# JCEF_PATH - specifies the path to the directory where JCEF binaries are located.
# By default imported modules should be located in ./jcef_linux_x64
# JCEF_PATH - specifies the path to the directory with JCEF binaries.
# By default JCEF binaries should be located in ./jcef_linux_x64
JBSDK_VERSION=$1
JDK_BUILD_NUMBER=$2
@@ -34,65 +36,69 @@ source jb/project/tools/common.sh
function create_jbr {
case "$1" in
"${bundle_type}_lw")
JBR_BASE_NAME=jbr_${bundle_type}_lw-${JBSDK_VERSION}
grep -v "jdk.compiler\|jdk.hotspot.agent" modules.list > modules_tmp.list
;;
"jfx" | "jcef" | "dcevm" | "nomod")
JBR_BUNDLE=jbr_${bundle_type}
case "${bundle_type}" in
"jcef" | "dcevm" | "nomod" | "fd")
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
cat modules.list > modules_tmp.list
;;
"jfx_jcef")
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
cat modules.list > modules_tmp.list
;;
*)
echo "***ERR*** bundle was not specified" && exit 1
echo "***ERR*** bundle was not specified" && do_exit 1
;;
esac
cat modules.list > modules_tmp.list
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
JBR=$JBR_BASE_NAME-linux-x64-b$build_number
JBR=${JBR_BASE_NAME}-linux-x64-b${build_number}
echo Running jlink....
$JSDK/bin/jlink \
--module-path $JSDK/jmods --no-man-pages --compress=2 \
--add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output $BASE_DIR/$JBR_BUNDLE
--add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output $BASE_DIR/$JBR_BUNDLE || do_exit $?
if [[ "$bundle_type" == *jcef* ]] || [[ "$bundle_type" == *dcevm* ]]; then
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]] || [[ "${bundle_type}" == fd ]]; then
cp -R $BASE_DIR/$JBR_BUNDLE $BASE_DIR/jbr
cp -R ${JCEF_PATH}/* $BASE_DIR/$JBR_BUNDLE/lib || exit $?
rsync -av ${JCEF_PATH}/ $BASE_DIR/$JBR_BUNDLE/lib --exclude="modular-sdk" || do_exit $?
fi
grep -v "^JAVA_VERSION" $JSDK/release | grep -v "^MODULES" >> $BASE_DIR/$JBR_BUNDLE/release
echo Creating $JBR.tar.gz ...
echo Creating ${JBR}.tar.gz ...
rm -rf ${BASE_DIR}/jbr
cp -R ${BASE_DIR}/${JBR_BUNDLE} ${BASE_DIR}/jbr
tar -pcf $JBR.tar -C $BASE_DIR jbr || exit $?
gzip $JBR.tar || exit $?
tar -pcf ${JBR}.tar -C ${BASE_DIR} jbr || do_exit $?
gzip -f ${JBR}.tar || do_exit $?
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
}
JBRSDK_BASE_NAME=jbrsdk-$JBSDK_VERSION
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
WITH_DEBUG_LEVEL="--with-debug-level=release"
RELEASE_NAME=linux-x86_64-normal-server-release
git checkout -- modules.list src/java.desktop/share/classes/module-info.java
JBSDK=${JBRSDK_BASE_NAME}-linux-x64-b${build_number}
case "$bundle_type" in
"jfx")
git apply -p0 < jb/project/tools/patches/exclude_jcef_module.patch
;;
"jcef")
git apply -p0 < jb/project/tools/patches/exclude_jfx_module.patch
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
do_reset_changes=1
;;
"dcevm")
git am jb/project/tools/patches/dcevm/*.patch
HEAD_REVISION=$(git rev-parse HEAD)
git am jb/project/tools/patches/dcevm/*.patch || do_exit $?
do_reset_dcevm=1
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
do_reset_changes=1
;;
"nomod")
git apply -p0 < jb/project/tools/patches/exclude_jcef_module.patch
git apply -p0 < jb/project/tools/patches/exclude_jfx_module.patch
WITH_IMPORT_MODULES=""
;;
"fd")
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
do_reset_changes=1
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
RELEASE_NAME=linux-x86_64-normal-server-fastdebug
JBSDK=${JBRSDK_BASE_NAME}-linux-x64-fastdebug-b${build_number}
;;
*)
echo "***ERR*** bundle was not specified" && do_exit 1
;;
esac
sh configure \
@@ -100,48 +106,49 @@ sh configure \
$WITH_DEBUG_LEVEL \
--with-vendor-name="${VENDOR_NAME}" \
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
--with-jvm-features=shenandoahgc \
--with-version-pre= \
--with-version-build=${JDK_BUILD_NUMBER} \
--with-version-opt=b${build_number} \
$WITH_IMPORT_MODULES \
--enable-cds=yes || exit $?
--enable-cds=yes || do_exit $?
make images CONF=$RELEASE_NAME || exit $?
make clean images CONF=$RELEASE_NAME || do_exit $?
JSDK=build/$RELEASE_NAME/images/jdk
JBSDK=$JBRSDK_BASE_NAME-linux-x64-b$build_number
JSDK=build/${RELEASE_NAME}/images/jdk
echo Fixing permissions
chmod -R a+r $JSDK
BASE_DIR=build/$RELEASE_NAME/images
BASE_DIR=build/${RELEASE_NAME}/images
JBRSDK_BUNDLE=jbrsdk
rm -rf $BASE_DIR/$JBRSDK_BUNDLE
cp -r $JSDK $BASE_DIR/$JBRSDK_BUNDLE || exit $?
rm -rf ${BASE_DIR}/${JBRSDK_BUNDLE}
cp -r $JSDK $BASE_DIR/$JBRSDK_BUNDLE || do_exit $?
if [[ "$bundle_type" == *jcef* ]] || [[ "$bundle_type" == *dcevm* ]]; then
cp -R ${JCEF_PATH}/* $BASE_DIR/$JBRSDK_BUNDLE/lib || exit $?
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]] || [[ "${bundle_type}" == fd ]]; then
rsync -av ${JCEF_PATH}/ $BASE_DIR/$JBRSDK_BUNDLE/lib --exclude="modular-sdk" || do_exit $?
fi
if [ "$bundle_type" == "jfx_jcef" ]; then
if [ "${bundle_type}" == "jcef" ] || [ "${bundle_type}" == "fd" ]; then
echo Creating $JBSDK.tar.gz ...
sed 's/JBR/JBRSDK/g' ${BASE_DIR}/${JBRSDK_BUNDLE}/release > release
mv release ${BASE_DIR}/${JBRSDK_BUNDLE}/release
tar -pcf $JBSDK.tar --exclude=*.debuginfo --exclude=demo --exclude=sample --exclude=man \
-C $BASE_DIR $JBRSDK_BUNDLE || exit $?
gzip $JBSDK.tar || exit $?
tar -pcf ${JBSDK}.tar --exclude=*.debuginfo --exclude=demo --exclude=sample --exclude=man \
-C ${BASE_DIR} ${JBRSDK_BUNDLE} || do_exit $?
gzip -f ${JBSDK}.tar || do_exit $?
fi
JBR_BUNDLE=jbr_${bundle_type}
create_jbr ${bundle_type}
create_jbr || do_exit $?
if [ "$bundle_type" == "jfx_jcef" ]; then
make test-image || exit $?
if [ "$bundle_type" == "jcef" ]; then
make test-image CONF=$RELEASE_NAME || do_exit $?
JBRSDK_TEST=$JBRSDK_BASE_NAME-linux-test-x64-b$build_number
echo Creating $JBSDK_TEST.tar.gz ...
tar -pcf $JBRSDK_TEST.tar -C $BASE_DIR --exclude='test/jdk/demos' test || exit $?
gzip $JBRSDK_TEST.tar || exit $?
fi
tar -pcf ${JBRSDK_TEST}.tar -C ${BASE_DIR} --exclude='test/jdk/demos' test || do_exit $?
gzip -f ${JBRSDK_TEST}.tar || do_exit $?
fi
do_exit 0

View File

@@ -1,90 +0,0 @@
#!/bin/bash -x
# The following parameters must be specified:
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
# build_number - specifies the number of JetBrainsRuntime build
# bundle_type - specifies bundle to bu built; possible values:
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
# jfx - the bundle 1) jbr with javafx only will be created
#
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
#
# $ ./java --version
# openjdk 11.0.6 2020-01-14
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
#
# Environment variables:
# MODULAR_SDK_PATH - specifies the path to the directory where imported modules are located.
# By default imported modules should be located in ./modular-sdk
# JCEF_PATH - specifies the path to the directory where JCEF binaries are located.
# By default imported modules should be located in ./jcef_linux_x64
JBSDK_VERSION=$1
JDK_BUILD_NUMBER=$2
build_number=$3
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
WITH_IMPORT_MODULES="--with-import-modules=${MODULAR_SDK_PATH:=./modular-sdk}"
JCEF_PATH=${JCEF_PATH:=./jcef_linux_x64}
source jb/project/tools/common.sh
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
sh configure \
--disable-warnings-as-errors \
$WITH_DEBUG_LEVEL \
--with-vendor-name="${VENDOR_NAME}" \
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
--with-version-pre= \
--with-version-build=${JDK_BUILD_NUMBER} \
--with-version-opt=b${build_number} \
--with-import-modules=./modular-sdk \
--enable-cds=yes || exit $?
make clean CONF=linux-x86_64-normal-server-fastdebug || exit $?
make images CONF=linux-x86_64-normal-server-fastdebug || exit $?
JBSDK=${JBRSDK_BASE_NAME}-linux-x64-fastdebug-b${build_number}
BASE_DIR=build/linux-x86_64-normal-server-fastdebug/images
JSDK=${BASE_DIR}/jdk
JBRSDK_BUNDLE=jbrsdk
echo Fixing permissions
chmod -R a+r $JSDK
rm -rf $BASE_DIR/$JBRSDK_BUNDLE
cp -r $JSDK $BASE_DIR/$JBRSDK_BUNDLE || exit $?
cp -R jcef_linux_x64/* $BASE_DIR/$JBRSDK_BUNDLE/lib || exit $?
echo Creating $JBSDK.tar.gz ...
sed 's/JBR/JBRSDK/g' ${BASE_DIR}/${JBRSDK_BUNDLE}/release > release
mv release ${BASE_DIR}/${JBRSDK_BUNDLE}/release
tar -pcf $JBSDK.tar \
--exclude=*.debuginfo --exclude=demo --exclude=sample --exclude=man \
-C $BASE_DIR ${JBRSDK_BUNDLE} || exit $?
gzip $JBSDK.tar || exit $?
JBR_BUNDLE=jbr
JBR_BASE_NAME=jbr-$JBSDK_VERSION
rm -rf $BASE_DIR/$JBR_BUNDLE
JBR=$JBR_BASE_NAME-linux-x64-fastdebug-b$build_number
echo Running jlink....
${JSDK}/bin/jlink \
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
--add-modules $(xargs < modules.list | sed s/" "//g | sed s/,$//g) \
--output ${BASE_DIR}/${JBR_BUNDLE} || exit $?
cp -R jcef_linux_x64/* $BASE_DIR/$JBR_BUNDLE/lib || exit $?
echo Modifying release info ...
grep -v \"^JAVA_VERSION\" ${JSDK}/release | grep -v \"^MODULES\" >> ${BASE_DIR}/${JBR_BUNDLE}/release
echo Creating $JBR.tar.gz ...
tar -czf $JBR.tar -C $BASE_DIR ${JBR_BUNDLE} || exit $?
gzip $JBR.tar || exit $?

View File

@@ -6,7 +6,6 @@
# build_number - specifies the number of JetBrainsRuntime build
# bundle_type - specifies bundle to bu built; possible values:
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
# jfx - the bundle 1) jbr with javafx only will be created
#
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
@@ -32,6 +31,7 @@ linux32 bash configure \
--with-debug-level=release \
--with-vendor-name="${VENDOR_NAME}" \
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
--with-jvm-features=shenandoahgc \
--with-version-pre= \
--with-version-build=$JDK_BUILD_NUMBER \
--with-version-opt=b${build_number} \

View File

@@ -1,10 +0,0 @@
#!/bin/bash -x
JBSDK_VERSION=$1
JDK_BUILD_NUMBER=$2
build_number=$3
script_dir=jb/project/tools/mac/scripts
${script_dir}/mkimages.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jcef" || exit $?
${script_dir}/mkimages.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx" || exit $?
${script_dir}/mkimages.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "dcevm" || exit $?
${script_dir}/mkimages.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx_jcef" || exit $?

View File

@@ -1,12 +1,14 @@
#!/bin/bash -x
# The following parameters must be specified:
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
# JBSDK_VERSION - specifies major version of OpenJDK e.g. 11_0_6 (instead of dots '.' underbars "_" are used)
# JDK_BUILD_NUMBER - specifies update release of OpenJDK build or the value of --with-version-build argument to configure
# build_number - specifies the number of JetBrainsRuntime build
# bundle_type - specifies bundle to bu built; possible values:
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
# jfx - the bundle 1) jbr with javafx only will be created
# bundle_type - specifies bundle to be built; possible values:
# jcef - the release bundles with jcef
# dcevm - the release bundles with dcevm patches
# nomod - the release bundles without any additional modules (jcef)
# fd - the fastdebug bundles which also include the jcef module
#
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
@@ -19,38 +21,48 @@
# Environment variables:
# MODULAR_SDK_PATH - specifies the path to the directory where imported modules are located.
# By default imported modules should be located in ./modular-sdk
# JCEF_PATH - specifies the path to the directory where JCEF binaries are located.
# By default imported modules should be located in ./jcef_mac
# JCEF_PATH - specifies the path to the directory with JCEF binaries.
# By default JCEF binaries should be located in ./jcef_mac
JBSDK_VERSION=$1
JDK_BUILD_NUMBER=$2
build_number=$3
bundle_type=$4
architecture=$5 # aarch64 or x64
enable_aot=$6 # temporary param for building test jre with aot under aarch64
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
WITH_IMPORT_MODULES="--with-import-modules=${MODULAR_SDK_PATH:=./modular-sdk}"
JCEF_PATH=${JCEF_PATH:=./jcef_mac}
architecture=${architecture:=x64}
source jb/project/tools/common.sh
function copyJNF {
__contents_dir=$1
mkdir -p ${__contents_dir}/Frameworks
cp -Rp Frameworks/JavaNativeFoundation.framework ${__contents_dir}/Frameworks
}
function create_jbr {
case "$1" in
"${bundle_type}_lw")
JBR_BASE_NAME=jbr_${bundle_type}_lw-${JBSDK_VERSION}
grep -v "jdk.compiler\|jdk.hotspot.agent" modules.list > modules_tmp.list
;;
"jfx" | "jcef" | "dcevm" | "nomod")
JBR_BUNDLE=jbr_${bundle_type}
case "${bundle_type}" in
"jcef" | "dcevm" | "nomod" | "fd")
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
cat modules.list > modules_tmp.list
;;
"jfx_jcef")
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
cat modules.list > modules_tmp.list
;;
*)
echo "***ERR*** bundle was not specified" && exit 1
echo "***ERR*** bundle was not specified" && do_exit 1
;;
esac
if [[ "${architecture}" == *aarch64* ]] && [[ "${enable_aot}" != *enable_aot* ]]; then
# aot isn't supported yet, so remove dependent modules
echo "Exclude jdk.internal.vm.compiler and jdk.aot (because aot not supported yet)"
cat modules.list | \
grep -v "jdk.internal.vm.compiler\|jdk.aot" \
> modules_tmp.list
else
cat modules.list > modules_tmp.list
fi
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
JRE_CONTENTS=${BASE_DIR}/${JBR_BUNDLE}/Contents
@@ -60,94 +72,147 @@ function create_jbr {
fi
mkdir -p ${JRE_CONTENTS}
JBR=${JBR_BASE_NAME}-osx-x64-b${build_number}
JBR=${JBR_BASE_NAME}-osx-${architecture}-b${build_number}
echo Running jlink....
${BASE_DIR}/$JBRSDK_BUNDLE/Contents/Home/bin/jlink \
--module-path ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/jmods --no-man-pages --compress=2 \
--add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output ${JRE_HOME} || exit $?
--add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output ${JRE_HOME} || do_exit $?
grep -v "^JAVA_VERSION" ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/release | grep -v "^MODULES" >> ${JRE_HOME}/release
cp -R ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/MacOS ${JRE_CONTENTS}
cp ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Info.plist ${JRE_CONTENTS}
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]]; then
rm -rf ${JRE_CONTENTS}/Frameworks || exit $?
cp -a ${JCEF_PATH}/Frameworks ${JRE_CONTENTS} || exit $?
rm -rf ${JRE_CONTENTS}/Frameworks || do_exit $?
if [[ "${architecture}" == *aarch64* ]]; then
# we can't notarize this library as usual framework (with headers and tbd-file)
# but single library notarizes correctly
copyJNF ${JRE_CONTENTS}
fi
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]] || [[ "${bundle_type}" == fd ]]; then
cp -a ${JCEF_PATH}/Frameworks ${JRE_CONTENTS} || do_exit $?
fi
echo Creating ${JBR}.tar.gz ...
rm -rf ${BASE_DIR}/jbr
cp -R ${BASE_DIR}/${JBR_BUNDLE} ${BASE_DIR}/jbr
COPYFILE_DISABLE=1 tar -pczf ${JBR}.tar.gz --exclude='*.dSYM' --exclude='man' -C ${BASE_DIR} jbr || exit $?
COPYFILE_DISABLE=1 tar -pczf ${JBR}.tar.gz --exclude='*.dSYM' --exclude='man' -C ${BASE_DIR} jbr || do_exit $?
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
}
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
WITH_DEBUG_LEVEL="--with-debug-level=release"
RELEASE_NAME=macosx-x86_64-normal-server-release
git checkout -- modules.list src/java.desktop/share/classes/module-info.java
CONF_ARCHITECTURE=x86_64
if [[ "${architecture}" == *aarch64* ]]; then
CONF_ARCHITECTURE=aarch64
fi
CONF_NAME=macosx-${CONF_ARCHITECTURE}-normal-server-release
JBSDK=${JBRSDK_BASE_NAME}-osx-${architecture}-b${build_number}
case "$bundle_type" in
"jfx")
git apply -p0 < jb/project/tools/patches/exclude_jcef_module.patch
;;
"jcef")
git apply -p0 < jb/project/tools/patches/exclude_jfx_module.patch
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
do_reset_changes=1
;;
"dcevm")
git am jb/project/tools/patches/dcevm/*.patch
HEAD_REVISION=$(git rev-parse HEAD)
git am jb/project/tools/patches/dcevm/*.patch || do_exit $?
do_reset_dcevm=1
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
do_reset_changes=1
;;
"nomod")
git apply -p0 < jb/project/tools/patches/exclude_jcef_module.patch
git apply -p0 < jb/project/tools/patches/exclude_jfx_module.patch
WITH_IMPORT_MODULES=""
;;
"fd")
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
do_reset_changes=1
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
CONF_NAME=macosx-${CONF_ARCHITECTURE}-normal-server-fastdebug
JBSDK=${JBRSDK_BASE_NAME}-osx-${architecture}-fastdebug-b${build_number}
;;
*)
echo "***ERR*** bundle was not specified" && do_exit 1
;;
esac
sh configure \
if [[ "${architecture}" == *aarch64* ]]; then
# NOTE: aot, cds aren't supported yet
WITH_JVM_FEATURES="--with-jvm-features=-aot"
if [[ "${enable_aot}" == *enable_aot* ]]; then
echo "Enable unstable jvm feature: AOT"
WITH_JVM_FEATURES=""
fi
sh configure \
--disable-warnings-as-errors \
$WITH_DEBUG_LEVEL \
--with-vendor-name="${VENDOR_NAME}" \
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
--with-jvm-features=shenandoahgc \
--with-version-pre= \
--with-version-build=${JDK_BUILD_NUMBER} \
--with-version-opt=b${build_number} \
$WITH_IMPORT_MODULES \
--with-boot-jdk=`/usr/libexec/java_home -v 11` \
--enable-cds=yes || exit $?
--disable-hotspot-gtest --disable-javac-server --disable-full-docs --disable-manpages \
--enable-cds=no \
$WITH_JVM_FEATURES \
--with-extra-cflags="-F$(pwd)/Frameworks" \
--with-extra-cxxflags="-F$(pwd)/Frameworks" \
--with-extra-ldflags="-F$(pwd)/Frameworks" || do_exit $?
else
sh configure \
--disable-warnings-as-errors \
$WITH_DEBUG_LEVEL \
--with-vendor-name="${VENDOR_NAME}" \
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
--with-version-pre= \
--with-version-build=${JDK_BUILD_NUMBER} \
--with-version-opt=b${build_number} \
$WITH_IMPORT_MODULES \
--with-boot-jdk=`/usr/libexec/java_home -v 11` \
--enable-cds=yes || do_exit $?
fi
make clean images CONF=$RELEASE_NAME || exit $?
make clean CONF=$CONF_NAME || do_exit $?
make images CONF=$CONF_NAME || do_exit $?
JSDK=build/$RELEASE_NAME/images/jdk-bundle
JBSDK=${JBRSDK_BASE_NAME}-osx-x64-b${build_number}
JSDK=build/${CONF_NAME}/images/jdk-bundle
BASE_DIR=jre
JBRSDK_BUNDLE=jbrsdk
rm -rf $BASE_DIR
mkdir $BASE_DIR || exit $?
cp -a $JSDK/jdk-$JBSDK_VERSION_WITH_DOTS.jdk $BASE_DIR/$JBRSDK_BUNDLE || exit $?
if [[ "$bundle_type" == *jcef* ]] || [[ "$bundle_type" == *dcevm* ]]; then
mkdir $BASE_DIR || do_exit $?
cp -a $JSDK/jdk-$JBSDK_VERSION_WITH_DOTS.jdk $BASE_DIR/$JBRSDK_BUNDLE || do_exit $?
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]] || [[ "${bundle_type}" == fd ]]; then
cp -a ${JCEF_PATH}/Frameworks $BASE_DIR/$JBRSDK_BUNDLE/Contents/
fi
if [ "$bundle_type" == "jfx_jcef" ]; then
if [ "${bundle_type}" == "jcef" ] || [ "${bundle_type}" == "fd" ]; then
echo Creating $JBSDK.tar.gz ...
if [[ "${architecture}" == *aarch64* ]]; then
copyJNF $BASE_DIR/$JBRSDK_BUNDLE/Contents
fi
sed 's/JBR/JBRSDK/g' ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/release > release
mv release ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/release
COPYFILE_DISABLE=1 tar -pczf $JBSDK.tar.gz -C $BASE_DIR \
--exclude='._*' --exclude='.DS_Store' --exclude='*~' \
[ -f "${JBSDK}.tar.gz" ] && rm "${JBSDK}.tar.gz"
COPYFILE_DISABLE=1 tar -pczf ${JBSDK}.tar.gz -C ${BASE_DIR} \
--exclude='.DS_Store' --exclude='*~' \
--exclude='Home/demo' --exclude='Home/man' --exclude='Home/sample' \
$JBRSDK_BUNDLE || exit $?
${JBRSDK_BUNDLE} || do_exit $?
fi
JBR_BUNDLE=jbr_${bundle_type}
create_jbr "${bundle_type}" || exit $?
create_jbr || do_exit $?
if [ "$bundle_type" == "jfx_jcef" ]; then
make test-image || exit $?
if [ "$bundle_type" == "jcef" ]; then
make test-image CONF=$CONF_NAME || do_exit $?
JBRSDK_TEST=$JBRSDK_BASE_NAME-osx-test-x64-b$build_number
JBRSDK_TEST=$JBRSDK_BASE_NAME-osx-test-${architecture}-b$build_number
echo Creating $JBRSDK_TEST.tar.gz ...
COPYFILE_DISABLE=1 tar -pczf $JBRSDK_TEST.tar.gz -C build/macosx-x86_64-normal-server-release/images \
--exclude='test/jdk/demos' test || exit $?
fi
[ -f "${JBRSDK_TEST}.tar.gz" ] && rm "${JBRSDK_TEST}.tar.gz"
COPYFILE_DISABLE=1 tar -pczf ${JBRSDK_TEST}.tar.gz -C build/${CONF_NAME}/images \
--exclude='test/jdk/demos' test || do_exit $?
fi
do_exit 0

View File

@@ -1,99 +0,0 @@
#!/bin/bash -x
# The following parameters must be specified:
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
# build_number - specifies the number of JetBrainsRuntime build
# bundle_type - specifies bundle to bu built; possible values:
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
# jfx - the bundle 1) jbr with javafx only will be created
#
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
#
# $ ./java --version
# openjdk 11.0.6 2020-01-14
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
#
# Environment variables:
# MODULAR_SDK_PATH - specifies the path to the directory where imported modules are located.
# By default imported modules should be located in ./modular-sdk
# JCEF_PATH - specifies the path to the directory where JCEF binaries are located.
# By default imported modules should be located in ./jcef_mac
JBSDK_VERSION=$1
JDK_BUILD_NUMBER=$2
build_number=$3
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
WITH_IMPORT_MODULES="--with-import-modules=${MODULAR_SDK_PATH:=./modular-sdk}"
JCEF_PATH=${JCEF_PATH:=./jcef_mac}
source jb/project/tools/common.sh
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
sh configure \
--disable-warnings-as-errors \
$WITH_DEBUG_LEVEL \
--with-vendor-name="${VENDOR_NAME}" \
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
--with-version-pre= \
--with-version-build=${JDK_BUILD_NUMBER} \
--with-version-opt=b${build_number} \
$WITH_IMPORT_MODULES \
--with-boot-jdk=`/usr/libexec/java_home -v 11` \
--enable-cds=yes || exit $?
make clean CONF=macosx-x86_64-normal-server-fastdebug || exit $?
make images CONF=macosx-x86_64-normal-server-fastdebug || exit $?
JSDK=build/macosx-x86_64-normal-server-fastdebug/images/jdk-bundle
JBSDK=${JBRSDK_BASE_NAME}-osx-x64-fastdebug-b${build_number}
BASE_DIR=jre
JBRSDK_BUNDLE=jbrsdk
rm -rf $BASE_DIR
mkdir $BASE_DIR || exit $?
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
cp -a $JSDK/jdk-$JBSDK_VERSION_WITH_DOTS.jdk $BASE_DIR/$JBRSDK_BUNDLE || exit $?
echo Creating $JBSDK.tar.gz ...
cp -a ${JCEF_PATH}/Frameworks $BASE_DIR/$JBRSDK_BUNDLE/Contents/
sed 's/JBR/JBRSDK/g' ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/release > release
mv release ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/release
COPYFILE_DISABLE=1 \
tar -pczf ${JBSDK}.tar.gz -C ${BASE_DIR} \
--exclude='._*' --exclude='.DS_Store' --exclude='*~' \
--exclude='Home/demo' --exclude='Home/man' --exclude='Home/sample' \
${JBRSDK_BUNDLE} || exit $?
JBR_BUNDLE=jbr
JRE_CONTENTS=$BASE_DIR/$JBR_BUNDLE/Contents
JRE_HOME=$JRE_CONTENTS/Home
JBR_BASE_NAME=jbr-$JBSDK_VERSION
mkdir -p $JRE_CONTENTS
if [ -d "$JRE_HOME" ]; then
rm -rf $JRE_HOME
fi
JBR=${JBR_BASE_NAME}-osx-x64-fastdebug-b${build_number}
$BASE_DIR/$JBRSDK_BUNDLE/Contents/Home/bin/jlink \
--module-path $BASE_DIR/$JBRSDK_BUNDLE/Contents/Home/jmods --no-man-pages --compress=2 \
--add-modules $(xargs < modules.list | sed s/" "//g) --output $JRE_HOME || exit $?
grep -v "^JAVA_VERSION" $BASE_DIR/$JBRSDK_BUNDLE/Contents/Home/release | grep -v "^MODULES" >> $JRE_HOME/release
cp -R $BASE_DIR/$JBRSDK_BUNDLE/Contents/MacOS $JRE_CONTENTS
cp $BASE_DIR/$JBRSDK_BUNDLE/Contents/Info.plist $JRE_CONTENTS
cp -a ${JCEF_PATH}/Frameworks ${JRE_CONTENTS} || exit $?
echo Creating $JBR.tar.gz ...
COPYFILE_DISABLE=1 tar -pczf $JBR.tar.gz --exclude='*.dSYM' --exclude='man' -C $BASE_DIR $JBR_BUNDLE || exit $?

View File

@@ -58,7 +58,7 @@ file="$APP_NAME.zip"
log "Zipping $file..."
rm -rf "$file"
ditto -c -k --sequesterRsrc --keepParent "$APP_DIRECTORY/Contents" "$file"
ditto -c -k --sequesterRsrc --keepParent "$APP_DIRECTORY" "$file"
log "Notarizing $file..."
rm -rf "altool.init.out" "altool.check.out"

View File

@@ -26,17 +26,30 @@ log "Signing libraries and executables..."
# -perm +111 searches for executables
for f in \
"Contents/Home/bin" \
"Contents/Home/lib" \
"Contents/Frameworks"; do
"Contents/Home/lib"; do
if [ -d "$APP_DIRECTORY/$f" ]; then
find "$APP_DIRECTORY/$f" \
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -perm +111 \) \
-exec codesign --timestamp \
-exec codesign --timestamp --force \
-v -s "$JB_CERT" --options=runtime \
--entitlements entitlements.xml {} \;
fi
done
if [ -d "$APP_DIRECTORY/Contents/Frameworks" ]; then
log "Signing frameworks..."
for f in $APP_DIRECTORY/Contents/Frameworks/*; do
find "$f" \
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" \) \
-exec codesign --timestamp --force \
-v -s "$JB_CERT" \
--entitlements entitlements.xml {} \;
codesign --timestamp --force \
-v -s "$JB_CERT" --options=runtime \
--entitlements entitlements.xml "$f"
done
fi
log "Signing libraries in jars in $PWD"
# todo: add set -euo pipefail; into the inner sh -c
@@ -55,7 +68,7 @@ find "$APP_DIRECTORY" -name '*.jar' \
find jarfolder \
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -name "jattach" \) \
-exec codesign --timestamp \
-exec codesign --timestamp --force \
-v -s "$JB_CERT" --options=runtime \
--entitlements entitlements.xml {} \;
@@ -71,7 +84,7 @@ for f in \
if [ -d "$APP_DIRECTORY/$f" ]; then
find "$APP_DIRECTORY/$f" \
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -perm +111 \) \
-exec codesign --timestamp \
-exec codesign --timestamp --force \
-v -s "$JB_CERT" --options=runtime \
--entitlements entitlements.xml {} \;
fi

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/bash -x
#immediately exit script with an error if a command fails
set -euo pipefail
@@ -32,8 +32,10 @@ mkdir "$BACKUP_JMODS"
log "Unzipping $INPUT_FILE to $EXPLODED ..."
tar -xzvf "$INPUT_FILE" --directory $EXPLODED
rm "$INPUT_FILE"
BUILD_NAME="$(ls "$EXPLODED")"
sed -i '' s/BNDL/APPL/ $EXPLODED/$BUILD_NAME/Contents/Info.plist
rm -f $EXPLODED/$BUILD_NAME/Contents/CodeResources
rm "$INPUT_FILE"
if test -d $EXPLODED/$BUILD_NAME/Contents/Home/jmods; then
mv $EXPLODED/$BUILD_NAME/Contents/Home/jmods $BACKUP_JMODS
fi
@@ -125,8 +127,8 @@ log "Zipping $BUILD_NAME to $INPUT_FILE ..."
mv $BACKUP_JMODS/jmods $EXPLODED/$BUILD_NAME/Contents/Home
fi
COPYFILE_DISABLE=1 tar -pczf $INPUT_FILE --exclude='*.dSYM' --exclude='man' -C $EXPLODED $BUILD_NAME
tar -pczvf $INPUT_FILE --exclude='*.dSYM' --exclude='man' -C $EXPLODED $BUILD_NAME
log "Finished zipping"
)
rm -rf "$EXPLODED"
log "Done"
log "Done"

View File

@@ -0,0 +1,30 @@
diff --git modules.list modules.list
index 33375b527c4..76539cbc0e0 100644
--- modules.list
+++ modules.list
@@ -55,4 +55,7 @@ jdk.unsupported,
jdk.xml.dom,
jdk.zipfs,
jdk.hotspot.agent,
-jdk.jcmd
+jdk.jcmd,
+jcef,
+gluegen.rt,
+jogl.all
diff --git src/java.desktop/share/classes/module-info.java src/java.desktop/share/classes/module-info.java
index b663b382f52..3e9acdc0c27 100644
--- src/java.desktop/share/classes/module-info.java
+++ src/java.desktop/share/classes/module-info.java
@@ -109,7 +109,11 @@ module java.desktop {
// see make/GensrcModuleInfo.gmk
exports sun.awt to
jdk.accessibility,
- jdk.unsupported.desktop;
+ jdk.unsupported.desktop,
+ jcef,
+ jogl.all;
+
+ exports java.awt.peer to jcef;
exports java.awt.dnd.peer to jdk.unsupported.desktop;
exports sun.awt.dnd to jdk.unsupported.desktop;

View File

@@ -1,7 +1,7 @@
From 4f9a0ded48f51bdfb3ed7cc18df812c456d48a8c Mon Sep 17 00:00:00 2001
From d75ca6d0d1799ffde4199f6ef5047699b98d3ff2 Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Wed, 14 Nov 2018 21:09:39 +0100
Subject: [PATCH 01/50] Apply basic dcevm11 patch
Subject: [PATCH 01/18] Apply basic dcevm11 patch
---
src/hotspot/share/ci/ciObjectFactory.cpp | 25 +
@@ -14,8 +14,9 @@ Subject: [PATCH 01/50] Apply basic dcevm11 patch
.../share/classfile/classLoaderExt.cpp | 1 +
src/hotspot/share/classfile/dictionary.cpp | 46 +-
src/hotspot/share/classfile/dictionary.hpp | 10 +
src/hotspot/share/classfile/javaClasses.cpp | 51 +
src/hotspot/share/classfile/javaClasses.hpp | 52 +-
src/hotspot/share/classfile/javaClasses.cpp | 63 +
src/hotspot/share/classfile/javaClasses.hpp | 54 +-
.../share/classfile/javaClasses.inline.hpp | 8 +
src/hotspot/share/classfile/klassFactory.cpp | 3 +
src/hotspot/share/classfile/klassFactory.hpp | 1 +
.../share/classfile/loaderConstraints.cpp | 15 +-
@@ -66,7 +67,7 @@ Subject: [PATCH 01/50] Apply basic dcevm11 patch
src/hotspot/share/runtime/mutexLocker.cpp | 5 +-
src/hotspot/share/runtime/mutexLocker.hpp | 2 +
src/hotspot/share/runtime/reflection.cpp | 6 +
62 files changed, 3530 insertions(+), 74 deletions(-)
63 files changed, 3552 insertions(+), 74 deletions(-)
create mode 100644 src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
create mode 100644 src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
@@ -125,7 +126,7 @@ index 1063c9853e1..3e9d48c4cdc 100644
#endif // SHARE_VM_CI_CIOBJECTFACTORY_HPP
diff --git a/src/hotspot/share/classfile/classFileParser.cpp b/src/hotspot/share/classfile/classFileParser.cpp
index 0d4862dd449..ea150df9104 100644
index 6d65cca2101..e2b8c5793d0 100644
--- a/src/hotspot/share/classfile/classFileParser.cpp
+++ b/src/hotspot/share/classfile/classFileParser.cpp
@@ -954,6 +954,8 @@ void ClassFileParser::parse_interfaces(const ClassFileStream* const stream,
@@ -137,7 +138,7 @@ index 0d4862dd449..ea150df9104 100644
if (!interf->is_interface()) {
THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(),
err_msg("class %s can not implement %s, because it is not an interface (%s)",
@@ -3747,7 +3749,7 @@ const InstanceKlass* ClassFileParser::parse_super_class(ConstantPool* const cp,
@@ -3826,7 +3828,7 @@ const InstanceKlass* ClassFileParser::parse_super_class(ConstantPool* const cp,
// However, make sure it is not an array type.
bool is_array = false;
if (cp->tag_at(super_class_index).is_klass()) {
@@ -146,7 +147,7 @@ index 0d4862dd449..ea150df9104 100644
if (need_verify)
is_array = super_klass->is_array_klass();
} else if (need_verify) {
@@ -4415,7 +4417,10 @@ void ClassFileParser::set_precomputed_flags(InstanceKlass* ik) {
@@ -4494,7 +4496,10 @@ void ClassFileParser::set_precomputed_flags(InstanceKlass* ik) {
if (!_has_empty_finalizer) {
if (_has_finalizer ||
(super != NULL && super->has_finalizer())) {
@@ -158,7 +159,7 @@ index 0d4862dd449..ea150df9104 100644
}
}
@@ -5792,6 +5797,7 @@ ClassFileParser::ClassFileParser(ClassFileStream* stream,
@@ -5872,6 +5877,7 @@ ClassFileParser::ClassFileParser(ClassFileStream* stream,
const InstanceKlass* host_klass,
GrowableArray<Handle>* cp_patches,
Publicity pub_level,
@@ -166,7 +167,7 @@ index 0d4862dd449..ea150df9104 100644
TRAPS) :
_stream(stream),
_requested_name(name),
@@ -5850,7 +5856,8 @@ ClassFileParser::ClassFileParser(ClassFileStream* stream,
@@ -5930,7 +5936,8 @@ ClassFileParser::ClassFileParser(ClassFileStream* stream,
_has_finalizer(false),
_has_empty_finalizer(false),
_has_vanilla_constructor(false),
@@ -176,7 +177,7 @@ index 0d4862dd449..ea150df9104 100644
_class_name = name != NULL ? name : vmSymbols::unknown_class_name();
@@ -6251,14 +6258,15 @@ void ClassFileParser::post_process_parsed_stream(const ClassFileStream* const st
@@ -6331,14 +6338,15 @@ void ClassFileParser::post_process_parsed_stream(const ClassFileStream* const st
CHECK);
}
Handle loader(THREAD, _loader_data->class_loader());
@@ -195,7 +196,7 @@ index 0d4862dd449..ea150df9104 100644
if (_super_klass != NULL) {
if (_super_klass->has_nonstatic_concrete_methods()) {
diff --git a/src/hotspot/share/classfile/classFileParser.hpp b/src/hotspot/share/classfile/classFileParser.hpp
index 9f7204be9b6..3db14b678f3 100644
index 3bdfd34e39f..d792ab4bb3f 100644
--- a/src/hotspot/share/classfile/classFileParser.hpp
+++ b/src/hotspot/share/classfile/classFileParser.hpp
@@ -115,6 +115,9 @@ class ClassFileParser {
@@ -208,7 +209,7 @@ index 9f7204be9b6..3db14b678f3 100644
enum { fixed_buffer_size = 128 };
u_char _linenumbertable_buffer[fixed_buffer_size];
@@ -496,6 +499,9 @@ class ClassFileParser {
@@ -500,6 +503,9 @@ class ClassFileParser {
FieldLayoutInfo* info,
TRAPS);
@@ -218,7 +219,7 @@ index 9f7204be9b6..3db14b678f3 100644
public:
ClassFileParser(ClassFileStream* stream,
Symbol* name,
@@ -504,6 +510,7 @@ class ClassFileParser {
@@ -508,6 +514,7 @@ class ClassFileParser {
const InstanceKlass* host_klass,
GrowableArray<Handle>* cp_patches,
Publicity pub_level,
@@ -226,7 +227,7 @@ index 9f7204be9b6..3db14b678f3 100644
TRAPS);
~ClassFileParser();
@@ -532,6 +539,7 @@ class ClassFileParser {
@@ -536,6 +543,7 @@ class ClassFileParser {
ClassLoaderData* loader_data() const { return _loader_data; }
const Symbol* class_name() const { return _class_name; }
const InstanceKlass* super_klass() const { return _super_klass; }
@@ -235,10 +236,10 @@ index 9f7204be9b6..3db14b678f3 100644
ReferenceType reference_type() const { return _rt; }
AccessFlags access_flags() const { return _access_flags; }
diff --git a/src/hotspot/share/classfile/classLoader.cpp b/src/hotspot/share/classfile/classLoader.cpp
index 2c73ef93934..28ed54b93e1 100644
index 78eb096458a..368c59e2cbf 100644
--- a/src/hotspot/share/classfile/classLoader.cpp
+++ b/src/hotspot/share/classfile/classLoader.cpp
@@ -1501,6 +1501,7 @@ InstanceKlass* ClassLoader::load_class(Symbol* name, bool search_append_only, TR
@@ -1505,6 +1505,7 @@ InstanceKlass* ClassLoader::load_class(Symbol* name, bool search_append_only, TR
protection_domain,
NULL, // host_klass
NULL, // cp_patches
@@ -448,10 +449,10 @@ index d26f1f11fb4..fd4b134d7a7 100644
// An entry in the class loader data dictionaries, this describes a class as
diff --git a/src/hotspot/share/classfile/javaClasses.cpp b/src/hotspot/share/classfile/javaClasses.cpp
index 438e7aa4ec9..a89443d22ea 100644
index fc4efecc6e7..903979c9ef2 100644
--- a/src/hotspot/share/classfile/javaClasses.cpp
+++ b/src/hotspot/share/classfile/javaClasses.cpp
@@ -2443,6 +2443,8 @@ void java_lang_Throwable::fill_in_stack_trace(Handle throwable, const methodHand
@@ -2446,6 +2446,8 @@ void java_lang_Throwable::fill_in_stack_trace(Handle throwable, const methodHand
skip_throwableInit_check = true;
}
}
@@ -460,7 +461,7 @@ index 438e7aa4ec9..a89443d22ea 100644
if (method->is_hidden()) {
if (skip_hidden) continue;
}
@@ -3625,6 +3627,50 @@ void java_lang_invoke_DirectMethodHandle::serialize_offsets(SerializeClosure* f)
@@ -3628,6 +3630,62 @@ void java_lang_invoke_DirectMethodHandle::serialize_offsets(SerializeClosure* f)
}
#endif
@@ -478,14 +479,20 @@ index 438e7aa4ec9..a89443d22ea 100644
+ dmh->long_field_put(_static_offset_offset, static_offset);
+}
+
+#define DIRECTMETHODHANDLE_STATIC_ACCESSOR_FIELDS_DO(macro) \
+ macro(_static_offset_offset, k, vmSymbols::static_offset_name(), long_signature, false)
+
+void java_lang_invoke_DirectMethodHandle_StaticAccessor::compute_offsets() {
+ Klass* klass_oop = SystemDictionary::DirectMethodHandle_StaticAccessor_klass();
+ if (klass_oop != NULL) {
+ compute_offset(_static_offset_offset, InstanceKlass::cast(klass_oop), vmSymbols::static_offset_name(), vmSymbols::long_signature());
+ }
+ InstanceKlass* k = SystemDictionary::DirectMethodHandle_StaticAccessor_klass();
+ DIRECTMETHODHANDLE_STATIC_ACCESSOR_FIELDS_DO(FIELD_COMPUTE_OFFSET);
+}
+
+#if INCLUDE_CDS
+void java_lang_invoke_DirectMethodHandle_StaticAccessor::serialize_offsets(SerializeClosure* f) {
+ DIRECTMETHODHANDLE_STATIC_ACCESSOR_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
+}
+#endif
+
+// Support for java_lang_invoke_DirectMethodHandle$Accessor
+
+int java_lang_invoke_DirectMethodHandle_Accessor::_field_offset_offset;
@@ -500,18 +507,24 @@ index 438e7aa4ec9..a89443d22ea 100644
+ dmh->int_field_put(_field_offset_offset, field_offset);
+}
+
+#define DIRECTMETHODHANDLE_ACCESSOR_FIELDS_DO(macro) \
+ macro(_field_offset_offset, k, vmSymbols::field_offset_name(), int_signature, false)
+
+void java_lang_invoke_DirectMethodHandle_Accessor::compute_offsets() {
+ Klass* klass_oop = SystemDictionary::DirectMethodHandle_Accessor_klass();
+ if (klass_oop != NULL) {
+ compute_offset(_field_offset_offset, InstanceKlass::cast(klass_oop), vmSymbols::field_offset_name(), vmSymbols::int_signature());
+ }
+ InstanceKlass* k = SystemDictionary::DirectMethodHandle_Accessor_klass();
+ DIRECTMETHODHANDLE_ACCESSOR_FIELDS_DO(FIELD_COMPUTE_OFFSET);
+}
+
+#if INCLUDE_CDS
+void java_lang_invoke_DirectMethodHandle_Accessor::serialize_offsets(SerializeClosure* f) {
+ DIRECTMETHODHANDLE_ACCESSOR_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
+}
+#endif
+
// Support for java_lang_invoke_MethodHandle
int java_lang_invoke_MethodHandle::_type_offset;
@@ -3811,6 +3857,11 @@ void java_lang_invoke_ResolvedMethodName::set_vmtarget(oop resolved_method, Meth
@@ -3814,6 +3872,11 @@ void java_lang_invoke_ResolvedMethodName::set_vmtarget(oop resolved_method, Meth
resolved_method->address_field_put(_vmtarget_offset, (address)m);
}
@@ -524,10 +537,19 @@ index 438e7aa4ec9..a89443d22ea 100644
// lookup ResolvedMethod oop in the table, or create a new one and intern it
oop resolved_method = ResolvedMethodTable::find_method(m());
diff --git a/src/hotspot/share/classfile/javaClasses.hpp b/src/hotspot/share/classfile/javaClasses.hpp
index bd9cdca3fe3..ceb1670df5d 100644
index bd9cdca3fe3..da004d1b307 100644
--- a/src/hotspot/share/classfile/javaClasses.hpp
+++ b/src/hotspot/share/classfile/javaClasses.hpp
@@ -253,10 +253,10 @@ class java_lang_Class : AllStatic {
@@ -67,6 +67,8 @@
f(java_lang_invoke_LambdaForm) \
f(java_lang_invoke_MethodType) \
f(java_lang_invoke_CallSite) \
+ f(java_lang_invoke_DirectMethodHandle_StaticAccessor) \
+ f(java_lang_invoke_DirectMethodHandle_Accessor) \
f(java_lang_invoke_MethodHandleNatives_CallSiteContext) \
f(java_security_AccessControlContext) \
f(java_lang_reflect_AccessibleObject) \
@@ -253,10 +255,10 @@ class java_lang_Class : AllStatic {
static void set_init_lock(oop java_class, oop init_lock);
static void set_protection_domain(oop java_class, oop protection_domain);
static void set_class_loader(oop java_class, oop class_loader);
@@ -539,7 +561,7 @@ index bd9cdca3fe3..ceb1670df5d 100644
static void allocate_fixup_lists();
static void compute_offsets();
@@ -1055,6 +1055,55 @@ class java_lang_invoke_DirectMethodHandle: AllStatic {
@@ -1055,6 +1057,55 @@ class java_lang_invoke_DirectMethodHandle: AllStatic {
static int member_offset_in_bytes() { return _member_offset; }
};
@@ -562,9 +584,9 @@ index bd9cdca3fe3..ceb1670df5d 100644
+ static bool is_subclass(Klass* klass) {
+ return klass->is_subclass_of(SystemDictionary::DirectMethodHandle_StaticAccessor_klass());
+ }
+ static bool is_instance(oop obj) {
+ return obj != NULL && is_subclass(obj->klass());
+ }
+ static bool is_instance(oop obj);
+
+ static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
+};
+
+// Interface to java.lang.invoke.DirectMethodHandle$Accessor objects
@@ -586,16 +608,16 @@ index bd9cdca3fe3..ceb1670df5d 100644
+ static bool is_subclass(Klass* klass) {
+ return klass->is_subclass_of(SystemDictionary::DirectMethodHandle_Accessor_klass());
+ }
+ static bool is_instance(oop obj) {
+ return obj != NULL && is_subclass(obj->klass());
+ }
+ static bool is_instance(oop obj);
+
+ static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
+};
+
+
// Interface to java.lang.invoke.LambdaForm objects
// (These are a private interface for managing adapter code generation.)
@@ -1106,6 +1155,7 @@ class java_lang_invoke_ResolvedMethodName : AllStatic {
@@ -1106,6 +1157,7 @@ class java_lang_invoke_ResolvedMethodName : AllStatic {
static Method* vmtarget(oop resolved_method);
static void set_vmtarget(oop resolved_method, Method* method);
@@ -603,6 +625,25 @@ index bd9cdca3fe3..ceb1670df5d 100644
// find or create resolved member name
static oop find_resolved_method(const methodHandle& m, TRAPS);
diff --git a/src/hotspot/share/classfile/javaClasses.inline.hpp b/src/hotspot/share/classfile/javaClasses.inline.hpp
index 6c5787f4b70..ba9cffa8c62 100644
--- a/src/hotspot/share/classfile/javaClasses.inline.hpp
+++ b/src/hotspot/share/classfile/javaClasses.inline.hpp
@@ -175,6 +175,14 @@ inline bool java_lang_invoke_DirectMethodHandle::is_instance(oop obj) {
return obj != NULL && is_subclass(obj->klass());
}
+inline bool java_lang_invoke_DirectMethodHandle_StaticAccessor::is_instance(oop obj) {
+ return obj != NULL && is_subclass(obj->klass());
+}
+
+inline bool java_lang_invoke_DirectMethodHandle_Accessor::is_instance(oop obj) {
+ return obj != NULL && is_subclass(obj->klass());
+}
+
inline bool java_lang_Module::is_instance(oop obj) {
return obj != NULL && obj->klass() == SystemDictionary::Module_klass();
}
diff --git a/src/hotspot/share/classfile/klassFactory.cpp b/src/hotspot/share/classfile/klassFactory.cpp
index 3614480f16b..355016c8f61 100644
--- a/src/hotspot/share/classfile/klassFactory.cpp
@@ -644,10 +685,10 @@ index c08f8b9a119..b7b96c5cfdc 100644
public:
static InstanceKlass* check_shared_class_file_load_hook(
diff --git a/src/hotspot/share/classfile/loaderConstraints.cpp b/src/hotspot/share/classfile/loaderConstraints.cpp
index 9cd141bbfa2..e4a23e8a27c 100644
index 7cccf23efb7..a26b9d1cb55 100644
--- a/src/hotspot/share/classfile/loaderConstraints.cpp
+++ b/src/hotspot/share/classfile/loaderConstraints.cpp
@@ -87,6 +87,19 @@ LoaderConstraintEntry** LoaderConstraintTable::find_loader_constraint(
@@ -90,6 +90,19 @@ LoaderConstraintEntry** LoaderConstraintTable::find_loader_constraint(
return pp;
}
@@ -667,7 +708,7 @@ index 9cd141bbfa2..e4a23e8a27c 100644
void LoaderConstraintTable::purge_loader_constraints() {
assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
@@ -442,7 +455,7 @@ void LoaderConstraintTable::verify(PlaceholderTable* placeholders) {
@@ -445,7 +458,7 @@ void LoaderConstraintTable::verify(PlaceholderTable* placeholders) {
if (k != NULL) {
// We found the class in the dictionary, so we should
// make sure that the Klass* matches what we already have.
@@ -691,7 +732,7 @@ index 8a7a1248e62..611e18aaf85 100644
bool add_entry(Symbol* name, InstanceKlass* klass1, Handle loader1,
InstanceKlass* klass2, Handle loader2);
diff --git a/src/hotspot/share/classfile/systemDictionary.cpp b/src/hotspot/share/classfile/systemDictionary.cpp
index 91dc9faeccb..9dbd6cc9c12 100644
index bfd67334f82..5a745b6fca6 100644
--- a/src/hotspot/share/classfile/systemDictionary.cpp
+++ b/src/hotspot/share/classfile/systemDictionary.cpp
@@ -201,6 +201,7 @@ Klass* SystemDictionary::resolve_or_fail(Symbol* class_name, Handle class_loader
@@ -783,7 +824,7 @@ index 91dc9faeccb..9dbd6cc9c12 100644
} );
return k;
@@ -1554,11 +1567,12 @@ static void post_class_define_event(InstanceKlass* k, const ClassLoaderData* def
@@ -1553,11 +1566,12 @@ static void post_class_define_event(InstanceKlass* k, const ClassLoaderData* def
}
}
@@ -797,7 +838,7 @@ index 91dc9faeccb..9dbd6cc9c12 100644
// for bootstrap and other parallel classloaders don't acquire lock,
// use placeholder token
@@ -1583,7 +1597,11 @@ void SystemDictionary::define_instance_class(InstanceKlass* k, TRAPS) {
@@ -1582,7 +1596,11 @@ void SystemDictionary::define_instance_class(InstanceKlass* k, TRAPS) {
Symbol* name_h = k->name();
Dictionary* dictionary = loader_data->dictionary();
unsigned int d_hash = dictionary->compute_hash(name_h);
@@ -810,7 +851,7 @@ index 91dc9faeccb..9dbd6cc9c12 100644
// Register class just loaded with class loader (placed in Vector)
// Note we do this before updating the dictionary, as this can
@@ -1617,7 +1635,7 @@ void SystemDictionary::define_instance_class(InstanceKlass* k, TRAPS) {
@@ -1616,7 +1634,7 @@ void SystemDictionary::define_instance_class(InstanceKlass* k, TRAPS) {
k->eager_initialize(THREAD);
// notify jvmti
@@ -819,7 +860,7 @@ index 91dc9faeccb..9dbd6cc9c12 100644
assert(THREAD->is_Java_thread(), "thread->is_Java_thread()");
JvmtiExport::post_class_load((JavaThread *) THREAD, k);
@@ -1695,7 +1713,7 @@ InstanceKlass* SystemDictionary::find_or_define_instance_class(Symbol* class_nam
@@ -1694,7 +1712,7 @@ InstanceKlass* SystemDictionary::find_or_define_instance_class(Symbol* class_nam
}
}
@@ -828,7 +869,7 @@ index 91dc9faeccb..9dbd6cc9c12 100644
Handle linkage_exception = Handle(); // null handle
@@ -1818,6 +1836,18 @@ void SystemDictionary::add_to_hierarchy(InstanceKlass* k, TRAPS) {
@@ -1817,6 +1835,18 @@ void SystemDictionary::add_to_hierarchy(InstanceKlass* k, TRAPS) {
CodeCache::flush_dependents_on(k);
}
@@ -847,7 +888,7 @@ index 91dc9faeccb..9dbd6cc9c12 100644
// ----------------------------------------------------------------------------
// GC support
@@ -2089,7 +2119,7 @@ void SystemDictionary::check_constraints(unsigned int d_hash,
@@ -2113,7 +2143,7 @@ void SystemDictionary::check_constraints(unsigned int d_hash,
// also hold array classes.
assert(check->is_instance_klass(), "noninstance in systemdictionary");
@@ -857,10 +898,10 @@ index 91dc9faeccb..9dbd6cc9c12 100644
ss.print("loader %s", loader_data->loader_name_and_id());
ss.print(" attempted duplicate %s definition for %s. (%s)",
diff --git a/src/hotspot/share/classfile/systemDictionary.hpp b/src/hotspot/share/classfile/systemDictionary.hpp
index d38dd0fd003..717f34ce9a0 100644
index 649b321a6a4..06f6c869d63 100644
--- a/src/hotspot/share/classfile/systemDictionary.hpp
+++ b/src/hotspot/share/classfile/systemDictionary.hpp
@@ -158,6 +158,8 @@ class OopStorage;
@@ -161,6 +161,8 @@ class OopStorage;
\
/* support for dynamic typing; it's OK if these are NULL in earlier JDKs */ \
do_klass(DirectMethodHandle_klass, java_lang_invoke_DirectMethodHandle, Opt ) \
@@ -869,7 +910,7 @@ index d38dd0fd003..717f34ce9a0 100644
do_klass(MethodHandle_klass, java_lang_invoke_MethodHandle, Pre ) \
do_klass(VarHandle_klass, java_lang_invoke_VarHandle, Pre ) \
do_klass(MemberName_klass, java_lang_invoke_MemberName, Pre ) \
@@ -315,6 +317,7 @@ public:
@@ -318,6 +320,7 @@ public:
Handle class_loader,
Handle protection_domain,
ClassFileStream* st,
@@ -877,9 +918,9 @@ index d38dd0fd003..717f34ce9a0 100644
TRAPS);
// Lookup an already loaded class. If not found NULL is returned.
@@ -452,6 +455,10 @@ public:
}
static BasicType box_klass_type(Klass* k); // inverse of box_klass
@@ -462,6 +465,10 @@ public:
static bool is_well_known_klass(Symbol* class_name);
#endif
+ // Enhanced class redefinition
+ static void remove_from_hierarchy(InstanceKlass* k);
@@ -888,7 +929,7 @@ index d38dd0fd003..717f34ce9a0 100644
protected:
// Returns the class loader data to be used when looking up/updating the
// system dictionary.
@@ -645,7 +652,7 @@ protected:
@@ -655,7 +662,7 @@ protected:
// after waiting, but before reentering SystemDictionary_lock
// to preserve lock order semantics.
static void double_lock_wait(Handle lockObject, TRAPS);
@@ -898,7 +939,7 @@ index d38dd0fd003..717f34ce9a0 100644
Handle class_loader,
InstanceKlass* k, TRAPS);
diff --git a/src/hotspot/share/classfile/systemDictionaryShared.cpp b/src/hotspot/share/classfile/systemDictionaryShared.cpp
index ed75ecd9261..1f1441f3ffb 100644
index ad638e26579..32de261588a 100644
--- a/src/hotspot/share/classfile/systemDictionaryShared.cpp
+++ b/src/hotspot/share/classfile/systemDictionaryShared.cpp
@@ -520,7 +520,7 @@ InstanceKlass* SystemDictionaryShared::find_or_load_shared_class(
@@ -911,10 +952,10 @@ index ed75ecd9261..1f1441f3ffb 100644
}
}
diff --git a/src/hotspot/share/classfile/verifier.cpp b/src/hotspot/share/classfile/verifier.cpp
index ea4f74fc783..472216b6a40 100644
index 9402f628b03..f55ececb086 100644
--- a/src/hotspot/share/classfile/verifier.cpp
+++ b/src/hotspot/share/classfile/verifier.cpp
@@ -237,7 +237,7 @@ bool Verifier::is_eligible_for_verification(InstanceKlass* klass, bool should_ve
@@ -244,7 +244,7 @@ bool Verifier::is_eligible_for_verification(InstanceKlass* klass, bool should_ve
Symbol* name = klass->name();
Klass* refl_magic_klass = SystemDictionary::reflect_MagicAccessorImpl_klass();
@@ -936,10 +977,10 @@ index 05239c57866..c1357bde0ed 100644
methodHandle _method; // current method being verified
VerificationType _this_type; // the verification type of the current class
diff --git a/src/hotspot/share/classfile/vmSymbols.hpp b/src/hotspot/share/classfile/vmSymbols.hpp
index 73645b42857..e2bac31b27f 100644
index 44cf2583eb9..41e9a84cd69 100644
--- a/src/hotspot/share/classfile/vmSymbols.hpp
+++ b/src/hotspot/share/classfile/vmSymbols.hpp
@@ -284,6 +284,8 @@
@@ -286,6 +286,8 @@
template(java_lang_invoke_CallSite, "java/lang/invoke/CallSite") \
template(java_lang_invoke_ConstantCallSite, "java/lang/invoke/ConstantCallSite") \
template(java_lang_invoke_DirectMethodHandle, "java/lang/invoke/DirectMethodHandle") \
@@ -948,7 +989,7 @@ index 73645b42857..e2bac31b27f 100644
template(java_lang_invoke_MutableCallSite, "java/lang/invoke/MutableCallSite") \
template(java_lang_invoke_VolatileCallSite, "java/lang/invoke/VolatileCallSite") \
template(java_lang_invoke_MethodHandle, "java/lang/invoke/MethodHandle") \
@@ -444,6 +446,12 @@
@@ -446,6 +448,12 @@
template(module_entry_name, "module_entry") \
template(resolved_references_name, "<resolved_references>") \
template(init_lock_name, "<init_lock>") \
@@ -962,7 +1003,7 @@ index 73645b42857..e2bac31b27f 100644
/* name symbols needed by intrinsics */ \
VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, VM_SYMBOL_IGNORE, template, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE) \
diff --git a/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp b/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp
index 7b9096d73be..a93f764f1b9 100644
index 17d563338b8..4c9918627a2 100644
--- a/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp
+++ b/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp
@@ -376,6 +376,12 @@ CompactibleFreeListSpace::CompactibleFreeListSpace(BlockOffsetSharedArray* bs, M
@@ -978,7 +1019,7 @@ index 7b9096d73be..a93f764f1b9 100644
// Like CompactibleSpace forward() but always calls cross_threshold() to
// update the block offset table. Removed initialize_threshold call because
// CFLS does not use a block offset array for contiguous spaces.
@@ -2190,7 +2196,8 @@ CompactibleFreeListSpace::refillLinearAllocBlock(LinearAllocBlock* blk) {
@@ -2203,7 +2209,8 @@ CompactibleFreeListSpace::refillLinearAllocBlock(LinearAllocBlock* blk) {
// Support for compaction
void CompactibleFreeListSpace::prepare_for_compaction(CompactPoint* cp) {
@@ -988,7 +1029,7 @@ index 7b9096d73be..a93f764f1b9 100644
// Prepare_for_compaction() uses the space between live objects
// so that later phase can skip dead space quickly. So verification
// of the free lists doesn't work after.
@@ -2208,7 +2215,7 @@ void CompactibleFreeListSpace::adjust_pointers() {
@@ -2221,7 +2228,7 @@ void CompactibleFreeListSpace::adjust_pointers() {
}
void CompactibleFreeListSpace::compact() {
@@ -1195,10 +1236,10 @@ index cf96ade0ef0..b6187dae4d0 100644
static void follow_klass(Klass* klass);
diff --git a/src/hotspot/share/gc/shared/gcConfig.cpp b/src/hotspot/share/gc/shared/gcConfig.cpp
index ddc84c1d2a4..8aac2b39e1e 100644
index 8c42e43b00d..9779df92447 100644
--- a/src/hotspot/share/gc/shared/gcConfig.cpp
+++ b/src/hotspot/share/gc/shared/gcConfig.cpp
@@ -101,7 +101,10 @@ void GCConfig::fail_if_unsupported_gc_is_selected() {
@@ -106,7 +106,10 @@ void GCConfig::fail_if_unsupported_gc_is_selected() {
}
void GCConfig::select_gc_ergonomically() {
@@ -1643,7 +1684,7 @@ index 81998728f66..b9ccdee8cca 100644
}
}
diff --git a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
index b532101c9b5..8afe8985026 100644
index 77c28924b0d..84891b48c2a 100644
--- a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
+++ b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
@@ -1467,6 +1467,7 @@ static InstanceKlass* create_new_instance_klass(InstanceKlass* ik, ClassFileStre
@@ -1878,7 +1919,7 @@ index 2a93500b794..2a9eb978b43 100644
// RedefineClasses support
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
index 9ba36f2de3f..8a262bc3735 100644
index 645a63e71be..f059a05ebe7 100644
--- a/src/hotspot/share/oops/instanceKlass.cpp
+++ b/src/hotspot/share/oops/instanceKlass.cpp
@@ -832,7 +832,8 @@ bool InstanceKlass::link_class_impl(bool throw_verifyerror, TRAPS) {
@@ -1972,7 +2013,7 @@ index 9ba36f2de3f..8a262bc3735 100644
}
#ifndef PRODUCT
@@ -3532,7 +3582,7 @@ void InstanceKlass::verify_on(outputStream* st) {
@@ -3552,7 +3602,7 @@ void InstanceKlass::verify_on(outputStream* st) {
}
guarantee(sib->is_klass(), "should be klass");
@@ -2145,10 +2186,10 @@ index b77a19deb38..5573b10f021 100644
// Compiler support
static ByteSize super_offset() { return in_ByteSize(offset_of(Klass, _super)); }
diff --git a/src/hotspot/share/oops/method.cpp b/src/hotspot/share/oops/method.cpp
index 7ca9b4b90ca..bee69f9cec6 100644
index 916772c0b10..ed6f769bf1b 100644
--- a/src/hotspot/share/oops/method.cpp
+++ b/src/hotspot/share/oops/method.cpp
@@ -1405,6 +1405,8 @@ methodHandle Method::clone_with_new_data(const methodHandle& m, u_char* new_code
@@ -1402,6 +1402,8 @@ methodHandle Method::clone_with_new_data(const methodHandle& m, u_char* new_code
// Reset correct method/const method, method size, and parameter info
newm->set_constMethod(newcm);
@@ -2157,7 +2198,7 @@ index 7ca9b4b90ca..bee69f9cec6 100644
newm->constMethod()->set_code_size(new_code_length);
newm->constMethod()->set_constMethod_size(new_const_method_size);
assert(newm->code_size() == new_code_length, "check");
@@ -2099,6 +2101,10 @@ void Method::ensure_jmethod_ids(ClassLoaderData* loader_data, int capacity) {
@@ -2096,6 +2098,10 @@ void Method::ensure_jmethod_ids(ClassLoaderData* loader_data, int capacity) {
// Add a method id to the jmethod_ids
jmethodID Method::make_jmethod_id(ClassLoaderData* loader_data, Method* m) {
@@ -2207,7 +2248,7 @@ index 18c706187df..4533476ff8f 100644
Symbol* signature() const { return constants()->symbol_at(signature_index()); }
int signature_index() const { return constMethod()->signature_index(); }
diff --git a/src/hotspot/share/prims/jni.cpp b/src/hotspot/share/prims/jni.cpp
index f9a69ef0c8b..231ada3f0ab 100644
index 21e7f652652..e9cc3de9652 100644
--- a/src/hotspot/share/prims/jni.cpp
+++ b/src/hotspot/share/prims/jni.cpp
@@ -353,6 +353,7 @@ JNI_ENTRY(jclass, jni_DefineClass(JNIEnv *env, const char *name, jobject loaderR
@@ -2219,10 +2260,10 @@ index f9a69ef0c8b..231ada3f0ab 100644
if (log_is_enabled(Debug, class, resolve) && k != NULL) {
diff --git a/src/hotspot/share/prims/jvm.cpp b/src/hotspot/share/prims/jvm.cpp
index 797b022d5e5..eb4b7622820 100644
index 378dcce8cf5..f92d2697e0e 100644
--- a/src/hotspot/share/prims/jvm.cpp
+++ b/src/hotspot/share/prims/jvm.cpp
@@ -927,6 +927,7 @@ static jclass jvm_define_class_common(JNIEnv *env, const char *name,
@@ -936,6 +936,7 @@ static jclass jvm_define_class_common(JNIEnv *env, const char *name,
class_loader,
protection_domain,
&st,
@@ -2232,7 +2273,7 @@ index 797b022d5e5..eb4b7622820 100644
if (log_is_enabled(Debug, class, resolve) && k != NULL) {
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
new file mode 100644
index 00000000000..83c0952de37
index 00000000000..80c31135487
--- /dev/null
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -0,0 +1,2255 @@
@@ -4493,7 +4534,7 @@ index 00000000000..83c0952de37
+}
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
new file mode 100644
index 00000000000..b712d69a193
index 00000000000..3f95cf42645
--- /dev/null
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
@@ -0,0 +1,202 @@
@@ -4700,7 +4741,7 @@ index 00000000000..b712d69a193
+};
+#endif // SHARE_VM_PRIMS_JVMTIREDEFINECLASSES2_HPP
diff --git a/src/hotspot/share/prims/jvmtiEnv.cpp b/src/hotspot/share/prims/jvmtiEnv.cpp
index 1dd911fd8d8..bc6ebb2d4af 100644
index f54c9b713be..54617f05b5a 100644
--- a/src/hotspot/share/prims/jvmtiEnv.cpp
+++ b/src/hotspot/share/prims/jvmtiEnv.cpp
@@ -50,6 +50,7 @@
@@ -4711,7 +4752,7 @@ index 1dd911fd8d8..bc6ebb2d4af 100644
#include "prims/jvmtiTagMap.hpp"
#include "prims/jvmtiThreadState.inline.hpp"
#include "prims/jvmtiUtil.hpp"
@@ -381,8 +382,13 @@ JvmtiEnv::GetClassLoaderClasses(jobject initiating_loader, jint* class_count_ptr
@@ -382,8 +383,13 @@ JvmtiEnv::GetClassLoaderClasses(jobject initiating_loader, jint* class_count_ptr
// is_modifiable_class_ptr - pre-checked for NULL
jvmtiError
JvmtiEnv::IsModifiableClass(oop k_mirror, jboolean* is_modifiable_class_ptr) {
@@ -4727,7 +4768,7 @@ index 1dd911fd8d8..bc6ebb2d4af 100644
return JVMTI_ERROR_NONE;
} /* end IsModifiableClass */
@@ -412,7 +418,8 @@ JvmtiEnv::RetransformClasses(jint class_count, const jclass* classes) {
@@ -413,7 +419,8 @@ JvmtiEnv::RetransformClasses(jint class_count, const jclass* classes) {
return JVMTI_ERROR_INVALID_CLASS;
}
@@ -4737,7 +4778,7 @@ index 1dd911fd8d8..bc6ebb2d4af 100644
return JVMTI_ERROR_UNMODIFIABLE_CLASS;
}
@@ -444,6 +451,12 @@ JvmtiEnv::RetransformClasses(jint class_count, const jclass* classes) {
@@ -445,6 +452,12 @@ JvmtiEnv::RetransformClasses(jint class_count, const jclass* classes) {
}
class_definitions[index].klass = jcls;
}
@@ -4750,7 +4791,7 @@ index 1dd911fd8d8..bc6ebb2d4af 100644
VM_RedefineClasses op(class_count, class_definitions, jvmti_class_load_kind_retransform);
VMThread::execute(&op);
return (op.check_error());
@@ -454,7 +467,12 @@ JvmtiEnv::RetransformClasses(jint class_count, const jclass* classes) {
@@ -455,7 +468,12 @@ JvmtiEnv::RetransformClasses(jint class_count, const jclass* classes) {
// class_definitions - pre-checked for NULL
jvmtiError
JvmtiEnv::RedefineClasses(jint class_count, const jvmtiClassDefinition* class_definitions) {
@@ -4765,10 +4806,10 @@ index 1dd911fd8d8..bc6ebb2d4af 100644
VMThread::execute(&op);
return (op.check_error());
diff --git a/src/hotspot/share/prims/jvmtiExport.cpp b/src/hotspot/share/prims/jvmtiExport.cpp
index c2e86c2406a..2463c1f7bdb 100644
index 6600848e2d3..9337b6ab585 100644
--- a/src/hotspot/share/prims/jvmtiExport.cpp
+++ b/src/hotspot/share/prims/jvmtiExport.cpp
@@ -2799,7 +2799,7 @@ JvmtiDynamicCodeEventCollector::JvmtiDynamicCodeEventCollector() : _code_blobs(N
@@ -2780,7 +2780,7 @@ JvmtiDynamicCodeEventCollector::JvmtiDynamicCodeEventCollector() : _code_blobs(N
// iterate over any code blob descriptors collected and post a
// DYNAMIC_CODE_GENERATED event to the profiler.
JvmtiDynamicCodeEventCollector::~JvmtiDynamicCodeEventCollector() {
@@ -4778,10 +4819,10 @@ index c2e86c2406a..2463c1f7bdb 100644
if (_code_blobs != NULL) {
for (int i=0; i<_code_blobs->length(); i++) {
diff --git a/src/hotspot/share/prims/jvmtiExport.hpp b/src/hotspot/share/prims/jvmtiExport.hpp
index 99288f7590c..bb58ad9432c 100644
index cc5868f1e93..a6cbac03bb2 100644
--- a/src/hotspot/share/prims/jvmtiExport.hpp
+++ b/src/hotspot/share/prims/jvmtiExport.hpp
@@ -178,6 +178,7 @@ class JvmtiExport : public AllStatic {
@@ -176,6 +176,7 @@ class JvmtiExport : public AllStatic {
// systems as needed to relax invariant checks.
static bool _has_redefined_a_class;
friend class VM_RedefineClasses;
@@ -4809,10 +4850,10 @@ index 61a616271f6..60604c645ff 100644
int extract(jclass* result_list) {
diff --git a/src/hotspot/share/prims/jvmtiImpl.cpp b/src/hotspot/share/prims/jvmtiImpl.cpp
index 001c592807a..2a92ece916e 100644
index a0a6a6cbd18..39953a71244 100644
--- a/src/hotspot/share/prims/jvmtiImpl.cpp
+++ b/src/hotspot/share/prims/jvmtiImpl.cpp
@@ -293,6 +293,11 @@ void JvmtiBreakpoint::each_method_version_do(method_action meth_act) {
@@ -295,6 +295,11 @@ void JvmtiBreakpoint::each_method_version_do(method_action meth_act) {
Symbol* m_name = _method->name();
Symbol* m_signature = _method->signature();
@@ -4894,10 +4935,10 @@ index c071e0641d4..a9057893368 100644
}
#endif // INCLUDE_JVMTI
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
index 740c44cded4..ca57b524593 100644
index 3e7d48ad5a3..a11dfe48dd6 100644
--- a/src/hotspot/share/runtime/arguments.cpp
+++ b/src/hotspot/share/runtime/arguments.cpp
@@ -2035,6 +2035,36 @@ unsigned int addopens_count = 0;
@@ -2033,6 +2033,36 @@ unsigned int addopens_count = 0;
unsigned int addmods_count = 0;
unsigned int patch_mod_count = 0;
@@ -4934,7 +4975,7 @@ index 740c44cded4..ca57b524593 100644
// Check the consistency of vm_init_args
bool Arguments::check_vm_args_consistency() {
// Method for adding checks for flag consistency.
@@ -2051,6 +2081,8 @@ bool Arguments::check_vm_args_consistency() {
@@ -2049,6 +2079,8 @@ bool Arguments::check_vm_args_consistency() {
status = false;
}
@@ -4944,10 +4985,10 @@ index 740c44cded4..ca57b524593 100644
#if INCLUDE_NMT
if (MemTracker::tracking_level() == NMT_off) {
diff --git a/src/hotspot/share/runtime/arguments.hpp b/src/hotspot/share/runtime/arguments.hpp
index 72bfd2bf9e3..46450cce5c9 100644
index bd439aab073..cc7f71a4404 100644
--- a/src/hotspot/share/runtime/arguments.hpp
+++ b/src/hotspot/share/runtime/arguments.hpp
@@ -505,6 +505,7 @@ class Arguments : AllStatic {
@@ -506,6 +506,7 @@ class Arguments : AllStatic {
static bool process_settings_file(const char* file_name, bool should_exist, jboolean ignore_unrecognized);
static size_t conservative_max_heap_alignment() { return _conservative_max_heap_alignment; }
@@ -4956,10 +4997,10 @@ index 72bfd2bf9e3..46450cce5c9 100644
static size_t max_heap_for_compressed_oops();
diff --git a/src/hotspot/share/runtime/globals.hpp b/src/hotspot/share/runtime/globals.hpp
index 6b5713be433..f3cf08fffb6 100644
index 4a53ecb37a8..a6c33744760 100644
--- a/src/hotspot/share/runtime/globals.hpp
+++ b/src/hotspot/share/runtime/globals.hpp
@@ -2671,7 +2671,11 @@ define_pd_global(uint64_t,MaxRAM, 1ULL*G);
@@ -2674,7 +2674,11 @@ define_pd_global(uint64_t,MaxRAM, 1ULL*G);
"Start flight recording with options")) \
\
experimental(bool, UseFastUnorderedTimeStamps, false, \
@@ -4973,10 +5014,10 @@ index 6b5713be433..f3cf08fffb6 100644
#define VM_FLAGS(develop, \
develop_pd, \
diff --git a/src/hotspot/share/runtime/interfaceSupport.inline.hpp b/src/hotspot/share/runtime/interfaceSupport.inline.hpp
index f5dac06750a..40a8bdd8e62 100644
index f39687a25bc..7b1aa3cc58e 100644
--- a/src/hotspot/share/runtime/interfaceSupport.inline.hpp
+++ b/src/hotspot/share/runtime/interfaceSupport.inline.hpp
@@ -277,8 +277,8 @@ class ThreadToNativeFromVM : public ThreadStateTransition {
@@ -276,8 +276,8 @@ class ThreadToNativeFromVM : public ThreadStateTransition {
public:
ThreadToNativeFromVM(JavaThread *thread) : ThreadStateTransition(thread) {
// We are leaving the VM at this point and going directly to native code.
@@ -4988,7 +5029,7 @@ index f5dac06750a..40a8bdd8e62 100644
trans_and_fence(_thread_in_vm, _thread_in_native);
// Check for pending. async. exceptions or suspends.
diff --git a/src/hotspot/share/runtime/javaCalls.cpp b/src/hotspot/share/runtime/javaCalls.cpp
index 32040586b36..0eb2fc1ec6b 100644
index 563ffdbd446..55f06eadcc2 100644
--- a/src/hotspot/share/runtime/javaCalls.cpp
+++ b/src/hotspot/share/runtime/javaCalls.cpp
@@ -57,7 +57,8 @@ JavaCallWrapper::JavaCallWrapper(const methodHandle& callee_method, Handle recei
@@ -5002,7 +5043,7 @@ index 32040586b36..0eb2fc1ec6b 100644
_result = result;
diff --git a/src/hotspot/share/runtime/mutexLocker.cpp b/src/hotspot/share/runtime/mutexLocker.cpp
index b258e347c94..0e60bb4b6bd 100644
index d504ef00f90..982ba1b69d5 100644
--- a/src/hotspot/share/runtime/mutexLocker.cpp
+++ b/src/hotspot/share/runtime/mutexLocker.cpp
@@ -5,7 +5,7 @@
@@ -5023,7 +5064,7 @@ index b258e347c94..0e60bb4b6bd 100644
Monitor* GCTaskManager_lock = NULL;
Mutex* Management_lock = NULL;
@@ -275,6 +277,7 @@ void mutex_init() {
@@ -285,6 +287,7 @@ void mutex_init() {
def(JNIGlobalActive_lock , PaddedMutex , nonleaf-1, true, Monitor::_safepoint_check_never);
def(JNIWeakAlloc_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_never);
def(JNIWeakActive_lock , PaddedMutex , nonleaf-1, true, Monitor::_safepoint_check_never);
@@ -5062,5 +5103,5 @@ index a49b5108821..ed789b0bc2b 100644
// field's access bits are "access". We assume that we've already verified
// that current_class can access member_class.
--
2.24.3 (Apple Git-128)
2.23.0

View File

@@ -1,26 +0,0 @@
From a4b2a34a6c9d477ce339bece718abe992cdd5002 Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Wed, 14 Nov 2018 21:18:22 +0100
Subject: [PATCH 02/50] We need to set classRedefinitionCount on new class, not
old class.
---
src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 83c0952de37..83cf0be090b 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -1904,7 +1904,7 @@ void VM_EnhancedRedefineClasses::increment_class_counter(InstanceKlass *ik, TRAP
oop class_mirror = ik->java_mirror();
Klass* class_oop = java_lang_Class::as_Klass(class_mirror);
int new_count = java_lang_Class::classRedefinedCount(class_mirror) + 1;
- java_lang_Class::set_classRedefinedCount(class_mirror, new_count);
+ java_lang_Class::set_classRedefinedCount(ik->new_version()->java_mirror(), new_count);
if (class_oop != _the_class_oop) {
// _the_class_oop count is printed at end of redefine_single_class()
--
2.24.3 (Apple Git-128)

File diff suppressed because it is too large Load Diff

View File

@@ -1,30 +0,0 @@
From e5c0b2d69ab024ec0469f5c105f13f889b598815 Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Wed, 14 Nov 2018 21:22:01 +0100
Subject: [PATCH 03/50] Fix crashes in MetadataOnStackMark::~MetadataOnSta
MetadataOnStackMark shoukld not remove dcevm stuff. It was added
accidentaly in dcevm9,
and never was part of doit() in previous versions.
---
src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 83cf0be090b..61af07d0f86 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -470,7 +470,9 @@ void VM_EnhancedRedefineClasses::doit() {
// Mark methods seen on stack and everywhere else so old methods are not
// cleaned up if they're on the stack.
- MetadataOnStackMark md_on_stack(true);
+
+ // FIXME: fails in enhanced redefinition
+ // MetadataOnStackMark md_on_stack(true);
HandleMark hm(thread); // make sure any handles created are deleted
// before the stack walk again.
--
2.24.3 (Apple Git-128)

View File

@@ -1,7 +1,7 @@
From cbe52ffcde1851f2c3527825f37145428aeedc67 Mon Sep 17 00:00:00 2001
From aaefe6f66a8d363eb35fcdc8ce29bb25be67fe1c Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Wed, 12 Dec 2018 19:38:28 +0100
Subject: [PATCH 09/50] Support for Concurrent Mark Sweep (CMS) collector
Subject: [PATCH 03/18] Support for Concurrent Mark Sweep (CMS) collector
---
.../share/gc/cms/compactibleFreeListSpace.cpp | 139 ++++++++++++------
@@ -17,7 +17,7 @@ Subject: [PATCH 09/50] Support for Concurrent Mark Sweep (CMS) collector
10 files changed, 135 insertions(+), 79 deletions(-)
diff --git a/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp b/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp
index a93f764f1b9..efaa09473a9 100644
index 4c9918627a2..f335173576f 100644
--- a/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp
+++ b/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp
@@ -376,55 +376,58 @@ CompactibleFreeListSpace::CompactibleFreeListSpace(BlockOffsetSharedArray* bs, M
@@ -118,7 +118,7 @@ index a93f764f1b9..efaa09473a9 100644
q->forward_to(oop(compact_top));
assert(q->is_gc_marked(), "encoding the pointer should preserve the mark");
} else {
@@ -2196,13 +2199,60 @@ CompactibleFreeListSpace::refillLinearAllocBlock(LinearAllocBlock* blk) {
@@ -2209,13 +2212,60 @@ CompactibleFreeListSpace::refillLinearAllocBlock(LinearAllocBlock* blk) {
// Support for compaction
void CompactibleFreeListSpace::prepare_for_compaction(CompactPoint* cp) {
@@ -181,7 +181,7 @@ index a93f764f1b9..efaa09473a9 100644
void CompactibleFreeListSpace::adjust_pointers() {
// In other versions of adjust_pointers(), a bail out
// based on the amount of live data in the generation
@@ -2215,7 +2265,12 @@ void CompactibleFreeListSpace::adjust_pointers() {
@@ -2228,7 +2278,12 @@ void CompactibleFreeListSpace::adjust_pointers() {
}
void CompactibleFreeListSpace::compact() {
@@ -253,10 +253,10 @@ index d0ff86c8215..b4ed59f020c 100644
}
_rescued_oops->clear();
diff --git a/src/hotspot/share/gc/shared/gcConfig.cpp b/src/hotspot/share/gc/shared/gcConfig.cpp
index 8aac2b39e1e..39364a64cb2 100644
index 9779df92447..adb0f5dd25c 100644
--- a/src/hotspot/share/gc/shared/gcConfig.cpp
+++ b/src/hotspot/share/gc/shared/gcConfig.cpp
@@ -101,7 +101,7 @@ void GCConfig::fail_if_unsupported_gc_is_selected() {
@@ -106,7 +106,7 @@ void GCConfig::fail_if_unsupported_gc_is_selected() {
}
void GCConfig::select_gc_ergonomically() {
@@ -266,7 +266,7 @@ index 8aac2b39e1e..39364a64cb2 100644
FLAG_SET_ERGO(bool, UseSerialGC, true);
} else if (os::is_server_class_machine()) {
diff --git a/src/hotspot/share/gc/shared/space.cpp b/src/hotspot/share/gc/shared/space.cpp
index 763abc91a39..947dff8ae0c 100644
index bc0dd1980db..56b144b46f1 100644
--- a/src/hotspot/share/gc/shared/space.cpp
+++ b/src/hotspot/share/gc/shared/space.cpp
@@ -388,11 +388,11 @@ HeapWord* CompactibleSpace::forward_compact_top(size_t size, CompactPoint* cp, H
@@ -301,7 +301,7 @@ index 763abc91a39..947dff8ae0c 100644
size_t forward_size = size;
// (DCEVM) There is a new version of the class of q => different size
if (oop(q)->klass()->new_version() != NULL && oop(q)->klass()->new_version()->update_information() != NULL) {
if (oop(q)->klass()->new_version() != NULL) {
size_t new_size = oop(q)->size_given_klass(oop(q)->klass()->new_version());
- assert(size != new_size, "instances without changed size have to be updated prior to GC run");
@@ -360,7 +360,7 @@ index 8eb5669fb79..901c89d8a30 100644
HeapWord* forward_rescued(CompactPoint* cp, HeapWord* compact_top);
diff --git a/src/hotspot/share/gc/shared/space.inline.hpp b/src/hotspot/share/gc/shared/space.inline.hpp
index 75d7e685edf..26e56ae6f7e 100644
index 6b109fcd2e5..8c255d6d428 100644
--- a/src/hotspot/share/gc/shared/space.inline.hpp
+++ b/src/hotspot/share/gc/shared/space.inline.hpp
@@ -163,6 +163,8 @@ inline void CompactibleSpace::scan_and_forward(SpaceType* space, CompactPoint* c
@@ -402,7 +402,7 @@ index 75d7e685edf..26e56ae6f7e 100644
end_of_live = end;
} else {
// otherwise, it really is a free region.
@@ -351,7 +354,7 @@ inline void CompactibleSpace::scan_and_compact(SpaceType* space, bool redefiniti
@@ -352,7 +355,7 @@ inline void CompactibleSpace::scan_and_compact(SpaceType* space, bool redefiniti
HeapWord* compaction_top = (HeapWord*)oop(cur_obj)->forwardee();
if (redefinition_run && space->must_rescue(oop(cur_obj), oop(cur_obj)->forwardee())) {
@@ -411,7 +411,7 @@ index 75d7e685edf..26e56ae6f7e 100644
debug_only(Copy::fill_to_words(cur_obj, size, 0));
cur_obj += size;
continue;
@@ -361,8 +364,7 @@ inline void CompactibleSpace::scan_and_compact(SpaceType* space, bool redefiniti
@@ -362,8 +365,7 @@ inline void CompactibleSpace::scan_and_compact(SpaceType* space, bool redefiniti
Prefetch::write(compaction_top, copy_interval);
// copy object and reinit its mark
@@ -422,10 +422,10 @@ index 75d7e685edf..26e56ae6f7e 100644
Klass* new_version = oop(cur_obj)->klass()->new_version();
if (new_version->update_information() == NULL) {
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index c64d6bb1bb5..9b8678a53fb 100644
index 43d761cdbb2..14af1aad21b 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -52,6 +52,7 @@
@@ -54,6 +54,7 @@
#include "prims/jvmtiThreadState.inline.hpp"
#include "utilities/events.hpp"
#include "oops/constantPool.inline.hpp"
@@ -433,7 +433,7 @@ index c64d6bb1bb5..9b8678a53fb 100644
Array<Method*>* VM_EnhancedRedefineClasses::_old_methods = NULL;
Array<Method*>* VM_EnhancedRedefineClasses::_new_methods = NULL;
@@ -420,13 +421,11 @@ public:
@@ -416,13 +417,11 @@ public:
Klass* new_klass = obj->klass()->new_version();
if (new_klass->update_information() != NULL) {
@@ -449,7 +449,7 @@ index c64d6bb1bb5..9b8678a53fb 100644
oop src = obj;
if (new_klass->is_copying_backwards()) {
copy_to_tmp(obj);
@@ -436,11 +435,6 @@ public:
@@ -432,11 +431,6 @@ public:
// FIXME: instance updates...
//guarantee(false, "instance updates!");
MarkSweep::update_fields(obj, src, new_klass->update_information());
@@ -462,10 +462,10 @@ index c64d6bb1bb5..9b8678a53fb 100644
} else {
obj->set_klass(obj->klass()->new_version());
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
index ca57b524593..2ca6dde069d 100644
index a11dfe48dd6..013ba213c00 100644
--- a/src/hotspot/share/runtime/arguments.cpp
+++ b/src/hotspot/share/runtime/arguments.cpp
@@ -2047,14 +2047,14 @@ bool Arguments::check_gc_consistency() {
@@ -2045,14 +2045,14 @@ bool Arguments::check_gc_consistency() {
if (AllowEnhancedClassRedefinition) {
// Must use serial GC. This limitation applies because the instance size changing GC modifications
// are only built into the mark and compact algorithm.
@@ -484,5 +484,5 @@ index ca57b524593..2ca6dde069d 100644
"Conflicting collector combinations in option list; "
"please refer to the release notes for the combinations "
--
2.24.3 (Apple Git-128)
2.23.0

View File

@@ -1,7 +1,7 @@
From d6a3286b9b57df4c09d859e38833f2e3dc1574d9 Mon Sep 17 00:00:00 2001
From 002ad1880190d0749f8f8d325c587fd9275bdab2 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <vladimir.dvorak@mailprofiler.com>
Date: Wed, 11 Mar 2020 14:19:34 +0100
Subject: [PATCH 26/50] Fix class cast exception on redefinition of class A,
Subject: [PATCH 04/18] Fix class cast exception on redefinition of class A,
that is superclass of B that has anonymous class C
---
@@ -9,7 +9,7 @@ Subject: [PATCH 26/50] Fix class cast exception on redefinition of class A,
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
index 9b6ba7e9304..8cbd4b8edf2 100644
index c28ed956ccf..7eb1b01c785 100644
--- a/src/hotspot/share/oops/instanceKlass.cpp
+++ b/src/hotspot/share/oops/instanceKlass.cpp
@@ -788,7 +788,10 @@ bool InstanceKlass::link_class_impl(bool throw_verifyerror, TRAPS) {
@@ -17,13 +17,13 @@ index 9b6ba7e9304..8cbd4b8edf2 100644
if (!is_linked()) {
if (!is_rewritten()) {
- {
+ // In cases, if class A is being redefined and class B->A (B is extended from A) and B is host class of anonymous class C
+ // then second redefinition fails with cannot cast klass exception. So we currently turn off bytecode verification
+ // (DCEVM): If class A is being redefined and class B->A (B is extended from A) and B is host class of anonymous class C
+ // then second redefinition fails with cannot cast klass exception. So we currently turn off bytecode verification
+ // on redefinition.
+ if (!newest_version()->is_redefining()) {
+ if (!AllowEnhancedClassRedefinition || !newest_version()->is_redefining()) {
bool verify_ok = verify_code(throw_verifyerror, THREAD);
if (!verify_ok) {
return false;
--
2.24.3 (Apple Git-128)
2.23.0

View File

@@ -1,25 +0,0 @@
From 360fbbd15357fb3cb19abc6ffb40320efadce616 Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Mon, 3 Dec 2018 19:34:53 +0100
Subject: [PATCH 04/50] Fix problem with nested members
Reported at : https://stackoverflow.com/questions/53370380/hotswapagent-incompatibleclasschangeerror-type-headerpanel1-is-not-a-nest-mem
---
src/hotspot/share/oops/instanceKlass.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
index 8a262bc3735..9b6ba7e9304 100644
--- a/src/hotspot/share/oops/instanceKlass.cpp
+++ b/src/hotspot/share/oops/instanceKlass.cpp
@@ -178,6 +178,7 @@ bool InstanceKlass::has_nest_member(InstanceKlass* k, TRAPS) const {
}
Klass* k2 = _constants->klass_at(cp_index, CHECK_false);
+ k2 = k2->newest_version();
if (k2 == k) {
log_trace(class, nestmates)("- class is listed as a nest member");
return true;
--
2.24.3 (Apple Git-128)

View File

@@ -1,7 +1,7 @@
From 24a60477aef7098ea23ab50a573332957741ea7b Mon Sep 17 00:00:00 2001
From a00292280f4e3754bffc7a0c562dca1d7552eb39 Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Wed, 14 Nov 2018 21:20:08 +0100
Subject: [PATCH 15/50] HotswapAgent integration
Subject: [PATCH 05/18] HotswapAgent integration
It include:
@@ -9,16 +9,25 @@ It include:
to CFLAGS (bash configure --with-extra-cflags="-DDCEVM_ONLY"), by
default compilation goes with HotswapAgent
Allow ha class initializer calls
Add --add-opens for necessary modules/packages
- java.base/java.lang - for reflection access to Proxy.proxyCache
- java.base/jdk.internal.loader - for access proxyCache class
- java.desktop/java.beans - for reflection access to Introspector
- java.desktop/com.sun.beans
- java.base/java.io
- com.sun.beans.util
Open jdk module to access ClassInfo.CACHE
- be quiet if HotswapAgent is not found in lib/, it is compatible with
old DCEVM
- disable hotswapagent for -Xshare:dump
- disable HotswapAgent for -Xshare:dump
- disable HotswapAgent in jvm tools
- disable HotswapAgent in keytool
---
make/launcher/Launcher-java.base.gmk | 1 +
make/launcher/Launcher-java.rmi.gmk | 2 +
make/launcher/Launcher-java.scripting.gmk | 3 +-
make/launcher/Launcher-java.security.jgss.gmk | 3 +
@@ -37,11 +46,32 @@ old DCEVM
make/launcher/Launcher-jdk.pack.gmk | 1 +
make/launcher/Launcher-jdk.rmic.gmk | 1 +
.../Launcher-jdk.scripting.nashorn.shell.gmk | 3 +-
src/hotspot/share/runtime/arguments.cpp | 59 +++++++++++++++++++
src/hotspot/share/classfile/vmSymbols.hpp | 1 +
.../share/interpreter/linkResolver.cpp | 2 +-
src/hotspot/share/runtime/arguments.cpp | 67 +++++++++++++++++++
src/hotspot/share/runtime/arguments.hpp | 3 +
src/hotspot/share/runtime/globals.hpp | 12 +++-
21 files changed, 117 insertions(+), 10 deletions(-)
.../sun/beans/introspect/package-info.java | 26 +++++++
.../classes/com/sun/beans/package-info.java | 26 +++++++
.../com/sun/beans/util/package-info.java | 26 +++++++
.../share/classes/module-info.java | 3 +
28 files changed, 209 insertions(+), 11 deletions(-)
create mode 100644 src/java.desktop/share/classes/com/sun/beans/introspect/package-info.java
create mode 100644 src/java.desktop/share/classes/com/sun/beans/package-info.java
create mode 100644 src/java.desktop/share/classes/com/sun/beans/util/package-info.java
diff --git a/make/launcher/Launcher-java.base.gmk b/make/launcher/Launcher-java.base.gmk
index f6d4aa28fe6..38ba29530d8 100644
--- a/make/launcher/Launcher-java.base.gmk
+++ b/make/launcher/Launcher-java.base.gmk
@@ -52,6 +52,7 @@ endif
$(eval $(call SetupBuildLauncher, keytool, \
MAIN_CLASS := sun.security.tools.keytool.Main, \
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
))
################################################################################
diff --git a/make/launcher/Launcher-java.rmi.gmk b/make/launcher/Launcher-java.rmi.gmk
index a69a90bcc81..07046232275 100644
--- a/make/launcher/Launcher-java.rmi.gmk
@@ -229,16 +259,16 @@ index 7117fa78059..761a52d8466 100644
# Hook to include the corresponding custom file, if present.
diff --git a/make/launcher/Launcher-jdk.jconsole.gmk b/make/launcher/Launcher-jdk.jconsole.gmk
index 6205ae63d16..5ca6a0c123b 100644
index 575b9e0595b..9b38683a489 100644
--- a/make/launcher/Launcher-jdk.jconsole.gmk
+++ b/make/launcher/Launcher-jdk.jconsole.gmk
@@ -28,7 +28,8 @@ include LauncherCommon.gmk
$(eval $(call SetupBuildLauncher, jconsole, \
@@ -29,7 +29,8 @@ $(eval $(call SetupBuildLauncher, jconsole, \
MAIN_CLASS := sun.tools.jconsole.JConsole, \
JAVA_ARGS := --add-opens java.base/java.io=jdk.jconsole \
- -Djconsole.showOutputViewer, \
+ -Djconsole.showOutputViewer \
+ -XX:+DisableHotswapAgent, \
-Djconsole.showOutputViewer \
- -Djdk.attach.allowAttachSelf=true, \
+ -Djdk.attach.allowAttachSelf=true \
+ -XX:+DisableHotswapAgent, \
CFLAGS_windows := -DJAVAW, \
LIBS_windows := user32.lib, \
))
@@ -361,11 +391,36 @@ index 82311e69fd6..bd39f8595b2 100644
+ -XX:+DisableHotswapAgent, \
CFLAGS := -DENABLE_ARG_FILES, \
))
diff --git a/src/hotspot/share/classfile/vmSymbols.hpp b/src/hotspot/share/classfile/vmSymbols.hpp
index 41e9a84cd69..1f67eb202b5 100644
--- a/src/hotspot/share/classfile/vmSymbols.hpp
+++ b/src/hotspot/share/classfile/vmSymbols.hpp
@@ -342,6 +342,7 @@
/* common method and field names */ \
template(object_initializer_name, "<init>") \
template(class_initializer_name, "<clinit>") \
+ template(ha_class_initializer_name, "$$ha$clinit") \
template(println_name, "println") \
template(printStackTrace_name, "printStackTrace") \
template(main_name, "main") \
diff --git a/src/hotspot/share/interpreter/linkResolver.cpp b/src/hotspot/share/interpreter/linkResolver.cpp
index 0c24146ff00..9dc184d02f5 100644
--- a/src/hotspot/share/interpreter/linkResolver.cpp
+++ b/src/hotspot/share/interpreter/linkResolver.cpp
@@ -1009,7 +1009,7 @@ void LinkResolver::resolve_field(fieldDescriptor& fd,
assert(!m.is_null(), "information about the current method must be available for 'put' bytecodes");
bool is_initialized_static_final_update = (byte == Bytecodes::_putstatic &&
fd.is_static() &&
- !m()->is_static_initializer());
+ !(m()->is_static_initializer() || m()->name() == vmSymbols::ha_class_initializer_name()));
bool is_initialized_instance_final_update = ((byte == Bytecodes::_putfield || byte == Bytecodes::_nofast_putfield) &&
!fd.is_static() &&
!m->is_object_initializer());
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
index 2ca6dde069d..c75bb5d8f49 100644
index 013ba213c00..2b5ba619f43 100644
--- a/src/hotspot/share/runtime/arguments.cpp
+++ b/src/hotspot/share/runtime/arguments.cpp
@@ -3937,6 +3937,8 @@ jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) {
@@ -3962,6 +3962,8 @@ jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) {
// Set object alignment values.
set_object_alignment();
@@ -374,7 +429,7 @@ index 2ca6dde069d..c75bb5d8f49 100644
#if !INCLUDE_CDS
if (DumpSharedSpaces || RequireSharedSpaces) {
jio_fprintf(defaultStream::error_stream(),
@@ -4270,3 +4272,60 @@ bool Arguments::copy_expand_pid(const char* src, size_t srclen,
@@ -4295,3 +4297,68 @@ bool Arguments::copy_expand_pid(const char* src, size_t srclen,
*b = '\0';
return (p == src_end); // return false if not all of the source was copied
}
@@ -431,15 +486,23 @@ index 2ca6dde069d..c75bb5d8f49 100644
+ create_numbered_property("jdk.module.addopens", "java.base/java.lang=ALL-UNNAMED", addopens_count++);
+ // Class of field java.lang.reflect.Proxy/proxyCache
+ create_numbered_property("jdk.module.addopens", "java.base/jdk.internal.loader=ALL-UNNAMED", addopens_count++);
+ // Use to access java.io.Reader, java.io.InputStream, java.io.FileInputStream
+ create_numbered_property("jdk.module.addopens", "java.base/java.io=ALL-UNNAMED", addopens_count++);
+ // java.beans.Introspector access
+ create_numbered_property("jdk.module.addopens", "java.desktop/java.beans=ALL-UNNAMED", addopens_count++);
+ // java.beans.Introspector access
+ create_numbered_property("jdk.module.addopens", "java.desktop/com.sun.beans=ALL-UNNAMED", addopens_count++);
+ // com.sun.beans.introspect.ClassInfo access
+ create_numbered_property("jdk.module.addopens", "java.desktop/com.sun.beans.introspect=ALL-UNNAMED", addopens_count++);
+ // com.sun.beans.introspect.util.Cache access
+ create_numbered_property("jdk.module.addopens", "java.desktop/com.sun.beans.util=ALL-UNNAMED", addopens_count++);
+
+}
diff --git a/src/hotspot/share/runtime/arguments.hpp b/src/hotspot/share/runtime/arguments.hpp
index 46450cce5c9..3dc5b3d4bae 100644
index cc7f71a4404..b2bab2e1f44 100644
--- a/src/hotspot/share/runtime/arguments.hpp
+++ b/src/hotspot/share/runtime/arguments.hpp
@@ -506,6 +506,9 @@ class Arguments : AllStatic {
@@ -507,6 +507,9 @@ class Arguments : AllStatic {
static size_t conservative_max_heap_alignment() { return _conservative_max_heap_alignment; }
@@ -450,7 +513,7 @@ index 46450cce5c9..3dc5b3d4bae 100644
static size_t max_heap_for_compressed_oops();
diff --git a/src/hotspot/share/runtime/globals.hpp b/src/hotspot/share/runtime/globals.hpp
index f3cf08fffb6..5f6c7b8e388 100644
index a6c33744760..b8dba232fc1 100644
--- a/src/hotspot/share/runtime/globals.hpp
+++ b/src/hotspot/share/runtime/globals.hpp
@@ -32,6 +32,12 @@
@@ -466,7 +529,7 @@ index f3cf08fffb6..5f6c7b8e388 100644
// The larger HeapWordSize for 64bit requires larger heaps
// for the same application running in 64bit. See bug 4967770.
// The minimum alignment to a heap word size is done. Other
@@ -2675,8 +2681,10 @@ define_pd_global(uint64_t,MaxRAM, 1ULL*G);
@@ -2678,8 +2684,10 @@ define_pd_global(uint64_t,MaxRAM, 1ULL*G);
\
product(bool, AllowEnhancedClassRedefinition, true, \
"Allow enhanced class redefinition beyond swapping method " \
@@ -479,6 +542,116 @@ index f3cf08fffb6..5f6c7b8e388 100644
#define VM_FLAGS(develop, \
develop_pd, \
product, \
diff --git a/src/java.desktop/share/classes/com/sun/beans/introspect/package-info.java b/src/java.desktop/share/classes/com/sun/beans/introspect/package-info.java
new file mode 100644
index 00000000000..6636e4dd62a
--- /dev/null
+++ b/src/java.desktop/share/classes/com/sun/beans/introspect/package-info.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 1998, 2017, 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.
+ */
+
+package com.sun.beans.introspect;
diff --git a/src/java.desktop/share/classes/com/sun/beans/package-info.java b/src/java.desktop/share/classes/com/sun/beans/package-info.java
new file mode 100644
index 00000000000..5c097eeaa53
--- /dev/null
+++ b/src/java.desktop/share/classes/com/sun/beans/package-info.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 1998, 2017, 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.
+ */
+
+package com.sun.beans;
diff --git a/src/java.desktop/share/classes/com/sun/beans/util/package-info.java b/src/java.desktop/share/classes/com/sun/beans/util/package-info.java
new file mode 100644
index 00000000000..2d5d735ffa8
--- /dev/null
+++ b/src/java.desktop/share/classes/com/sun/beans/util/package-info.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 1998, 2017, 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.
+ */
+
+package com.sun.beans.util;
diff --git a/src/java.desktop/share/classes/module-info.java b/src/java.desktop/share/classes/module-info.java
index b663b382f52..2a8f0a67d52 100644
--- a/src/java.desktop/share/classes/module-info.java
+++ b/src/java.desktop/share/classes/module-info.java
@@ -104,6 +104,9 @@ module java.desktop {
exports javax.swing.text.rtf;
exports javax.swing.tree;
exports javax.swing.undo;
+ exports com.sun.beans;
+ exports com.sun.beans.introspect;
+ exports com.sun.beans.util;
// qualified exports may be inserted at build time
// see make/GensrcModuleInfo.gmk
--
2.24.3 (Apple Git-128)
2.23.0

View File

@@ -1,26 +0,0 @@
From 4e2aef4c3b201e9639acdd39aa9e7ecdc9fb6a86 Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Mon, 10 Dec 2018 20:12:07 +0100
Subject: [PATCH 05/50] Use init_mark_raw()
method changed since j8 - it used init_mark()
---
src/hotspot/share/gc/shared/space.inline.hpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/hotspot/share/gc/shared/space.inline.hpp b/src/hotspot/share/gc/shared/space.inline.hpp
index 4394eff00c5..75d7e685edf 100644
--- a/src/hotspot/share/gc/shared/space.inline.hpp
+++ b/src/hotspot/share/gc/shared/space.inline.hpp
@@ -371,7 +371,7 @@ inline void CompactibleSpace::scan_and_compact(SpaceType* space, bool redefiniti
} else {
MarkSweep::update_fields(oop(cur_obj), oop(compaction_top));
}
- oop(compaction_top)->init_mark();
+ oop(compaction_top)->init_mark_raw();
assert(oop(compaction_top)->klass() != NULL, "should have a class");
debug_only(prev_obj = cur_obj);
--
2.24.3 (Apple Git-128)

View File

@@ -1,25 +0,0 @@
From 15194627b2573f109aef2cacc6ebfb600d0a20f0 Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Thu, 13 Dec 2018 20:51:09 +0100
Subject: [PATCH 06/50] Fix methodHandles
---
src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 61af07d0f86..1c7595787a1 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -248,7 +248,7 @@ class ChangePointersOopClosure : public BasicOopIterateClosure {
int ref_kind = (flags >> REFERENCE_KIND_SHIFT) & REFERENCE_KIND_MASK;
if (MethodHandles::ref_kind_is_method(ref_kind)) {
Method* m = (Method*) java_lang_invoke_MemberName::vmtarget(obj);
- if (m != NULL && m->method_holder()->new_version() != NULL) {
+ if (m != NULL && m->method_holder()->is_redefining()) {
// Let's try to re-resolve method
InstanceKlass* newest = InstanceKlass::cast(m->method_holder()->newest_version());
Method* new_method = newest->find_method(m->name(), m->signature());
--
2.24.3 (Apple Git-128)

View File

@@ -1,7 +1,7 @@
From 2ab70b495c43c4699ad402a714710566400de99d Mon Sep 17 00:00:00 2001
From 62f3578e0a73913c1262a1612a464d19abfeb626 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Fri, 22 May 2020 21:23:01 +0200
Subject: [PATCH 43/50] Support for Lambda class redefinition
Date: Sun, 4 Oct 2020 21:12:12 +0200
Subject: [PATCH 06/18] Support for Lambda class redefinition
---
.../share/classfile/classLoaderData.cpp | 9 +++
@@ -47,7 +47,7 @@ index 7e357929971..00a84610b43 100644
void unload();
diff --git a/src/hotspot/share/classfile/systemDictionary.cpp b/src/hotspot/share/classfile/systemDictionary.cpp
index e70865109dd..cc9f1fa7831 100644
index 19bc8d9899a..a6a03d3c0e9 100644
--- a/src/hotspot/share/classfile/systemDictionary.cpp
+++ b/src/hotspot/share/classfile/systemDictionary.cpp
@@ -971,12 +971,16 @@ InstanceKlass* SystemDictionary::parse_stream(Symbol* class_name,
@@ -81,7 +81,7 @@ index e70865109dd..cc9f1fa7831 100644
if (host_klass != NULL && k != NULL) {
// Anonymous classes must update ClassLoaderData holder (was host_klass loader)
@@ -1845,7 +1853,7 @@ void SystemDictionary::remove_from_hierarchy(InstanceKlass* k) {
@@ -1844,7 +1852,7 @@ void SystemDictionary::remove_from_hierarchy(InstanceKlass* k) {
k->remove_from_sibling_list();
}
@@ -91,10 +91,10 @@ index e70865109dd..cc9f1fa7831 100644
constraints()->update_after_redefinition();
}
diff --git a/src/hotspot/share/classfile/systemDictionary.hpp b/src/hotspot/share/classfile/systemDictionary.hpp
index 717f34ce9a0..dc111846c12 100644
index 06f6c869d63..1dbbffa197f 100644
--- a/src/hotspot/share/classfile/systemDictionary.hpp
+++ b/src/hotspot/share/classfile/systemDictionary.hpp
@@ -301,6 +301,7 @@ public:
@@ -304,6 +304,7 @@ public:
protection_domain,
st,
NULL, // host klass
@@ -102,7 +102,7 @@ index 717f34ce9a0..dc111846c12 100644
NULL, // cp_patches
THREAD);
}
@@ -309,6 +310,7 @@ public:
@@ -312,6 +313,7 @@ public:
Handle protection_domain,
ClassFileStream* st,
const InstanceKlass* host_klass,
@@ -111,10 +111,10 @@ index 717f34ce9a0..dc111846c12 100644
TRAPS);
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 0ca675e8ee6..08fe42d5c28 100644
index 14af1aad21b..0b239b2ff6d 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -503,6 +503,8 @@ void VM_EnhancedRedefineClasses::doit() {
@@ -488,6 +488,8 @@ void VM_EnhancedRedefineClasses::doit() {
ClassLoaderDataGraph::classes_do(&clear_cpool_cache);
@@ -123,7 +123,7 @@ index 0ca675e8ee6..08fe42d5c28 100644
// JSR-292 support
if (_any_class_has_resolved_methods) {
bool trace_name_printed = false;
@@ -774,12 +776,34 @@ jvmtiError VM_EnhancedRedefineClasses::load_new_class_versions(TRAPS) {
@@ -750,12 +752,34 @@ jvmtiError VM_EnhancedRedefineClasses::load_new_class_versions(TRAPS) {
// load hook event.
state->set_class_being_redefined(the_class, _class_load_kind);
@@ -164,7 +164,7 @@ index 0ca675e8ee6..08fe42d5c28 100644
// Clear class_being_redefined just to be sure.
state->clear_class_being_redefined();
@@ -1469,6 +1493,30 @@ void VM_EnhancedRedefineClasses::MethodDataCleaner::do_klass(Klass* k) {
@@ -1436,6 +1460,30 @@ void VM_EnhancedRedefineClasses::MethodDataCleaner::do_klass(Klass* k) {
}
}
@@ -195,7 +195,7 @@ index 0ca675e8ee6..08fe42d5c28 100644
void VM_EnhancedRedefineClasses::update_jmethod_ids() {
for (int j = 0; j < _matching_methods_length; ++j) {
Method* old_method = _matching_old_methods[j];
@@ -2018,7 +2066,10 @@ jvmtiError VM_EnhancedRedefineClasses::find_sorted_affected_classes(TRAPS) {
@@ -1973,7 +2021,10 @@ jvmtiError VM_EnhancedRedefineClasses::find_sorted_affected_classes(TRAPS) {
// Find classes not directly redefined, but affected by a redefinition (because one of its supertypes is redefined)
AffectedKlassClosure closure(_affected_klasses);
// Updated in j10, from original SystemDictionary::classes_do
@@ -208,10 +208,10 @@ index 0ca675e8ee6..08fe42d5c28 100644
// Sort the affected klasses such that a supertype is always on a smaller array index than its subtype.
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
index ed44f0e27ce..7e2afd49650 100644
index a48e07e3a6a..3551b06ecde 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
@@ -119,6 +119,7 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
@@ -116,6 +116,7 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
void rollback();
static void mark_as_scavengable(nmethod* nm);
static void unpatch_bytecode(Method* method);
@@ -242,10 +242,10 @@ index af2ec48c2e1..7741328979f 100644
assert(newer_method != NULL, "method_with_idnum() should not be NULL");
assert(old_method != newer_method, "sanity check");
diff --git a/src/hotspot/share/prims/unsafe.cpp b/src/hotspot/share/prims/unsafe.cpp
index 2f14e01ce0d..d0e0367d8eb 100644
index c071f8b7cc6..e484b8991d1 100644
--- a/src/hotspot/share/prims/unsafe.cpp
+++ b/src/hotspot/share/prims/unsafe.cpp
@@ -818,6 +818,7 @@ Unsafe_DefineAnonymousClass_impl(JNIEnv *env,
@@ -820,6 +820,7 @@ Unsafe_DefineAnonymousClass_impl(JNIEnv *env,
host_domain,
&st,
InstanceKlass::cast(host_klass),
@@ -254,5 +254,5 @@ index 2f14e01ce0d..d0e0367d8eb 100644
CHECK_NULL);
if (anonk == NULL) {
--
2.24.3 (Apple Git-128)
2.23.0

View File

@@ -1,58 +0,0 @@
From 23a83be457df96d519db8de59a49dd65731efcc4 Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Sat, 15 Dec 2018 18:23:30 +0100
Subject: [PATCH 07/50] Fix field method
---
.../prims/jvmtiEnhancedRedefineClasses.cpp | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 1c7595787a1..a3b65b273e5 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -264,21 +264,26 @@ class ChangePointersOopClosure : public BasicOopIterateClosure {
}
}
} else if (MethodHandles::ref_kind_is_field(ref_kind)) {
- Klass* k = (Klass*) java_lang_invoke_MemberName::vmtarget(obj);
+ oop clazz = java_lang_invoke_MemberName::clazz(obj);
+ if (clazz == NULL) {
+ return false;
+ }
+ Klass* k = java_lang_Class::as_Klass(clazz);
if (k == NULL) {
return false; // Was cleared before, this MemberName is invalid.
}
- if (k != NULL && k->new_version() != NULL) {
+ if (k->is_redefining()) {
// Let's try to re-resolve field
+ InstanceKlass* old = InstanceKlass::cast(k->old_version());
fieldDescriptor fd;
int offset = java_lang_invoke_MemberName::vmindex(obj);
bool is_static = MethodHandles::ref_kind_is_static(ref_kind);
- InstanceKlass* ik = InstanceKlass::cast(k);
- if (ik->find_local_field_from_offset(offset, is_static, &fd)) {
- InstanceKlass* newest = InstanceKlass::cast(k->newest_version());
+ InstanceKlass* ik_old = InstanceKlass::cast(old);
+ if (ik_old->find_local_field_from_offset(offset, is_static, &fd)) {
+ InstanceKlass* ik_new = InstanceKlass::cast(k->newest_version());
fieldDescriptor fd_new;
- if (newest->find_local_field(fd.name(), fd.signature(), &fd_new)) {
+ if (ik_new->find_local_field(fd.name(), fd.signature(), &fd_new)) {
Handle objHandle(Thread::current(), obj); // TODO : review thread
MethodHandles::init_field_MemberName(objHandle, fd_new, MethodHandles::ref_kind_is_setter(ref_kind));
} else {
@@ -288,7 +293,7 @@ class ChangePointersOopClosure : public BasicOopIterateClosure {
// Eventually, we probably want to replace them with something more meaningful,
// like instance throwing NoSuchFieldError or DMH that will resort to dynamic
// field resolution (with possibility of type conversion)
- java_lang_invoke_MemberName::set_method(obj, NULL);
+ java_lang_invoke_MemberName::set_clazz(obj, NULL);
java_lang_invoke_MemberName::set_vmindex(obj, 0);
return false;
}
--
2.24.3 (Apple Git-128)

View File

@@ -1,11 +1,11 @@
From d0d6602fe3d664cb2322d7066bf46fa7e20d5d4e Mon Sep 17 00:00:00 2001
From 4b445e7a7f77f82f757c12010e3c88b2eb4698f9 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Sat, 23 May 2020 10:02:15 +0200
Subject: [PATCH 45/50] Fix "no original bytecode found" error if method with
Subject: [PATCH 07/18] Fix "no original bytecode found" error if method with
bkp is missing
Sometimes IDE can deploy class with erroneous method, such method has
no bytecode, but breakpoint position can still exist.
n bytecode, but breakpoint position can still exist.
---
src/hotspot/share/interpreter/bytecodes.cpp | 2 +-
.../share/interpreter/interpreterRuntime.cpp | 2 +-
@@ -28,10 +28,10 @@ index e377e36b88c..262ecc021b2 100644
int Bytecodes::special_length_at(Bytecodes::Code code, address bcp, address end) {
diff --git a/src/hotspot/share/interpreter/interpreterRuntime.cpp b/src/hotspot/share/interpreter/interpreterRuntime.cpp
index f367e658879..71bbd15a4f5 100644
index c25e13d83e8..2a66419908c 100644
--- a/src/hotspot/share/interpreter/interpreterRuntime.cpp
+++ b/src/hotspot/share/interpreter/interpreterRuntime.cpp
@@ -834,7 +834,7 @@ IRT_END
@@ -819,7 +819,7 @@ IRT_END
// Invokes
IRT_ENTRY(Bytecodes::Code, InterpreterRuntime::get_original_bytecode_at(JavaThread* thread, Method* method, address bcp))
@@ -41,10 +41,10 @@ index f367e658879..71bbd15a4f5 100644
IRT_ENTRY(void, InterpreterRuntime::set_original_bytecode_at(JavaThread* thread, Method* method, address bcp, Bytecodes::Code new_code))
diff --git a/src/hotspot/share/oops/method.cpp b/src/hotspot/share/oops/method.cpp
index bee69f9cec6..f1e22db70d6 100644
index ed6f769bf1b..031f255e632 100644
--- a/src/hotspot/share/oops/method.cpp
+++ b/src/hotspot/share/oops/method.cpp
@@ -1747,14 +1747,14 @@ bool CompressedLineNumberReadStream::read_pair() {
@@ -1744,14 +1744,14 @@ bool CompressedLineNumberReadStream::read_pair() {
#if INCLUDE_JVMTI
@@ -61,7 +61,7 @@ index bee69f9cec6..f1e22db70d6 100644
ResourceMark rm;
fatal("no original bytecode found in %s at bci %d", name_and_sig_as_C_string(), bci);
}
@@ -1900,7 +1900,7 @@ BreakpointInfo::BreakpointInfo(Method* m, int bci) {
@@ -1897,7 +1897,7 @@ BreakpointInfo::BreakpointInfo(Method* m, int bci) {
_signature_index = m->signature_index();
_orig_bytecode = (Bytecodes::Code) *m->bcp_from(_bci);
if (_orig_bytecode == Bytecodes::_breakpoint)
@@ -70,7 +70,7 @@ index bee69f9cec6..f1e22db70d6 100644
_next = NULL;
}
@@ -1909,7 +1909,7 @@ void BreakpointInfo::set(Method* method) {
@@ -1906,7 +1906,7 @@ void BreakpointInfo::set(Method* method) {
{
Bytecodes::Code code = (Bytecodes::Code) *method->bcp_from(_bci);
if (code == Bytecodes::_breakpoint)
@@ -102,10 +102,10 @@ index 4533476ff8f..193e1845b23 100644
void set_breakpoint(int bci);
void clear_breakpoint(int bci);
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index a785a43d352..2321483dcbd 100644
index 0b239b2ff6d..aba99bb60fa 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -1389,14 +1389,16 @@ void VM_EnhancedRedefineClasses::unpatch_bytecode(Method* method) {
@@ -1356,14 +1356,16 @@ void VM_EnhancedRedefineClasses::unpatch_bytecode(Method* method) {
if (code == Bytecodes::_breakpoint) {
int bci = method->bci_from(bcp);
@@ -131,5 +131,5 @@ index a785a43d352..2321483dcbd 100644
} else {
java_code = Bytecodes::java_code(code);
--
2.24.3 (Apple Git-128)
2.23.0

View File

@@ -1,43 +0,0 @@
From 1fe56253f7e63d69f9a12963316889c5e87111eb Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Sat, 15 Dec 2018 20:16:37 +0100
Subject: [PATCH 08/50] Fix nonstatic field handles
---
src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index a3b65b273e5..c64d6bb1bb5 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -337,6 +337,7 @@ class ChangePointersOopClosure : public BasicOopIterateClosure {
if (obj == NULL) {
return;
}
+ bool oop_updated = false;
if (obj->is_instance() && InstanceKlass::cast(obj->klass())->is_mirror_instance_klass()) {
Klass* klass = java_lang_Class::as_Klass(obj);
if (klass != NULL && klass->is_instance_klass()) {
@@ -344,13 +345,17 @@ class ChangePointersOopClosure : public BasicOopIterateClosure {
if (klass->new_version() != NULL) {
obj = InstanceKlass::cast(klass->new_version())->java_mirror();
S::oop_store(p, obj);
+ oop_updated = true;
}
}
}
+
// JSR 292 support, uptade java.lang.invoke.MemberName instances
if (java_lang_invoke_MemberName::is_instance(obj)) {
- update_member_name(obj);
+ if (oop_updated) {
+ update_member_name(obj);
+ }
} else if (java_lang_invoke_DirectMethodHandle::is_instance(obj)) {
if (!update_direct_method_handle(obj)) {
// DMH is no longer valid, replace it with null reference.
--
2.24.3 (Apple Git-128)

View File

@@ -1,7 +1,7 @@
From 8b79e673a3a9d12c97b8b7dd2f4d79c2d4cdd1d6 Mon Sep 17 00:00:00 2001
From c022124c6e0680d2dfc174f66fc858b0eb2591dc Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Sun, 24 May 2020 12:07:42 +0200
Subject: [PATCH 48/50] Replace deleted method with
Subject: [PATCH 08/18] Replace deleted method with
Universe::throw_no_such_method_error
---
@@ -53,5 +53,5 @@ index 7741328979f..06581643c3b 100644
java_lang_invoke_ResolvedMethodName::set_vmtarget(mem_name, newer_method);
--
2.24.3 (Apple Git-128)
2.23.0

View File

@@ -1,10 +1,11 @@
From caf7fe94c42bea9606f96023cebe466058a1eef5 Mon Sep 17 00:00:00 2001
From aa1d291c7349e5cecf9d93e817d0866460deb903 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Fri, 12 Jun 2020 17:43:52 +0200
Subject: [PATCH 49/50] Support for G1 gc
Subject: [PATCH 09/18] Support for G1 gc
---
src/hotspot/share/gc/g1/g1CollectedHeap.hpp | 1 +
src/hotspot/share/gc/g1/g1CollectedHeap.cpp | 20 +++
src/hotspot/share/gc/g1/g1CollectedHeap.hpp | 3 +
src/hotspot/share/gc/g1/g1FullCollector.cpp | 16 +-
.../share/gc/g1/g1FullGCCompactTask.cpp | 92 +++++++++-
.../share/gc/g1/g1FullGCCompactTask.hpp | 19 +++
@@ -21,16 +22,54 @@ Subject: [PATCH 49/50] Support for G1 gc
src/hotspot/share/gc/shared/gcConfig.cpp | 2 +-
src/hotspot/share/gc/shared/space.inline.hpp | 3 +-
src/hotspot/share/memory/universe.cpp | 5 +
.../prims/jvmtiEnhancedRedefineClasses.cpp | 31 +++-
.../prims/jvmtiEnhancedRedefineClasses.hpp | 1 +
src/hotspot/share/runtime/arguments.cpp | 2 +-
.../prims/jvmtiEnhancedRedefineClasses.cpp | 75 ++++++---
.../prims/jvmtiEnhancedRedefineClasses.hpp | 6 +-
src/hotspot/share/runtime/arguments.cpp | 4 +-
src/hotspot/share/utilities/growableArray.hpp | 4 +
21 files changed, 570 insertions(+), 126 deletions(-)
22 files changed, 628 insertions(+), 141 deletions(-)
create mode 100644 src/hotspot/share/gc/shared/dcevmSharedGC.cpp
create mode 100644 src/hotspot/share/gc/shared/dcevmSharedGC.hpp
diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
index dea8d9fdb0e..33664a30519 100644
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
@@ -2108,6 +2108,21 @@ public:
}
};
+class G1IterateObjectClosureTask : public AbstractGangTask {
+ private:
+ ObjectClosure* _cl;
+ G1CollectedHeap* _g1h;
+ HeapRegionClaimer _hrclaimer;
+ public:
+ G1IterateObjectClosureTask(ObjectClosure* cl, G1CollectedHeap* g1h) : AbstractGangTask("IterateObject Closure"),
+ _cl(cl), _g1h(g1h), _hrclaimer(g1h->workers()->active_workers()) { }
+
+ virtual void work(uint worker_id) {
+ IterateObjectClosureRegionClosure blk(_cl);
+ _g1h->heap_region_par_iterate_from_worker_offset(&blk, &_hrclaimer, worker_id);
+ }
+};
+
void G1CollectedHeap::object_iterate(ObjectClosure* cl) {
IterateObjectClosureRegionClosure blk(cl);
heap_region_iterate(&blk);
@@ -2117,6 +2132,11 @@ void G1CollectedHeap::heap_region_iterate(HeapRegionClosure* cl) const {
_hrm.iterate(cl);
}
+void G1CollectedHeap::object_par_iterate(ObjectClosure* cl) {
+ G1IterateObjectClosureTask iocl_task(cl, this);
+ workers()->run_task(&iocl_task);
+}
+
void G1CollectedHeap::heap_region_par_iterate_from_worker_offset(HeapRegionClosure* cl,
HeapRegionClaimer *hrclaimer,
uint worker_id) const {
diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp
index 8a171dc6b52..0735eef0da8 100644
index 8a171dc6b52..05a068bb2e0 100644
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp
@@ -144,6 +144,7 @@ class G1CollectedHeap : public CollectedHeap {
@@ -41,6 +80,15 @@ index 8a171dc6b52..0735eef0da8 100644
// Other related classes.
friend class HeapRegionClaimer;
@@ -1116,6 +1117,8 @@ public:
// Iteration functions.
+ void object_par_iterate(ObjectClosure* cl);
+
// Iterate over all objects, calling "cl.do_object" on each.
virtual void object_iterate(ObjectClosure* cl);
diff --git a/src/hotspot/share/gc/g1/g1FullCollector.cpp b/src/hotspot/share/gc/g1/g1FullCollector.cpp
index 4362ee87e30..7b9496976b8 100644
--- a/src/hotspot/share/gc/g1/g1FullCollector.cpp
@@ -76,7 +124,7 @@ index 4362ee87e30..7b9496976b8 100644
}
diff --git a/src/hotspot/share/gc/g1/g1FullGCCompactTask.cpp b/src/hotspot/share/gc/g1/g1FullGCCompactTask.cpp
index 660afc88f02..d101a9f2177 100644
index 0c2fc088fa4..e7d830979f6 100644
--- a/src/hotspot/share/gc/g1/g1FullGCCompactTask.cpp
+++ b/src/hotspot/share/gc/g1/g1FullGCCompactTask.cpp
@@ -30,6 +30,7 @@
@@ -236,7 +284,7 @@ index 6c8eaf5967e..ea52a2db8cc 100644
#endif // SHARE_GC_G1_G1FULLGCCOMPACTTASK_HPP
diff --git a/src/hotspot/share/gc/g1/g1FullGCCompactionPoint.cpp b/src/hotspot/share/gc/g1/g1FullGCCompactionPoint.cpp
index 3e3440804e4..23c0d615088 100644
index 76e9e77d739..44fc32c1c47 100644
--- a/src/hotspot/share/gc/g1/g1FullGCCompactionPoint.cpp
+++ b/src/hotspot/share/gc/g1/g1FullGCCompactionPoint.cpp
@@ -31,13 +31,19 @@
@@ -942,10 +990,10 @@ index 00000000000..e2ef0171fb2
+
+#endif
diff --git a/src/hotspot/share/gc/shared/gcConfig.cpp b/src/hotspot/share/gc/shared/gcConfig.cpp
index 39364a64cb2..945b06ad2a4 100644
index adb0f5dd25c..20e0ef9ee8a 100644
--- a/src/hotspot/share/gc/shared/gcConfig.cpp
+++ b/src/hotspot/share/gc/shared/gcConfig.cpp
@@ -101,7 +101,7 @@ void GCConfig::fail_if_unsupported_gc_is_selected() {
@@ -106,7 +106,7 @@ void GCConfig::fail_if_unsupported_gc_is_selected() {
}
void GCConfig::select_gc_ergonomically() {
@@ -992,7 +1040,7 @@ index d0a6d665aa0..3dc4cc1323c 100644
SystemDictionary::oops_do(oopClosure);
}
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 1fbba406087..32929b3d7a0 100644
index aba99bb60fa..8b6fad2128e 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -36,7 +36,6 @@
@@ -1003,15 +1051,16 @@ index 1fbba406087..32929b3d7a0 100644
#include "oops/fieldStreams.hpp"
#include "oops/klassVtable.hpp"
#include "oops/oop.inline.hpp"
@@ -55,6 +54,7 @@
@@ -55,6 +54,8 @@
#include "utilities/events.hpp"
#include "oops/constantPool.inline.hpp"
#include "gc/cms/cmsHeap.hpp"
+#include "gc/g1/g1CollectedHeap.hpp"
+#include "gc/shared/dcevmSharedGC.hpp"
Array<Method*>* VM_EnhancedRedefineClasses::_old_methods = NULL;
Array<Method*>* VM_EnhancedRedefineClasses::_new_methods = NULL;
@@ -78,7 +78,7 @@ Klass* VM_EnhancedRedefineClasses::_the_class_oop = NULL;
@@ -78,7 +79,7 @@ Klass* VM_EnhancedRedefineClasses::_the_class_oop = NULL;
// - class_defs class definition - either new class or redefined class
// note that this is not the final array of classes to be redefined
// we need to scan for all affected classes (e.g. subclasses) and
@@ -1020,7 +1069,7 @@ index 1fbba406087..32929b3d7a0 100644
// @param class_load_kind always jvmti_class_load_kind_redefine
VM_EnhancedRedefineClasses::VM_EnhancedRedefineClasses(jint class_count, const jvmtiClassDefinition *class_defs, JvmtiClassLoadKind class_load_kind) :
VM_GC_Operation(Universe::heap()->total_collections(), GCCause::_heap_inspection, Universe::heap()->total_full_collections(), true) {
@@ -216,6 +216,13 @@ void VM_EnhancedRedefineClasses::mark_as_scavengable(nmethod* nm) {
@@ -216,6 +217,13 @@ void VM_EnhancedRedefineClasses::mark_as_scavengable(nmethod* nm) {
}
}
@@ -1034,7 +1083,7 @@ index 1fbba406087..32929b3d7a0 100644
// TODO comment
struct StoreBarrier {
// TODO: j10 review change ::oop_store -> HeapAccess<>::oop_store
@@ -430,7 +437,7 @@ public:
@@ -430,7 +438,7 @@ public:
src->set_klass(obj->klass()->new_version());
// FIXME: instance updates...
//guarantee(false, "instance updates!");
@@ -1043,7 +1092,18 @@ index 1fbba406087..32929b3d7a0 100644
}
} else {
obj->set_klass(obj->klass()->new_version());
@@ -507,7 +514,12 @@ void VM_EnhancedRedefineClasses::doit() {
@@ -452,6 +460,10 @@ public:
void VM_EnhancedRedefineClasses::doit() {
Thread *thread = Thread::current();
+ if (log_is_enabled(Info, redefine, class, timer)) {
+ _timer_vm_op_doit.start();
+ }
+
#if INCLUDE_CDS
if (UseSharedSpaces) {
// Sharing is enabled so we remap the shared readonly space to
@@ -507,12 +519,31 @@ void VM_EnhancedRedefineClasses::doit() {
// mark such nmethod's as "scavengable".
// For now, mark all nmethod's as scavengable that are not scavengable already
if (ScavengeRootsInCode) {
@@ -1057,24 +1117,85 @@ index 1fbba406087..32929b3d7a0 100644
}
Universe::heap()->ensure_parsability(false);
@@ -567,6 +579,7 @@ void VM_EnhancedRedefineClasses::doit() {
- Universe::heap()->object_iterate(&objectClosure);
+ if (UseG1GC) {
+ if (log_is_enabled(Info, redefine, class, timer)) {
+ _timer_heap_iterate.start();
+ }
+ G1CollectedHeap::heap()->object_par_iterate(&objectClosure);
+ _timer_heap_iterate.stop();
+ } else {
+ if (log_is_enabled(Info, redefine, class, timer)) {
+ _timer_heap_iterate.start();
+ }
+ Universe::heap()->object_iterate(&objectClosure);
+ _timer_heap_iterate.stop();
+ }
+
Universe::root_oops_do(&oopClosureNoBarrier);
+
}
log_trace(redefine, class, obsolete, metadata)("After updating instances");
@@ -565,11 +596,19 @@ void VM_EnhancedRedefineClasses::doit() {
if (objectClosure.needs_instance_update()) {
// Do a full garbage collection to update the instance sizes accordingly
+
+ if (log_is_enabled(Info, redefine, class, timer)) {
+ _timer_heap_full_gc.start();
+ }
+
Universe::set_redefining_gc_run(true);
notify_gc_begin(true);
+ // TODO: check _metadata_GC_clear_soft_refs with ScavengeRootsInCode
Universe::heap()->collect_as_vm_thread(GCCause::_heap_inspection);
notify_gc_end();
Universe::set_redefining_gc_run(false);
@@ -877,7 +890,7 @@ jvmtiError VM_EnhancedRedefineClasses::load_new_class_versions(TRAPS) {
// Calculated the difference between new and old class (field change, method change, supertype change, ...).
int VM_EnhancedRedefineClasses::calculate_redefinition_flags(InstanceKlass* new_class) {
int result = Klass::NoRedefinition;
- log_info(redefine, class, load)("Comparing different class versions of class %s",new_class->name()->as_C_string());
+ log_debug(redefine, class, load)("Comparing different class versions of class %s",new_class->name()->as_C_string());
+
+ _timer_heap_full_gc.stop();
}
assert(new_class->old_version() != NULL, "must have old version");
InstanceKlass* the_class = InstanceKlass::cast(new_class->old_version());
@@ -1584,7 +1597,7 @@ class TransferNativeFunctionRegistration {
// Unmark Klass*s as "redefining"
@@ -617,6 +656,7 @@ void VM_EnhancedRedefineClasses::doit() {
}
#endif
+ _timer_vm_op_doit.stop();
}
// Cleanup - runs in JVM thread
@@ -640,16 +680,14 @@ void VM_EnhancedRedefineClasses::doit_epilogue() {
if (log_is_enabled(Info, redefine, class, timer)) {
// Used to have separate timers for "doit" and "all", but the timer
// overhead skewed the measurements.
- jlong doit_time = _timer_rsc_phase1.milliseconds() +
- _timer_rsc_phase2.milliseconds();
- jlong all_time = _timer_vm_op_prologue.milliseconds() + doit_time;
+ jlong all_time = _timer_vm_op_prologue.milliseconds() + _timer_vm_op_doit.milliseconds();
log_info(redefine, class, timer)
("vm_op: all=" JLONG_FORMAT " prologue=" JLONG_FORMAT " doit=" JLONG_FORMAT,
- all_time, _timer_vm_op_prologue.milliseconds(), doit_time);
+ all_time, _timer_vm_op_prologue.milliseconds(), _timer_vm_op_doit.milliseconds());
log_info(redefine, class, timer)
- ("redefine_single_class: phase1=" JLONG_FORMAT " phase2=" JLONG_FORMAT,
- _timer_rsc_phase1.milliseconds(), _timer_rsc_phase2.milliseconds());
+ ("doit: heap iterate=" JLONG_FORMAT " fullgc=" JLONG_FORMAT,
+ _timer_heap_iterate.milliseconds(), _timer_heap_full_gc.milliseconds());
}
}
@@ -1398,7 +1436,7 @@ void VM_EnhancedRedefineClasses::unpatch_bytecode(Method* method) {
// arrayKlassOops. See Open Issues in jvmtiRedefineClasses.hpp.
void VM_EnhancedRedefineClasses::ClearCpoolCacheAndUnpatch::do_klass(Klass* k) {
if (!k->is_instance_klass()) {
- return;
+ return;
}
HandleMark hm(_thread);
@@ -1584,7 +1622,7 @@ class TransferNativeFunctionRegistration {
// Recursively search the binary tree of possibly prefixed method names.
// Iteration could be used if all agents were well behaved. Full tree walk is
@@ -1083,7 +1204,7 @@ index 1fbba406087..32929b3d7a0 100644
// Branch at each depth in the binary tree is:
// (1) without the prefix.
// (2) with the prefix.
@@ -1689,7 +1702,7 @@ void VM_EnhancedRedefineClasses::transfer_old_native_function_registrations(Inst
@@ -1689,7 +1727,7 @@ void VM_EnhancedRedefineClasses::transfer_old_native_function_registrations(Inst
transfer.transfer_registrations(_matching_old_methods, _matching_methods_length);
}
@@ -1092,7 +1213,26 @@ index 1fbba406087..32929b3d7a0 100644
// Deoptimize all compiled code that depends on this class.
//
// If the can_redefine_classes capability is obtained in the onload
@@ -2057,8 +2070,8 @@ static bool match_second(void* value, KlassPair elem) {
@@ -1816,10 +1854,6 @@ void VM_EnhancedRedefineClasses::redefine_single_class(InstanceKlass* new_class_
HandleMark hm(THREAD); // make sure handles from this call are freed
- if (log_is_enabled(Info, redefine, class, timer)) {
- _timer_rsc_phase1.start();
- }
-
InstanceKlass* new_class = new_class_oop;
InstanceKlass* the_class = InstanceKlass::cast(new_class_oop->old_version());
assert(the_class != NULL, "must have old version");
@@ -1874,7 +1908,6 @@ void VM_EnhancedRedefineClasses::redefine_single_class(InstanceKlass* new_class_
new_class->external_name(),
java_lang_Class::classRedefinedCount(new_class->java_mirror()));
}
- _timer_rsc_phase2.stop();
} // end redefine_single_class()
@@ -2057,8 +2090,8 @@ static bool match_second(void* value, KlassPair elem) {
// For each class to be redefined parse the bytecode and figure out the superclass and all interfaces.
// First newly introduced classes (_class_defs) are scanned and then affected classed (_affected_klasses).
// Affected flag is cleared (clear_redefinition_flag(Klass::MarkedAsAffected))
@@ -1104,10 +1244,23 @@ index 1fbba406087..32929b3d7a0 100644
ResourceMark mark(THREAD);
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
index d8a11b51fe9..030852b160a 100644
index 3551b06ecde..62a0fbf54d4 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
@@ -115,6 +115,7 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
@@ -86,9 +86,10 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
// Performance measurement support. These timers do not cover all
// the work done for JVM/TI RedefineClasses() but they do cover
// the heavy lifting.
- elapsedTimer _timer_rsc_phase1;
- elapsedTimer _timer_rsc_phase2;
+ elapsedTimer _timer_vm_op_doit;
elapsedTimer _timer_vm_op_prologue;
+ elapsedTimer _timer_heap_iterate;
+ elapsedTimer _timer_heap_full_gc;
// These routines are roughly in call order unless otherwise noted.
@@ -115,6 +116,7 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
void rollback();
static void mark_as_scavengable(nmethod* nm);
@@ -1116,18 +1269,21 @@ index d8a11b51fe9..030852b160a 100644
static void fix_invoke_method(Method* method);
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
index 72580b384dd..45f0858e57d 100644
index 2b5ba619f43..5053ad7ee61 100644
--- a/src/hotspot/share/runtime/arguments.cpp
+++ b/src/hotspot/share/runtime/arguments.cpp
@@ -2047,7 +2047,7 @@ bool Arguments::check_gc_consistency() {
@@ -2045,9 +2045,9 @@ bool Arguments::check_gc_consistency() {
if (AllowEnhancedClassRedefinition) {
// Must use serial GC. This limitation applies because the instance size changing GC modifications
// are only built into the mark and compact algorithm.
- if ((!UseSerialGC && !UseConcMarkSweepGC) && i >= 1) {
+ if ((!UseSerialGC && !UseConcMarkSweepGC && !UseG1GC) && i >= 1) {
jio_fprintf(defaultStream::error_stream(),
"Must use the serial or concurrent mark sweep GC with enhanced class redefinition.\n");
- "Must use the serial or concurrent mark sweep GC with enhanced class redefinition.\n");
+ "Must use the Serial, Concurrent Mark Sweep or G1 GC with enhanced class redefinition.\n");
return false;
}
}
diff --git a/src/hotspot/share/utilities/growableArray.hpp b/src/hotspot/share/utilities/growableArray.hpp
index f37d94a0529..738d475aea6 100644
--- a/src/hotspot/share/utilities/growableArray.hpp
@@ -1144,5 +1300,5 @@ index f37d94a0529..738d475aea6 100644
// Custom STL-style iterator to iterate over elements of a GrowableArray that satisfy a given predicate
--
2.24.3 (Apple Git-128)
2.23.0

View File

@@ -0,0 +1,50 @@
From b6ea0ee6fcc376f575be0f461c494664d55ed986 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Sat, 13 Jun 2020 18:50:59 +0200
Subject: [PATCH 10/18] Change log level in advanced redefinition
- Change log level for "Comparing different class ver.." to debug
- Fix adjust_method_entries_dcevm logging levels and severity
---
src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp | 2 +-
src/hotspot/share/prims/resolvedMethodTable.cpp | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 8b6fad2128e..a8adfa5af47 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -915,7 +915,7 @@ jvmtiError VM_EnhancedRedefineClasses::load_new_class_versions(TRAPS) {
// Calculated the difference between new and old class (field change, method change, supertype change, ...).
int VM_EnhancedRedefineClasses::calculate_redefinition_flags(InstanceKlass* new_class) {
int result = Klass::NoRedefinition;
- log_info(redefine, class, load)("Comparing different class versions of class %s",new_class->name()->as_C_string());
+ log_debug(redefine, class, load)("Comparing different class versions of class %s",new_class->name()->as_C_string());
assert(new_class->old_version() != NULL, "must have old version");
InstanceKlass* the_class = InstanceKlass::cast(new_class->old_version());
diff --git a/src/hotspot/share/prims/resolvedMethodTable.cpp b/src/hotspot/share/prims/resolvedMethodTable.cpp
index 06581643c3b..10806bee29b 100644
--- a/src/hotspot/share/prims/resolvedMethodTable.cpp
+++ b/src/hotspot/share/prims/resolvedMethodTable.cpp
@@ -270,7 +270,7 @@ void ResolvedMethodTable::adjust_method_entries_dcevm(bool * trace_name_printed)
} else {
newer_method = newer_klass->method_with_idnum(old_method->orig_method_idnum());
- log_info(redefine, class, load, exceptions)("Adjusting method: '%s' of new class %s", newer_method->name_and_sig_as_C_string(), newer_klass->name()->as_C_string());
+ log_debug(redefine, class, update)("Adjusting method: '%s' of new class %s", newer_method->name_and_sig_as_C_string(), newer_klass->name()->as_C_string());
assert(newer_klass == newer_method->method_holder(), "call after swapping redefined guts");
assert(newer_method != NULL, "method_with_idnum() should not be NULL");
@@ -290,7 +290,7 @@ void ResolvedMethodTable::adjust_method_entries_dcevm(bool * trace_name_printed)
ResourceMark rm;
if (!(*trace_name_printed)) {
- log_info(redefine, class, update)("adjust: name=%s", old_method->method_holder()->external_name());
+ log_debug(redefine, class, update)("adjust: name=%s", old_method->method_holder()->external_name());
*trace_name_printed = true;
}
log_debug(redefine, class, update, constantpool)
--
2.23.0

View File

@@ -1,257 +0,0 @@
From 11d10158d77512795b1b8ab8378620b95b67f175 Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Sat, 29 Dec 2018 13:22:29 +0100
Subject: [PATCH 10/50] Code cleanup
---
.../prims/jvmtiEnhancedRedefineClasses.cpp | 125 ++++++------------
.../prims/jvmtiEnhancedRedefineClasses.hpp | 3 -
2 files changed, 40 insertions(+), 88 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 9b8678a53fb..0aa1ac4ff80 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -35,7 +35,7 @@
#include "memory/metaspaceShared.hpp"
#include "memory/resourceArea.hpp"
#include "memory/iterator.inline.hpp"
-#include "gc/serial/markSweep.hpp" // FIXME: other GC?
+#include "gc/serial/markSweep.hpp"
#include "oops/fieldStreams.hpp"
#include "oops/klassVtable.hpp"
#include "oops/oop.inline.hpp"
@@ -485,7 +485,9 @@ void VM_EnhancedRedefineClasses::doit() {
}
// Deoptimize all compiled code that depends on this class (do only once, because it clears whole cache)
- flush_dependent_code(NULL, thread);
+ //if (_max_redefinition_flags > Klass::ModifyClass) {
+ flush_dependent_code(NULL, thread);
+ //}
// JSR-292 support
if (_any_class_has_resolved_methods) {
@@ -593,17 +595,28 @@ void VM_EnhancedRedefineClasses::doit() {
// See jvmtiExport.hpp for detailed explanation.
JvmtiExport::set_has_redefined_a_class();
- // check_class() is optionally called for product bits, but is
- // always called for non-product bits.
#ifdef PRODUCT
if (log_is_enabled(Trace, redefine, class, obsolete, metadata)) {
#endif
- log_trace(redefine, class, obsolete, metadata)("calling check_class");
- CheckClass check_class(thread);
- ClassLoaderDataGraph::classes_do(&check_class);
+ for (int i=0; i<_affected_klasses->length(); i++) {
+ Klass* the_class = _affected_klasses->at(i);
+ assert(the_class->new_version() != NULL, "Must have been redefined");
+ Klass* new_version = the_class->new_version();
+ assert(new_version->new_version() == NULL, "Must be newest version");
+
+ if (!(new_version->super() == NULL || new_version->super()->new_version() == NULL)) {
+ new_version->print();
+ new_version->super()->print();
+ }
+ assert(new_version->super() == NULL || new_version->super()->new_version() == NULL, "Super class must be newest version");
+ }
+ log_trace(redefine, class, obsolete, metadata)("calling check_class");
+ CheckClass check_class(thread);
+ ClassLoaderDataGraph::classes_do(&check_class);
#ifdef PRODUCT
}
#endif
+
}
/**
@@ -1279,24 +1292,23 @@ void VM_EnhancedRedefineClasses::calculate_instance_update_information(Klass* ne
GrowableArray<int> result = cl.finish();
ik->store_update_information(result);
ik->set_copying_backwards(cl.does_copy_backwards());
-/* TODO logging
- if (RC_TRACE_ENABLED(0x00000001)) {
- RC_TRACE(0x00000001, ("Instance update information for %s:", new_version->name()->as_C_string()));
+ if (log_is_enabled(Trace, redefine, class, obsolete, metadata)) {
+ log_trace(redefine, class, obsolete, metadata)("Instance update information for %s:", new_version->name()->as_C_string());
if (cl.does_copy_backwards()) {
- RC_TRACE(0x00000001, ("\tDoes copy backwards!"));
+ log_trace(redefine, class, obsolete, metadata)("\tDoes copy backwards!");
}
for (int i=0; i<result.length(); i++) {
int curNum = result.at(i);
if (curNum < 0) {
- RC_TRACE(0x00000001, ("\t%d CLEAN", curNum));
+ log_trace(redefine, class, obsolete, metadata)("\t%d CLEAN", curNum);
} else if (curNum > 0) {
- RC_TRACE(0x00000001, ("\t%d COPY from %d", curNum, result.at(i + 1)));
+ log_trace(redefine, class, obsolete, metadata)("\t%d COPY from %d", curNum, result.at(i + 1));
i++;
} else {
- RC_TRACE(0x00000001, ("\tEND"));
+ log_trace(redefine, class, obsolete, metadata)("\tEND");
}
}
- }*/
+ }
}
/**
@@ -1813,6 +1825,7 @@ void VM_EnhancedRedefineClasses::compute_added_deleted_matching_methods() {
/**
FIXME - swap_annotations is never called, check that annotations work
*/
+// TODO : delete it
void VM_EnhancedRedefineClasses::swap_annotations(InstanceKlass* the_class,
InstanceKlass* new_class) {
// FIXME - probably original implementation only
@@ -1822,7 +1835,6 @@ void VM_EnhancedRedefineClasses::swap_annotations(InstanceKlass* the_class,
new_class->set_annotations(old_annotations);
}
-
// Install the redefinition of a class:
// - house keeping (flushing breakpoints and caches, deoptimizing
// dependent compiled code)
@@ -1853,7 +1865,9 @@ void VM_EnhancedRedefineClasses::redefine_single_class(InstanceKlass* new_class_
// DCEVM Deoptimization is always for whole java world, call only once after all classes are redefined
// Deoptimize all compiled code that depends on this class
- // flush_dependent_code(the_class, THREAD);
+ //if (_max_redefinition_flags <= Klass::ModifyClass) {
+ //flush_dependent_code(the_class, THREAD);
+ //}
_old_methods = the_class->methods();
_new_methods = new_class->methods();
@@ -1928,64 +1942,15 @@ void VM_EnhancedRedefineClasses::increment_class_counter(InstanceKlass *ik, TRAP
}
}
-// FIXME - class check is currently disabled
void VM_EnhancedRedefineClasses::CheckClass::do_klass(Klass* k) {
- return;
- bool no_old_methods = true; // be optimistic
-
- // Both array and instance classes have vtables.
- // a vtable should never contain old or obsolete methods
- ResourceMark rm(_thread);
- if (k->vtable_length() > 0 &&
- !k->vtable().check_no_old_or_obsolete_entries()) {
- if (log_is_enabled(Trace, redefine, class, obsolete, metadata)) {
- log_trace(redefine, class, obsolete, metadata)
- ("klassVtable::check_no_old_or_obsolete_entries failure -- OLD or OBSOLETE method found -- class: %s",
- k->signature_name());
- k->vtable().dump_vtable();
- }
- no_old_methods = false;
- }
-
- if (k->is_instance_klass()) {
- HandleMark hm(_thread);
- InstanceKlass *ik = InstanceKlass::cast(k);
+ HandleMark hm(_thread);
+ InstanceKlass *ik = (InstanceKlass *) k;
+ assert(ik->new_version() == NULL, "must be latest version in system dictionary");
- // an itable should never contain old or obsolete methods
- if (ik->itable_length() > 0 &&
- !ik->itable().check_no_old_or_obsolete_entries()) {
- if (log_is_enabled(Trace, redefine, class, obsolete, metadata)) {
- log_trace(redefine, class, obsolete, metadata)
- ("klassItable::check_no_old_or_obsolete_entries failure -- OLD or OBSOLETE method found -- class: %s",
- ik->signature_name());
- ik->itable().dump_itable();
- }
- no_old_methods = false;
- }
-
- // the constant pool cache should never contain non-deleted old or obsolete methods
- if (ik->constants() != NULL &&
- ik->constants()->cache() != NULL &&
- !ik->constants()->cache()->check_no_old_or_obsolete_entries()) {
- if (log_is_enabled(Trace, redefine, class, obsolete, metadata)) {
- log_trace(redefine, class, obsolete, metadata)
- ("cp-cache::check_no_old_or_obsolete_entries failure -- OLD or OBSOLETE method found -- class: %s",
- ik->signature_name());
- ik->constants()->cache()->dump_cache();
- }
- no_old_methods = false;
- }
- }
-
- // print and fail guarantee if old methods are found.
- if (!no_old_methods) {
- if (log_is_enabled(Trace, redefine, class, obsolete, metadata)) {
- dump_methods();
- } else {
- log_trace(redefine, class)("Use the '-Xlog:redefine+class*:' option "
- "to see more info about the following guarantee() failure.");
- }
- guarantee(false, "OLD and/or OBSOLETE method(s) found");
+ if (ik->vtable_length() > 0) {
+ ResourceMark rm(_thread);
+ assert(ik->vtable().check_no_old_or_obsolete_entries(), "old method found");
+ ik->vtable().verify(tty, true);
}
}
@@ -2051,15 +2016,6 @@ void VM_EnhancedRedefineClasses::dump_methods() {
}
}
-// TODO - is it called anywhere?
-void VM_EnhancedRedefineClasses::print_on_error(outputStream* st) const {
- VM_Operation::print_on_error(st);
- if (_the_class_oop != NULL) {
- ResourceMark rm;
- st->print_cr(", redefining class %s", _the_class_oop->external_name());
- }
-}
-
/**
Helper class to traverse all loaded classes and figure out if the class is affected by redefinition.
*/
@@ -2093,7 +2049,7 @@ class AffectedKlassClosure : public KlassClosure {
log_trace(redefine, class, load)("found affected class: %s", klass->name()->as_C_string());
klass->set_redefinition_flag(Klass::MarkedAsAffected);
_affected_klasses->append(klass);
- return;
+ return;
}
}
@@ -2125,7 +2081,7 @@ jvmtiError VM_EnhancedRedefineClasses::find_sorted_affected_classes(TRAPS) {
// Find classes not directly redefined, but affected by a redefinition (because one of its supertypes is redefined)
AffectedKlassClosure closure(_affected_klasses);
- // TODO: j10 - review chancge from SystemDictionary::classes_do(&closure);
+ // Updated in j10, from original SystemDictionary::classes_do
ClassLoaderDataGraph::dictionary_classes_do(&closure);
log_trace(redefine, class, load)("%d classes affected", _affected_klasses->length());
@@ -2160,7 +2116,6 @@ static bool match_second(void* value, KlassPair elem) {
For each class to be redefined parse the bytecode and figure out the superclass and all interfaces.
First newly introduced classes (_class_defs) are scanned and then affected classed (_affected_klasses).
Affected flag is cleared (clear_redefinition_flag(Klass::MarkedAsAffected))
-
For each dependency create a KlassPair instance. Finnaly, affected classes (_affected_klasses) are sorted according to pairs.
TODO - the class file is potentionally parsed multiple times - introduce a cache?
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
index b712d69a193..37e63a1810f 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
@@ -195,8 +195,5 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
// Modifiable test must be shared between IsModifiableClass query
// and redefine implementation
static bool is_modifiable_class(oop klass_mirror);
-
- // Error printing
- void print_on_error(outputStream* st) const;
};
#endif // SHARE_VM_PRIMS_JVMTIREDEFINECLASSES2_HPP
--
2.24.3 (Apple Git-128)

View File

@@ -0,0 +1,26 @@
From ef1098751c596a03fd1721affc20d221b3544d37 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Tue, 6 Oct 2020 22:15:31 +0200
Subject: [PATCH 11/18] AllowEnhancedClassRedefinition is false (disabled) by
default
---
src/hotspot/share/runtime/globals.hpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/hotspot/share/runtime/globals.hpp b/src/hotspot/share/runtime/globals.hpp
index b8dba232fc1..d4453de1ff5 100644
--- a/src/hotspot/share/runtime/globals.hpp
+++ b/src/hotspot/share/runtime/globals.hpp
@@ -2682,7 +2682,7 @@ define_pd_global(uint64_t,MaxRAM, 1ULL*G);
experimental(bool, UseFastUnorderedTimeStamps, false, \
"Use platform unstable time where supported for timestamps only") \
\
- product(bool, AllowEnhancedClassRedefinition, true, \
+ product(bool, AllowEnhancedClassRedefinition, false, \
"Allow enhanced class redefinition beyond swapping method " \
"bodies") \
\
--
2.23.0

View File

@@ -1,118 +0,0 @@
From 1765f4c1b2e8958b458fa17d329be98ad025069c Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Sat, 29 Dec 2018 16:05:25 +0100
Subject: [PATCH 11/50] Fix check_class
---
.../prims/jvmtiEnhancedRedefineClasses.cpp | 39 +++++++------------
.../prims/jvmtiEnhancedRedefineClasses.hpp | 5 +--
2 files changed, 16 insertions(+), 28 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 0aa1ac4ff80..c08b3e82b2e 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -1,4 +1,4 @@
-/*
+ /*
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -28,6 +28,7 @@
#include "classfile/metadataOnStackMark.hpp"
#include "classfile/systemDictionary.hpp"
#include "classfile/verifier.hpp"
+#include "classfile/dictionary.hpp"
#include "interpreter/oopMapCache.hpp"
#include "interpreter/rewriter.hpp"
#include "logging/logStream.hpp"
@@ -611,8 +612,7 @@ void VM_EnhancedRedefineClasses::doit() {
assert(new_version->super() == NULL || new_version->super()->new_version() == NULL, "Super class must be newest version");
}
log_trace(redefine, class, obsolete, metadata)("calling check_class");
- CheckClass check_class(thread);
- ClassLoaderDataGraph::classes_do(&check_class);
+ ClassLoaderData::the_null_class_loader_data()->dictionary()->classes_do(check_class, thread);
#ifdef PRODUCT
}
#endif
@@ -1822,19 +1822,6 @@ void VM_EnhancedRedefineClasses::compute_added_deleted_matching_methods() {
assert(_matching_methods_length + _added_methods_length == _new_methods->length(), "sanity");
}
-/**
- FIXME - swap_annotations is never called, check that annotations work
-*/
-// TODO : delete it
-void VM_EnhancedRedefineClasses::swap_annotations(InstanceKlass* the_class,
- InstanceKlass* new_class) {
- // FIXME - probably original implementation only
- // Swap annotation fields values
- Annotations* old_annotations = the_class->annotations();
- the_class->set_annotations(new_class->annotations());
- new_class->set_annotations(old_annotations);
-}
-
// Install the redefinition of a class:
// - house keeping (flushing breakpoints and caches, deoptimizing
// dependent compiled code)
@@ -1942,15 +1929,17 @@ void VM_EnhancedRedefineClasses::increment_class_counter(InstanceKlass *ik, TRAP
}
}
-void VM_EnhancedRedefineClasses::CheckClass::do_klass(Klass* k) {
- HandleMark hm(_thread);
- InstanceKlass *ik = (InstanceKlass *) k;
- assert(ik->new_version() == NULL, "must be latest version in system dictionary");
+void VM_EnhancedRedefineClasses::check_class(InstanceKlass* ik, TRAPS) {
+ if (ik->is_instance_klass() && ik->old_version() != NULL) {
+ HandleMark hm(THREAD);
+
+ assert(ik->new_version() == NULL, "must be latest version in system dictionary");
- if (ik->vtable_length() > 0) {
- ResourceMark rm(_thread);
- assert(ik->vtable().check_no_old_or_obsolete_entries(), "old method found");
- ik->vtable().verify(tty, true);
+ if (ik->vtable_length() > 0) {
+ ResourceMark rm(THREAD);
+ assert(ik->vtable().check_no_old_or_obsolete_entries(), "old method found");
+ ik->vtable().verify(tty, true);
+ }
}
}
@@ -2017,7 +2006,7 @@ void VM_EnhancedRedefineClasses::dump_methods() {
}
/**
- Helper class to traverse all loaded classes and figure out if the class is affected by redefinition.
+ Helper class to traverse all loaded classes and figure out if the class is affected by redefinition.
*/
class AffectedKlassClosure : public KlassClosure {
private:
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
index 37e63a1810f..5b3ebc13661 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
@@ -144,15 +144,14 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
// Install the redefinition of a class
void redefine_single_class(InstanceKlass* new_class_oop, TRAPS);
- void swap_annotations(InstanceKlass* new_class,
- InstanceKlass* scratch_class);
-
// Increment the classRedefinedCount field in the specific InstanceKlass
// and in all direct and indirect subclasses.
void increment_class_counter(InstanceKlass *ik, TRAPS);
void flush_dependent_code(InstanceKlass* k_h, TRAPS);
+ static void check_class(InstanceKlass* k_oop, TRAPS);
+
static void dump_methods();
// Check that there are no old or obsolete methods
--
2.24.3 (Apple Git-128)

View File

@@ -1,24 +0,0 @@
From 0851d437a65dc9ac6d8355b54689d36e77e104b3 Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Sat, 29 Dec 2018 17:58:39 +0100
Subject: [PATCH 12/50] Fix force_forward in dead space
---
src/hotspot/share/gc/shared/space.inline.hpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/hotspot/share/gc/shared/space.inline.hpp b/src/hotspot/share/gc/shared/space.inline.hpp
index 26e56ae6f7e..8c255d6d428 100644
--- a/src/hotspot/share/gc/shared/space.inline.hpp
+++ b/src/hotspot/share/gc/shared/space.inline.hpp
@@ -213,6 +213,7 @@ inline void CompactibleSpace::scan_and_forward(SpaceType* space, CompactPoint* c
// see if this is the first dead region.
if (first_dead == NULL) {
first_dead = cur_obj;
+ force_forward = true;
}
}
--
2.24.3 (Apple Git-128)

View File

@@ -1,7 +1,7 @@
From 800b44f545c7b99026d203690def30ec4b9ed08e Mon Sep 17 00:00:00 2001
From 6a78dda15c66cbba1ca6a2d7f3df3a55fc087f50 Mon Sep 17 00:00:00 2001
From: Artem Khvastunov <artem.khvastunov@jetbrains.com>
Date: Tue, 14 Apr 2020 19:11:35 +0200
Subject: [PATCH 32/50] add jvmtiEnhancedRedefineClasses.* to CMakeLists.txt
Subject: [PATCH 12/18] add jvmtiEnhancedRedefineClasses.* to CMakeLists.txt
---
jb/project/hotspot-cmake/CMakeLists.txt | 2 ++
@@ -28,5 +28,5 @@ index 8b552c27206..6516e39058f 100644
../../../src/hotspot/share/prims/jvmtiEnvBase.cpp
../../../src/hotspot/share/prims/methodHandles.cpp
--
2.24.3 (Apple Git-128)
2.23.0

View File

@@ -1,25 +0,0 @@
From 35aba247d8a3e25f5d19403ba5f293bfdaf6539c Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Fri, 1 Mar 2019 18:45:13 +0100
Subject: [PATCH 13/50] Cleanup
---
src/hotspot/share/gc/shared/space.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/hotspot/share/gc/shared/space.cpp b/src/hotspot/share/gc/shared/space.cpp
index 947dff8ae0c..56b144b46f1 100644
--- a/src/hotspot/share/gc/shared/space.cpp
+++ b/src/hotspot/share/gc/shared/space.cpp
@@ -862,7 +862,7 @@ HeapWord* CompactibleSpace::forward_with_rescue(HeapWord* q, size_t size,
size_t forward_size = size;
// (DCEVM) There is a new version of the class of q => different size
- if (oop(q)->klass()->new_version() != NULL && oop(q)->klass()->new_version()->update_information() != NULL) {
+ if (oop(q)->klass()->new_version() != NULL) {
size_t new_size = oop(q)->size_given_klass(oop(q)->klass()->new_version());
// assert(size != new_size, "instances without changed size have to be updated prior to GC run");
--
2.24.3 (Apple Git-128)

View File

@@ -1,17 +1,17 @@
From dc397b652d9810f6f261070afbb8519f1c2964ee Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Sun, 16 Dec 2018 09:55:31 +0100
Subject: [PATCH 16/50] Add dcevm distro name
From 80c1cd01b45735928e3b3e9283b5484ea6a70a7f Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Mon, 19 Oct 2020 20:00:04 +0200
Subject: [PATCH 13/18] Set HOTSPOT_VM_DISTRO=Dynamic Code Evolution
---
make/autoconf/version-numbers | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/make/autoconf/version-numbers b/make/autoconf/version-numbers
index b5a23138213..5c0a3242c80 100644
index 1d08f6a80dc..88b4d460ee8 100644
--- a/make/autoconf/version-numbers
+++ b/make/autoconf/version-numbers
@@ -43,7 +43,7 @@ PRODUCT_NAME=OpenJDK
@@ -44,7 +44,7 @@ PRODUCT_NAME=OpenJDK
PRODUCT_SUFFIX="Runtime Environment"
JDK_RC_PLATFORM_NAME=Platform
COMPANY_NAME=N/A
@@ -21,5 +21,5 @@ index b5a23138213..5c0a3242c80 100644
VENDOR_URL_BUG=https://bugreport.java.com/bugreport/
VENDOR_URL_VM_BUG=https://bugreport.java.com/bugreport/crash.jsp
--
2.24.3 (Apple Git-128)
2.23.0

View File

@@ -1,61 +0,0 @@
From 26a5079eb61a2e23328fbd8ca59ffc2ab6b6193b Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Sat, 29 Dec 2018 17:38:27 +0100
Subject: [PATCH 14/50] Add codecache flush optimization, but just flush all
cache.
Redefined class can define a new method that overrides
method in superclass which is already used in codecache for
optimized non-virtual calls, etc...
---
.../prims/jvmtiEnhancedRedefineClasses.cpp | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index c08b3e82b2e..4ca638548dc 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -486,9 +486,9 @@ void VM_EnhancedRedefineClasses::doit() {
}
// Deoptimize all compiled code that depends on this class (do only once, because it clears whole cache)
- //if (_max_redefinition_flags > Klass::ModifyClass) {
+ // if (_max_redefinition_flags > Klass::ModifyClass) {
flush_dependent_code(NULL, thread);
- //}
+ // }
// JSR-292 support
if (_any_class_has_resolved_methods) {
@@ -1736,8 +1736,14 @@ void VM_EnhancedRedefineClasses::flush_dependent_code(InstanceKlass* k_h, TRAPS)
// All dependencies have been recorded from startup or this is a second or
// subsequent use of RedefineClasses
// FIXME: for now, deoptimize all!
- if (0 && JvmtiExport::all_dependencies_are_recorded()) {
+ if (0 && k_h != NULL && JvmtiExport::all_dependencies_are_recorded()) {
CodeCache::flush_evol_dependents_on(k_h);
+ Klass* superCl = k_h->super();
+ // Deoptimize super classes since redefined class can has a new method override
+ while (superCl != NULL && !superCl->is_redefining()) {
+ CodeCache::flush_evol_dependents_on(InstanceKlass::cast(superCl));
+ superCl = superCl->super();
+ }
} else {
CodeCache::mark_all_nmethods_for_deoptimization();
@@ -1852,9 +1858,9 @@ void VM_EnhancedRedefineClasses::redefine_single_class(InstanceKlass* new_class_
// DCEVM Deoptimization is always for whole java world, call only once after all classes are redefined
// Deoptimize all compiled code that depends on this class
- //if (_max_redefinition_flags <= Klass::ModifyClass) {
- //flush_dependent_code(the_class, THREAD);
- //}
+// if (_max_redefinition_flags <= Klass::ModifyClass) {
+// flush_dependent_code(the_class, THREAD);
+// }
_old_methods = the_class->methods();
_new_methods = new_class->methods();
--
2.24.3 (Apple Git-128)

View File

@@ -0,0 +1,71 @@
From 122562d31005edd3573a645c3a02c1d8fe843c5e Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Sun, 11 Oct 2020 10:43:28 +0200
Subject: [PATCH 14/18] Fix G1 nmethod registration
---
.../prims/jvmtiEnhancedRedefineClasses.cpp | 19 ++++++++++++++++---
.../prims/jvmtiEnhancedRedefineClasses.hpp | 3 ++-
2 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index a8adfa5af47..4ee12b7021f 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -217,7 +217,14 @@ void VM_EnhancedRedefineClasses::mark_as_scavengable(nmethod* nm) {
}
}
-void VM_EnhancedRedefineClasses::mark_as_scavengable_g1(nmethod* nm) {
+void VM_EnhancedRedefineClasses::unregister_nmethod_g1(nmethod* nm) {
+ // It should work not only for G1 but also for another GCs, but this way is safer now
+ if (!nm->is_zombie() && !nm->is_unloaded()) {
+ Universe::heap()->unregister_nmethod(nm);
+ }
+}
+
+void VM_EnhancedRedefineClasses::register_nmethod_g1(nmethod* nm) {
// It should work not only for G1 but also for another GCs, but this way is safer now
if (!nm->is_zombie() && !nm->is_unloaded()) {
Universe::heap()->register_nmethod(nm);
@@ -520,8 +527,9 @@ void VM_EnhancedRedefineClasses::doit() {
// For now, mark all nmethod's as scavengable that are not scavengable already
if (ScavengeRootsInCode) {
if (UseG1GC) {
- // this should work also for other GCs
- CodeCache::nmethods_do(mark_as_scavengable_g1);
+ // G1 holds references to nmethods in regions based on oops values. Since oops in nmethod can be changed in ChangePointers* closures
+ // we unregister nmethods from G1 heap, then closures are processed (oops are changed) and finally we register nmethod to G1 again
+ CodeCache::nmethods_do(unregister_nmethod_g1);
} else {
CodeCache::nmethods_do(mark_as_scavengable);
}
@@ -544,6 +552,11 @@ void VM_EnhancedRedefineClasses::doit() {
Universe::root_oops_do(&oopClosureNoBarrier);
+ if (UseG1GC) {
+ // this should work also for other GCs
+ CodeCache::nmethods_do(register_nmethod_g1);
+ }
+
}
log_trace(redefine, class, obsolete, metadata)("After updating instances");
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
index 62a0fbf54d4..d00109a0b92 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
@@ -116,7 +116,8 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
void rollback();
static void mark_as_scavengable(nmethod* nm);
- static void mark_as_scavengable_g1(nmethod* nm);
+ static void unregister_nmethod_g1(nmethod* nm);
+ static void register_nmethod_g1(nmethod* nm);
static void unpatch_bytecode(Method* method);
static void fix_invoke_method(Method* method);
--
2.23.0

View File

@@ -0,0 +1,26 @@
From 0156b2084be20579b407e112a00ba15f54248003 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Thu, 22 Oct 2020 20:15:20 +0200
Subject: [PATCH 15/18] Initialize method's _new_version/_old_version to NULL
---
src/hotspot/share/oops/method.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/hotspot/share/oops/method.cpp b/src/hotspot/share/oops/method.cpp
index 031f255e632..a9556ecf0c4 100644
--- a/src/hotspot/share/oops/method.cpp
+++ b/src/hotspot/share/oops/method.cpp
@@ -83,7 +83,8 @@ Method* Method::allocate(ClassLoaderData* loader_data,
return new (loader_data, size, MetaspaceObj::MethodType, THREAD) Method(cm, access_flags);
}
-Method::Method(ConstMethod* xconst, AccessFlags access_flags) {
+Method::Method(ConstMethod* xconst, AccessFlags access_flags) : _new_version(NULL),
+ _old_version(NULL) {
NoSafepointVerifier no_safepoint;
set_constMethod(xconst);
set_access_flags(access_flags);
--
2.23.0

View File

@@ -0,0 +1,191 @@
From 81ba8f1d120e158a7b0cfa09b5dd51295d51901f Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Fri, 23 Oct 2020 10:20:26 +0200
Subject: [PATCH 16/18] Clear dcevm code separation
---
src/hotspot/share/classfile/systemDictionary.cpp | 4 ++--
src/hotspot/share/gc/serial/genMarkSweep.cpp | 8 +++++---
src/hotspot/share/interpreter/linkResolver.cpp | 14 ++++++++++----
.../instrumentation/jfrEventClassTransformer.cpp | 2 +-
src/hotspot/share/oops/instanceKlass.cpp | 10 ++++++----
src/hotspot/share/oops/method.cpp | 2 +-
src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp | 2 +-
src/hotspot/share/runtime/reflection.cpp | 2 +-
8 files changed, 27 insertions(+), 17 deletions(-)
diff --git a/src/hotspot/share/classfile/systemDictionary.cpp b/src/hotspot/share/classfile/systemDictionary.cpp
index a6a03d3c0e9..9e0f4dd3c96 100644
--- a/src/hotspot/share/classfile/systemDictionary.cpp
+++ b/src/hotspot/share/classfile/systemDictionary.cpp
@@ -1152,7 +1152,7 @@ InstanceKlass* SystemDictionary::resolve_from_stream(Symbol* class_name,
MutexLocker mu(SystemDictionary_lock, THREAD);
Klass* check = find_class(h_name, k->class_loader_data());
- assert((check == k && !k->is_redefining()) || (k->is_redefining() && check == k->old_version()), "should be present in the dictionary");
+ assert(check == k && !k->is_redefining() || k->is_redefining() && check == k->old_version(), "should be present in the dictionary");
} );
return k;
@@ -2153,7 +2153,7 @@ void SystemDictionary::check_constraints(unsigned int d_hash,
// also hold array classes.
assert(check->is_instance_klass(), "noninstance in systemdictionary");
- if ((defining == true) || ((k != check) && k->old_version() != check)) {
+ if ((defining == true) || (k != check && (!AllowEnhancedClassRedefinition || k->old_version() != check))) {
throwException = true;
ss.print("loader %s", loader_data->loader_name_and_id());
ss.print(" attempted duplicate %s definition for %s. (%s)",
diff --git a/src/hotspot/share/gc/serial/genMarkSweep.cpp b/src/hotspot/share/gc/serial/genMarkSweep.cpp
index b18682f9a12..590b5389b4d 100644
--- a/src/hotspot/share/gc/serial/genMarkSweep.cpp
+++ b/src/hotspot/share/gc/serial/genMarkSweep.cpp
@@ -343,7 +343,9 @@ void GenMarkSweep::mark_sweep_phase4() {
GenCompactClosure blk;
gch->generation_iterate(&blk, true);
- DcevmSharedGC::copy_rescued_objects_back(MarkSweep::_rescued_oops, true);
- DcevmSharedGC::clear_rescued_objects_resource(MarkSweep::_rescued_oops);
- MarkSweep::_rescued_oops = NULL;
+ if (AllowEnhancedClassRedefinition) {
+ DcevmSharedGC::copy_rescued_objects_back(MarkSweep::_rescued_oops, true);
+ DcevmSharedGC::clear_rescued_objects_resource(MarkSweep::_rescued_oops);
+ MarkSweep::_rescued_oops = NULL;
+ }
}
diff --git a/src/hotspot/share/interpreter/linkResolver.cpp b/src/hotspot/share/interpreter/linkResolver.cpp
index 9dc184d02f5..bff1c3627b0 100644
--- a/src/hotspot/share/interpreter/linkResolver.cpp
+++ b/src/hotspot/share/interpreter/linkResolver.cpp
@@ -295,8 +295,13 @@ void LinkResolver::check_klass_accessability(Klass* ref_klass, Klass* sel_klass,
return; // no relevant check to do
}
}
- Reflection::VerifyClassAccessResults vca_result =
- Reflection::verify_class_access(ref_klass->newest_version(), InstanceKlass::cast(base_klass->newest_version()), true);
+ Klass* refKlassNewest = ref_klass;
+ Klass* baseKlassNewest = base_klass;
+ if (AllowEnhancedClassRedefinition) {
+ refKlassNewest = ref_klass->newest_version();
+ baseKlassNewest = base_klass->newest_version();
+ }
+ Reflection::VerifyClassAccessResults vca_result = Reflection::verify_class_access(refKlassNewest, InstanceKlass::cast(baseKlassNewest), true);
if (vca_result != Reflection::ACCESS_OK) {
ResourceMark rm(THREAD);
char* msg = Reflection::verify_class_access_msg(ref_klass,
@@ -572,7 +577,8 @@ void LinkResolver::check_method_accessability(Klass* ref_klass,
// We'll check for the method name first, as that's most likely
// to be false (so we'll short-circuit out of these tests).
if (sel_method->name() == vmSymbols::clone_name() &&
- sel_klass->newest_version() == SystemDictionary::Object_klass()->newest_version() &&
+ ( !AllowEnhancedClassRedefinition && sel_klass == SystemDictionary::Object_klass() ||
+ AllowEnhancedClassRedefinition && sel_klass->newest_version() == SystemDictionary::Object_klass()->newest_version()) &&
resolved_klass->is_array_klass()) {
// We need to change "protected" to "public".
assert(flags.is_protected(), "clone not protected?");
@@ -997,7 +1003,7 @@ void LinkResolver::resolve_field(fieldDescriptor& fd,
ResourceMark rm(THREAD);
stringStream ss;
- if (sel_klass != current_klass && sel_klass != current_klass->active_version()) {
+ if (sel_klass != current_klass && (!AllowEnhancedClassRedefinition || sel_klass != current_klass->active_version())) {
ss.print("Update to %s final field %s.%s attempted from a different class (%s) than the field's declaring class",
is_static ? "static" : "non-static", resolved_klass->external_name(), fd.name()->as_C_string(),
current_klass->external_name());
diff --git a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
index 84891b48c2a..6f19e2939a2 100644
--- a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
+++ b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
@@ -1467,7 +1467,7 @@ static InstanceKlass* create_new_instance_klass(InstanceKlass* ik, ClassFileStre
NULL, // host klass
NULL, // cp_patches
ClassFileParser::INTERNAL, // internal visibility
- false,
+ false,
THREAD);
if (HAS_PENDING_EXCEPTION) {
log_pending_exception(PENDING_EXCEPTION);
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
index 7eb1b01c785..710e0ddc930 100644
--- a/src/hotspot/share/oops/instanceKlass.cpp
+++ b/src/hotspot/share/oops/instanceKlass.cpp
@@ -178,7 +178,9 @@ bool InstanceKlass::has_nest_member(InstanceKlass* k, TRAPS) const {
}
Klass* k2 = _constants->klass_at(cp_index, CHECK_false);
- k2 = k2->newest_version();
+ if (AllowEnhancedClassRedefinition) {
+ k2 = k2->newest_version();
+ }
if (k2 == k) {
log_trace(class, nestmates)("- class is listed as a nest member");
return true;
@@ -837,7 +839,7 @@ bool InstanceKlass::link_class_impl(bool throw_verifyerror, TRAPS) {
#endif
set_init_state(linked);
// (DCEVM) Must check for old version in order to prevent infinite loops.
- if (JvmtiExport::should_post_class_prepare() && old_version() == NULL /* JVMTI deadlock otherwise */) {
+ if (JvmtiExport::should_post_class_prepare() && (!AllowEnhancedClassRedefinition || old_version() == NULL) /* JVMTI deadlock otherwise */) {
Thread *thread = THREAD;
assert(thread->is_Java_thread(), "thread->is_Java_thread()");
JvmtiExport::post_class_prepare((JavaThread *) thread, this);
@@ -919,7 +921,7 @@ void InstanceKlass::initialize_impl(TRAPS) {
// that aren't expected to throw. This would wreak havoc. See 6320309.
// (DCEVM) Wait also for the old class version to be fully initialized.
while((is_being_initialized() && !is_reentrant_initialization(self))
- || (old_version() != NULL && InstanceKlass::cast(old_version())->is_being_initialized())) {
+ || (AllowEnhancedClassRedefinition && old_version() != NULL && InstanceKlass::cast(old_version())->is_being_initialized())) {
wait = true;
ol.waitUninterruptibly(CHECK);
}
@@ -3617,7 +3619,7 @@ void InstanceKlass::verify_on(outputStream* st) {
guarantee(sib->is_klass(), "should be klass");
// TODO: (DCEVM) explain
- guarantee(sib->super() == super || super->newest_version() == SystemDictionary::Object_klass(), "siblings should have same superklass");
+ guarantee(sib->super() == super || AllowEnhancedClassRedefinition && super->newest_version() == SystemDictionary::Object_klass(), "siblings should have same superklass");
}
// Verify implementor fields requires the Compile_lock, but this is sometimes
diff --git a/src/hotspot/share/oops/method.cpp b/src/hotspot/share/oops/method.cpp
index a9556ecf0c4..6c7edaca67e 100644
--- a/src/hotspot/share/oops/method.cpp
+++ b/src/hotspot/share/oops/method.cpp
@@ -2100,7 +2100,7 @@ void Method::ensure_jmethod_ids(ClassLoaderData* loader_data, int capacity) {
// Add a method id to the jmethod_ids
jmethodID Method::make_jmethod_id(ClassLoaderData* loader_data, Method* m) {
// FIXME: (DCEVM) ???
- if (m != m->newest_version()) {
+ if (AllowEnhancedClassRedefinition && m != m->newest_version()) {
m = m->newest_version();
}
ClassLoaderData* cld = loader_data;
diff --git a/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp b/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp
index 60604c645ff..325bffb7ad0 100644
--- a/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp
@@ -51,7 +51,7 @@ public:
// the new version (SystemDictionary stores only new versions). But the LoadedClassesClosure's functionality was
// changed in java8 where jvmtiLoadedClasses collects all classes from all classloaders, therefore we
// must use new versions only.
- if (k->new_version()==NULL) {
+ if (AllowEnhancedClassRedefinition && k->new_version()==NULL) {
_classStack.push((jclass) _env->jni_reference(Handle(_cur_thread, k->java_mirror())));
}
}
diff --git a/src/hotspot/share/runtime/reflection.cpp b/src/hotspot/share/runtime/reflection.cpp
index ed789b0bc2b..06f60855655 100644
--- a/src/hotspot/share/runtime/reflection.cpp
+++ b/src/hotspot/share/runtime/reflection.cpp
@@ -660,7 +660,7 @@ bool Reflection::verify_member_access(const Klass* current_class,
TRAPS) {
// (DCEVM) Decide accessibility based on active version
- if (current_class != NULL) {
+ if (AllowEnhancedClassRedefinition && current_class != NULL) {
current_class = current_class->active_version();
}
--
2.23.0

View File

@@ -0,0 +1,160 @@
From a022248d12e37084c8f8987a44d567ba0e02fb6d Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Fri, 23 Oct 2020 11:07:40 +0200
Subject: [PATCH 17/18] Fix metadataOnStack bug
---
.../share/classfile/classLoaderData.cpp | 7 +-
.../share/classfile/metadataOnStackMark.cpp | 67 ++++++++++---------
.../share/classfile/metadataOnStackMark.hpp | 3 +-
.../share/prims/jvmtiRedefineClasses.cpp | 2 +-
4 files changed, 41 insertions(+), 38 deletions(-)
diff --git a/src/hotspot/share/classfile/classLoaderData.cpp b/src/hotspot/share/classfile/classLoaderData.cpp
index 1bc67adf5a7..bba5ce0511f 100644
--- a/src/hotspot/share/classfile/classLoaderData.cpp
+++ b/src/hotspot/share/classfile/classLoaderData.cpp
@@ -1398,13 +1398,10 @@ bool ClassLoaderDataGraph::do_unloading(bool clean_previous_versions) {
// Klassesoto delete.
// FIXME: dcevm - block asserts in MetadataOnStackMark
- bool walk_all_metadata = false;
- if (!AllowEnhancedClassRedefinition) {
- walk_all_metadata = clean_previous_versions &&
+ bool walk_all_metadata = clean_previous_versions &&
JvmtiExport::has_redefined_a_class() &&
InstanceKlass::has_previous_versions_and_reset();
- MetadataOnStackMark md_on_stack(walk_all_metadata);
- }
+ MetadataOnStackMark md_on_stack(walk_all_metadata, AllowEnhancedClassRedefinition);
// Save previous _unloading pointer for CMS which may add to unloading list before
// purging and we don't want to rewalk the previously unloaded class loader data.
diff --git a/src/hotspot/share/classfile/metadataOnStackMark.cpp b/src/hotspot/share/classfile/metadataOnStackMark.cpp
index 3a62c789702..9d7bdbde74b 100644
--- a/src/hotspot/share/classfile/metadataOnStackMark.cpp
+++ b/src/hotspot/share/classfile/metadataOnStackMark.cpp
@@ -46,23 +46,25 @@ NOT_PRODUCT(bool MetadataOnStackMark::_is_active = false;)
// it. Class unloading only deletes in-error class files, methods created by
// the relocator and dummy constant pools. None of these appear anywhere except
// in metadata Handles.
-MetadataOnStackMark::MetadataOnStackMark(bool redefinition_walk) {
+MetadataOnStackMark::MetadataOnStackMark(bool redefinition_walk, bool ignore) : _ignore(ignore) {
assert(SafepointSynchronize::is_at_safepoint(), "sanity check");
assert(_used_buffers == NULL, "sanity check");
assert(!_is_active, "MetadataOnStackMarks do not nest");
NOT_PRODUCT(_is_active = true;)
- Threads::metadata_handles_do(Metadata::mark_on_stack);
+ if (!ignore) {
+ Threads::metadata_handles_do(Metadata::mark_on_stack);
- if (redefinition_walk) {
- Threads::metadata_do(Metadata::mark_on_stack);
- CodeCache::metadata_do(Metadata::mark_on_stack);
- CompileBroker::mark_on_stack();
- JvmtiCurrentBreakpoints::metadata_do(Metadata::mark_on_stack);
- ThreadService::metadata_do(Metadata::mark_on_stack);
+ if (redefinition_walk) {
+ Threads::metadata_do(Metadata::mark_on_stack);
+ CodeCache::metadata_do(Metadata::mark_on_stack);
+ CompileBroker::mark_on_stack();
+ JvmtiCurrentBreakpoints::metadata_do(Metadata::mark_on_stack);
+ ThreadService::metadata_do(Metadata::mark_on_stack);
#if INCLUDE_JVMCI
- JVMCIRuntime::metadata_do(Metadata::mark_on_stack);
+ JVMCIRuntime::metadata_do(Metadata::mark_on_stack);
#endif
+ }
}
}
@@ -71,32 +73,35 @@ MetadataOnStackMark::~MetadataOnStackMark() {
// Unmark everything that was marked. Can't do the same walk because
// redefine classes messes up the code cache so the set of methods
// might not be the same.
- retire_current_buffer();
-
- MetadataOnStackBuffer* buffer = _used_buffers;
- while (buffer != NULL) {
- // Clear on stack state for all metadata.
- size_t size = buffer->size();
- for (size_t i = 0; i < size; i++) {
- Metadata* md = buffer->at(i);
- md->set_on_stack(false);
+ if (!_ignore)
+ {
+ retire_current_buffer();
+
+ MetadataOnStackBuffer* buffer = _used_buffers;
+ while (buffer != NULL) {
+ // Clear on stack state for all metadata.
+ size_t size = buffer->size();
+ for (size_t i = 0; i < size; i++) {
+ Metadata* md = buffer->at(i);
+ md->set_on_stack(false);
+ }
+
+ MetadataOnStackBuffer* next = buffer->next_used();
+
+ // Move the buffer to the free list.
+ buffer->clear();
+ buffer->set_next_used(NULL);
+ buffer->set_next_free(_free_buffers);
+ _free_buffers = buffer;
+
+ // Step to next used buffer.
+ buffer = next;
}
- MetadataOnStackBuffer* next = buffer->next_used();
-
- // Move the buffer to the free list.
- buffer->clear();
- buffer->set_next_used(NULL);
- buffer->set_next_free(_free_buffers);
- _free_buffers = buffer;
+ _used_buffers = NULL;
- // Step to next used buffer.
- buffer = next;
+ NOT_PRODUCT(_is_active = false;)
}
-
- _used_buffers = NULL;
-
- NOT_PRODUCT(_is_active = false;)
}
void MetadataOnStackMark::retire_buffer(MetadataOnStackBuffer* buffer) {
diff --git a/src/hotspot/share/classfile/metadataOnStackMark.hpp b/src/hotspot/share/classfile/metadataOnStackMark.hpp
index 8da4ac6f92b..6d327ab98f2 100644
--- a/src/hotspot/share/classfile/metadataOnStackMark.hpp
+++ b/src/hotspot/share/classfile/metadataOnStackMark.hpp
@@ -47,8 +47,9 @@ class MetadataOnStackMark : public StackObj {
static MetadataOnStackBuffer* allocate_buffer();
static void retire_buffer(MetadataOnStackBuffer* buffer);
+ bool _ignore;
public:
- MetadataOnStackMark(bool redefinition_walk);
+ MetadataOnStackMark(bool redefinition_walk, bool ignore);
~MetadataOnStackMark();
static void record(Metadata* m);
diff --git a/src/hotspot/share/prims/jvmtiRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiRedefineClasses.cpp
index fb81189d9c2..18bc7f4eea4 100644
--- a/src/hotspot/share/prims/jvmtiRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiRedefineClasses.cpp
@@ -199,7 +199,7 @@ void VM_RedefineClasses::doit() {
// Mark methods seen on stack and everywhere else so old methods are not
// cleaned up if they're on the stack.
- MetadataOnStackMark md_on_stack(true);
+ MetadataOnStackMark md_on_stack(true, false);
HandleMark hm(thread); // make sure any handles created are deleted
// before the stack walk again.
--
2.23.0

View File

@@ -1,24 +0,0 @@
From 987645d54a6682f28a733731965d6b377e892974 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Tue, 19 Nov 2019 19:58:27 +0100
Subject: [PATCH 17/50] java.desktop/com.sun.beans=ALL-UNNAMED
---
src/hotspot/share/runtime/arguments.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
index c75bb5d8f49..ba6e78d6daa 100644
--- a/src/hotspot/share/runtime/arguments.cpp
+++ b/src/hotspot/share/runtime/arguments.cpp
@@ -4327,5 +4327,7 @@ void Arguments::setup_hotswap_agent() {
create_numbered_property("jdk.module.addopens", "java.base/jdk.internal.loader=ALL-UNNAMED", addopens_count++);
// java.beans.Introspector access
create_numbered_property("jdk.module.addopens", "java.desktop/java.beans=ALL-UNNAMED", addopens_count++);
+ // java.beans.Introspector access
+ create_numbered_property("jdk.module.addopens", "java.desktop/com.sun.beans=ALL-UNNAMED", addopens_count++);
}
--
2.24.3 (Apple Git-128)

View File

@@ -0,0 +1,26 @@
From 46795cd6c086e2008b270f89971bb07ad34ac355 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Wed, 11 Nov 2020 18:45:15 +0100
Subject: [PATCH 18/18] Fix LoadedClassesClosure - fixes problems with remote
debugging
---
src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp b/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp
index 325bffb7ad0..30752e37f1c 100644
--- a/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp
@@ -51,7 +51,7 @@ public:
// the new version (SystemDictionary stores only new versions). But the LoadedClassesClosure's functionality was
// changed in java8 where jvmtiLoadedClasses collects all classes from all classloaders, therefore we
// must use new versions only.
- if (AllowEnhancedClassRedefinition && k->new_version()==NULL) {
+ if (!AllowEnhancedClassRedefinition || k->new_version()==NULL) {
_classStack.push((jclass) _env->jni_reference(Handle(_cur_thread, k->java_mirror())));
}
}
--
2.23.0

View File

@@ -1,113 +0,0 @@
From 60569257636a2d0b31b04ab2638d81f840d75e58 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Tue, 19 Nov 2019 21:07:59 +0100
Subject: [PATCH 18/50] increment_class_counter() using orig dcevm code
Probably it is cause of SISEGV on:
_
VM_EnhancedRedefineClasses::redefine_single_class->java_mirror()
---
.../prims/jvmtiEnhancedRedefineClasses.cpp | 39 ++++++-------------
1 file changed, 12 insertions(+), 27 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 4ca638548dc..efb9e806508 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -1146,9 +1146,9 @@ int VM_EnhancedRedefineClasses::calculate_redefinition_flags(InstanceKlass* new_
}
-/**
+/**
Searches for the class bytecode of the given class and returns it as a byte array.
-
+
@param the_class definition of a class, either existing class or new_class
@param class_bytes - if the class is redefined, it contains new class definition, otherwise just original class bytecode.
@param class_byte_count - size of class_bytes
@@ -1460,7 +1460,7 @@ void VM_EnhancedRedefineClasses::ClearCpoolCacheAndUnpatch::do_klass(Klass* k) {
//
// ik->itable()->adjust_method_entries(the_class, &trace_name_printed);
// }
-
+
constantPoolHandle other_cp = constantPoolHandle(ik->constants());
// Update host klass of anonymous classes (for example, produced by lambdas) to newest version.
@@ -1764,7 +1764,7 @@ void VM_EnhancedRedefineClasses::flush_dependent_code(InstanceKlass* k_h, TRAPS)
/**
Compare _old_methods and _new_methods arrays and store the result into
_matching_old_methods, _matching_new_methods, _added_methods, _deleted_methods
-
+
Setup _old_methods and _new_methods before the call - it should be called for one class only!
*/
void VM_EnhancedRedefineClasses::compute_added_deleted_matching_methods() {
@@ -1898,13 +1898,13 @@ void VM_EnhancedRedefineClasses::redefine_single_class(InstanceKlass* new_class_
ResourceMark rm(THREAD);
// increment the classRedefinedCount field in the_class and in any
// direct and indirect subclasses of the_class
- increment_class_counter(the_class, THREAD);
+ increment_class_counter(new_class, THREAD);
log_info(redefine, class, load)
("redefined name=%s, count=%d (avail_mem=" UINT64_FORMAT "K)",
- the_class->external_name(), java_lang_Class::classRedefinedCount(the_class->java_mirror()), os::available_memory() >> 10);
+ new_class->external_name(), java_lang_Class::classRedefinedCount(new_class->java_mirror()), os::available_memory() >> 10);
Events::log_redefinition(THREAD, "redefined class name=%s, count=%d",
- the_class->external_name(),
- java_lang_Class::classRedefinedCount(the_class->java_mirror()));
+ new_class->external_name(),
+ java_lang_Class::classRedefinedCount(new_class->java_mirror()));
}
_timer_rsc_phase2.stop();
@@ -1914,25 +1914,10 @@ void VM_EnhancedRedefineClasses::redefine_single_class(InstanceKlass* new_class_
// Increment the classRedefinedCount field in the specific InstanceKlass
// and in all direct and indirect subclasses.
void VM_EnhancedRedefineClasses::increment_class_counter(InstanceKlass *ik, TRAPS) {
- oop class_mirror = ik->java_mirror();
+ oop class_mirror = ik->old_version()->java_mirror();
Klass* class_oop = java_lang_Class::as_Klass(class_mirror);
int new_count = java_lang_Class::classRedefinedCount(class_mirror) + 1;
- java_lang_Class::set_classRedefinedCount(ik->new_version()->java_mirror(), new_count);
-
- if (class_oop != _the_class_oop) {
- // _the_class_oop count is printed at end of redefine_single_class()
- log_debug(redefine, class, subclass)("updated count in subclass=%s to %d", ik->external_name(), new_count);
- }
-
- for (Klass *subk = ik->subklass(); subk != NULL;
- subk = subk->next_sibling()) {
- if (subk->is_instance_klass()) {
- // Only update instanceKlasses
- InstanceKlass *subik = InstanceKlass::cast(subk);
- // recursively do subclasses of the current subclass
- increment_class_counter(subik, THREAD);
- }
- }
+ java_lang_Class::set_classRedefinedCount(ik->java_mirror(), new_count);
}
void VM_EnhancedRedefineClasses::check_class(InstanceKlass* ik, TRAPS) {
@@ -2063,7 +2048,7 @@ class AffectedKlassClosure : public KlassClosure {
/**
Find all affected classes by current redefinition (either because of redefine, class hierarchy or interface change).
- Affected classes are stored in _affected_klasses and parent classes always precedes child class.
+ Affected classes are stored in _affected_klasses and parent classes always precedes child class.
*/
jvmtiError VM_EnhancedRedefineClasses::find_sorted_affected_classes(TRAPS) {
for (int i = 0; i < _class_count; i++) {
@@ -2112,7 +2097,7 @@ static bool match_second(void* value, KlassPair elem) {
First newly introduced classes (_class_defs) are scanned and then affected classed (_affected_klasses).
Affected flag is cleared (clear_redefinition_flag(Klass::MarkedAsAffected))
For each dependency create a KlassPair instance. Finnaly, affected classes (_affected_klasses) are sorted according to pairs.
-
+
TODO - the class file is potentionally parsed multiple times - introduce a cache?
*/
jvmtiError VM_EnhancedRedefineClasses::do_topological_class_sorting(TRAPS) {
--
2.24.3 (Apple Git-128)

View File

@@ -1,38 +0,0 @@
From 41d2963b54490601e22cf5309ed73f78566d35ae Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Thu, 21 Nov 2019 19:30:07 +0100
Subject: [PATCH 19/50] Allow 11715ha class initializer calls
---
src/hotspot/share/classfile/vmSymbols.hpp | 1 +
src/hotspot/share/interpreter/linkResolver.cpp | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/hotspot/share/classfile/vmSymbols.hpp b/src/hotspot/share/classfile/vmSymbols.hpp
index e2bac31b27f..6eeda3b8f68 100644
--- a/src/hotspot/share/classfile/vmSymbols.hpp
+++ b/src/hotspot/share/classfile/vmSymbols.hpp
@@ -340,6 +340,7 @@
/* common method and field names */ \
template(object_initializer_name, "<init>") \
template(class_initializer_name, "<clinit>") \
+ template(ha_class_initializer_name, "$$ha$clinit") \
template(println_name, "println") \
template(printStackTrace_name, "printStackTrace") \
template(main_name, "main") \
diff --git a/src/hotspot/share/interpreter/linkResolver.cpp b/src/hotspot/share/interpreter/linkResolver.cpp
index b9ccdee8cca..cb76d2ef50c 100644
--- a/src/hotspot/share/interpreter/linkResolver.cpp
+++ b/src/hotspot/share/interpreter/linkResolver.cpp
@@ -1009,7 +1009,7 @@ void LinkResolver::resolve_field(fieldDescriptor& fd,
assert(!m.is_null(), "information about the current method must be available for 'put' bytecodes");
bool is_initialized_static_final_update = (byte == Bytecodes::_putstatic &&
fd.is_static() &&
- !m()->is_static_initializer());
+ !(m()->is_static_initializer() || m()->name() == vmSymbols::ha_class_initializer_name()));
bool is_initialized_instance_final_update = ((byte == Bytecodes::_putfield || byte == Bytecodes::_nofast_putfield) &&
!fd.is_static() &&
!m->is_object_initializer());
--
2.24.3 (Apple Git-128)

View File

@@ -0,0 +1,31 @@
From 62fc66fa74886bd8bb15cd3e2084175f7ad5d0c7 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <vladimir.dvorak@jetbrains.com>
Date: Fri, 5 Feb 2021 23:30:49 +0100
Subject: [PATCH 19/19] Disable AllowEnhancedClassRedefinition in flight
recorder
---
src/hotspot/share/runtime/arguments.cpp | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
index 5053ad7ee61..c5635bb8537 100644
--- a/src/hotspot/share/runtime/arguments.cpp
+++ b/src/hotspot/share/runtime/arguments.cpp
@@ -3962,6 +3962,13 @@ jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) {
// Set object alignment values.
set_object_alignment();
+ if (FlightRecorder) {
+ if (AllowEnhancedClassRedefinition) {
+ warning("EnhancedClassRedefinition was disabled, it is not allowed in FlightRecorder.");
+ AllowEnhancedClassRedefinition = false;
+ }
+ }
+
setup_hotswap_agent();
#if !INCLUDE_CDS
--
2.23.0

View File

@@ -1,24 +0,0 @@
From 09799f079ef1148248ca60c917205003d2a565b3 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Tue, 26 Nov 2019 22:13:07 +0100
Subject: [PATCH 20/50] Disable HA in keytool
---
make/launcher/Launcher-java.base.gmk | 1 +
1 file changed, 1 insertion(+)
diff --git a/make/launcher/Launcher-java.base.gmk b/make/launcher/Launcher-java.base.gmk
index 5ee4530004b..88c1a14b2aa 100644
--- a/make/launcher/Launcher-java.base.gmk
+++ b/make/launcher/Launcher-java.base.gmk
@@ -63,6 +63,7 @@ endif
$(eval $(call SetupBuildLauncher, keytool, \
MAIN_CLASS := sun.security.tools.keytool.Main, \
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
))
################################################################################
--
2.24.3 (Apple Git-128)

View File

@@ -1,24 +0,0 @@
From e1d8f42f428d7d18f09f1a7098f56fdce808c3fe Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Thu, 28 Nov 2019 18:53:11 +0100
Subject: [PATCH 21/50] Open jdk module to access ClassInfo.CACHE
---
src/hotspot/share/runtime/arguments.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
index ba6e78d6daa..0081f688120 100644
--- a/src/hotspot/share/runtime/arguments.cpp
+++ b/src/hotspot/share/runtime/arguments.cpp
@@ -4329,5 +4329,7 @@ void Arguments::setup_hotswap_agent() {
create_numbered_property("jdk.module.addopens", "java.desktop/java.beans=ALL-UNNAMED", addopens_count++);
// java.beans.Introspector access
create_numbered_property("jdk.module.addopens", "java.desktop/com.sun.beans=ALL-UNNAMED", addopens_count++);
+ // com.sun.beans.introspect.ClassInfo access
+ create_numbered_property("jdk.module.addopens", "java.desktop/com.sun.beans.introspect=ALL-UNNAMED", addopens_count++);
}
--
2.24.3 (Apple Git-128)

View File

@@ -1,25 +0,0 @@
From 8b7323c57ee07c03a02ba951ce6d453ec4cc1a54 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Sun, 8 Dec 2019 17:55:01 +0100
Subject: [PATCH 22/50] Open java.base/java.io module
---
src/hotspot/share/runtime/arguments.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
index 0081f688120..0cdd8c88315 100644
--- a/src/hotspot/share/runtime/arguments.cpp
+++ b/src/hotspot/share/runtime/arguments.cpp
@@ -4325,6 +4325,8 @@ void Arguments::setup_hotswap_agent() {
create_numbered_property("jdk.module.addopens", "java.base/java.lang=ALL-UNNAMED", addopens_count++);
// Class of field java.lang.reflect.Proxy/proxyCache
create_numbered_property("jdk.module.addopens", "java.base/jdk.internal.loader=ALL-UNNAMED", addopens_count++);
+ // Use to access java.io.Reader, java.io.InputStream, java.io.FileInputStream
+ create_numbered_property("jdk.module.addopens", "java.base/java.io=ALL-UNNAMED", addopens_count++);
// java.beans.Introspector access
create_numbered_property("jdk.module.addopens", "java.desktop/java.beans=ALL-UNNAMED", addopens_count++);
// java.beans.Introspector access
--
2.24.3 (Apple Git-128)

View File

@@ -1,54 +0,0 @@
From 14c82a29cbf8254f8da626753ea34086d38e71b4 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <vladimir.dvorak@mailprofiler.com>
Date: Fri, 6 Mar 2020 09:28:24 +0100
Subject: [PATCH 23/50] Fix fieldDescriptor.inline.hpp
---
.../share/prims/jvmtiEnhancedRedefineClasses.cpp | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index efb9e806508..a404fd3f016 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -49,6 +49,7 @@
#include "runtime/deoptimization.hpp"
#include "runtime/jniHandles.inline.hpp"
#include "runtime/relocator.hpp"
+#include "runtime/fieldDescriptor.inline.hpp"
#include "utilities/bitMap.inline.hpp"
#include "prims/jvmtiThreadState.inline.hpp"
#include "utilities/events.hpp"
@@ -490,6 +491,11 @@ void VM_EnhancedRedefineClasses::doit() {
flush_dependent_code(NULL, thread);
// }
+ // Adjust constantpool caches for all classes that reference methods of the evolved class.
+ ClearCpoolCacheAndUnpatch clear_cpool_cache(thread);
+ ClassLoaderDataGraph::classes_do(&clear_cpool_cache);
+
+
// JSR-292 support
if (_any_class_has_resolved_methods) {
bool trace_name_printed = false;
@@ -1890,9 +1896,6 @@ void VM_EnhancedRedefineClasses::redefine_single_class(InstanceKlass* new_class_
}
*/
- // Adjust constantpool caches for all classes that reference methods of the evolved class.
- ClearCpoolCacheAndUnpatch clear_cpool_cache(THREAD);
- ClassLoaderDataGraph::classes_do(&clear_cpool_cache);
{
ResourceMark rm(THREAD);
@@ -1905,7 +1908,6 @@ void VM_EnhancedRedefineClasses::redefine_single_class(InstanceKlass* new_class_
Events::log_redefinition(THREAD, "redefined class name=%s, count=%d",
new_class->external_name(),
java_lang_Class::classRedefinedCount(new_class->java_mirror()));
-
}
_timer_rsc_phase2.stop();
} // end redefine_single_class()
--
2.24.3 (Apple Git-128)

View File

@@ -1,38 +0,0 @@
From 5a56f2278c0a79f4a26f369a55f4c1c4dab2621e Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <vladimir.dvorak@mailprofiler.com>
Date: Fri, 6 Mar 2020 15:46:51 +0100
Subject: [PATCH 24/50] Fix clear_cpool_cache
---
src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index a404fd3f016..1f5a67f8866 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -491,11 +491,6 @@ void VM_EnhancedRedefineClasses::doit() {
flush_dependent_code(NULL, thread);
// }
- // Adjust constantpool caches for all classes that reference methods of the evolved class.
- ClearCpoolCacheAndUnpatch clear_cpool_cache(thread);
- ClassLoaderDataGraph::classes_do(&clear_cpool_cache);
-
-
// JSR-292 support
if (_any_class_has_resolved_methods) {
bool trace_name_printed = false;
@@ -1896,6 +1891,9 @@ void VM_EnhancedRedefineClasses::redefine_single_class(InstanceKlass* new_class_
}
*/
+ // Adjust constantpool caches for all classes that reference methods of the evolved class.
+ ClearCpoolCacheAndUnpatch clear_cpool_cache(THREAD);
+ ClassLoaderDataGraph::classes_do(&clear_cpool_cache);
{
ResourceMark rm(THREAD);
--
2.24.3 (Apple Git-128)

View File

@@ -1,163 +0,0 @@
From c1aafaafaf15780d6bca1312162d551da4f63036 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <vladimir.dvorak@mailprofiler.com>
Date: Mon, 9 Mar 2020 09:54:04 +0100
Subject: [PATCH 25/50] Refactor ClearCpoolCacheAndUnpatch
Call it after redefinition of all classes
---
make/common/MakeBase.gmk | 4 +-
.../prims/jvmtiEnhancedRedefineClasses.cpp | 98 ++++---------------
2 files changed, 21 insertions(+), 81 deletions(-)
diff --git a/make/common/MakeBase.gmk b/make/common/MakeBase.gmk
index a040effe83a..c33a7d52ddb 100644
--- a/make/common/MakeBase.gmk
+++ b/make/common/MakeBase.gmk
@@ -1044,7 +1044,9 @@ DependOnVariableHelper = \
$(info NewVariable $1: >$(strip $($1))<) \
$(info OldVariable $1: >$(strip $($1_old))<)) \
$(call WriteFile, $1_old:=$(call DoubleDollar,$(call EscapeHash,$($1))), \
- $($1_filename))) \
+ $($1_filename)) \
+ $(eval $($1_filename): ) \
+ ) \
$($1_filename) \
)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 1f5a67f8866..24fb76b6de4 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -491,6 +491,11 @@ void VM_EnhancedRedefineClasses::doit() {
flush_dependent_code(NULL, thread);
// }
+ // Adjust constantpool caches for all classes that reference methods of the evolved class.
+ ClearCpoolCacheAndUnpatch clear_cpool_cache(thread);
+ ClassLoaderDataGraph::classes_do(&clear_cpool_cache);
+
+
// JSR-292 support
if (_any_class_has_resolved_methods) {
bool trace_name_printed = false;
@@ -1383,86 +1388,23 @@ void VM_EnhancedRedefineClasses::unpatch_bytecode(Method* method) {
}
}
-// Unevolving classes may point to methods of the_class directly
+// Unevolving classes may point to old methods directly
// from their constant pool caches, itables, and/or vtables. We
-// use the ClassLoaderDataGraph::classes_do() facility and this helper
-// to fix up these pointers.
-// Adjust cpools and vtables closure
+// use the SystemDictionary::classes_do() facility and this helper
+// to fix up these pointers. Additional field offsets and vtable indices
+// in the constant pool cache entries are fixed.
+//
+// Note: We currently don't support updating the vtable in
+// arrayKlassOops. See Open Issues in jvmtiRedefineClasses.hpp.
void VM_EnhancedRedefineClasses::ClearCpoolCacheAndUnpatch::do_klass(Klass* k) {
- // This is a very busy routine. We don't want too much tracing
- // printed out.
- bool trace_name_printed = false;
- InstanceKlass *the_class = InstanceKlass::cast(_the_class_oop);
-
- // If the class being redefined is java.lang.Object, we need to fix all
- // array class vtables also
- if (k->is_array_klass() && _the_class_oop == SystemDictionary::Object_klass()) {
- k->vtable().adjust_method_entries(the_class, &trace_name_printed);
- } else if (k->is_instance_klass()) {
- HandleMark hm(_thread);
- InstanceKlass *ik = InstanceKlass::cast(k);
+ if (!k->is_instance_klass()) {
+ return;
+ }
- // HotSpot specific optimization! HotSpot does not currently
- // support delegation from the bootstrap class loader to a
- // user-defined class loader. This means that if the bootstrap
- // class loader is the initiating class loader, then it will also
- // be the defining class loader. This also means that classes
- // loaded by the bootstrap class loader cannot refer to classes
- // loaded by a user-defined class loader. Note: a user-defined
- // class loader can delegate to the bootstrap class loader.
- //
- // If the current class being redefined has a user-defined class
- // loader as its defining class loader, then we can skip all
- // classes loaded by the bootstrap class loader.
- bool is_user_defined =
- InstanceKlass::cast(_the_class_oop)->class_loader() != NULL;
- if (is_user_defined && ik->class_loader() == NULL) {
- return;
- }
-
- // Fix the vtable embedded in the_class and subclasses of the_class,
- // if one exists. We discard scratch_class and we don't keep an
- // InstanceKlass around to hold obsolete methods so we don't have
- // any other InstanceKlass embedded vtables to update. The vtable
- // holds the Method*s for virtual (but not final) methods.
- // Default methods, or concrete methods in interfaces are stored
- // in the vtable, so if an interface changes we need to check
- // adjust_method_entries() for every InstanceKlass, which will also
- // adjust the default method vtable indices.
- // We also need to adjust any default method entries that are
- // not yet in the vtable, because the vtable setup is in progress.
- // This must be done after we adjust the default_methods and
- // default_vtable_indices for methods already in the vtable.
- // If redefining Unsafe, walk all the vtables looking for entries.
-// FIXME - code from standard redefine - if needed, it should switch to new_class
-// if (ik->vtable_length() > 0 && (_the_class_oop->is_interface()
-// || _the_class_oop == SystemDictionary::internal_Unsafe_klass()
-// || ik->is_subtype_of(_the_class_oop))) {
-// // ik->vtable() creates a wrapper object; rm cleans it up
-// ResourceMark rm(_thread);
-//
-// ik->vtable()->adjust_method_entries(the_class, &trace_name_printed);
-// ik->adjust_default_methods(the_class, &trace_name_printed);
-// }
-
- // If the current class has an itable and we are either redefining an
- // interface or if the current class is a subclass of the_class, then
- // we potentially have to fix the itable. If we are redefining an
- // interface, then we have to call adjust_method_entries() for
- // every InstanceKlass that has an itable since there isn't a
- // subclass relationship between an interface and an InstanceKlass.
- // If redefining Unsafe, walk all the itables looking for entries.
-// FIXME - code from standard redefine - if needed, it should switch to new_class
-// if (ik->itable_length() > 0 && (_the_class_oop->is_interface()
-// || _the_class_oop == SystemDictionary::internal_Unsafe_klass()
-// || ik->is_subclass_of(_the_class_oop))) {
-// // ik->itable() creates a wrapper object; rm cleans it up
-// ResourceMark rm(_thread);
-//
-// ik->itable()->adjust_method_entries(the_class, &trace_name_printed);
-// }
+ HandleMark hm(_thread);
+ InstanceKlass *ik = InstanceKlass::cast(k);
- constantPoolHandle other_cp = constantPoolHandle(ik->constants());
+ constantPoolHandle other_cp = constantPoolHandle(ik->constants());
// Update host klass of anonymous classes (for example, produced by lambdas) to newest version.
if (ik->is_anonymous() && ik->host_klass()->new_version() != NULL) {
@@ -1491,7 +1433,6 @@ void VM_EnhancedRedefineClasses::ClearCpoolCacheAndUnpatch::do_klass(Klass* k) {
if (RewriteBytecodes) {
ik->methods_do(unpatch_bytecode);
}
- }
}
// Clean method data for this class
@@ -1891,9 +1832,6 @@ void VM_EnhancedRedefineClasses::redefine_single_class(InstanceKlass* new_class_
}
*/
- // Adjust constantpool caches for all classes that reference methods of the evolved class.
- ClearCpoolCacheAndUnpatch clear_cpool_cache(THREAD);
- ClassLoaderDataGraph::classes_do(&clear_cpool_cache);
{
ResourceMark rm(THREAD);
--
2.24.3 (Apple Git-128)

View File

@@ -1,60 +0,0 @@
From a4ab453f532839ea3b09027736bb6e74d288bf1d Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Fri, 10 Apr 2020 23:28:07 +0200
Subject: [PATCH 27/50] Update klass reference in Klass.implementor()
If interface X is removed from class Y then old reference to Y could be
stored in X.implementor()
---
.../share/prims/jvmtiEnhancedRedefineClasses.cpp | 12 ++++++++++++
.../share/prims/jvmtiEnhancedRedefineClasses.hpp | 11 -----------
2 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 24fb76b6de4..f6d2d3a40fe 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -1411,6 +1411,18 @@ void VM_EnhancedRedefineClasses::ClearCpoolCacheAndUnpatch::do_klass(Klass* k) {
ik->set_host_klass(InstanceKlass::cast(ik->host_klass()->newest_version()));
}
+ // Update implementor if there is only one, in this case implementor() can reference old class
+ if (ik->is_interface()) {
+ Klass* implKlass = ik->implementor();
+ if (implKlass != NULL && implKlass != ik && implKlass->new_version() != NULL) {
+ InstanceKlass* newest_impl = InstanceKlass::cast(implKlass->newest_version());
+ ik->init_implementor();
+ if (newest_impl->implements_interface(ik)) {
+ ik->add_implementor(newest_impl);
+ }
+ }
+ }
+
for (int i = 0; i < other_cp->length(); i++) {
if (other_cp->tag_at(i).is_klass()) {
Klass* klass = other_cp->resolved_klass_at(i);
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
index 5b3ebc13661..2d114635ee5 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
@@ -69,17 +69,6 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
// RetransformClasses. Indicate which.
JvmtiClassLoadKind _class_load_kind;
- // _index_map_count is just an optimization for knowing if
- // _index_map_p contains any entries.
- int _index_map_count;
- intArray * _index_map_p;
-
- // _operands_index_map_count is just an optimization for knowing if
- // _operands_index_map_p contains any entries.
- int _operands_cur_length;
- int _operands_index_map_count;
- intArray * _operands_index_map_p;
-
GrowableArray<InstanceKlass*>* _new_classes;
jvmtiError _res;
--
2.24.3 (Apple Git-128)

View File

@@ -1,96 +0,0 @@
From 015c9c88e63f2dde4b8b2a09d2832a8c2a3caf25 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Fri, 10 Apr 2020 23:30:21 +0200
Subject: [PATCH 28/50] Fix DirectMethodHandle accessors klasses
---
src/hotspot/share/classfile/javaClasses.cpp | 28 +++++++++++++++------
src/hotspot/share/classfile/javaClasses.hpp | 4 +++
2 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/src/hotspot/share/classfile/javaClasses.cpp b/src/hotspot/share/classfile/javaClasses.cpp
index a89443d22ea..ea0588e5388 100644
--- a/src/hotspot/share/classfile/javaClasses.cpp
+++ b/src/hotspot/share/classfile/javaClasses.cpp
@@ -3641,14 +3641,20 @@ void java_lang_invoke_DirectMethodHandle_StaticAccessor::set_static_offset(oop d
dmh->long_field_put(_static_offset_offset, static_offset);
}
+#define DIRECTMETHODHANDLE_STATIC_ACCESSOR_FIELDS_DO(macro) \
+ macro(_static_offset_offset, k, vmSymbols::static_offset_name(), long_signature, false)
void java_lang_invoke_DirectMethodHandle_StaticAccessor::compute_offsets() {
- Klass* klass_oop = SystemDictionary::DirectMethodHandle_StaticAccessor_klass();
- if (klass_oop != NULL) {
- compute_offset(_static_offset_offset, InstanceKlass::cast(klass_oop), vmSymbols::static_offset_name(), vmSymbols::long_signature());
- }
+ InstanceKlass* k = SystemDictionary::DirectMethodHandle_StaticAccessor_klass();
+ DIRECTMETHODHANDLE_STATIC_ACCESSOR_FIELDS_DO(FIELD_COMPUTE_OFFSET);
}
+#if INCLUDE_CDS
+void java_lang_invoke_DirectMethodHandle_StaticAccessor::serialize_offsets(SerializeClosure* f) {
+ DIRECTMETHODHANDLE_STATIC_ACCESSOR_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
+}
+#endif
+
// Support for java_lang_invoke_DirectMethodHandle$Accessor
int java_lang_invoke_DirectMethodHandle_Accessor::_field_offset_offset;
@@ -3663,14 +3669,20 @@ void java_lang_invoke_DirectMethodHandle_Accessor::set_field_offset(oop dmh, int
dmh->int_field_put(_field_offset_offset, field_offset);
}
+#define DIRECTMETHODHANDLE_ACCESSOR_FIELDS_DO(macro) \
+ macro(_field_offset_offset, k, vmSymbols::field_offset_name(), int_signature, false)
void java_lang_invoke_DirectMethodHandle_Accessor::compute_offsets() {
- Klass* klass_oop = SystemDictionary::DirectMethodHandle_Accessor_klass();
- if (klass_oop != NULL) {
- compute_offset(_field_offset_offset, InstanceKlass::cast(klass_oop), vmSymbols::field_offset_name(), vmSymbols::int_signature());
- }
+ InstanceKlass* k = SystemDictionary::DirectMethodHandle_Accessor_klass();
+ DIRECTMETHODHANDLE_ACCESSOR_FIELDS_DO(FIELD_COMPUTE_OFFSET);
}
+#if INCLUDE_CDS
+void java_lang_invoke_DirectMethodHandle_Accessor::serialize_offsets(SerializeClosure* f) {
+ DIRECTMETHODHANDLE_ACCESSOR_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
+}
+#endif
+
// Support for java_lang_invoke_MethodHandle
int java_lang_invoke_MethodHandle::_type_offset;
diff --git a/src/hotspot/share/classfile/javaClasses.hpp b/src/hotspot/share/classfile/javaClasses.hpp
index ceb1670df5d..55f9fa62e2b 100644
--- a/src/hotspot/share/classfile/javaClasses.hpp
+++ b/src/hotspot/share/classfile/javaClasses.hpp
@@ -67,6 +67,8 @@
f(java_lang_invoke_LambdaForm) \
f(java_lang_invoke_MethodType) \
f(java_lang_invoke_CallSite) \
+ f(java_lang_invoke_DirectMethodHandle_StaticAccessor) \
+ f(java_lang_invoke_DirectMethodHandle_Accessor) \
f(java_lang_invoke_MethodHandleNatives_CallSiteContext) \
f(java_security_AccessControlContext) \
f(java_lang_reflect_AccessibleObject) \
@@ -1077,6 +1079,7 @@ class java_lang_invoke_DirectMethodHandle_StaticAccessor: AllStatic {
static bool is_instance(oop obj) {
return obj != NULL && is_subclass(obj->klass());
}
+ static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
};
// Interface to java.lang.invoke.DirectMethodHandle$Accessor objects
@@ -1101,6 +1104,7 @@ class java_lang_invoke_DirectMethodHandle_Accessor: AllStatic {
static bool is_instance(oop obj) {
return obj != NULL && is_subclass(obj->klass());
}
+ static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
};
--
2.24.3 (Apple Git-128)

View File

@@ -1,60 +0,0 @@
From 14005f6176420c16fa1d152c78a3dacd26ecb647 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Sat, 11 Apr 2020 12:07:43 +0200
Subject: [PATCH 29/50] cleanup direct method handles code
---
src/hotspot/share/classfile/javaClasses.hpp | 10 ++++------
src/hotspot/share/classfile/javaClasses.inline.hpp | 8 ++++++++
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/src/hotspot/share/classfile/javaClasses.hpp b/src/hotspot/share/classfile/javaClasses.hpp
index 55f9fa62e2b..da004d1b307 100644
--- a/src/hotspot/share/classfile/javaClasses.hpp
+++ b/src/hotspot/share/classfile/javaClasses.hpp
@@ -1076,9 +1076,8 @@ class java_lang_invoke_DirectMethodHandle_StaticAccessor: AllStatic {
static bool is_subclass(Klass* klass) {
return klass->is_subclass_of(SystemDictionary::DirectMethodHandle_StaticAccessor_klass());
}
- static bool is_instance(oop obj) {
- return obj != NULL && is_subclass(obj->klass());
- }
+ static bool is_instance(oop obj);
+
static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
};
@@ -1101,9 +1100,8 @@ class java_lang_invoke_DirectMethodHandle_Accessor: AllStatic {
static bool is_subclass(Klass* klass) {
return klass->is_subclass_of(SystemDictionary::DirectMethodHandle_Accessor_klass());
}
- static bool is_instance(oop obj) {
- return obj != NULL && is_subclass(obj->klass());
- }
+ static bool is_instance(oop obj);
+
static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
};
diff --git a/src/hotspot/share/classfile/javaClasses.inline.hpp b/src/hotspot/share/classfile/javaClasses.inline.hpp
index 6c5787f4b70..ba9cffa8c62 100644
--- a/src/hotspot/share/classfile/javaClasses.inline.hpp
+++ b/src/hotspot/share/classfile/javaClasses.inline.hpp
@@ -175,6 +175,14 @@ inline bool java_lang_invoke_DirectMethodHandle::is_instance(oop obj) {
return obj != NULL && is_subclass(obj->klass());
}
+inline bool java_lang_invoke_DirectMethodHandle_StaticAccessor::is_instance(oop obj) {
+ return obj != NULL && is_subclass(obj->klass());
+}
+
+inline bool java_lang_invoke_DirectMethodHandle_Accessor::is_instance(oop obj) {
+ return obj != NULL && is_subclass(obj->klass());
+}
+
inline bool java_lang_Module::is_instance(oop obj) {
return obj != NULL && obj->klass() == SystemDictionary::Module_klass();
}
--
2.24.3 (Apple Git-128)

View File

@@ -1,68 +0,0 @@
From 990ffe4111fe73c3a183f8d35402cbf9e81bd587 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Sat, 11 Apr 2020 17:52:13 +0200
Subject: [PATCH 30/50] Add init_implementor_from_redefine, that skips compiler
lock assert
---
src/hotspot/share/oops/instanceKlass.cpp | 10 +++++++++-
src/hotspot/share/oops/instanceKlass.hpp | 1 +
.../share/prims/jvmtiEnhancedRedefineClasses.cpp | 2 +-
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
index 8cbd4b8edf2..c04bdf5abfc 100644
--- a/src/hotspot/share/oops/instanceKlass.cpp
+++ b/src/hotspot/share/oops/instanceKlass.cpp
@@ -789,7 +789,7 @@ bool InstanceKlass::link_class_impl(bool throw_verifyerror, TRAPS) {
if (!is_linked()) {
if (!is_rewritten()) {
// In cases, if class A is being redefined and class B->A (B is extended from A) and B is host class of anonymous class C
- // then second redefinition fails with cannot cast klass exception. So we currently turn off bytecode verification
+ // then second redefinition fails with cannot cast klass exception. So we currently turn off bytecode verification
// on redefinition.
if (!newest_version()->is_redefining()) {
bool verify_ok = verify_code(throw_verifyerror, THREAD);
@@ -1139,6 +1139,14 @@ void InstanceKlass::init_implementor() {
}
}
+void InstanceKlass::init_implementor_from_redefine() {
+ assert(is_interface(), "not interface");
+ Klass** addr = adr_implementor();
+ assert(addr != NULL, "null addr");
+ if (addr != NULL) {
+ *addr = NULL;
+ }
+}
void InstanceKlass::process_interfaces(Thread *thread) {
// link this class into the implementors list of every interface it implements
diff --git a/src/hotspot/share/oops/instanceKlass.hpp b/src/hotspot/share/oops/instanceKlass.hpp
index 2cc98b636f1..e8107a39813 100644
--- a/src/hotspot/share/oops/instanceKlass.hpp
+++ b/src/hotspot/share/oops/instanceKlass.hpp
@@ -1020,6 +1020,7 @@ public:
int nof_implementors() const;
void add_implementor(Klass* k); // k is a new class that implements this interface
void init_implementor(); // initialize
+ void init_implementor_from_redefine(); // initialize
// link this class into the implementors list of every interface it implements
void process_interfaces(Thread *thread);
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index f6d2d3a40fe..aac9ba0911f 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -1416,7 +1416,7 @@ void VM_EnhancedRedefineClasses::ClearCpoolCacheAndUnpatch::do_klass(Klass* k) {
Klass* implKlass = ik->implementor();
if (implKlass != NULL && implKlass != ik && implKlass->new_version() != NULL) {
InstanceKlass* newest_impl = InstanceKlass::cast(implKlass->newest_version());
- ik->init_implementor();
+ ik->init_implementor_from_redefine();
if (newest_impl->implements_interface(ik)) {
ik->add_implementor(newest_impl);
}
--
2.24.3 (Apple Git-128)

View File

@@ -1,73 +0,0 @@
From 9dcddc7c2573c34579161e3ad1240b029dda1e96 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Mon, 13 Apr 2020 20:59:35 +0200
Subject: [PATCH 31/50] not nullable oop_store_not_null() method+handle NULL in
mem_name in dmh
---
.../share/prims/jvmtiEnhancedRedefineClasses.cpp | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index aac9ba0911f..8d861ef43c9 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -225,13 +225,15 @@ void VM_EnhancedRedefineClasses::mark_as_scavengable(nmethod* nm) {
// TODO comment
struct StoreBarrier {
// TODO: j10 review change ::oop_store -> HeapAccess<>::oop_store
- template <class T> static void oop_store(T* p, oop v) { HeapAccess<>::oop_store(p, v); }
+ template <class T> static void oop_store_not_null(T* p, oop v) { HeapAccess<IS_NOT_NULL>::oop_store(p, v); }
+ template <class T> static void oop_store(T* p) { HeapAccess<>::oop_store(p, oop(NULL)); }
};
// TODO comment
struct StoreNoBarrier {
- template <class T> static void oop_store(T* p, oop v) { RawAccess<IS_NOT_NULL>::oop_store(p, v); }
+ template <class T> static void oop_store_not_null(T* p, oop v) { RawAccess<IS_NOT_NULL>::oop_store(p, v); }
+ template <class T> static void oop_store(T* p) { RawAccess<>::oop_store(p, oop(NULL)); }
};
/**
@@ -309,6 +311,9 @@ class ChangePointersOopClosure : public BasicOopIterateClosure {
bool update_direct_method_handle(oop obj) {
// Always update member name first.
oop mem_name = java_lang_invoke_DirectMethodHandle::member(obj);
+ if (mem_name == NULL) {
+ return true;
+ }
if (!update_member_name(mem_name)) {
return false;
}
@@ -347,7 +352,7 @@ class ChangePointersOopClosure : public BasicOopIterateClosure {
assert(obj == InstanceKlass::cast(klass)->java_mirror(), "just checking");
if (klass->new_version() != NULL) {
obj = InstanceKlass::cast(klass->new_version())->java_mirror();
- S::oop_store(p, obj);
+ S::oop_store_not_null(p, obj);
oop_updated = true;
}
}
@@ -363,7 +368,7 @@ class ChangePointersOopClosure : public BasicOopIterateClosure {
if (!update_direct_method_handle(obj)) {
// DMH is no longer valid, replace it with null reference.
// See note above. We probably want to replace this with something more meaningful.
- S::oop_store(p, NULL);
+ S::oop_store(p);
}
}
}
@@ -1430,8 +1435,7 @@ void VM_EnhancedRedefineClasses::ClearCpoolCacheAndUnpatch::do_klass(Klass* k) {
// Constant pool entry points to redefined class -- update to the new version
other_cp->klass_at_put(i, klass->newest_version());
}
- klass = other_cp->resolved_klass_at(i);
- assert(klass->new_version() == NULL, "Must be new klass!");
+ assert(other_cp->resolved_klass_at(i)->new_version() == NULL, "Must be new klass!");
}
}
--
2.24.3 (Apple Git-128)

View File

@@ -1,25 +0,0 @@
From e009b4fcc48e9719b5b896f7f3838fbc7c579ba7 Mon Sep 17 00:00:00 2001
From: Artem Khvastunov <artem.khvastunov@jetbrains.com>
Date: Sun, 19 Apr 2020 11:36:12 +0200
Subject: [PATCH 33/50] migrate DCEVM to 11.0.7
---
src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
index 2d114635ee5..6cabdca9c27 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
@@ -30,7 +30,7 @@
#include "memory/resourceArea.hpp"
#include "oops/objArrayKlass.hpp"
#include "oops/objArrayOop.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "gc/shared/vmGCOperations.hpp"
#include "../../../java.base/unix/native/include/jni_md.h"
--
2.24.3 (Apple Git-128)

View File

@@ -1,33 +0,0 @@
From 5653e2a5f05a9693f934b0f9c4d9286c01576807 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Fri, 8 May 2020 21:07:50 +0200
Subject: [PATCH 34/50] Fix 11.0.7 compilation issues
---
src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
index 6cabdca9c27..ed44f0e27ce 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
@@ -16,6 +16,8 @@
* 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.
@@ -30,7 +32,6 @@
#include "memory/resourceArea.hpp"
#include "oops/objArrayKlass.hpp"
#include "oops/objArrayOop.hpp"
-#include "runtime/vmOperations.hpp"
#include "gc/shared/vmGCOperations.hpp"
#include "../../../java.base/unix/native/include/jni_md.h"
--
2.24.3 (Apple Git-128)

View File

@@ -1,33 +0,0 @@
From 0b9b021f889ec001d579d192f1bd9a7a43f63871 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Sat, 9 May 2020 10:08:17 +0200
Subject: [PATCH 35/50] Use INCLUDE_CDS condition on "UseSharedSpaces" block
from master
---
src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 8d861ef43c9..660bf3a2e97 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -467,6 +467,7 @@ public:
void VM_EnhancedRedefineClasses::doit() {
Thread *thread = Thread::current();
+#if INCLUDE_CDS
if (UseSharedSpaces) {
// Sharing is enabled so we remap the shared readonly space to
// shared readwrite, private just in case we need to redefine
@@ -478,6 +479,7 @@ void VM_EnhancedRedefineClasses::doit() {
return;
}
}
+#endif
// Mark methods seen on stack and everywhere else so old methods are not
// cleaned up if they're on the stack.
--
2.24.3 (Apple Git-128)

View File

@@ -1,141 +0,0 @@
From 9f4b84339b55187b742682bd84fdb0e6e121917c Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Sat, 16 May 2020 15:11:40 +0200
Subject: [PATCH 36/50] Access com.sun.beans.util - HotswapAgent patch
---
src/hotspot/share/runtime/arguments.cpp | 2 ++
.../sun/beans/introspect/package-info.java | 26 +++++++++++++++++++
.../classes/com/sun/beans/package-info.java | 26 +++++++++++++++++++
.../com/sun/beans/util/package-info.java | 26 +++++++++++++++++++
.../share/classes/module-info.java | 3 +++
5 files changed, 83 insertions(+)
create mode 100644 src/java.desktop/share/classes/com/sun/beans/introspect/package-info.java
create mode 100644 src/java.desktop/share/classes/com/sun/beans/package-info.java
create mode 100644 src/java.desktop/share/classes/com/sun/beans/util/package-info.java
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
index 0cdd8c88315..72580b384dd 100644
--- a/src/hotspot/share/runtime/arguments.cpp
+++ b/src/hotspot/share/runtime/arguments.cpp
@@ -4333,5 +4333,7 @@ void Arguments::setup_hotswap_agent() {
create_numbered_property("jdk.module.addopens", "java.desktop/com.sun.beans=ALL-UNNAMED", addopens_count++);
// com.sun.beans.introspect.ClassInfo access
create_numbered_property("jdk.module.addopens", "java.desktop/com.sun.beans.introspect=ALL-UNNAMED", addopens_count++);
+ // com.sun.beans.introspect.util.Cache access
+ create_numbered_property("jdk.module.addopens", "java.desktop/com.sun.beans.util=ALL-UNNAMED", addopens_count++);
}
diff --git a/src/java.desktop/share/classes/com/sun/beans/introspect/package-info.java b/src/java.desktop/share/classes/com/sun/beans/introspect/package-info.java
new file mode 100644
index 00000000000..6636e4dd62a
--- /dev/null
+++ b/src/java.desktop/share/classes/com/sun/beans/introspect/package-info.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 1998, 2017, 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.
+ */
+
+package com.sun.beans.introspect;
diff --git a/src/java.desktop/share/classes/com/sun/beans/package-info.java b/src/java.desktop/share/classes/com/sun/beans/package-info.java
new file mode 100644
index 00000000000..5c097eeaa53
--- /dev/null
+++ b/src/java.desktop/share/classes/com/sun/beans/package-info.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 1998, 2017, 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.
+ */
+
+package com.sun.beans;
diff --git a/src/java.desktop/share/classes/com/sun/beans/util/package-info.java b/src/java.desktop/share/classes/com/sun/beans/util/package-info.java
new file mode 100644
index 00000000000..2d5d735ffa8
--- /dev/null
+++ b/src/java.desktop/share/classes/com/sun/beans/util/package-info.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 1998, 2017, 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.
+ */
+
+package com.sun.beans.util;
diff --git a/src/java.desktop/share/classes/module-info.java b/src/java.desktop/share/classes/module-info.java
index f9cf021311f..e61ba7572cf 100644
--- a/src/java.desktop/share/classes/module-info.java
+++ b/src/java.desktop/share/classes/module-info.java
@@ -104,6 +104,9 @@ module java.desktop {
exports javax.swing.text.rtf;
exports javax.swing.tree;
exports javax.swing.undo;
+ exports com.sun.beans;
+ exports com.sun.beans.introspect;
+ exports com.sun.beans.util;
// qualified exports may be inserted at build time
// see make/GensrcModuleInfo.gmk
--
2.24.3 (Apple Git-128)

View File

@@ -1,29 +0,0 @@
From 9a662b1367860920095efe79116ef9a2d53fc2c6 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Sun, 17 May 2020 12:19:18 +0200
Subject: [PATCH 37/50] Skip verifier only in AllowEnhancedClassRedefinition
---
src/hotspot/share/oops/instanceKlass.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
index c04bdf5abfc..e14aaee21c4 100644
--- a/src/hotspot/share/oops/instanceKlass.cpp
+++ b/src/hotspot/share/oops/instanceKlass.cpp
@@ -788,10 +788,10 @@ bool InstanceKlass::link_class_impl(bool throw_verifyerror, TRAPS) {
if (!is_linked()) {
if (!is_rewritten()) {
- // In cases, if class A is being redefined and class B->A (B is extended from A) and B is host class of anonymous class C
+ // (DCEVM): If class A is being redefined and class B->A (B is extended from A) and B is host class of anonymous class C
// then second redefinition fails with cannot cast klass exception. So we currently turn off bytecode verification
// on redefinition.
- if (!newest_version()->is_redefining()) {
+ if (!AllowEnhancedClassRedefinition || !newest_version()->is_redefining()) {
bool verify_ok = verify_code(throw_verifyerror, THREAD);
if (!verify_ok) {
return false;
--
2.24.3 (Apple Git-128)

View File

@@ -1,98 +0,0 @@
From a58ed678218bfb80af164cfe98cdf4a3ab74a682 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Sun, 17 May 2020 18:18:52 +0200
Subject: [PATCH 38/50] Use original code for adjust_method_entries in standard
redefinition
---
.../prims/jvmtiEnhancedRedefineClasses.cpp | 2 +-
.../share/prims/resolvedMethodTable.cpp | 46 ++++++++++++++++++-
.../share/prims/resolvedMethodTable.hpp | 1 +
3 files changed, 47 insertions(+), 2 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 660bf3a2e97..0ca675e8ee6 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -506,7 +506,7 @@ void VM_EnhancedRedefineClasses::doit() {
// JSR-292 support
if (_any_class_has_resolved_methods) {
bool trace_name_printed = false;
- ResolvedMethodTable::adjust_method_entries(&trace_name_printed);
+ ResolvedMethodTable::adjust_method_entries_dcevm(&trace_name_printed);
}
ChangePointersOopClosure<StoreNoBarrier> oopClosureNoBarrier;
diff --git a/src/hotspot/share/prims/resolvedMethodTable.cpp b/src/hotspot/share/prims/resolvedMethodTable.cpp
index a9057893368..af2ec48c2e1 100644
--- a/src/hotspot/share/prims/resolvedMethodTable.cpp
+++ b/src/hotspot/share/prims/resolvedMethodTable.cpp
@@ -197,8 +197,52 @@ void ResolvedMethodTable::print() {
#endif // PRODUCT
#if INCLUDE_JVMTI
-// It is called at safepoint only for RedefineClasses
+
void ResolvedMethodTable::adjust_method_entries(bool * trace_name_printed) {
+ assert(SafepointSynchronize::is_at_safepoint(), "only called at safepoint");
+ // For each entry in RMT, change to new method
+ for (int i = 0; i < _the_table->table_size(); ++i) {
+ for (ResolvedMethodEntry* entry = _the_table->bucket(i);
+ entry != NULL;
+ entry = entry->next()) {
+
+ oop mem_name = entry->object_no_keepalive();
+ // except ones removed
+ if (mem_name == NULL) {
+ continue;
+ }
+ Method* old_method = (Method*)java_lang_invoke_ResolvedMethodName::vmtarget(mem_name);
+
+ if (old_method->is_old()) {
+
+ Method* new_method;
+ if (old_method->is_deleted()) {
+ new_method = Universe::throw_no_such_method_error();
+ } else {
+ InstanceKlass* holder = old_method->method_holder();
+ new_method = holder->method_with_idnum(old_method->orig_method_idnum());
+ assert(holder == new_method->method_holder(), "call after swapping redefined guts");
+ assert(new_method != NULL, "method_with_idnum() should not be NULL");
+ assert(old_method != new_method, "sanity check");
+ }
+
+ java_lang_invoke_ResolvedMethodName::set_vmtarget(mem_name, new_method);
+
+ ResourceMark rm;
+ if (!(*trace_name_printed)) {
+ log_info(redefine, class, update)("adjust: name=%s", old_method->method_holder()->external_name());
+ *trace_name_printed = true;
+ }
+ log_debug(redefine, class, update, constantpool)
+ ("ResolvedMethod method update: %s(%s)",
+ new_method->name()->as_C_string(), new_method->signature()->as_C_string());
+ }
+ }
+ }
+}
+
+// (DCEVM) It is called at safepoint only for RedefineClasses
+void ResolvedMethodTable::adjust_method_entries_dcevm(bool * trace_name_printed) {
assert(SafepointSynchronize::is_at_safepoint(), "only called at safepoint");
// For each entry in RMT, change to new method
GrowableArray<oop>* oops_to_add = new GrowableArray<oop>();
diff --git a/src/hotspot/share/prims/resolvedMethodTable.hpp b/src/hotspot/share/prims/resolvedMethodTable.hpp
index 841ae4ae585..543d4ffa485 100644
--- a/src/hotspot/share/prims/resolvedMethodTable.hpp
+++ b/src/hotspot/share/prims/resolvedMethodTable.hpp
@@ -93,6 +93,7 @@ public:
#if INCLUDE_JVMTI
// It is called at safepoint only for RedefineClasses
static void adjust_method_entries(bool * trace_name_printed);
+ static void adjust_method_entries_dcevm(bool * trace_name_printed);
#endif // INCLUDE_JVMTI
// Cleanup cleared entries
--
2.24.3 (Apple Git-128)

View File

@@ -1,54 +0,0 @@
From c1e814f2f7d4f2b37abd667d0bec516474f2a119 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Tue, 19 May 2020 09:41:36 +0200
Subject: [PATCH 39/50] Revert code for !AllowEnhancedClassRedefinition
---
.../share/classfile/classLoaderData.cpp | 23 ++++++++++---------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/src/hotspot/share/classfile/classLoaderData.cpp b/src/hotspot/share/classfile/classLoaderData.cpp
index 25103fff2c0..f5b877b432b 100644
--- a/src/hotspot/share/classfile/classLoaderData.cpp
+++ b/src/hotspot/share/classfile/classLoaderData.cpp
@@ -1387,12 +1387,13 @@ bool ClassLoaderDataGraph::do_unloading(bool clean_previous_versions) {
// Klassesoto delete.
// FIXME: dcevm - block asserts in MetadataOnStackMark
- /*
- bool walk_all_metadata = clean_previous_versions &&
- JvmtiExport::has_redefined_a_class() &&
- InstanceKlass::has_previous_versions_and_reset();
- MetadataOnStackMark md_on_stack(walk_all_metadata);
- */
+ bool walk_all_metadata = false;
+ if (!AllowEnhancedClassRedefinition) {
+ walk_all_metadata = clean_previous_versions &&
+ JvmtiExport::has_redefined_a_class() &&
+ InstanceKlass::has_previous_versions_and_reset();
+ MetadataOnStackMark md_on_stack(walk_all_metadata);
+ }
// Save previous _unloading pointer for CMS which may add to unloading list before
// purging and we don't want to rewalk the previously unloaded class loader data.
@@ -1402,12 +1403,12 @@ bool ClassLoaderDataGraph::do_unloading(bool clean_previous_versions) {
while (data != NULL) {
if (data->is_alive()) {
// clean metaspace
- /*
- if (walk_all_metadata) {
- data->classes_do(InstanceKlass::purge_previous_versions);
+ if (!AllowEnhancedClassRedefinition) {
+ if (walk_all_metadata) {
+ data->classes_do(InstanceKlass::purge_previous_versions);
+ }
+ data->free_deallocate_list();
}
- data->free_deallocate_list();
- */
prev = data;
data = data->next();
loaders_processed++;
--
2.24.3 (Apple Git-128)

View File

@@ -1,278 +0,0 @@
From 5b36c4798869c5cd4d65f7765a8447b9cf09d76b Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Tue, 19 May 2020 09:29:39 +0200
Subject: [PATCH 40/50] Code cleanup
---
src/hotspot/share/classfile/classFileParser.cpp | 4 +++-
src/hotspot/share/classfile/classFileParser.hpp | 2 +-
src/hotspot/share/classfile/classLoaderData.cpp | 2 ++
src/hotspot/share/classfile/dictionary.cpp | 4 ++++
src/hotspot/share/classfile/dictionary.hpp | 1 +
src/hotspot/share/classfile/loaderConstraints.cpp | 3 ++-
src/hotspot/share/classfile/systemDictionary.cpp | 8 +++++---
src/hotspot/share/interpreter/linkResolver.cpp | 1 +
src/hotspot/share/memory/universe.cpp | 4 ++--
src/hotspot/share/oops/instanceKlass.cpp | 13 ++++++++-----
10 files changed, 29 insertions(+), 13 deletions(-)
diff --git a/src/hotspot/share/classfile/classFileParser.cpp b/src/hotspot/share/classfile/classFileParser.cpp
index ea150df9104..c2cd35da4e6 100644
--- a/src/hotspot/share/classfile/classFileParser.cpp
+++ b/src/hotspot/share/classfile/classFileParser.cpp
@@ -954,6 +954,7 @@ void ClassFileParser::parse_interfaces(const ClassFileStream* const stream,
CHECK);
}
+ // (DCEVM) pick newest
interf = (Klass *) maybe_newest(interf);
if (!interf->is_interface()) {
@@ -3749,6 +3750,7 @@ const InstanceKlass* ClassFileParser::parse_super_class(ConstantPool* const cp,
// However, make sure it is not an array type.
bool is_array = false;
if (cp->tag_at(super_class_index).is_klass()) {
+ // (DCEVM) pick newest
super_klass = InstanceKlass::cast(maybe_newest(cp->resolved_klass_at(super_class_index)));
if (need_verify)
is_array = super_klass->is_array_klass();
@@ -4417,7 +4419,7 @@ void ClassFileParser::set_precomputed_flags(InstanceKlass* ik) {
if (!_has_empty_finalizer) {
if (_has_finalizer ||
(super != NULL && super->has_finalizer())) {
- // FIXME - condition from previous DCEVM version, however after reload new finelize() method is not active
+ // FIXME - (DCEVM) this is condition from previous DCEVM version, however after reload a new finalize() method is not active
if (ik->old_version() == NULL || ik->old_version()->has_finalizer()) {
ik->set_has_finalizer();
}
diff --git a/src/hotspot/share/classfile/classFileParser.hpp b/src/hotspot/share/classfile/classFileParser.hpp
index 3db14b678f3..93ed54d8f70 100644
--- a/src/hotspot/share/classfile/classFileParser.hpp
+++ b/src/hotspot/share/classfile/classFileParser.hpp
@@ -499,7 +499,7 @@ class ClassFileParser {
FieldLayoutInfo* info,
TRAPS);
- // Enhanced class redefinition
+ // (DCEVM) Enhanced class redefinition
inline const Klass* maybe_newest(const Klass* klass) const { return klass != NULL && _pick_newest ? klass->newest_version() : klass; }
public:
diff --git a/src/hotspot/share/classfile/classLoaderData.cpp b/src/hotspot/share/classfile/classLoaderData.cpp
index f5b877b432b..ab2615da0ed 100644
--- a/src/hotspot/share/classfile/classLoaderData.cpp
+++ b/src/hotspot/share/classfile/classLoaderData.cpp
@@ -1242,6 +1242,7 @@ void ClassLoaderDataGraph::dictionary_classes_do(void f(InstanceKlass*)) {
}
}
+// (DCEVM) - iterate over dict classes
void ClassLoaderDataGraph::dictionary_classes_do(KlassClosure* klass_closure) {
FOR_ALL_DICTIONARY(cld) {
cld->dictionary()->classes_do(klass_closure);
@@ -1257,6 +1258,7 @@ void ClassLoaderDataGraph::dictionary_classes_do(void f(InstanceKlass*, TRAPS),
}
}
+// (DCEVM) rollback redefined classes
void ClassLoaderDataGraph::rollback_redefinition() {
FOR_ALL_DICTIONARY(cld) {
cld->dictionary()->rollback_redefinition();
diff --git a/src/hotspot/share/classfile/dictionary.cpp b/src/hotspot/share/classfile/dictionary.cpp
index 118730f1b83..dda5188c370 100644
--- a/src/hotspot/share/classfile/dictionary.cpp
+++ b/src/hotspot/share/classfile/dictionary.cpp
@@ -245,6 +245,8 @@ void Dictionary::classes_do(void f(InstanceKlass*)) {
}
}
+
+// (DCEVM) iterate over dict entry
void Dictionary::classes_do(KlassClosure* closure) {
for (int index = 0; index < table_size(); index++) {
for (DictionaryEntry* probe = bucket(index);
@@ -342,6 +344,7 @@ DictionaryEntry* Dictionary::get_entry(int index, unsigned int hash,
return NULL;
}
+// (DCEVM) replace old_class by new class in dictionary
bool Dictionary::update_klass(unsigned int hash, Symbol* name, ClassLoaderData* loader_data, InstanceKlass* k, InstanceKlass* old_klass) {
// There are several entries for the same class in the dictionary: One extra entry for each parent classloader of the classloader of the class.
bool found = false;
@@ -356,6 +359,7 @@ bool Dictionary::update_klass(unsigned int hash, Symbol* name, ClassLoaderData*
return found;
}
+// (DCEVM) rollback redefinition
void Dictionary::rollback_redefinition() {
for (int index = 0; index < table_size(); index++) {
for (DictionaryEntry* entry = bucket(index);
diff --git a/src/hotspot/share/classfile/dictionary.hpp b/src/hotspot/share/classfile/dictionary.hpp
index fd4b134d7a7..5eaa741d500 100644
--- a/src/hotspot/share/classfile/dictionary.hpp
+++ b/src/hotspot/share/classfile/dictionary.hpp
@@ -119,6 +119,7 @@ public:
void rollback_redefinition();
+ // (DCEVM) return old class if redefining in AllowEnhancedClassRedefinition, otherwise return "k"
static InstanceKlass* old_if_redefined(InstanceKlass* k) {
return (k != NULL && k->is_redefining()) ? ((InstanceKlass* )k->old_version()) : k;
}
diff --git a/src/hotspot/share/classfile/loaderConstraints.cpp b/src/hotspot/share/classfile/loaderConstraints.cpp
index e4a23e8a27c..bca73b5e0dc 100644
--- a/src/hotspot/share/classfile/loaderConstraints.cpp
+++ b/src/hotspot/share/classfile/loaderConstraints.cpp
@@ -4,7 +4,7 @@
*
* 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) replace old_class by new class in dictionary.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
@@ -87,6 +87,7 @@ LoaderConstraintEntry** LoaderConstraintTable::find_loader_constraint(
return pp;
}
+// (DCEVM) update constraint entries to new classes, called from dcevm redefinition code only
void LoaderConstraintTable::update_after_redefinition() {
for (int index = 0; index < table_size(); index++) {
LoaderConstraintEntry** p = bucket_addr(index);
diff --git a/src/hotspot/share/classfile/systemDictionary.cpp b/src/hotspot/share/classfile/systemDictionary.cpp
index 9dbd6cc9c12..e70865109dd 100644
--- a/src/hotspot/share/classfile/systemDictionary.cpp
+++ b/src/hotspot/share/classfile/systemDictionary.cpp
@@ -876,7 +876,8 @@ Klass* SystemDictionary::resolve_instance_class_or_null(Symbol* name,
ClassLoaderData* loader_data = k->class_loader_data();
MutexLocker mu(SystemDictionary_lock, THREAD);
Klass* kk = find_class(name, loader_data);
- // FIXME: (kk == k() && !k->is_redefining()) || (k->is_redefining() && kk == k->old_version())
+ // FIXME: (DCEVM)
+ // assert(kk == k() && !k->is_redefining()) || (k->is_redefining() && kk == k->old_version())
assert(kk == k, "should be present in dictionary");
}
#endif
@@ -1083,7 +1084,7 @@ InstanceKlass* SystemDictionary::resolve_from_stream(Symbol* class_name,
InstanceKlass* k = NULL;
#if INCLUDE_CDS
- // FIXME: what to do during redefinition?
+ // FIXME: (DCEVM) what to do during redefinition?
if (!DumpSharedSpaces) {
k = SystemDictionaryShared::lookup_from_stream(class_name,
class_loader,
@@ -1836,7 +1837,7 @@ void SystemDictionary::add_to_hierarchy(InstanceKlass* k, TRAPS) {
CodeCache::flush_dependents_on(k);
}
-// Enhanced class redefinition
+// (DCEVM) - remove from klass hierarchy
void SystemDictionary::remove_from_hierarchy(InstanceKlass* k) {
assert(k != NULL, "just checking");
@@ -1844,6 +1845,7 @@ void SystemDictionary::remove_from_hierarchy(InstanceKlass* k) {
k->remove_from_sibling_list();
}
+// (DCEVM)
void SystemDictionary::update_constraints_after_redefinition() {
constraints()->update_after_redefinition();
}
diff --git a/src/hotspot/share/interpreter/linkResolver.cpp b/src/hotspot/share/interpreter/linkResolver.cpp
index cb76d2ef50c..9dc184d02f5 100644
--- a/src/hotspot/share/interpreter/linkResolver.cpp
+++ b/src/hotspot/share/interpreter/linkResolver.cpp
@@ -1384,6 +1384,7 @@ void LinkResolver::runtime_resolve_virtual_method(CallInfo& result,
assert(resolved_method->can_be_statically_bound(), "cannot override this method");
selected_method = resolved_method;
} else {
+ // TODO: (DCEVM) explain
assert(recv_klass->is_subtype_of(resolved_method->method_holder()), "receiver and resolved method holder are inconsistent");
selected_method = methodHandle(THREAD, recv_klass->method_at_vtable(vtable_index));
}
diff --git a/src/hotspot/share/memory/universe.cpp b/src/hotspot/share/memory/universe.cpp
index 7ecb950b231..d0a6d665aa0 100644
--- a/src/hotspot/share/memory/universe.cpp
+++ b/src/hotspot/share/memory/universe.cpp
@@ -176,7 +176,7 @@ void Universe::basic_type_classes_do(void f(Klass*)) {
f(doubleArrayKlassObj());
}
-// FIXME: This method should iterate all pointers that are not within heap objects.
+// FIXME: (DCEVM) This method should iterate all pointers that are not within heap objects.
void Universe::root_oops_do(OopClosure *oopClosure) {
class AlwaysTrueClosure: public BoolObjectClosure {
@@ -203,7 +203,7 @@ void Universe::root_oops_do(OopClosure *oopClosure) {
CodeBlobToOopClosure blobClosure(oopClosure, CodeBlobToOopClosure::FixRelocations);
CodeCache::blobs_do(&blobClosure);
StringTable::oops_do(oopClosure);
-
+
// (DCEVM) TODO: Check if this is correct?
//CodeCache::scavenge_root_nmethods_oops_do(oopClosure);
//Management::oops_do(oopClosure);
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
index e14aaee21c4..c860371d2fc 100644
--- a/src/hotspot/share/oops/instanceKlass.cpp
+++ b/src/hotspot/share/oops/instanceKlass.cpp
@@ -1139,6 +1139,7 @@ void InstanceKlass::init_implementor() {
}
}
+// (DCEVM) - init_implementor() for dcevm
void InstanceKlass::init_implementor_from_redefine() {
assert(is_interface(), "not interface");
Klass** addr = adr_implementor();
@@ -1209,6 +1210,8 @@ bool InstanceKlass::implements_interface(Klass* k) const {
return false;
}
+
+// (DCEVM)
bool InstanceKlass::implements_interface_any_version(Klass* k) const {
k = k->newest_version();
if (this->newest_version() == k) return true;
@@ -1491,10 +1494,8 @@ void InstanceKlass::methods_do(void f(Method* method)) {
}
}
-/**
- Update information contains mapping of fields from old class to the new class.
- Info is stored on HEAP, you need to call clear_update_information to free the space.
-*/
+// (DCEVM) Update information contains mapping of fields from old class to the new class.
+// Info is stored on HEAP, you need to call clear_update_information to free the space.
void InstanceKlass::store_update_information(GrowableArray<int> &values) {
int *arr = NEW_C_HEAP_ARRAY(int, values.length(), mtClass);
for (int i = 0; i < values.length(); i++) {
@@ -2162,6 +2163,7 @@ void InstanceKlass::add_dependent_nmethod(nmethod* nm) {
dependencies().add_dependent_nmethod(nm);
}
+// DCEVM - update jmethod ids
bool InstanceKlass::update_jmethod_id(Method* method, jmethodID newMethodID) {
size_t idnum = (size_t)method->method_idnum();
jmethodID* jmeths = methods_jmethod_ids_acquire();
@@ -2177,7 +2179,7 @@ bool InstanceKlass::update_jmethod_id(Method* method, jmethodID newMethodID) {
void InstanceKlass::remove_dependent_nmethod(nmethod* nm, bool delete_immediately) {
dependencies().remove_dependent_nmethod(nm, delete_immediately);
- // (DCEVM) Hack as dependencies get wrong version of Klass*
+ // FIXME: (DCEVM) Hack as dependencies get wrong version of Klass*
// if (this->old_version() != NULL) {
// InstanceKlass::cast(this->old_version())->remove_dependent_nmethod(nm, true);
// return;
@@ -3594,6 +3596,7 @@ void InstanceKlass::verify_on(outputStream* st) {
}
guarantee(sib->is_klass(), "should be klass");
+ // TODO: (DCEVM) explain
guarantee(sib->super() == super || super->newest_version() == SystemDictionary::Object_klass(), "siblings should have same superklass");
}
--
2.24.3 (Apple Git-128)

View File

@@ -1,36 +0,0 @@
From 71f35c41b569f72a1674ccd57118c4fe76ba3d68 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Tue, 19 May 2020 10:31:15 +0200
Subject: [PATCH 41/50] Activate cpCache definition asserts for !dcevm
---
src/hotspot/share/oops/cpCache.cpp | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/hotspot/share/oops/cpCache.cpp b/src/hotspot/share/oops/cpCache.cpp
index 47040d51f0c..4318df227d1 100644
--- a/src/hotspot/share/oops/cpCache.cpp
+++ b/src/hotspot/share/oops/cpCache.cpp
@@ -436,8 +436,7 @@ void ConstantPoolCacheEntry::set_method_handle_common(const constantPoolHandle&
if (has_appendix) {
const int appendix_index = f2_as_index() + _indy_resolved_references_appendix_offset;
assert(appendix_index >= 0 && appendix_index < resolved_references->length(), "oob");
- // FIXME (DCEVM) relaxing for now...
- //assert(resolved_references->obj_at(appendix_index) == NULL, "init just once");
+ assert(AllowEnhancedClassRedefinition || resolved_references->obj_at(appendix_index) == NULL, "init just once");
resolved_references->obj_at_put(appendix_index, appendix());
}
@@ -445,8 +444,7 @@ void ConstantPoolCacheEntry::set_method_handle_common(const constantPoolHandle&
if (has_method_type) {
const int method_type_index = f2_as_index() + _indy_resolved_references_method_type_offset;
assert(method_type_index >= 0 && method_type_index < resolved_references->length(), "oob");
- // FIXME (DCEVM) relaxing for now...
- //assert(resolved_references->obj_at(method_type_index) == NULL, "init just once");
+ assert(AllowEnhancedClassRedefinition || resolved_references->obj_at(method_type_index) == NULL, "init just once");
resolved_references->obj_at_put(method_type_index, method_type());
}
--
2.24.3 (Apple Git-128)

View File

@@ -1,29 +0,0 @@
From 961018a29ddb7eba96aca7fbc385f3c4f29e3a03 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Tue, 19 May 2020 10:54:38 +0200
Subject: [PATCH 42/50] iterate old method version only in dcevm
---
src/hotspot/share/prims/jvmtiImpl.cpp | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiImpl.cpp b/src/hotspot/share/prims/jvmtiImpl.cpp
index 2a92ece916e..d2044541d38 100644
--- a/src/hotspot/share/prims/jvmtiImpl.cpp
+++ b/src/hotspot/share/prims/jvmtiImpl.cpp
@@ -294,8 +294,10 @@ void JvmtiBreakpoint::each_method_version_do(method_action meth_act) {
Symbol* m_signature = _method->signature();
// (DCEVM) Go through old versions of method
- for (Method* m = _method->old_version(); m != NULL; m = m->old_version()) {
- (m->*meth_act)(_bci);
+ if (AllowEnhancedClassRedefinition) {
+ for (Method* m = _method->old_version(); m != NULL; m = m->old_version()) {
+ (m->*meth_act)(_bci);
+ }
}
// search previous versions if they exist
--
2.24.3 (Apple Git-128)

View File

@@ -1,34 +0,0 @@
From 3f53bb48682b17cfbf4781d4fa47055be88baea0 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Fri, 22 May 2020 21:43:22 +0200
Subject: [PATCH 44/50] Skip GC runs for redefinitions without instance size
change
---
src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 08fe42d5c28..a785a43d352 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -578,14 +578,14 @@ void VM_EnhancedRedefineClasses::doit() {
}
}
-// if (objectClosure.needs_instance_update()) {
+ if (objectClosure.needs_instance_update()) {
// Do a full garbage collection to update the instance sizes accordingly
Universe::set_redefining_gc_run(true);
notify_gc_begin(true);
Universe::heap()->collect_as_vm_thread(GCCause::_heap_inspection);
notify_gc_end();
Universe::set_redefining_gc_run(false);
-// }
+ }
// Unmark Klass*s as "redefining"
for (int i = 0; i < _new_classes->length(); i++) {
--
2.24.3 (Apple Git-128)

View File

@@ -1,421 +0,0 @@
From 585f1cb56766be837a34114b1ee5c743aa4e6801 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Sat, 23 May 2020 10:17:56 +0200
Subject: [PATCH 46/50] Fix comments according hotspot formatting conventions
---
.../prims/jvmtiEnhancedRedefineClasses.cpp | 191 +++++++-----------
.../prims/jvmtiEnhancedRedefineClasses.hpp | 41 ++--
2 files changed, 90 insertions(+), 142 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 2321483dcbd..8d00203fd9a 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -67,21 +67,19 @@ int VM_EnhancedRedefineClasses::_deleted_methods_length = 0;
int VM_EnhancedRedefineClasses::_added_methods_length = 0;
Klass* VM_EnhancedRedefineClasses::_the_class_oop = NULL;
-/**
- * Create new instance of enhanced class redefiner.
- *
- * This class implements VM_GC_Operation - the usual usage should be:
- * VM_EnhancedRedefineClasses op(class_count, class_definitions, jvmti_class_load_kind_redefine);
- * VMThread::execute(&op);
- * Which
- *
- * @param class_count size of class_defs
- * @param class_defs class definition - either new class or redefined class
- * note that this is not the final array of classes to be redefined
- * we need to scan for all affected classes (e.g. subclasses) and
- * caculcate redefinition for them as well.
- * @param class_load_kind always jvmti_class_load_kind_redefine
- */
+//
+// Create new instance of enhanced class redefiner.
+//
+// This class implements VM_GC_Operation - the usual usage should be:
+// VM_EnhancedRedefineClasses op(class_count, class_definitions, jvmti_class_load_kind_redefine);
+// VMThread::execute(&op);
+// Which
+// - class_count size of class_defs
+// - class_defs class definition - either new class or redefined class
+// note that this is not the final array of classes to be redefined
+// we need to scan for all affected classes (e.g. subclasses) and
+// caculcate redefinition for them as well.
+// @param class_load_kind always jvmti_class_load_kind_redefine
VM_EnhancedRedefineClasses::VM_EnhancedRedefineClasses(jint class_count, const jvmtiClassDefinition *class_defs, JvmtiClassLoadKind class_load_kind) :
VM_GC_Operation(Universe::heap()->total_collections(), GCCause::_heap_inspection, Universe::heap()->total_full_collections(), true) {
_affected_klasses = NULL;
@@ -97,12 +95,10 @@ static inline InstanceKlass* get_ik(jclass def) {
return InstanceKlass::cast(java_lang_Class::as_Klass(mirror));
}
-/**
- * Start the redefinition:
- * - Load new class definitions - @see load_new_class_versions
- * - Start mark&sweep GC.
- * @return true if success, otherwise all chnages are rollbacked.
- */
+// Start the redefinition:
+// - Load new class definitions - @see load_new_class_versions
+// - Start mark&sweep GC.
+// - true if success, otherwise all chnages are rollbacked.
bool VM_EnhancedRedefineClasses::doit_prologue() {
if (_class_count == 0) {
@@ -175,9 +171,7 @@ bool VM_EnhancedRedefineClasses::doit_prologue() {
return true;
}
-/**
- * Closer for static fields - copy value from old class to the new class.
- */
+// Closer for static fields - copy value from old class to the new class.
class FieldCopier : public FieldClosure {
public:
void do_field(fieldDescriptor* fd) {
@@ -236,9 +230,7 @@ struct StoreNoBarrier {
template <class T> static void oop_store(T* p) { RawAccess<>::oop_store(p, oop(NULL)); }
};
-/**
- Closure to scan all heap objects and update method handles
-*/
+// Closure to scan all heap objects and update method handles
template <class S>
class ChangePointersOopClosure : public BasicOopIterateClosure {
// import java_lang_invoke_MemberName.*
@@ -247,7 +239,6 @@ class ChangePointersOopClosure : public BasicOopIterateClosure {
REFERENCE_KIND_MASK = java_lang_invoke_MemberName::MN_REFERENCE_KIND_MASK,
};
-
bool update_member_name(oop obj) {
int flags = java_lang_invoke_MemberName::flags(obj);
int ref_kind = (flags >> REFERENCE_KIND_SHIFT) & REFERENCE_KIND_MASK;
@@ -382,14 +373,12 @@ class ChangePointersOopClosure : public BasicOopIterateClosure {
}
};
-/**
- * Closure to scan all objects on heap for objects of changed classes
- * - if the fields are compatible, only update class definition reference
- * - otherwise if the new object size is smaller then old size, reshufle
- * the fields and fill the gap with "dead_space"
- * - otherwise set the _needs_instance_update flag, we need to do full GC
- * and reshuffle object positions durring mark&sweep
- */
+// Closure to scan all objects on heap for objects of changed classes
+// - if the fields are compatible, only update class definition reference
+// - otherwise if the new object size is smaller then old size, reshufle
+// the fields and fill the gap with "dead_space"
+// - otherwise set the _needs_instance_update flag, we need to do full GC
+// and reshuffle object positions durring mark&sweep
class ChangePointersObjectClosure : public ObjectClosure {
private:
@@ -451,19 +440,16 @@ public:
};
-/**
- Main transformation method - runs in VM thread.
-
- - UseSharedSpaces - TODO what does it mean?
- - for each sratch class call redefine_single_class
- - clear code cache (flush_dependent_code)
- - iterate the heap and update object defintions, check it old/new class fields
- are compatible. If new class size is smaller then old, it can be solved directly here.
- - iterate the heap and update method handles to new version
- - Swap marks to have same hashcodes
- - copy static fields
- - notify JVM of the modification
-*/
+// Main transformation method - runs in VM thread.
+// - UseSharedSpaces - TODO what does it mean?
+// - for each sratch class call redefine_single_class
+// - clear code cache (flush_dependent_code)
+// - iterate the heap and update object defintions, check it old/new class fields
+// are compatible. If new class size is smaller then old, it can be solved directly here.
+// - iterate the heap and update method handles to new version
+// - Swap marks to have same hashcodes
+// - copy static fields
+// - notify JVM of the modification
void VM_EnhancedRedefineClasses::doit() {
Thread *thread = Thread::current();
@@ -634,11 +620,9 @@ void VM_EnhancedRedefineClasses::doit() {
}
-/**
- * Cleanup - runs in JVM thread
- * - free used memory
- * - end GC
- */
+// Cleanup - runs in JVM thread
+// - free used memory
+// - end GC
void VM_EnhancedRedefineClasses::doit_epilogue() {
VM_GC_Operation::doit_epilogue();
@@ -670,11 +654,9 @@ void VM_EnhancedRedefineClasses::doit_epilogue() {
}
}
-/**
- * Exclude java primitives and arrays from redefinition
- * @param klass_mirror pointer to the klass
- * @return true if is modifiable
- */
+// Exclude java primitives and arrays from redefinition
+// - klass_mirror pointer to the klass
+// - true if is modifiable
bool VM_EnhancedRedefineClasses::is_modifiable_class(oop klass_mirror) {
// classes for primitives cannot be redefined
if (java_lang_Class::is_primitive(klass_mirror)) {
@@ -693,17 +675,12 @@ bool VM_EnhancedRedefineClasses::is_modifiable_class(oop klass_mirror) {
return true;
}
-/**
- Load and link new classes (either redefined or affected by redefinition - subclass, ...)
-
- - find sorted affected classes
- - resolve new class
- - calculate redefine flags (field change, method change, supertype change, ...)
- - calculate modified fields and mapping to old fields
- - link new classes
-
- The result is sotred in _affected_klasses(old definitions) and _new_classes(new definitions) arrays.
-*/
+// Load and link new classes (either redefined or affected by redefinition - subclass, ...)
+// - find sorted affected classes
+// - resolve new class
+// - calculate redefine flags (field change, method change, supertype change, ...)
+// - calculate modified fields and mapping to old fields
+// - link new classes
jvmtiError VM_EnhancedRedefineClasses::load_new_class_versions(TRAPS) {
_affected_klasses = new (ResourceObj::C_HEAP, mtInternal) GrowableArray<Klass*>(_class_count, true);
@@ -898,9 +875,7 @@ jvmtiError VM_EnhancedRedefineClasses::load_new_class_versions(TRAPS) {
return JVMTI_ERROR_NONE;
}
-/**
- Calculated the difference between new and old class (field change, method change, supertype change, ...).
-*/
+ // Calculated the difference between new and old class (field change, method change, supertype change, ...).
int VM_EnhancedRedefineClasses::calculate_redefinition_flags(InstanceKlass* new_class) {
int result = Klass::NoRedefinition;
log_info(redefine, class, load)("Comparing different class versions of class %s",new_class->name()->as_C_string());
@@ -1183,14 +1158,11 @@ int VM_EnhancedRedefineClasses::calculate_redefinition_flags(InstanceKlass* new_
}
-/**
- Searches for the class bytecode of the given class and returns it as a byte array.
-
- @param the_class definition of a class, either existing class or new_class
- @param class_bytes - if the class is redefined, it contains new class definition, otherwise just original class bytecode.
- @param class_byte_count - size of class_bytes
- @param not_changed - new_class not available or same as current class
-*/
+// Searches for the class bytecode of the given class and returns it as a byte array.
+// - the_class definition of a class, either existing class or new_class
+// - class_bytes - if the class is redefined, it contains new class definition, otherwise just original class bytecode.
+// - class_byte_count - size of class_bytes
+// - not_changed - new_class not available or same as current class
jvmtiError VM_EnhancedRedefineClasses::find_class_bytes(InstanceKlass* the_class, const unsigned char **class_bytes, jint *class_byte_count, jboolean *not_changed) {
*not_changed = false;
@@ -1233,11 +1205,9 @@ jvmtiError VM_EnhancedRedefineClasses::find_class_bytes(InstanceKlass* the_class
return JVMTI_ERROR_NONE;
}
-/**
- Calculate difference between non static fields of old and new class and store the info into new class:
- instanceKlass->store_update_information
- instanceKlass->copy_backwards
-*/
+// Calculate difference between non static fields of old and new class and store the info into new class:
+// instanceKlass->store_update_information
+// instanceKlass->copy_backwards
void VM_EnhancedRedefineClasses::calculate_instance_update_information(Klass* new_version) {
class CalculateFieldUpdates : public FieldClosure {
@@ -1348,9 +1318,7 @@ void VM_EnhancedRedefineClasses::calculate_instance_update_information(Klass* ne
}
}
-/**
- Rollback all changes - clear new classes from the system dictionary, return old classes to directory, free memory.
-*/
+// Rollback all changes - clear new classes from the system dictionary, return old classes to directory, free memory.
void VM_EnhancedRedefineClasses::rollback() {
log_info(redefine, class, load)("Rolling back redefinition, result=%d", _res);
ClassLoaderDataGraph::rollback_redefinition();
@@ -1547,9 +1515,7 @@ void VM_EnhancedRedefineClasses::update_jmethod_ids() {
}
}
-/**
- Set method as obsolete / old / deleted.
-*/
+// Set method as obsolete / old / deleted.
void VM_EnhancedRedefineClasses::check_methods_and_mark_as_obsolete() {
for (int j = 0; j < _matching_methods_length; ++j/*, ++old_index*/) {
Method* old_method = _matching_old_methods[j];
@@ -1771,12 +1737,9 @@ void VM_EnhancedRedefineClasses::flush_dependent_code(InstanceKlass* k_h, TRAPS)
}
}
-/**
- Compare _old_methods and _new_methods arrays and store the result into
- _matching_old_methods, _matching_new_methods, _added_methods, _deleted_methods
-
- Setup _old_methods and _new_methods before the call - it should be called for one class only!
-*/
+// Compare _old_methods and _new_methods arrays and store the result into
+// _matching_old_methods, _matching_new_methods, _added_methods, _deleted_methods
+// Setup _old_methods and _new_methods before the call - it should be called for one class only!
void VM_EnhancedRedefineClasses::compute_added_deleted_matching_methods() {
Method* old_method;
Method* new_method;
@@ -1900,7 +1863,6 @@ void VM_EnhancedRedefineClasses::redefine_single_class(InstanceKlass* new_class_
}
*/
-
{
ResourceMark rm(THREAD);
// increment the classRedefinedCount field in the_class and in any
@@ -1940,9 +1902,7 @@ void VM_EnhancedRedefineClasses::check_class(InstanceKlass* ik, TRAPS) {
}
}
-/**
- * Logging of all methods (old, new, changed, ...)
- */
+// Logging of all methods (old, new, changed, ...)
void VM_EnhancedRedefineClasses::dump_methods() {
int j;
log_trace(redefine, class, dump)("_old_methods --");
@@ -2002,9 +1962,7 @@ void VM_EnhancedRedefineClasses::dump_methods() {
}
}
-/**
- Helper class to traverse all loaded classes and figure out if the class is affected by redefinition.
-*/
+// Helper class to traverse all loaded classes and figure out if the class is affected by redefinition.
class AffectedKlassClosure : public KlassClosure {
private:
GrowableArray<Klass*>* _affected_klasses;
@@ -2052,10 +2010,8 @@ class AffectedKlassClosure : public KlassClosure {
}
};
-/**
- Find all affected classes by current redefinition (either because of redefine, class hierarchy or interface change).
- Affected classes are stored in _affected_klasses and parent classes always precedes child class.
-*/
+// Find all affected classes by current redefinition (either because of redefine, class hierarchy or interface change).
+// Affected classes are stored in _affected_klasses and parent classes always precedes child class.
jvmtiError VM_EnhancedRedefineClasses::find_sorted_affected_classes(TRAPS) {
for (int i = 0; i < _class_count; i++) {
InstanceKlass* klass_handle = get_ik(_class_defs[i].klass);
@@ -2086,9 +2042,7 @@ jvmtiError VM_EnhancedRedefineClasses::find_sorted_affected_classes(TRAPS) {
return JVMTI_ERROR_NONE;
}
-/**
- Pairs of class dependencies (for topological sort)
-*/
+// Pairs of class dependencies (for topological sort)
struct KlassPair {
const Klass* _left;
const Klass* _right;
@@ -2101,14 +2055,11 @@ static bool match_second(void* value, KlassPair elem) {
return elem._right == value;
}
-/**
- For each class to be redefined parse the bytecode and figure out the superclass and all interfaces.
- First newly introduced classes (_class_defs) are scanned and then affected classed (_affected_klasses).
- Affected flag is cleared (clear_redefinition_flag(Klass::MarkedAsAffected))
- For each dependency create a KlassPair instance. Finnaly, affected classes (_affected_klasses) are sorted according to pairs.
-
- TODO - the class file is potentionally parsed multiple times - introduce a cache?
-*/
+// For each class to be redefined parse the bytecode and figure out the superclass and all interfaces.
+// First newly introduced classes (_class_defs) are scanned and then affected classed (_affected_klasses).
+// Affected flag is cleared (clear_redefinition_flag(Klass::MarkedAsAffected))
+// For each dependency create a KlassPair instance. Finnaly, affected classes (_affected_klasses) are sorted according to pairs.
+// TODO - the class file is potentionally parsed multiple times - introduce a cache?
jvmtiError VM_EnhancedRedefineClasses::do_topological_class_sorting(TRAPS) {
ResourceMark mark(THREAD);
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
index 7e2afd49650..d8a11b51fe9 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
@@ -35,17 +35,16 @@
#include "gc/shared/vmGCOperations.hpp"
#include "../../../java.base/unix/native/include/jni_md.h"
-/**
- * Enhanced class redefiner.
- *
- * This class implements VM_GC_Operation - the usual usage should be:
- * VM_EnhancedRedefineClasses op(class_count, class_definitions, jvmti_class_load_kind_redefine);
- * VMThread::execute(&op);
- * Which in turn runs:
- * - doit_prologue() - calculate all affected classes (add subclasses etc) and load new class versions
- * - doit() - main redefition, adjust existing objects on the heap, clear caches
- * - doit_epilogue() - cleanup
-*/
+//
+// Enhanced class redefiner.
+//
+// This class implements VM_GC_Operation - the usual usage should be:
+// VM_EnhancedRedefineClasses op(class_count, class_definitions, jvmti_class_load_kind_redefine);
+// VMThread::execute(&op);
+// Which in turn runs:
+// - doit_prologue() - calculate all affected classes (add subclasses etc) and load new class versions
+// - doit() - main redefition, adjust existing objects on the heap, clear caches
+// - doit_epilogue() - cleanup
class VM_EnhancedRedefineClasses: public VM_GC_Operation {
private:
// These static fields are needed by ClassLoaderDataGraph::classes_do()
@@ -93,17 +92,15 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
// These routines are roughly in call order unless otherwise noted.
- /**
- Load and link new classes (either redefined or affected by redefinition - subclass, ...)
-
- - find sorted affected classes
- - resolve new class
- - calculate redefine flags (field change, method change, supertype change, ...)
- - calculate modified fields and mapping to old fields
- - link new classes
-
- The result is sotred in _affected_klasses(old definitions) and _new_classes(new definitions) arrays.
- */
+ // Load and link new classes (either redefined or affected by redefinition - subclass, ...)
+ //
+ // - find sorted affected classes
+ // - resolve new class
+ // - calculate redefine flags (field change, method change, supertype change, ...)
+ // - calculate modified fields and mapping to old fields
+ // - link new classes
+ //
+ // The result is sotred in _affected_klasses(old definitions) and _new_classes(new definitions) arrays.
jvmtiError load_new_class_versions(TRAPS);
// Searches for all affected classes and performs a sorting such tha
--
2.24.3 (Apple Git-128)

View File

@@ -1,47 +0,0 @@
From 79c80c48da4d52f4616f1c6ef37e838d29be9be1 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Sun, 24 May 2020 12:07:09 +0200
Subject: [PATCH 47/50] Review threads, cleanup
---
src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 8d00203fd9a..1fbba406087 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -253,7 +253,7 @@ class ChangePointersOopClosure : public BasicOopIterateClosure {
// Note: we might set NULL at this point, which should force AbstractMethodError at runtime
Thread *thread = Thread::current();
CallInfo info(new_method, newest, thread);
- Handle objHandle(thread, obj); // TODO : review thread
+ Handle objHandle(thread, obj);
MethodHandles::init_method_MemberName(objHandle, info);
} else {
java_lang_invoke_MemberName::set_method(obj, NULL);
@@ -280,7 +280,7 @@ class ChangePointersOopClosure : public BasicOopIterateClosure {
InstanceKlass* ik_new = InstanceKlass::cast(k->newest_version());
fieldDescriptor fd_new;
if (ik_new->find_local_field(fd.name(), fd.signature(), &fd_new)) {
- Handle objHandle(Thread::current(), obj); // TODO : review thread
+ Handle objHandle(Thread::current(), obj);
MethodHandles::init_field_MemberName(objHandle, fd_new, MethodHandles::ref_kind_is_setter(ref_kind));
} else {
// Matching field is not found in new version, not much we can do here.
@@ -441,10 +441,9 @@ public:
// Main transformation method - runs in VM thread.
-// - UseSharedSpaces - TODO what does it mean?
-// - for each sratch class call redefine_single_class
+// - for each scratch class call redefine_single_class
// - clear code cache (flush_dependent_code)
-// - iterate the heap and update object defintions, check it old/new class fields
+// - iterate the heap and update object definitions, check it old/new class fields
// are compatible. If new class size is smaller then old, it can be solved directly here.
// - iterate the heap and update method handles to new version
// - Swap marks to have same hashcodes
--
2.24.3 (Apple Git-128)

View File

@@ -1,214 +0,0 @@
From 55e30de9a54b2f3bec995a2df42fe14b09d16f06 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Sun, 21 Jun 2020 13:38:45 +0200
Subject: [PATCH 50/50] G1 Heap parallel iterate method "object_par_iterate" +
dcevm timers
G1 Heap does not have parallel iterate method, that is usefull in dcevm
iterate phase. According performance tests the parallel iteration is up
~25% faster then serial iteration, ratio depends on the size of heap.
Dcevm's timers did not make sense. Now, there are timers fo prologue,
doit, gc itarate and full gc phases. Iterate+fullgc time make up most
the total doit time.
---
src/hotspot/share/gc/g1/g1CollectedHeap.cpp | 20 ++++++++
src/hotspot/share/gc/g1/g1CollectedHeap.hpp | 2 +
.../prims/jvmtiEnhancedRedefineClasses.cpp | 46 +++++++++++++------
.../prims/jvmtiEnhancedRedefineClasses.hpp | 5 +-
4 files changed, 58 insertions(+), 15 deletions(-)
diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
index dea8d9fdb0e..33664a30519 100644
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
@@ -2108,6 +2108,21 @@ public:
}
};
+class G1IterateObjectClosureTask : public AbstractGangTask {
+ private:
+ ObjectClosure* _cl;
+ G1CollectedHeap* _g1h;
+ HeapRegionClaimer _hrclaimer;
+ public:
+ G1IterateObjectClosureTask(ObjectClosure* cl, G1CollectedHeap* g1h) : AbstractGangTask("IterateObject Closure"),
+ _cl(cl), _g1h(g1h), _hrclaimer(g1h->workers()->active_workers()) { }
+
+ virtual void work(uint worker_id) {
+ IterateObjectClosureRegionClosure blk(_cl);
+ _g1h->heap_region_par_iterate_from_worker_offset(&blk, &_hrclaimer, worker_id);
+ }
+};
+
void G1CollectedHeap::object_iterate(ObjectClosure* cl) {
IterateObjectClosureRegionClosure blk(cl);
heap_region_iterate(&blk);
@@ -2117,6 +2132,11 @@ void G1CollectedHeap::heap_region_iterate(HeapRegionClosure* cl) const {
_hrm.iterate(cl);
}
+void G1CollectedHeap::object_par_iterate(ObjectClosure* cl) {
+ G1IterateObjectClosureTask iocl_task(cl, this);
+ workers()->run_task(&iocl_task);
+}
+
void G1CollectedHeap::heap_region_par_iterate_from_worker_offset(HeapRegionClosure* cl,
HeapRegionClaimer *hrclaimer,
uint worker_id) const {
diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp
index 0735eef0da8..05a068bb2e0 100644
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp
@@ -1117,6 +1117,8 @@ public:
// Iteration functions.
+ void object_par_iterate(ObjectClosure* cl);
+
// Iterate over all objects, calling "cl.do_object" on each.
virtual void object_iterate(ObjectClosure* cl);
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 32929b3d7a0..5be9bb74305 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -54,6 +54,7 @@
#include "utilities/events.hpp"
#include "oops/constantPool.inline.hpp"
#include "gc/cms/cmsHeap.hpp"
+#include "gc/g1/g1CollectedHeap.hpp"
#include "gc/shared/dcevmSharedGC.hpp"
Array<Method*>* VM_EnhancedRedefineClasses::_old_methods = NULL;
@@ -459,6 +460,10 @@ public:
void VM_EnhancedRedefineClasses::doit() {
Thread *thread = Thread::current();
+ if (log_is_enabled(Info, redefine, class, timer)) {
+ _timer_vm_op_doit.start();
+ }
+
#if INCLUDE_CDS
if (UseSharedSpaces) {
// Sharing is enabled so we remap the shared readonly space to
@@ -523,8 +528,22 @@ void VM_EnhancedRedefineClasses::doit() {
}
Universe::heap()->ensure_parsability(false);
- Universe::heap()->object_iterate(&objectClosure);
+ if (UseG1GC) {
+ if (log_is_enabled(Info, redefine, class, timer)) {
+ _timer_heap_iterate.start();
+ }
+ G1CollectedHeap::heap()->object_par_iterate(&objectClosure);
+ _timer_heap_iterate.stop();
+ } else {
+ if (log_is_enabled(Info, redefine, class, timer)) {
+ _timer_heap_iterate.start();
+ }
+ Universe::heap()->object_iterate(&objectClosure);
+ _timer_heap_iterate.stop();
+ }
+
Universe::root_oops_do(&oopClosureNoBarrier);
+
}
log_trace(redefine, class, obsolete, metadata)("After updating instances");
@@ -577,12 +596,19 @@ void VM_EnhancedRedefineClasses::doit() {
if (objectClosure.needs_instance_update()) {
// Do a full garbage collection to update the instance sizes accordingly
+
+ if (log_is_enabled(Info, redefine, class, timer)) {
+ _timer_heap_full_gc.start();
+ }
+
Universe::set_redefining_gc_run(true);
notify_gc_begin(true);
// TODO: check _metadata_GC_clear_soft_refs with ScavengeRootsInCode
Universe::heap()->collect_as_vm_thread(GCCause::_heap_inspection);
notify_gc_end();
Universe::set_redefining_gc_run(false);
+
+ _timer_heap_full_gc.stop();
}
// Unmark Klass*s as "redefining"
@@ -630,6 +656,7 @@ void VM_EnhancedRedefineClasses::doit() {
}
#endif
+ _timer_vm_op_doit.stop();
}
// Cleanup - runs in JVM thread
@@ -653,16 +680,14 @@ void VM_EnhancedRedefineClasses::doit_epilogue() {
if (log_is_enabled(Info, redefine, class, timer)) {
// Used to have separate timers for "doit" and "all", but the timer
// overhead skewed the measurements.
- jlong doit_time = _timer_rsc_phase1.milliseconds() +
- _timer_rsc_phase2.milliseconds();
- jlong all_time = _timer_vm_op_prologue.milliseconds() + doit_time;
+ jlong all_time = _timer_vm_op_prologue.milliseconds() + _timer_vm_op_doit.milliseconds();
log_info(redefine, class, timer)
("vm_op: all=" JLONG_FORMAT " prologue=" JLONG_FORMAT " doit=" JLONG_FORMAT,
- all_time, _timer_vm_op_prologue.milliseconds(), doit_time);
+ all_time, _timer_vm_op_prologue.milliseconds(), _timer_vm_op_doit.milliseconds());
log_info(redefine, class, timer)
- ("redefine_single_class: phase1=" JLONG_FORMAT " phase2=" JLONG_FORMAT,
- _timer_rsc_phase1.milliseconds(), _timer_rsc_phase2.milliseconds());
+ ("doit: heap iterate=" JLONG_FORMAT " fullgc=" JLONG_FORMAT,
+ _timer_heap_iterate.milliseconds(), _timer_heap_full_gc.milliseconds());
}
}
@@ -1411,7 +1436,7 @@ void VM_EnhancedRedefineClasses::unpatch_bytecode(Method* method) {
// arrayKlassOops. See Open Issues in jvmtiRedefineClasses.hpp.
void VM_EnhancedRedefineClasses::ClearCpoolCacheAndUnpatch::do_klass(Klass* k) {
if (!k->is_instance_klass()) {
- return;
+ return;
}
HandleMark hm(_thread);
@@ -1829,10 +1854,6 @@ void VM_EnhancedRedefineClasses::redefine_single_class(InstanceKlass* new_class_
HandleMark hm(THREAD); // make sure handles from this call are freed
- if (log_is_enabled(Info, redefine, class, timer)) {
- _timer_rsc_phase1.start();
- }
-
InstanceKlass* new_class = new_class_oop;
InstanceKlass* the_class = InstanceKlass::cast(new_class_oop->old_version());
assert(the_class != NULL, "must have old version");
@@ -1887,7 +1908,6 @@ void VM_EnhancedRedefineClasses::redefine_single_class(InstanceKlass* new_class_
new_class->external_name(),
java_lang_Class::classRedefinedCount(new_class->java_mirror()));
}
- _timer_rsc_phase2.stop();
} // end redefine_single_class()
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
index 030852b160a..9755944d70b 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
@@ -86,9 +86,10 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
// Performance measurement support. These timers do not cover all
// the work done for JVM/TI RedefineClasses() but they do cover
// the heavy lifting.
- elapsedTimer _timer_rsc_phase1;
- elapsedTimer _timer_rsc_phase2;
+ elapsedTimer _timer_vm_op_doit;
elapsedTimer _timer_vm_op_prologue;
+ elapsedTimer _timer_heap_iterate;
+ elapsedTimer _timer_heap_full_gc;
// These routines are roughly in call order unless otherwise noted.
--
2.24.3 (Apple Git-128)

View File

@@ -1,33 +0,0 @@
Index: src/java.desktop/share/classes/module-info.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java.desktop/share/classes/module-info.java (revision 5ae6630e3ebc71beb9f9df63b1b5bc19c9405d1f)
+++ src/java.desktop/share/classes/module-info.java (date 1588168285537)
@@ -109,10 +109,7 @@
// see make/GensrcModuleInfo.gmk
exports sun.awt to
jdk.accessibility,
- jdk.unsupported.desktop,
- jcef;
-
- exports java.awt.peer to jcef;
+ jdk.unsupported.desktop;
exports java.awt.dnd.peer to jdk.unsupported.desktop;
exports sun.awt.dnd to jdk.unsupported.desktop;
Index: modules.list
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- modules.list (revision 5ae6630e3ebc71beb9f9df63b1b5bc19c9405d1f)
+++ modules.list (date 1588168285505)
@@ -61,5 +61,4 @@
jdk.unsupported,
jdk.xml.dom,
jdk.zipfs,
-jdk.hotspot.agent,
-jcef
+jdk.hotspot.agent

View File

@@ -1,21 +0,0 @@
Index: modules.list
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- modules.list (revision ab073976c4f85f154ff1421b7ac888eee86b6595)
+++ modules.list (date 1588171510146)
@@ -20,13 +20,6 @@
java.transaction.xa,
java.xml,
java.xml.crypto,
-javafx.base,
-javafx.controls,
-javafx.fxml,
-javafx.graphics,
-javafx.media,
-javafx.swing,
-javafx.web,
jdk.accessibility,
jdk.aot,
jdk.attach,

View File

@@ -1,10 +0,0 @@
#!/bin/bash -x
JBSDK_VERSION=$1
JDK_BUILD_NUMBER=$2
build_number=$3
script_dir=jb/project/tools/windows/scripts
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jcef" || exit $?
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx" || exit $?
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "dcevm" || exit $?
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx_jcef" || exit $?

View File

@@ -1,12 +1,14 @@
#!/bin/bash -x
# The following parameters must be specified:
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
# JBSDK_VERSION - specifies major version of OpenJDK e.g. 11_0_6 (instead of dots '.' underbars "_" are used)
# JDK_BUILD_NUMBER - specifies update release of OpenJDK build or the value of --with-version-build argument to configure
# build_number - specifies the number of JetBrainsRuntime build
# bundle_type - specifies bundle to bu built; possible values:
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
# jfx - the bundle 1) jbr with javafx only will be created
# bundle_type - specifies bundle to be built; possible values:
# jcef - the release bundles with jcef
# dcevm - the release bundles with dcevm patches
# nomod - the release bundles without any additional modules (jcef)
# fd - the fastdebug bundles which also include the jcef module
#
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
@@ -19,104 +21,113 @@
# Environment variables:
# MODULAR_SDK_PATH - specifies the path to the directory where imported modules are located.
# By default imported modules should be located in ./modular-sdk
# JCEF_PATH - specifies the path to the directory where JCEF binaries are located.
# By default imported modules should be located in ./jcef_win_x64
# JCEF_PATH - specifies the path to the directory with JCEF binaries.
# By default JCEF binaries should be located in ./jcef_win_x64
JBSDK_VERSION=$1
JDK_BUILD_NUMBER=$2
build_number=$3
bundle_type=$4
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
WORK_DIR=$(pwd)
WITH_IMPORT_MODULES="--with-import-modules=${MODULAR_SDK_PATH:=${WORK_DIR}/modular-sdk}"
JCEF_PATH=${JCEF_PATH:=./jcef_win_x64}
JCEF_PATH=${JCEF_PATH:=${WORK_DIR}/jcef_win_x64}
TOOLCHAIN_VERSION=${TOOLCHAIN_VERSION:=2015}
source jb/project/tools/common.sh
function create_jbr {
case "$1" in
"${bundle_type}_lw")
grep -v "jdk.compiler\|jdk.hotspot.agent" modules.list > modules_tmp.list
;;
"jfx" | "jcef" | "jfx_jcef" | "dcevm" | "nomod")
cat modules.list > modules_tmp.list
JBR_BUNDLE=jbr_${bundle_type}
case "${bundle_type}" in
"jcef" | "dcevm" | "nomod" | "fd")
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
;;
*)
echo "***ERR*** bundle was not specified" && exit 1
echo "***ERR*** bundle was not specified" && do_exit 1
;;
esac
cat modules.list > modules_tmp.list
rm -rf ${JBR_BUNDLE}
echo Running jlink....
${JSDK}/bin/jlink \
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
--add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output ${JBR_BUNDLE} || exit $?
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]]
--add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output ${JBR_BUNDLE} || do_exit $?
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]] || [[ "${bundle_type}" == fd ]]
then
cp -R ${JCEF_PATH}/* ${JBR_BUNDLE}/bin
rsync -av ${JCEF_PATH}/ ${JBR_BUNDLE}/bin --exclude="modular-sdk" || do_exit $?
fi
echo Modifying release info ...
cat ${JSDK}/release | tr -d '\r' | grep -v 'JAVA_VERSION' | grep -v 'MODULES' >> ${JBR_BUNDLE}/release
}
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
WORK_DIR=$(pwd)
WITH_DEBUG_LEVEL="--with-debug-level=release"
RELEASE_NAME=windows-x86_64-normal-server-release
git checkout -- modules.list src/java.desktop/share/classes/module-info.java
JBSDK=${JBRSDK_BASE_NAME}-windows-x64-b${build_number}
case "$bundle_type" in
"jfx")
echo "Excluding jcef modules"
git apply -p0 < jb/project/tools/patches/exclude_jcef_module.patch
;;
"jcef")
echo "Excluding jfx modules"
git apply -p0 < jb/project/tools/patches/exclude_jfx_module.patch
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
do_reset_changes=1
;;
"dcevm")
echo "Adding dcevm patches"
git am jb/project/tools/patches/dcevm/*.patch
HEAD_REVISION=$(git rev-parse HEAD)
git am jb/project/tools/patches/dcevm/*.patch || do_exit $?
do_reset_dcevm=1
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
do_reset_changes=1
;;
"nomod")
git apply -p0 < jb/project/tools/patches/exclude_jcef_module.patch
git apply -p0 < jb/project/tools/patches/exclude_jfx_module.patch
WITH_IMPORT_MODULES=""
;;
"fd")
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
do_reset_changes=1
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
RELEASE_NAME=windows-x86_64-normal-server-fastdebug
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}-fastdebug
JBSDK=${JBRSDK_BASE_NAME}-windows-x64-fastdebug-b${build_number}
;;
*)
echo "***ERR*** bundle was not specified" && do_exit 1
;;
esac
PATH="/usr/local/bin:/usr/bin:${PATH}"
./configure \
sh ./configure \
--disable-warnings-as-errors \
$WITH_DEBUG_LEVEL \
--with-target-bits=64 \
--with-vendor-name="${VENDOR_NAME}" \
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
--with-jvm-features=shenandoahgc \
--with-version-pre= \
--with-version-build=${JDK_BUILD_NUMBER} \
--with-version-opt=b${build_number} \
$WITH_IMPORT_MODULES \
--with-toolchain-version=2015 \
--with-toolchain-version=${TOOLCHAIN_VERSION} \
--with-boot-jdk=${BOOT_JDK} \
--disable-ccache \
--enable-cds=yes || exit 1
--enable-cds=yes || do_exit $?
if [ "$bundle_type" == "jfx_jcef" ]; then
make LOG=info clean images CONF=$RELEASE_NAME test-image || exit 1
if [ "${bundle_type}" == "jcef" ]; then
make LOG=info clean images test-image CONF=$RELEASE_NAME || do_exit $?
else
make LOG=info clean images CONF=$RELEASE_NAME || exit 1
make LOG=info clean images CONF=$RELEASE_NAME || do_exit $?
fi
JSDK=build/$RELEASE_NAME/images/jdk
if [[ "$bundle_type" == *jcef* ]]; then
JBSDK=${JBRSDK_BASE_NAME}-windows-x64-b${build_number}
fi
BASE_DIR=build/$RELEASE_NAME/images
JBRSDK_BUNDLE=jbrsdk
rm -rf ${BASE_DIR}/${JBRSDK_BUNDLE} && rsync -a --exclude demo --exclude sample ${JSDK}/ ${JBRSDK_BUNDLE} || exit 1
cp -R ${JCEF_PATH}/* ${JBRSDK_BUNDLE}/bin
sed 's/JBR/JBRSDK/g' ${JSDK}/release > release
mv release ${JBRSDK_BUNDLE}/release
rm -rf ${BASE_DIR}/${JBRSDK_BUNDLE} && rsync -a --exclude demo --exclude sample ${JSDK}/ ${JBRSDK_BUNDLE} || do_exit $?
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]] || [[ "${bundle_type}" == fd ]]
then
rsync -av ${JCEF_PATH}/ ${JBRSDK_BUNDLE}/bin --exclude='modular-sdk' || do_exit $?
sed 's/JBR/JBRSDK/g' ${JSDK}/release > release
mv release ${JBRSDK_BUNDLE}/release
fi
JBR_BUNDLE=jbr_${bundle_type}
create_jbr ${bundle_type}
create_jbr || do_exit $?
do_exit 0

View File

@@ -6,7 +6,6 @@
# build_number - specifies the number of JetBrainsRuntime build
# bundle_type - specifies bundle to bu built; possible values:
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
# jfx - the bundle 1) jbr with javafx only will be created
#
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
@@ -35,6 +34,7 @@ PATH="/usr/local/bin:/usr/bin:${PATH}"
--with-target-bits=32 \
--with-vendor-name="${VENDOR_NAME}" \
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
--with-jvm-features=shenandoahgc \
--with-version-pre= \
--with-version-build=${JDK_BUILD_NUMBER} \
--with-version-opt=b${build_number} \

View File

@@ -1,12 +1,14 @@
#!/bin/bash -x
# The following parameters must be specified:
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
# JBSDK_VERSION - specifies major version of OpenJDK e.g. 11_0_6 (instead of dots '.' underbars "_" are used)
# JDK_BUILD_NUMBER - specifies update release of OpenJDK build or the value of --with-version-build argument to configure
# build_number - specifies the number of JetBrainsRuntime build
# bundle_type - specifies bundle to bu built; possible values:
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
# jfx - the bundle 1) jbr with javafx only will be created
# bundle_type - specifies bundle to be built; possible values:
# jcef - the release bundles with jcef
# dcevm - the release bundles with dcevm patches
# nomod - the release bundles without any additional modules (jcef)
# fd - the fastdebug bundles which also include the jcef module
#
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
@@ -16,59 +18,66 @@
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
#
# Environment variables:
# MODULAR_SDK_PATH - specifies the path to the directory where imported modules are located.
# By default imported modules should be located in ./modular-sdk
# JCEF_PATH - specifies the path to the directory with JCEF binaries.
# By default JCEF binaries should be located in ./jcef_win_x64
JBSDK_VERSION=$1
JDK_BUILD_NUMBER=$2
build_number=$3
bundle_type=$4
source jb/project/tools/common.sh
function pack_jbr {
case "$1" in
"${bundle_type}_lw")
JBR_BASE_NAME=jbr_${bundle_type}_lw-${JBSDK_VERSION}
;;
"jfx" | "jcef" | "dcevm" | "nomod")
JBR_BUNDLE=jbr_${bundle_type}
case "${bundle_type}" in
"jcef" | "dcevm" | "nomod" | "fd")
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
;;
"jfx_jcef")
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
;;
*)
echo "***ERR*** bundle was not specified" && exit 1
echo "***ERR*** bundle was not specified" && do_exit 1
;;
esac
JBR=$JBR_BASE_NAME-windows-x64-b$build_number
echo Creating $JBR.tar.gz ...
rm -rf ${BASE_DIR}/jbr
chmod -R ug+rwx,o+rx ${BASE_DIR}/${JBR_BUNDLE}
cp -R ${BASE_DIR}/${JBR_BUNDLE} ${BASE_DIR}/jbr
/usr/bin/tar -czf $JBR.tar.gz -C $BASE_DIR jbr || exit 1
#rm -rf ${BASE_DIR}/${JBR_BUNDLE}
/usr/bin/tar -czf $JBR.tar.gz -C $BASE_DIR jbr || do_exit $?
}
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
WITH_DEBUG_LEVEL="--with-debug-level=release"
RELEASE_NAME=windows-x86_64-normal-server-release
JBRSDK_BASE_NAME=jbrsdk-$JBSDK_VERSION
JBR_BASE_NAME=jbr-$JBSDK_VERSION
JBSDK=${JBRSDK_BASE_NAME}-windows-x64-b${build_number}
case "$bundle_type" in
"fd")
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
RELEASE_NAME=windows-x86_64-normal-server-fastdebug
JBSDK=${JBRSDK_BASE_NAME}-windows-x64-fastdebug-b${build_number}
;;
esac
IMAGES_DIR=build/$RELEASE_NAME/images
JSDK=$IMAGES_DIR/jdk
JBSDK=$JBRSDK_BASE_NAME-windows-x64-b$build_number
BASE_DIR=.
if [ "$bundle_type" == "jfx_jcef" ]; then
if [ "${bundle_type}" == "jcef" ] || [ "${bundle_type}" == "fd" ]; then
JBRSDK_BUNDLE=jbrsdk
echo Creating $JBSDK.tar.gz ...
/usr/bin/tar -czf $JBSDK.tar.gz $JBRSDK_BUNDLE || exit 1
[ -f "$JBSDK.tar.gz" ] && rm "$JBSDK.tar.gz"
/usr/bin/tar -czf $JBSDK.tar.gz $JBRSDK_BUNDLE || do_exit $?
fi
JBR_BUNDLE=jbr_${bundle_type}
pack_jbr $bundle_type
if [ "$bundle_type" == "jfx_jcef" ]; then
if [ "$bundle_type" == "jcef" ]; then
JBRSDK_TEST=$JBRSDK_BASE_NAME-windows-test-x64-b$build_number
echo Creating $JBRSDK_TEST.tar.gz ...
/usr/bin/tar -czf $JBRSDK_TEST.tar.gz -C $IMAGES_DIR --exclude='test/jdk/demos' test || exit 1
/usr/bin/tar -czf $JBRSDK_TEST.tar.gz -C $IMAGES_DIR --exclude='test/jdk/demos' test || do_exit $?
fi

View File

@@ -6,7 +6,6 @@
# build_number - specifies the number of JetBrainsRuntime build
# bundle_type - specifies bundle to bu built; possible values:
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
# jfx - the bundle 1) jbr with javafx only will be created
#
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz

View File

@@ -321,7 +321,7 @@ jdk.jshell_COPY += .jsh .properties
################################################################################
jdk.internal.le_COPY += .properties
jdk.internal.le_COPY += .properties .caps .txt
################################################################################

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2020, 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
@@ -39,7 +39,6 @@ $(eval $(call IncludeCustomExtension, CompileTools.gmk))
# Use += to be able to add to this from a custom extension
BUILD_TOOLS_SRC_DIRS += \
$(TOPDIR)/make/jdk/src/classes \
$(BUILDTOOLS_OUTPUTDIR)/interim_cldrconverter_classes \
$(BUILDTOOLS_OUTPUTDIR)/interim_tzdb_classes \
#
@@ -56,6 +55,7 @@ $(eval $(call SetupJavaCompilation,BUILD_TOOLS_JDK, \
ADD_JAVAC_FLAGS := \
--add-exports java.desktop/sun.awt=ALL-UNNAMED \
--add-exports java.base/sun.text=ALL-UNNAMED \
--add-exports java.base/sun.security.util=ALL-UNNAMED \
, \
))

View File

@@ -1,4 +1,4 @@
#
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
@@ -78,13 +78,9 @@ ifneq ($(CREATING_BUILDJDK), true)
interim-rmic:
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimRmic.gmk)
interim-cldrconverter:
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopyInterimCLDRConverter.gmk)
interim-tzdb:
interim-tzdb:
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopyInterimTZDB.gmk)
buildtools-jdk:
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileToolsJdk.gmk)
@@ -96,7 +92,7 @@ interim-tzdb:
endif
ALL_TARGETS += buildtools-langtools interim-langtools \
interim-rmic interim-cldrconverter interim-tzdb buildtools-jdk buildtools-modules \
interim-rmic interim-tzdb buildtools-jdk buildtools-modules \
buildtools-hotspot
################################################################################
@@ -233,7 +229,7 @@ $(eval $(call DeclareRecipesForPhase, STATIC_LIBS, \
TARGET_SUFFIX := static-libs, \
FILE_PREFIX := Lib, \
MAKE_SUBDIR := lib, \
CHECK_MODULES := $(STATIC_LIBS_MODULES), \
CHECK_MODULES := $(ALL_MODULES), \
USE_WRAPPER := true, \
EXTRA_ARGS := STATIC_LIBS=true, \
))
@@ -689,7 +685,7 @@ else
interim-langtools: $(INTERIM_LANGTOOLS_GENSRC_TARGETS)
buildtools-jdk: interim-langtools interim-cldrconverter interim-tzdb
buildtools-jdk: interim-langtools interim-tzdb
buildtools-hotspot: interim-langtools
@@ -721,10 +717,14 @@ else
# If not already set, set the JVM variant target so that the JVM will be built.
JVM_MAIN_LIB_TARGETS ?= hotspot-$(JVM_VARIANT_MAIN)-libs
JVM_MAIN_GENSRC_TARGETS ?= hotspot-$(JVM_VARIANT_MAIN)-gensrc
# Building one JVM variant is enough to start building the other libs
$(LIBS_TARGETS): $(JVM_MAIN_LIB_TARGETS)
# Static libs depend on hotspot gensrc
$(STATIC_LIBS_TARGETS): $(JVM_MAIN_GENSRC_TARGETS)
$(LAUNCHER_TARGETS): java.base-libs
ifeq ($(STATIC_BUILD), true)

View File

@@ -658,10 +658,14 @@ define SetupRunJtregTestBody
$1_JTREG_LAUNCHER_OPTIONS += -Xmx$$($1_JTREG_MAX_MEM)
endif
# Make sure the tmp dir is normalized as some tests will react badly otherwise
$1_TEST_TMP_DIR := $$(abspath $$($1_TEST_SUPPORT_DIR)/tmp)
$1_JTREG_BASIC_OPTIONS += -$$($1_JTREG_TEST_MODE) \
-verbose:$$(JTREG_VERBOSE) -retain:$$(JTREG_RETAIN) \
-concurrency:$$($1_JTREG_JOBS) -timeoutFactor:$$(JTREG_TIMEOUT_FACTOR) \
-vmoption:-XX:MaxRAMPercentage=$$($1_JTREG_MAX_RAM_PERCENTAGE)
-vmoption:-XX:MaxRAMPercentage=$$($1_JTREG_MAX_RAM_PERCENTAGE) \
-vmoption:-Djava.io.tmpdir="$$($1_TEST_TMP_DIR)"
$1_JTREG_BASIC_OPTIONS += -automatic -ignore:quiet
@@ -740,7 +744,8 @@ define SetupRunJtregTestBody
run-test-$1: clean-workdir-$1 $$($1_AOT_TARGETS)
$$(call LogWarn)
$$(call LogWarn, Running test '$$($1_TEST)')
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR) \
$$($1_TEST_TMP_DIR))
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/jtreg, ( \
$$(JAVA) $$($1_JTREG_LAUNCHER_OPTIONS) \
-Dprogram=jtreg -jar $$(JT_HOME)/lib/jtreg.jar \

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2017, 2019, 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
@@ -237,7 +237,8 @@ else ifeq ($(OPENJDK_TARGET_OS), solaris)
else ifeq ($(OPENJDK_TARGET_OS), windows)
NUM_CORES := $(NUMBER_OF_PROCESSORS)
MEMORY_SIZE := $(shell \
$(EXPR) `wmic computersystem get totalphysicalmemory -value | $(GREP) = \
$(EXPR) `wmic computersystem get totalphysicalmemory -value \
| $(GREP) = | $(SED) 's/\\r//g' \
| $(CUT) -d "=" -f 2-` / 1024 / 1024 \
)
endif

View File

@@ -32,11 +32,13 @@ include $(SPEC)
include MakeBase.gmk
include Modules.gmk
ALL_MODULES = $(call FindAllModules)
################################################################################
TARGETS :=
$(foreach m, $(STATIC_LIBS_MODULES), \
$(foreach m, $(ALL_MODULES), \
$(eval $(call SetupCopyFiles, COPY_STATIC_LIBS_$m, \
FLATTEN := true, \
SRC := $(SUPPORT_OUTPUTDIR)/native/$m, \

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2020, 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
@@ -74,6 +74,7 @@ TOOL_TZDB = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
build.tools.tzdb.TzdbZoneRulesCompiler
TOOL_BLACKLISTED_CERTS = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
--add-exports java.base/sun.security.util=ALL-UNNAMED \
build.tools.blacklistedcertsconverter.BlacklistedCertsConverter
TOOL_MAKEJAVASECURITY = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \

View File

@@ -641,17 +641,18 @@ AC_DEFUN_ONCE([BASIC_SETUP_PATHS],
AC_MSG_RESULT([$TOPDIR])
AC_SUBST(TOPDIR)
# We can only call BASIC_FIXUP_PATH after BASIC_CHECK_PATHS_WINDOWS.
BASIC_FIXUP_PATH(CURDIR)
BASIC_FIXUP_PATH(TOPDIR)
if test "x$CUSTOM_ROOT" != x; then
BASIC_FIXUP_PATH(CUSTOM_ROOT)
WORKSPACE_ROOT="${CUSTOM_ROOT}"
else
WORKSPACE_ROOT="${TOPDIR}"
fi
AC_SUBST(WORKSPACE_ROOT)
# We can only call BASIC_FIXUP_PATH after BASIC_CHECK_PATHS_WINDOWS.
BASIC_FIXUP_PATH(CURDIR)
BASIC_FIXUP_PATH(TOPDIR)
# Locate the directory of this script.
AUTOCONF_DIR=$TOPDIR/make/autoconf

View File

@@ -169,19 +169,7 @@ AC_DEFUN([FLAGS_SETUP_WARNINGS],
gcc)
DISABLE_WARNING_PREFIX="-Wno-"
CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
# Repeate the check for the BUILD_CC and BUILD_CXX. Need to also reset
# CFLAGS since any target specific flags will likely not work with the
# build compiler
CC_OLD="$CC"
CXX_OLD="$CXX"
CC="$BUILD_CC"
CXX="$BUILD_CXX"
CFLAGS_OLD="$CFLAGS"
CFLAGS=""
BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
CC="$CC_OLD"
CXX="$CXX_OLD"
CFLAGS="$CFLAGS_OLD"
;;
clang)
DISABLE_WARNING_PREFIX="-Wno-"
@@ -376,6 +364,17 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS],
FLAGS_SETUP_CFLAGS_CPU_DEP([TARGET])
# Repeat the check for the BUILD_CC and BUILD_CXX. Need to also reset CFLAGS
# since any target specific flags will likely not work with the build compiler.
CC_OLD="$CC"
CXX_OLD="$CXX"
CFLAGS_OLD="$CFLAGS"
CXXFLAGS_OLD="$CXXFLAGS"
CC="$BUILD_CC"
CXX="$BUILD_CXX"
CFLAGS=""
CXXFLAGS=""
FLAGS_OS=$OPENJDK_BUILD_OS
FLAGS_OS_TYPE=$OPENJDK_BUILD_OS_TYPE
FLAGS_CPU=$OPENJDK_BUILD_CPU
@@ -387,6 +386,11 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS],
FLAGS_SETUP_CFLAGS_CPU_DEP([BUILD], [OPENJDK_BUILD_], [BUILD_])
CC="$CC_OLD"
CXX="$CXX_OLD"
CFLAGS="$CFLAGS_OLD"
CXXFLAGS="$CXXFLAGS_OLD"
# Tests are only ever compiled for TARGET
CFLAGS_TESTLIB="$CFLAGS_JDKLIB"
CXXFLAGS_TESTLIB="$CXXFLAGS_JDKLIB"

View File

@@ -77,7 +77,7 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,-z,defs -Wl,-z,relro -Wl,-z,now"
# s390x : remove unused code+data in link step
if test "x$OPENJDK_TARGET_CPU" = xs390x; then
BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,--gc-sections -Wl,--print-gc-sections"
BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,--gc-sections"
fi
BASIC_LDFLAGS_JVM_ONLY="-Wl,-O1"

View File

@@ -224,10 +224,12 @@ AC_DEFUN([FLAGS_SETUP_SYSROOT_FLAGS],
# We also need -iframework<path>/System/Library/Frameworks
$1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
$1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
# These always need to be set, or we can't find the frameworks embedded in JavaVM.framework
# set this here so it doesn't have to be peppered throughout the forest
$1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
$1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
if test -d "[$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks" ; then
# These always need to be set on macOS 10.X, or we can't find the frameworks embedded in JavaVM.framework
# set this here so it doesn't have to be peppered throughout the forest
$1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
$1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
fi
fi
AC_SUBST($1SYSROOT_CFLAGS)

View File

@@ -99,6 +99,8 @@ apt_help() {
PKGHANDLER_COMMAND="sudo apt-get install libfontconfig1-dev" ;;
freetype)
PKGHANDLER_COMMAND="sudo apt-get install libfreetype6-dev" ;;
harfbuzz)
PKGHANDLER_COMMAND="sudo apt-get install libharfbuzz-dev" ;;
ffi)
PKGHANDLER_COMMAND="sudo apt-get install libffi-dev" ;;
x11)
@@ -124,6 +126,8 @@ yum_help() {
PKGHANDLER_COMMAND="sudo yum install fontconfig-devel" ;;
freetype)
PKGHANDLER_COMMAND="sudo yum install freetype-devel" ;;
harfbuzz)
PKGHANDLER_COMMAND="sudo yum install harfbuzz-devel" ;;
x11)
PKGHANDLER_COMMAND="sudo yum install libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel" ;;
ccache)

View File

@@ -25,7 +25,7 @@
# All valid JVM features, regardless of platform
VALID_JVM_FEATURES="compiler1 compiler2 zero minimal dtrace jvmti jvmci \
graal vm-structs jni-check services management cmsgc epsilongc g1gc parallelgc serialgc zgc nmt cds \
graal vm-structs jni-check services management cmsgc epsilongc g1gc parallelgc serialgc shenandoahgc zgc nmt cds \
static-build link-time-opt aot jfr"
# Deprecated JVM features (these are ignored, but with a warning)
@@ -274,6 +274,14 @@ AC_DEFUN_ONCE([HOTSPOT_ENABLE_DISABLE_CDS],
fi
fi
# Disable CDS on macos-aarch64
if test "x$OPENJDK_TARGET_OS" = "xmacosx" && test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
ENABLE_CDS="false"
if test "x$enable_cds" = "xyes"; then
AC_MSG_ERROR([CDS is currently not supported on AIX. Remove --enable-cds.])
fi
fi
AC_SUBST(ENABLE_CDS)
])
@@ -352,6 +360,19 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
fi
fi
# Only enable Shenandoah on supported arches, and only if requested
AC_MSG_CHECKING([if shenandoah can be built])
if HOTSPOT_CHECK_JVM_FEATURE(shenandoahgc); then
if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86" || test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
AC_MSG_RESULT([yes])
else
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES shenandoahgc"
AC_MSG_RESULT([no, platform not supported])
fi
else
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES shenandoahgc"
fi
# Only enable ZGC on supported platforms
AC_MSG_CHECKING([if zgc can be built])
if test "x$OPENJDK_TARGET_OS" = "xlinux" && test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
@@ -363,7 +384,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
# Disable unsupported GCs for Zero
if HOTSPOT_CHECK_JVM_VARIANT(zero); then
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES epsilongc g1gc zgc"
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES epsilongc g1gc shenandoahgc zgc"
fi
# Turn on additional features based on other parts of configure
@@ -494,7 +515,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
fi
# All variants but minimal (and custom) get these features
NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES cmsgc g1gc parallelgc serialgc epsilongc jni-check jvmti management nmt services vm-structs zgc"
NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES cmsgc g1gc parallelgc serialgc epsilongc shenandoahgc jni-check jvmti management nmt services vm-structs zgc"
AC_MSG_CHECKING([if cds should be enabled])
if test "x$ENABLE_CDS" = "xtrue"; then

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