Compare commits

...

362 Commits

Author SHA1 Message Date
MonoBot
73a0827914 Fonts release 2.221 2020-12-28 17:44:48 +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
Roman Shevchenko
6a85e88e94 README: correcting proper nouns 2020-09-29 21:45:34 +02:00
MonoBot
715e8d345a Fonts release 2.002 2020-08-27 14:05:47 +03:00
1518 changed files with 115190 additions and 34932 deletions

1
.gitignore vendored
View File

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

15
.hgtags
View File

@@ -598,3 +598,18 @@ 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

2
.idea/vcs.xml generated
View File

@@ -8,7 +8,7 @@
<option name="linkRegexp" value="http://youtrack.jetbrains.com/issue/$0" />
</IssueNavigationLink>
<IssueNavigationLink>
<option name="issueRegexp" value="(\d+)\:" />
<option name="issueRegexp" value="^(\d+)\:" />
<option name="linkRegexp" value="https://bugs.openjdk.java.net/browse/JDK-$1" />
</IssueNavigationLink>
</list>

View File

@@ -13,7 +13,7 @@
[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 +25,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 +42,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 +55,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

@@ -32,6 +32,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

@@ -120,6 +120,7 @@ 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} \

View File

@@ -32,6 +32,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

@@ -30,12 +30,27 @@ 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
# we can't notarize this library as usual framework (with headers and tbd-file)
# but single library notarizes correctly
mkdir -p ${__contents_dir}/Frameworks/JavaNativeFoundation.framework/Resources
cp -p Frameworks/JavaNativeFoundation.framework/JavaNativeFoundation \
${__contents_dir}/Frameworks/JavaNativeFoundation.framework || do_exit $?
cp -p Frameworks/JavaNativeFoundation.framework/Resources/Info.plist \
${__contents_dir}/Frameworks/JavaNativeFoundation.framework/Resources || do_exit $?
# unsign JavaNativeFoundation binary (otherwise notarization will fail)
codesign --remove-signature ${__contents_dir}/Frameworks/JavaNativeFoundation.framework/JavaNativeFoundation || do_exit $?
}
function create_jbr {
JBR_BUNDLE=jbr_${bundle_type}
@@ -51,7 +66,15 @@ function create_jbr {
echo "***ERR*** bundle was not specified" && do_exit 1
;;
esac
cat modules.list > modules_tmp.list
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
@@ -61,7 +84,7 @@ 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 \
@@ -71,22 +94,33 @@ function create_jbr {
cp -R ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/MacOS ${JRE_CONTENTS}
cp ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Info.plist ${JRE_CONTENTS}
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
rm -rf ${JRE_CONTENTS}/Frameworks || do_exit $?
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 || 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
JBSDK=${JBRSDK_BASE_NAME}-osx-x64-b${build_number}
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/add_jfx_module.patch || do_exit $?
@@ -115,30 +149,56 @@ case "$bundle_type" in
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=macosx-x86_64-normal-server-fastdebug
JBSDK=${JBRSDK_BASE_NAME}-osx-x64-fastdebug-b${build_number}
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 || do_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 CONF=$RELEASE_NAME || do_exit $?
make images CONF=$RELEASE_NAME || do_exit $?
make clean CONF=$CONF_NAME || do_exit $?
make images CONF=$CONF_NAME || do_exit $?
JSDK=build/${RELEASE_NAME}/images/jdk-bundle
JSDK=build/${CONF_NAME}/images/jdk-bundle
BASE_DIR=jre
JBRSDK_BUNDLE=jbrsdk
@@ -146,17 +206,19 @@ JBRSDK_BUNDLE=jbrsdk
rm -rf $BASE_DIR
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
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}" == "jcef" ] || [ "{$bundle_type}" == "fd" ]; 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
[ -f "${JBSDK}.tar.gz" ] && rm "${JBSDK}.tar.gz"
COPYFILE_DISABLE=1 tar -pczf ${JBSDK}.tar.gz -C ${BASE_DIR} \
--exclude='._*' --exclude='.DS_Store' --exclude='*~' \
--exclude='.DS_Store' --exclude='*~' \
--exclude='Home/demo' --exclude='Home/man' --exclude='Home/sample' \
${JBRSDK_BUNDLE} || do_exit $?
fi
@@ -164,13 +226,13 @@ fi
create_jbr || do_exit $?
if [ "$bundle_type" == "jcef" ]; then
make test-image CONF=$RELEASE_NAME || do_exit $?
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 ...
[ -f "${JBRSDK_TEST}.tar.gz" ] && rm "${JBRSDK_TEST}.tar.gz"
COPYFILE_DISABLE=1 tar -pczf ${JBRSDK_TEST}.tar.gz -C build/${RELEASE_NAME}/images \
COPYFILE_DISABLE=1 tar -pczf ${JBRSDK_TEST}.tar.gz -C build/${CONF_NAME}/images \
--exclude='test/jdk/demos' test || do_exit $?
fi

View File

@@ -31,7 +31,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
@@ -55,7 +55,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 +71,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

@@ -125,7 +125,7 @@ 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"

View File

@@ -1,7 +1,7 @@
From 3b899c25e7ff58ce8b0e04e537507f64a5b1c87d Mon Sep 17 00:00:00 2001
From b36887fca0b0b251c914567d0ee2871c6d786c09 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/13] Apply basic dcevm11 patch
Subject: [PATCH 01/17] Apply basic dcevm11 patch
---
src/hotspot/share/ci/ciObjectFactory.cpp | 25 +
@@ -126,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 bf8ac6f3b17..cd8f517e8be 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,
@@ -138,7 +138,7 @@ index bf8ac6f3b17..cd8f517e8be 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()) {
@@ -147,7 +147,7 @@ index bf8ac6f3b17..cd8f517e8be 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())) {
@@ -159,7 +159,7 @@ index bf8ac6f3b17..cd8f517e8be 100644
}
}
@@ -5793,6 +5798,7 @@ ClassFileParser::ClassFileParser(ClassFileStream* stream,
@@ -5872,6 +5877,7 @@ ClassFileParser::ClassFileParser(ClassFileStream* stream,
const InstanceKlass* host_klass,
GrowableArray<Handle>* cp_patches,
Publicity pub_level,
@@ -167,7 +167,7 @@ index bf8ac6f3b17..cd8f517e8be 100644
TRAPS) :
_stream(stream),
_requested_name(name),
@@ -5851,7 +5857,8 @@ ClassFileParser::ClassFileParser(ClassFileStream* stream,
@@ -5930,7 +5936,8 @@ ClassFileParser::ClassFileParser(ClassFileStream* stream,
_has_finalizer(false),
_has_empty_finalizer(false),
_has_vanilla_constructor(false),
@@ -177,7 +177,7 @@ index bf8ac6f3b17..cd8f517e8be 100644
_class_name = name != NULL ? name : vmSymbols::unknown_class_name();
@@ -6252,14 +6259,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());
@@ -196,7 +196,7 @@ index bf8ac6f3b17..cd8f517e8be 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 {
@@ -209,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);
@@ -219,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,
@@ -227,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; }
@@ -236,7 +236,7 @@ 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 d4f7d92b19c..599ce40a2c5 100644
index f0cf1fb7cb1..5713bb9e98c 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
@@ -449,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..ea0588e5388 100644
index 6d320fb0d30..1004f41b277 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
@@ -2444,6 +2444,8 @@ void java_lang_Throwable::fill_in_stack_trace(Handle throwable, const methodHand
skip_throwableInit_check = true;
}
}
@@ -461,7 +461,7 @@ index 438e7aa4ec9..ea0588e5388 100644
if (method->is_hidden()) {
if (skip_hidden) continue;
}
@@ -3625,6 +3627,62 @@ void java_lang_invoke_DirectMethodHandle::serialize_offsets(SerializeClosure* f)
@@ -3626,6 +3628,62 @@ void java_lang_invoke_DirectMethodHandle::serialize_offsets(SerializeClosure* f)
}
#endif
@@ -524,7 +524,7 @@ index 438e7aa4ec9..ea0588e5388 100644
// Support for java_lang_invoke_MethodHandle
int java_lang_invoke_MethodHandle::_type_offset;
@@ -3811,6 +3869,11 @@ void java_lang_invoke_ResolvedMethodName::set_vmtarget(oop resolved_method, Meth
@@ -3812,6 +3870,11 @@ void java_lang_invoke_ResolvedMethodName::set_vmtarget(oop resolved_method, Meth
resolved_method->address_field_put(_vmtarget_offset, (address)m);
}
@@ -732,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 5c8ff453823..669de5e56a5 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
@@ -824,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
}
}
@@ -838,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);
@@ -851,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
@@ -860,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
}
}
@@ -869,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);
}
@@ -888,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");
@@ -898,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 ) \
@@ -910,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,
@@ -918,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);
@@ -929,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);
@@ -977,7 +977,7 @@ 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 37b68a27962..6e0b95ef5e8 100644
index 44cf2583eb9..41e9a84cd69 100644
--- a/src/hotspot/share/classfile/vmSymbols.hpp
+++ b/src/hotspot/share/classfile/vmSymbols.hpp
@@ -286,6 +286,8 @@
@@ -1003,7 +1003,7 @@ index 37b68a27962..6e0b95ef5e8 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
@@ -1019,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) {
@@ -1029,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() {
@@ -1236,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() {
@@ -1919,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 d48d4bd6fb5..7e44092f39b 100644
index c6752eb373f..e9c1d4e5226 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) {
@@ -2013,7 +2013,7 @@ index d48d4bd6fb5..7e44092f39b 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");
@@ -2260,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 24c66ab3918..82b359ee9a3 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,
@@ -935,6 +935,7 @@ static jclass jvm_define_class_common(JNIEnv *env, const char *name,
class_loader,
protection_domain,
&st,
@@ -2273,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 @@
@@ -4534,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 @@
@@ -4806,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 375aa5f54f8..08f910bd2ac 100644
--- a/src/hotspot/share/prims/jvmtiExport.cpp
+++ b/src/hotspot/share/prims/jvmtiExport.cpp
@@ -2799,7 +2799,7 @@ JvmtiDynamicCodeEventCollector::JvmtiDynamicCodeEventCollector() : _code_blobs(N
@@ -2813,7 +2813,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() {
@@ -4819,7 +4819,7 @@ 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 557d10543c6..ef8c266bc6e 100644
--- a/src/hotspot/share/prims/jvmtiExport.hpp
+++ b/src/hotspot/share/prims/jvmtiExport.hpp
@@ -178,6 +178,7 @@ class JvmtiExport : public AllStatic {
@@ -4997,10 +4997,10 @@ index bd439aab073..cc7f71a4404 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 1e2408b4ba7..ab5d08390ff 100644
index 3cd51a1ac95..7b061359c1d 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, \
@@ -5014,10 +5014,10 @@ index 1e2408b4ba7..ab5d08390ff 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 0267345b535..bcdd8e5d3e6 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.
@@ -5043,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 b56b44eab69..2e1514cf750 100644
--- a/src/hotspot/share/runtime/mutexLocker.cpp
+++ b/src/hotspot/share/runtime/mutexLocker.cpp
@@ -5,7 +5,7 @@
@@ -5064,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);

View File

@@ -1,7 +1,7 @@
From 2deb53bed368c6a8e5c9dd719cd1fd2d51190095 Mon Sep 17 00:00:00 2001
From 8ab0856ab3446eb08ad773b0225232a899527298 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/13] dcevm11 fixes
Subject: [PATCH 02/17] dcevm11 fixes
1. We need to set classRedefinitionCount on new class, not old class.
@@ -82,7 +82,7 @@ dmh
19 files changed, 324 insertions(+), 415 deletions(-)
diff --git a/src/hotspot/share/classfile/classFileParser.cpp b/src/hotspot/share/classfile/classFileParser.cpp
index cd8f517e8be..1741f8b1167 100644
index e2b8c5793d0..5e1c740a3d2 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,
@@ -93,7 +93,7 @@ index cd8f517e8be..1741f8b1167 100644
interf = (Klass *) maybe_newest(interf);
if (!interf->is_interface()) {
@@ -3749,6 +3750,7 @@ const InstanceKlass* ClassFileParser::parse_super_class(ConstantPool* const cp,
@@ -3828,6 +3829,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()) {
@@ -101,7 +101,7 @@ index cd8f517e8be..1741f8b1167 100644
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) {
@@ -4496,7 +4498,7 @@ void ClassFileParser::set_precomputed_flags(InstanceKlass* ik) {
if (!_has_empty_finalizer) {
if (_has_finalizer ||
(super != NULL && super->has_finalizer())) {
@@ -111,10 +111,10 @@ index cd8f517e8be..1741f8b1167 100644
ik->set_has_finalizer();
}
diff --git a/src/hotspot/share/classfile/classFileParser.hpp b/src/hotspot/share/classfile/classFileParser.hpp
index 3db14b678f3..93ed54d8f70 100644
index d792ab4bb3f..de48092bde8 100644
--- a/src/hotspot/share/classfile/classFileParser.hpp
+++ b/src/hotspot/share/classfile/classFileParser.hpp
@@ -499,7 +499,7 @@ class ClassFileParser {
@@ -503,7 +503,7 @@ class ClassFileParser {
FieldLayoutInfo* info,
TRAPS);
@@ -244,7 +244,7 @@ index e4a23e8a27c..bca73b5e0dc 100644
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
index 669de5e56a5..e464b94b420 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,
@@ -266,7 +266,7 @@ index 9dbd6cc9c12..e70865109dd 100644
if (!DumpSharedSpaces) {
k = SystemDictionaryShared::lookup_from_stream(class_name,
class_loader,
@@ -1836,7 +1837,7 @@ void SystemDictionary::add_to_hierarchy(InstanceKlass* k, TRAPS) {
@@ -1835,7 +1836,7 @@ void SystemDictionary::add_to_hierarchy(InstanceKlass* k, TRAPS) {
CodeCache::flush_dependents_on(k);
}
@@ -275,7 +275,7 @@ index 9dbd6cc9c12..e70865109dd 100644
void SystemDictionary::remove_from_hierarchy(InstanceKlass* k) {
assert(k != NULL, "just checking");
@@ -1844,6 +1845,7 @@ void SystemDictionary::remove_from_hierarchy(InstanceKlass* k) {
@@ -1843,6 +1844,7 @@ void SystemDictionary::remove_from_hierarchy(InstanceKlass* k) {
k->remove_from_sibling_list();
}
@@ -376,7 +376,7 @@ index 47040d51f0c..4318df227d1 100644
}
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
index 7e44092f39b..cd5489955c8 100644
index e9c1d4e5226..312d9af2527 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 {
@@ -442,7 +442,7 @@ index 7e44092f39b..cd5489955c8 100644
// if (this->old_version() != NULL) {
// InstanceKlass::cast(this->old_version())->remove_dependent_nmethod(nm, true);
// return;
@@ -3582,6 +3593,7 @@ void InstanceKlass::verify_on(outputStream* st) {
@@ -3602,6 +3613,7 @@ void InstanceKlass::verify_on(outputStream* st) {
}
guarantee(sib->is_klass(), "should be klass");
@@ -463,7 +463,7 @@ index 2cc98b636f1..e8107a39813 100644
// 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 83c0952de37..92ce6c27b8a 100644
index 80c31135487..43d761cdbb2 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -1,4 +1,4 @@
@@ -1394,7 +1394,7 @@ index 83c0952de37..92ce6c27b8a 100644
ResourceMark mark(THREAD);
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
index b712d69a193..60b62c3170a 100644
index 3f95cf42645..a48e07e3a6a 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
@@ -16,6 +16,8 @@

View File

@@ -1,7 +1,7 @@
From 7fd25130005527d73d87ad0fe36b86795cfb1f4f Mon Sep 17 00:00:00 2001
From dcf2c02f9ce950170b0e448b8ef3aceb19732a86 Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Wed, 12 Dec 2018 19:38:28 +0100
Subject: [PATCH 03/13] Support for Concurrent Mark Sweep (CMS) collector
Subject: [PATCH 03/17] Support for Concurrent Mark Sweep (CMS) collector
---
.../share/gc/cms/compactibleFreeListSpace.cpp | 139 ++++++++++++------
@@ -17,7 +17,7 @@ Subject: [PATCH 03/13] 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() {
@@ -422,7 +422,7 @@ index 6b109fcd2e5..8c255d6d428 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 92ce6c27b8a..41e82ae7a69 100644
index 43d761cdbb2..14af1aad21b 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -54,6 +54,7 @@

View File

@@ -1,7 +1,7 @@
From 680002f81e4f143c8c4cbd36f9f6e20a0da007ae Mon Sep 17 00:00:00 2001
From 663ccc831cc21ffddc5bc035de2c72666df00a4e 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 04/13] Fix class cast exception on redefinition of class A,
Subject: [PATCH 04/17] 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 04/13] 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 cd5489955c8..889f228d087 100644
index 312d9af2527..4312c2c4ca9 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) {

View File

@@ -1,7 +1,7 @@
From 4b8bc521e3e494da9761f904d2dabbd5810a4461 Mon Sep 17 00:00:00 2001
From 25cb9b5fa97749d3bc13dc6c848c7eb9cc1b66bb Mon Sep 17 00:00:00 2001
From: skybber <lada.dvorak7@gmail.com>
Date: Wed, 14 Nov 2018 21:20:08 +0100
Subject: [PATCH 05/13] HotswapAgent integration
Subject: [PATCH 05/17] HotswapAgent integration
It include:
@@ -259,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, \
))
@@ -392,7 +392,7 @@ index 82311e69fd6..bd39f8595b2 100644
CFLAGS := -DENABLE_ARG_FILES, \
))
diff --git a/src/hotspot/share/classfile/vmSymbols.hpp b/src/hotspot/share/classfile/vmSymbols.hpp
index 6e0b95ef5e8..8e0f1610f31 100644
index 41e9a84cd69..1f67eb202b5 100644
--- a/src/hotspot/share/classfile/vmSymbols.hpp
+++ b/src/hotspot/share/classfile/vmSymbols.hpp
@@ -342,6 +342,7 @@
@@ -513,7 +513,7 @@ index cc7f71a4404..b2bab2e1f44 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 ab5d08390ff..7720ceebc81 100644
index 7b061359c1d..fc0405b5df2 100644
--- a/src/hotspot/share/runtime/globals.hpp
+++ b/src/hotspot/share/runtime/globals.hpp
@@ -32,6 +32,12 @@
@@ -529,7 +529,7 @@ index ab5d08390ff..7720ceebc81 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 " \

View File

@@ -1,7 +1,7 @@
From 1f0bf4680faa58c5d234cac5440da4cf671e6291 Mon Sep 17 00:00:00 2001
From 28d352b4b7cda96a37f95d75cf576570271157e3 Mon Sep 17 00:00:00 2001
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
Date: Sun, 4 Oct 2020 21:12:12 +0200
Subject: [PATCH 06/13] Support for Lambda class redefinition
Subject: [PATCH 06/17] 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 e464b94b420..791b49c68ad 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,7 +111,7 @@ index 717f34ce9a0..dc111846c12 100644
TRAPS);
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index 41e82ae7a69..b94caa39562 100644
index 14af1aad21b..0b239b2ff6d 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -488,6 +488,8 @@ void VM_EnhancedRedefineClasses::doit() {
@@ -208,7 +208,7 @@ index 41e82ae7a69..b94caa39562 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 60b62c3170a..d8a11b51fe9 100644
index a48e07e3a6a..3551b06ecde 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
@@ -116,6 +116,7 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {

View File

@@ -1,7 +1,7 @@
From 278abd7996ebb06b3a217b7c677ed947020bbeae Mon Sep 17 00:00:00 2001
From 3b6c7d2f807857712df6fd51a36a5a906b705f57 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 07/13] Fix "no original bytecode found" error if method with
Subject: [PATCH 07/17] Fix "no original bytecode found" error if method with
bkp is missing
Sometimes IDE can deploy class with erroneous method, such method has
@@ -102,7 +102,7 @@ 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 b94caa39562..1fbba406087 100644
index 0b239b2ff6d..aba99bb60fa 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -1356,14 +1356,16 @@ void VM_EnhancedRedefineClasses::unpatch_bytecode(Method* method) {

View File

@@ -1,7 +1,7 @@
From 198a6a93669a1957f472b25afa89b7fe354ceb8f Mon Sep 17 00:00:00 2001
From 102b7a0ba69c1411ec926985c79a36a2fc1978dd 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 08/13] Replace deleted method with
Subject: [PATCH 08/17] Replace deleted method with
Universe::throw_no_such_method_error
---

View File

@@ -1,7 +1,7 @@
From 65ff0a93f95b86fe7a53c571d34c9cc478cb701a Mon Sep 17 00:00:00 2001
From a89a7aad1d44b540e4704332939d639e66392bd5 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 09/13] Support for G1 gc
Subject: [PATCH 09/17] Support for G1 gc
---
src/hotspot/share/gc/g1/g1CollectedHeap.cpp | 20 +++
@@ -990,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() {
@@ -1040,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..e67fc2dd58f 100644
index aba99bb60fa..8b6fad2128e 100644
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
@@ -36,7 +36,6 @@
@@ -1244,7 +1244,7 @@ index 1fbba406087..e67fc2dd58f 100644
ResourceMark mark(THREAD);
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
index d8a11b51fe9..9755944d70b 100644
index 3551b06ecde..62a0fbf54d4 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 {

View File

@@ -1,7 +1,7 @@
From eaba630276969a0ebbb410716bae44875c6c75a2 Mon Sep 17 00:00:00 2001
From 2c6512bb54400e3836a3c348c10c78557c1abbf5 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/13] Change log level in advanced redefinition
Subject: [PATCH 10/17] 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
@@ -11,7 +11,7 @@ Subject: [PATCH 10/13] Change log level in advanced redefinition
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
index e67fc2dd58f..5be9bb74305 100644
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) {

View File

@@ -1,7 +1,7 @@
From 5b4b2a8af787fed3cdaee5c603dd7fe99246dae2 Mon Sep 17 00:00:00 2001
From 9c8d44a088bfd73f9be3678110a67a5ed8954c8a 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/13] AllowEnhancedClassRedefinition is false (disabled) by
Subject: [PATCH 11/17] AllowEnhancedClassRedefinition is false (disabled) by
default
---
@@ -9,10 +9,10 @@ Subject: [PATCH 11/13] AllowEnhancedClassRedefinition is false (disabled) by
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/hotspot/share/runtime/globals.hpp b/src/hotspot/share/runtime/globals.hpp
index 7720ceebc81..f7e3fd04593 100644
index fc0405b5df2..607a39449dc 100644
--- a/src/hotspot/share/runtime/globals.hpp
+++ b/src/hotspot/share/runtime/globals.hpp
@@ -2679,7 +2679,7 @@ define_pd_global(uint64_t,MaxRAM, 1ULL*G);
@@ -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") \
\

View File

@@ -1,7 +1,7 @@
From 27935fd012ac48b5b360cae224d2a9cc63012433 Mon Sep 17 00:00:00 2001
From 69bc6c03ad25d485182d1b17f265a59ff98e3352 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 12/13] add jvmtiEnhancedRedefineClasses.* to CMakeLists.txt
Subject: [PATCH 12/17] add jvmtiEnhancedRedefineClasses.* to CMakeLists.txt
---
jb/project/hotspot-cmake/CMakeLists.txt | 2 ++

View File

@@ -1,14 +1,14 @@
From 82c3c60345b38acd04e6f1aea7d43e9283a71b8f Mon Sep 17 00:00:00 2001
From 5e66d1cd39dcae56adfa3a4785e8da47218d7b72 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/13] Set HOTSPOT_VM_DISTRO=Dynamic Code Evolution
Subject: [PATCH 13/17] 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 6e7a13956b2..47ec50e6d22 100644
index bb9d863c992..e462ab57217 100644
--- a/make/autoconf/version-numbers
+++ b/make/autoconf/version-numbers
@@ -44,7 +44,7 @@ PRODUCT_NAME=OpenJDK

View File

@@ -0,0 +1,71 @@
From 5b1408b47bd86a5bd2a4aa1f39705687efc73223 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/17] 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 c5bae0e9c9c0b0a6e05a966648fb2ddaf9a16564 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/17] 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 5504812403a0673c428fc5589cd94f2c3fea7616 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/17] 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 791b49c68ad..011a14eab32 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 8afe8985026..4e7b39406fa 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 4312c2c4ca9..7335f0cffc9 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 a9bc3c0b7acfe8432f4f50362df3d8f95d7b5d9d 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/17] 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 1b2070d686f..1178c863c30 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

@@ -0,0 +1,26 @@
From dbce1c2db6bcb28327fd715d389c824805174690 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

@@ -114,6 +114,7 @@ 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} \

View File

@@ -35,6 +35,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

@@ -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,52 +0,0 @@
#
# Copyright (c) 2015, 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.
#
default: all
include $(SPEC)
include MakeBase.gmk
##########################################################################################
### CLDRConverter needs the JRE time zone names from the java.base source.
define cldrconverter_copytznames
$(MKDIR) -p '$(@D)'
$(RM) '$@'
$(SED) -e "s/package sun.util.resources/package build.tools.cldrconverter/" \
-e "s/extends TimeZoneNamesBundle//" \
-e "s/protected final/static final/" \
< $(<) > $@
endef
$(eval $(call SetupCopyFiles,COPY_INTERIM_CLDRCONVERTER, \
SRC := $(TOPDIR)/src/java.base/share/classes/sun/util/resources, \
DEST := $(BUILDTOOLS_OUTPUTDIR)/interim_cldrconverter_classes/build/tools/cldrconverter, \
FILES := TimeZoneNames.java, \
MACRO := cldrconverter_copytznames))
##########################################################################################
all: $(COPY_INTERIM_CLDRCONVERTER)

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

@@ -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

@@ -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

View File

@@ -85,6 +85,20 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBFFI],
[LIBFFI_FOUND=no]
)
fi
# on macos we need a special case for system's libffi as
# headers are located only in sdk in $SYSROOT and in ffi subfolder
if test "x$LIBFFI_FOUND" = xno; then
if test "x$SYSROOT" != "x"; then
AC_CHECK_HEADER([$SYSROOT/usr/include/ffi/ffi.h],
[
LIBFFI_FOUND=yes
LIBFFI_CFLAGS="-I${SYSROOT}/usr/include/ffi"
LIBFFI_LIBS=-lffi
],
[LIBFFI_FOUND=no]
)
fi
fi
if test "x$LIBFFI_FOUND" = xno; then
HELP_MSG_MISSING_DEPENDENCY([ffi])
AC_MSG_ERROR([Could not find libffi! $HELP_MSG])

View File

@@ -49,10 +49,23 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU],
VAR_CPU_ENDIAN=little
;;
arm*)
VAR_CPU=arm
VAR_CPU_ARCH=arm
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=little
# Second argument is the os name from the trip/quad.
# on macos-aarch64, triplet returned by autoconf is
# arm-darwin*, but on darwin only aarch64 is present.
case "$2" in
*darwin*)
VAR_CPU=aarch64
VAR_CPU_ARCH=aarch64
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=little
;;
*)
VAR_CPU=arm
VAR_CPU_ARCH=arm
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=little
;;
esac
;;
aarch64)
VAR_CPU=aarch64
@@ -215,7 +228,7 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
PLATFORM_EXTRACT_VARS_FROM_OS($build_os)
PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu)
PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu, $build_os)
# ..and setup our own variables. (Do this explicitly to facilitate searching)
OPENJDK_BUILD_OS="$VAR_OS"
if test "x$VAR_OS_TYPE" != x; then
@@ -245,7 +258,7 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
PLATFORM_EXTRACT_VARS_FROM_OS($host_os)
PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu)
PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu, $host_os)
# ... and setup our own variables. (Do this explicitly to facilitate searching)
OPENJDK_TARGET_OS="$VAR_OS"
if test "x$VAR_OS_TYPE" != x; then

View File

@@ -948,9 +948,14 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
# FIXME: we should list the discovered compilers as an exclude pattern!
# If we do that, we can do this detection before POST_DETECTION, and still
# find the build compilers in the tools dir, if needed.
BASIC_REQUIRE_PROGS(BUILD_CC, [cl cc gcc])
if test "x$OPENJDK_BUILD_OS" = xmacosx; then
BASIC_REQUIRE_PROGS(BUILD_CC, [clang cl cc gcc])
BASIC_REQUIRE_PROGS(BUILD_CXX, [clang++ cl CC g++])
else
BASIC_REQUIRE_PROGS(BUILD_CC, [cl cc gcc])
BASIC_REQUIRE_PROGS(BUILD_CXX, [cl CC g++])
fi
BASIC_FIXUP_EXECUTABLE(BUILD_CC)
BASIC_REQUIRE_PROGS(BUILD_CXX, [cl CC g++])
BASIC_FIXUP_EXECUTABLE(BUILD_CXX)
BASIC_PATH_PROGS(BUILD_NM, nm gcc-nm)
BASIC_FIXUP_EXECUTABLE(BUILD_NM)

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2019, 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
@@ -28,12 +28,12 @@
DEFAULT_VERSION_FEATURE=11
DEFAULT_VERSION_INTERIM=0
DEFAULT_VERSION_UPDATE=8
DEFAULT_VERSION_PATCH=0
DEFAULT_VERSION_UPDATE=9
DEFAULT_VERSION_PATCH=1
DEFAULT_VERSION_EXTRA1=0
DEFAULT_VERSION_EXTRA2=0
DEFAULT_VERSION_EXTRA3=0
DEFAULT_VERSION_DATE=2020-07-14
DEFAULT_VERSION_DATE=2020-11-04
DEFAULT_VERSION_CLASSFILE_MAJOR=55 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
DEFAULT_VERSION_CLASSFILE_MINOR=0
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="10 11"

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2014, 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
@@ -63,6 +63,7 @@ BOOT_MODULES += \
jdk.management \
jdk.management.jfr \
jdk.management.agent \
jdk.naming.ldap \
jdk.net \
jdk.sctp \
jdk.unsupported \
@@ -165,6 +166,7 @@ DOCS_MODULES += \
jdk.management.agent \
jdk.management.jfr \
jdk.naming.dns \
jdk.naming.ldap \
jdk.naming.rmi \
jdk.net \
jdk.pack \
@@ -197,21 +199,6 @@ HOTSPOT_MODULES := \
jdk.internal.vm.compiler.management \
#
# The native dynamic libraries in these modules will also get built into static
# libraries for consumption by downstream projects that need to statically link
# the JDK libraries. Those static libraries are not part of the main JDK
# distribution.
STATIC_LIBS_MODULES := \
java.base \
jdk.crypto.ec \
jdk.security.auth \
java.prefs \
java.security.jgss \
java.smartcardio \
jdk.crypto.cryptoki \
jdk.net \
#
################################################################################
# Some platforms don't have the serviceability agent

View File

@@ -1189,7 +1189,7 @@ define SetupNativeCompilationBody
# This only works if the openjdk_codesign identity is present on the system. Let
# silently fail otherwise.
ifneq ($(CODESIGN), )
$(CODESIGN) -s "$(MACOSX_CODESIGN_IDENTITY)" --timestamp --options runtime \
$(CODESIGN) -f -s "$(MACOSX_CODESIGN_IDENTITY)" --timestamp --options runtime \
--entitlements $$(call GetEntitlementsFile, $$@) $$@
endif
endif

View File

@@ -155,9 +155,10 @@ define SetupTextFileProcessingBody
# Convert the REPLACEMENTS syntax ( A => B ; C => D ; ...) to a sed command
# line (-e "s/A/B/g" -e "s/C/D/g" ...), basically by replacing '=>' with '/'
# and ';' with '/g" -e "s/', and adjusting for edge cases.
# '&' has special meaning in sed so needs to be escaped.
$1_REPLACEMENTS_COMMAND_LINE := $(SED) -e 's$$($1_SEP)$$(subst $$(SPACE);$$(SPACE),$$($1_SEP)g' \
-e 's$$($1_SEP),$$(subst $$(SPACE)=>$$(SPACE),$$($1_SEP),$$(subst $$(SPACE)=>$$(SPACE);$$(SPACE),$$($1_SEP)$$($1_SEP)g' \
-e 's$$($1_SEP),$$(strip $$($1_REPLACEMENTS)))))$$($1_SEP)g'
-e 's$$($1_SEP),$$(subst &,\&,$$(strip $$($1_REPLACEMENTS))))))$$($1_SEP)g'
else
# We don't have any replacements, just pipe the file through cat.
$1_REPLACEMENTS_COMMAND_LINE := $(CAT)

View File

@@ -1,8 +1,7 @@
#! java BlacklistedCertsConverter SHA-256
# The line above must be the first line of the blacklisted.certs.pem
# file inside src/share/lib/security/. It will be ignored if added in
# src/closed/share/lib/security/blacklisted.certs.pem.
# The line above must be the first line of this file. Do not
# remove it.
// Subject: CN=Digisign Server ID (Enrich),
// OU=457608-K,

View File

@@ -22,6 +22,8 @@
<string>????</string>
<key>CFBundleVersion</key>
<string>@@VERSION@@</string>
<key>NSMicrophoneUsageDescription</key>
<string>The application is requesting access to the microphone.</string>
<key>JavaVM</key>
<dict>
<key>JVMCapabilities</key>

View File

@@ -22,6 +22,8 @@
<string>????</string>
<key>CFBundleVersion</key>
<string>@@VERSION@@</string>
<key>NSMicrophoneUsageDescription</key>
<string>The application is requesting access to the microphone.</string>
<key>JavaVM</key>
<dict>
<key>JVMMinimumFrameworkVersion</key>

View File

@@ -0,0 +1,43 @@
Owner: CN=Entrust Root Certification Authority - G4, OU="(c) 2015 Entrust, Inc. - for authorized use only", OU=See www.entrust.net/legal-terms, O="Entrust, Inc.", C=US
Issuer: CN=Entrust Root Certification Authority - G4, OU="(c) 2015 Entrust, Inc. - for authorized use only", OU=See www.entrust.net/legal-terms, O="Entrust, Inc.", C=US
Serial number: d9b5437fafa9390f000000005565ad58
Valid from: Wed May 27 11:11:16 GMT 2015 until: Sun Dec 27 11:41:16 GMT 2037
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 4096-bit RSA key
Version: 3
-----BEGIN CERTIFICATE-----
MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAw
gb4xCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQL
Ex9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykg
MjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAw
BgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0
MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYTAlVT
MRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1
c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJ
bmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3Qg
Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0MIICIjANBgkqhkiG9w0B
AQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3DumSXbcr3DbVZwbPLqGgZ
2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV3imz/f3E
T+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j
5pds8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAM
C1rlLAHGVK/XqsEQe9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73T
DtTUXm6Hnmo9RR3RXRv06QqsYJn7ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNX
wbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5XxNMhIWNlUpEbsZmOeX7m640A
2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV7rtNOzK+mndm
nqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8
dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwl
N4y6mACXi0mWHv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNj
c0kCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
VR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9nMA0GCSqGSIb3DQEBCwUAA4ICAQAS
5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4QjbRaZIxowLByQzTS
Gwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht7LGr
hFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/
B7NTeLUKYvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uI
AeV8KEsD+UmDfLJ/fOPtjqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbw
H5Lk6rWS02FREAutp9lfx1/cH6NcjKF+m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+
b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKWRGhXxNUzzxkvFMSUHHuk
2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjAJOgc47Ol
IQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk
5F6G+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuY
n/PIjhs4ViFqUZPTkcpG2om3PVODLAgfi49T3f+sHw==
-----END CERTIFICATE-----

View File

@@ -0,0 +1,23 @@
Owner: CN=SSL.com Root Certification Authority ECC, O=SSL Corporation, L=Houston, ST=Texas, C=US
Issuer: CN=SSL.com Root Certification Authority ECC, O=SSL Corporation, L=Houston, ST=Texas, C=US
Serial number: 75e6dfcbc1685ba8
Valid from: Fri Feb 12 18:14:03 GMT 2016 until: Tue Feb 12 18:14:03 GMT 2041
Signature algorithm name: SHA256withECDSA
Subject Public Key Algorithm: 384-bit EC key
Version: 3
-----BEGIN CERTIFICATE-----
MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMC
VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T
U0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNDAzWhcNNDEwMjEyMTgxNDAz
WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0
b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNvbSBS
b290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB
BAAiA2IABEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI
7Z4INcgn64mMU1jrYor+8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPg
CemB+vNH06NjMGEwHQYDVR0OBBYEFILRhXMw5zUE044CkvvlpNHEIejNMA8GA1Ud
EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTTjgKS++Wk0cQh6M0wDgYD
VR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCWe+0F+S8T
kdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+
gA0z5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl
-----END CERTIFICATE-----

View File

@@ -0,0 +1,41 @@
Owner: CN=SSL.com EV Root Certification Authority RSA R2, O=SSL Corporation, L=Houston, ST=Texas, C=US
Issuer: CN=SSL.com EV Root Certification Authority RSA R2, O=SSL Corporation, L=Houston, ST=Texas, C=US
Serial number: 56b629cd34bc78f6
Valid from: Wed May 31 18:14:37 GMT 2017 until: Fri May 30 18:14:37 GMT 2042
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 4096-bit RSA key
Version: 3
-----BEGIN CERTIFICATE-----
MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNV
BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UE
CgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2Vy
dGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMB4XDTE3MDUzMTE4MTQzN1oXDTQy
MDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4G
A1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQD
DC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvq
M0fNTPl9fb69LT3w23jhhqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssuf
OePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7wcXHswxzpY6IXFJ3vG2fThVUCAtZJycxa
4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTOZw+oz12WGQvE43LrrdF9
HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+B6KjBSYR
aZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcA
b9ZhCBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQ
Gp8hLH94t2S42Oim9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQV
PWKchjgGAGYS5Fl2WlPAApiiECtoRHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMO
pgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+SlmJuwgUHfbSguPvuUCYHBBXtSu
UDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48+qvWBkofZ6aY
MBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV
HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa4
9QaAJadz20ZpqJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBW
s47LCp1Jjr+kxJG7ZhcFUZh1++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5
Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nxY/hoLVUE0fKNsKTPvDxeH3jnpaAg
cLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2GguDKBAdRUNf/ktUM
79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDzOFSz
/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXt
ll9ldDz7CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEm
Kf7GUmG6sXP/wwyc5WxqlD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKK
QbNmC1r7fSOl8hqw/96bg5Qu0T/fkreRrwU7ZcegbLHNYhLDkBvjJc40vG93drEQ
w/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1hlMYegouCRw2n5H9gooi
S9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX9hwJ1C07
mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w==
-----END CERTIFICATE-----

View File

@@ -0,0 +1,41 @@
Owner: CN=SSL.com Root Certification Authority RSA, O=SSL Corporation, L=Houston, ST=Texas, C=US
Issuer: CN=SSL.com Root Certification Authority RSA, O=SSL Corporation, L=Houston, ST=Texas, C=US
Serial number: 7b2c9bd316803299
Valid from: Fri Feb 12 17:39:39 GMT 2016 until: Tue Feb 12 17:39:39 GMT 2041
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 4096-bit RSA key
Version: 3
-----BEGIN CERTIFICATE-----
MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE
BhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQK
DA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYwMjEyMTczOTM5WhcNNDEwMjEyMTcz
OTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv
dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv
bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcN
AQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2R
xFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aX
qhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcC
C52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZExqysdBP+lSgQ3
6YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkpk8zruFvh
/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrF
YD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93E
JNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVc
US4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8
ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnIk2snYxnP/Okm
+Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4sbE6x/c+cCbqi
M+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV
HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4G
A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGV
cpNxJK1ok1iOMq8bs3AD/CUrdIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBc
Hadm47GUBwwyOabqG7B52B2ccETjit3E+ZUfijhDPwGFpUenPUayvOUiaPd7nNgs
PgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAslu1OJD7OAUN5F7kR/
q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjqerQ0
cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jr
a6x+3uxjMxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90I
H37hVZkLId6Tngr75qNJvTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/Y
K9f1JmzJBjSWFupwWRoyeXkLtoh/D1JIPb9s2KJELtFOt3JY04kTlf5Eq/jXixtu
nLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406ywKBjYZC6VWg3dGq2ktuf
oYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NIWuuA8ShY
Ic2wBlX7Jz9TkHCpBB5XJ7k=
-----END CERTIFICATE-----

View File

@@ -23,10 +23,10 @@
# 0xF9FD -> u256F -> 0xA2A3
# 0xA2CC -> u5341 -> 0xA451
# 0xA2CE -> u5345 -> 0xA4CA
# 0xF9F9 -> u2550 -> 0xA2A4
# 0xF9E9 -> u255E -> 0xA2A5
# 0xF9EA -> u256A -> 0xA2A6
# 0xF9EB -> u2561 -> 0xA2A7
# 0xA2A4 -> u2550 -> 0xF9F9
# 0xA2A5 -> u255E -> 0xF9E9
# 0xA2A6 -> u256A -> 0xF9EA
# 0xA2A7 -> u2561 -> 0xF9EB
#
# Column #1 is the cp950 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)

View File

@@ -6,13 +6,13 @@
# (we don't need a MS950.c2b, the entries of MS950.c2b-irreversible
# are added in MS950.b2c already)
#
0xF9FA 0x256D
0xA2A4 0x2550
0xA2A5 0x255E
0xA2A6 0x256A
0xA2A7 0x2561
0xA2CC 0x5341
0xA2CE 0x5345
0xF9FA 0x256D
0xF9FB 0x256E
0xF9FC 0x2570
0xF9FD 0x256F
0xA2CC 0x5341
0xA2CE 0x5345
0xF9F9 0x2550
0xF9E9 0x255E
0xF9EA 0x256A
0xF9EB 0x2561

View File

@@ -1,2 +1,2 @@
Github: https://raw.githubusercontent.com/publicsuffix/list/33c1c788decfed1052089fa27e3005fe4088dec3/public_suffix_list.dat
Date: 2019-09-28
Github: https://raw.githubusercontent.com/publicsuffix/list/cbbba1d234670453df9c930dfbf510c0474d4301/public_suffix_list.dat
Date: 2020-04-24

View File

@@ -79,7 +79,6 @@ exchange.aero
express.aero
federation.aero
flight.aero
freight.aero
fuel.aero
gliding.aero
government.aero
@@ -213,6 +212,7 @@ ac.at
co.at
gv.at
or.at
sth.ac.at
// au : https://en.wikipedia.org/wiki/.au
// http://www.auda.org.au/
@@ -241,7 +241,7 @@ wa.au
// 3LDs
act.edu.au
catholic.edu.au
eq.edu.au
// eq.edu.au - Removed at the request of the Queensland Department of Education
nsw.edu.au
nt.edu.au
qld.edu.au
@@ -719,11 +719,13 @@ gouv.ci
*.ck
!www.ck
// cl : https://en.wikipedia.org/wiki/.cl
// cl : https://www.nic.cl
// Confirmed by .CL registry <hsalgado@nic.cl>
cl
gov.cl
gob.cl
aprendemas.cl
co.cl
gob.cl
gov.cl
mil.cl
// cm : https://en.wikipedia.org/wiki/.cm plus bug 981927
@@ -982,8 +984,19 @@ fi
// TODO: Check for updates (expected to be phased out around Q1/2009)
aland.fi
// fj : https://en.wikipedia.org/wiki/.fj
*.fj
// fj : http://domains.fj/
// Submitted by registry <garth.miller@cocca.org.nz> 2020-02-11
fj
ac.fj
biz.fj
com.fj
gov.fj
info.fj
mil.fj
name.fj
net.fj
org.fj
pro.fj
// fk : https://en.wikipedia.org/wiki/.fk
*.fk
@@ -1368,7 +1381,7 @@ it
gov.it
edu.it
// Reserved geo-names (regions and provinces):
// http://www.nic.it/sites/default/files/docs/Regulation_assignation_v7.1.pdf
// https://www.nic.it/sites/default/files/archivio/docs/Regulation_assignation_v7.1.pdf
// Regions
abr.it
abruzzo.it
@@ -5886,14 +5899,9 @@ gov.rs
in.rs
org.rs
// ru : https://cctld.ru/en/domains/domens_ru/reserved/
// ru : https://cctld.ru/files/pdf/docs/en/rules_ru-rf.pdf
// Submitted by George Georgievsky <gug@cctld.ru>
ru
ac.ru
edu.ru
gov.ru
int.ru
mil.ru
test.ru
// rw : https://www.ricta.org.rw/sites/default/files/resources/registry_registrar_contract_0.pdf
rw
@@ -6038,9 +6046,12 @@ org.sn
perso.sn
univ.sn
// so : http://www.soregistry.com/
// so : http://sonic.so/policies/
so
com.so
edu.so
gov.so
me.so
net.so
org.so
@@ -6510,7 +6521,7 @@ k12.ok.us
k12.or.us
k12.pa.us
k12.pr.us
k12.ri.us
// k12.ri.us Removed at request of Kim Cournoyer <netsupport@staff.ri.net>
k12.sc.us
// k12.sd.us Bug 934131 - Removed at request of James Booze <James.Booze@k12.sd.us>
k12.tn.us
@@ -6797,8 +6808,13 @@ yt
مصر
// xn--e1a4c ("eu", Cyrillic) : EU
// https://eurid.eu
ею
// xn--qxa6a ("eu", Greek) : EU
// https://eurid.eu
ευ
// xn--mgbah1a3hjkrd ("Mauritania", Arabic) : MR
موريتانيا
@@ -6955,7 +6971,8 @@ yt
ак.срб
// xn--p1ai ("rf", Russian-Cyrillic) : RU
// http://www.cctld.ru/en/docs/rulesrf.php
// https://cctld.ru/files/pdf/docs/en/rules_ru-rf.pdf
// Submitted by George Georgievsky <gug@cctld.ru>
рф
// xn--wgbl6a ("Qatar", Arabic) : QA
@@ -7075,7 +7092,7 @@ org.zw
// newGTLDs
// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2019-09-26T16:43:02Z
// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2020-04-02T18:20:31Z
// This list is auto-generated, don't edit it manually.
// aaa : 2015-02-26 American Automobile Association, Inc.
aaa
@@ -7197,6 +7214,9 @@ alsace
// alstom : 2015-07-30 ALSTOM
alstom
// amazon : 2019-12-19 Amazon Registry Services, Inc.
amazon
// americanexpress : 2015-07-31 American Express Travel Related Services Company, Inc.
americanexpress
@@ -7296,7 +7316,7 @@ auto
// autos : 2014-01-09 DERAutos, LLC
autos
// avianca : 2015-01-08 Aerovias del Continente Americano S.A. Avianca
// avianca : 2015-01-08 Avianca Holdings S.A.
avianca
// aws : 2015-06-25 Amazon Registry Services, Inc.
@@ -7374,7 +7394,7 @@ bcn
// beats : 2015-05-14 Beats Electronics, LLC
beats
// beauty : 2015-12-03 L'Oréal
// beauty : 2015-12-03 XYZ.COM LLC
beauty
// beer : 2014-01-09 Minds + Machines Group Limited
@@ -7587,9 +7607,6 @@ careers
// cars : 2014-11-13 Cars Registry Limited
cars
// cartier : 2014-06-23 Richemont DNS Inc.
cartier
// casa : 2013-11-21 Minds + Machines Group Limited
casa
@@ -7668,9 +7685,6 @@ christmas
// chrome : 2014-07-24 Charleston Road Registry Inc.
chrome
// chrysler : 2015-07-30 FCA US LLC.
chrysler
// church : 2014-02-06 Binky Moon, LLC
church
@@ -7836,7 +7850,7 @@ cuisinella
// cymru : 2014-05-08 Nominet UK
cymru
// cyou : 2015-01-22 Beijing Gamease Age Digital Technology Co., Ltd.
// cyou : 2015-01-22 ShortDot SA
cyou
// dabur : 2014-02-06 Dabur India Limited
@@ -7950,9 +7964,6 @@ docs
// doctor : 2016-06-02 Binky Moon, LLC
doctor
// dodge : 2015-07-30 FCA US LLC.
dodge
// dog : 2014-12-04 Binky Moon, LLC
dog
@@ -8058,9 +8069,6 @@ eus
// events : 2013-12-05 Binky Moon, LLC
events
// everbank : 2014-05-15 EverBank
everbank
// exchange : 2014-03-06 Binky Moon, LLC
exchange
@@ -8334,7 +8342,7 @@ gmail
// gmbh : 2016-01-29 Binky Moon, LLC
gmbh
// gmo : 2014-01-09 GMO Internet Pte. Ltd.
// gmo : 2014-01-09 GMO Internet, Inc.
gmo
// gmx : 2014-04-24 1&1 Mail & Media GmbH
@@ -8409,7 +8417,7 @@ guitars
// guru : 2013-08-27 Binky Moon, LLC
guru
// hair : 2015-12-03 L'Oréal
// hair : 2015-12-03 XYZ.COM LLC
hair
// hamburg : 2014-02-20 Hamburg Top-Level-Domain GmbH
@@ -8745,9 +8753,6 @@ kyoto
// lacaixa : 2014-01-09 Fundación Bancaria Caixa dEstalvis i Pensions de Barcelona, “la Caixa”
lacaixa
// ladbrokes : 2015-08-06 LADBROKES INTERNATIONAL PLC
ladbrokes
// lamborghini : 2015-06-04 Automobili Lamborghini S.p.A.
lamborghini
@@ -8760,9 +8765,6 @@ lancaster
// lancia : 2015-07-31 Fiat Chrysler Automobiles N.V.
lancia
// lancome : 2015-07-23 L'Oréal
lancome
// land : 2013-09-10 Binky Moon, LLC
land
@@ -8814,9 +8816,6 @@ lexus
// lgbt : 2014-05-08 Afilias Limited
lgbt
// liaison : 2014-10-02 Liaison Technologies, Incorporated
liaison
// lidl : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG
lidl
@@ -8937,7 +8936,7 @@ maif
// maison : 2013-12-05 Binky Moon, LLC
maison
// makeup : 2015-01-15 L'Oréal
// makeup : 2015-01-15 XYZ.COM LLC
makeup
// man : 2014-12-04 MAN SE
@@ -9060,9 +9059,6 @@ money
// monster : 2015-09-11 XYZ.COM LLC
monster
// mopar : 2015-07-30 FCA US LLC.
mopar
// mormon : 2013-12-05 IRI Domain Management, LLC ("Applicant")
mormon
@@ -9084,9 +9080,6 @@ mov
// movie : 2015-02-05 Binky Moon, LLC
movie
// movistar : 2014-10-16 Telefónica S.A.
movistar
// msd : 2015-07-23 MSD Registry Holdings, Inc.
msd
@@ -9102,9 +9095,6 @@ mutual
// nab : 2015-08-20 National Australia Bank Limited
nab
// nadex : 2014-12-11 Nadex Domains, Inc.
nadex
// nagoya : 2013-10-24 GMO Registry, Inc.
nagoya
@@ -9345,9 +9335,6 @@ photos
// physio : 2014-05-01 PhysBiz Pty Ltd
physio
// piaget : 2014-10-16 Richemont DNS Inc.
piaget
// pics : 2013-11-14 Uniregistry, Corp.
pics
@@ -9459,7 +9446,7 @@ qpon
// quebec : 2013-12-19 PointQuébec Inc
quebec
// quest : 2015-03-26 Quest ION Limited
// quest : 2015-03-26 XYZ.COM LLC
quest
// qvc : 2015-07-30 QVC, Inc.
@@ -9789,7 +9776,7 @@ site
// ski : 2015-04-09 Afilias Limited
ski
// skin : 2015-01-15 L'Oréal
// skin : 2015-01-15 XYZ.COM LLC
skin
// sky : 2014-06-19 Sky International AG
@@ -9858,9 +9845,6 @@ spreadbetting
// srl : 2015-05-07 InterNetX, Corp
srl
// srt : 2015-07-30 FCA US LLC.
srt
// stada : 2014-11-13 STADA Arzneimittel AG
stada
@@ -9987,9 +9971,6 @@ tech
// technology : 2013-09-13 Binky Moon, LLC
technology
// telefonica : 2014-10-16 Telefónica S.A.
telefonica
// temasek : 2014-08-07 Temasek Holdings (Private) Limited
temasek
@@ -10083,7 +10064,7 @@ trading
// training : 2013-11-07 Binky Moon, LLC
training
// travel : Dog Beach, LLC
// travel : 2015-10-09 Dog Beach, LLC
travel
// travelchannel : 2015-07-02 Lifestyle Domain Holdings, Inc.
@@ -10122,9 +10103,6 @@ ubank
// ubs : 2014-12-11 UBS AG
ubs
// uconnect : 2015-07-30 FCA US LLC.
uconnect
// unicom : 2015-10-15 China United Network Communications Corporation Limited
unicom
@@ -10194,9 +10172,6 @@ visa
// vision : 2013-12-05 Binky Moon, LLC
vision
// vistaprint : 2014-09-18 Vistaprint Limited
vistaprint
// viva : 2014-11-07 Saudi Telecom Company
viva
@@ -10245,9 +10220,6 @@ wang
// wanggou : 2014-12-18 Amazon Registry Services, Inc.
wanggou
// warman : 2015-06-18 Weir Group IP Limited
warman
// watch : 2013-11-14 Binky Moon, LLC
watch
@@ -10362,7 +10334,7 @@ xin
// xn--3bst00m : 2013-09-13 Eagle Horizon Limited
集团
// xn--3ds443g : 2013-09-08 TLD REGISTRY LIMITED
// xn--3ds443g : 2013-09-08 TLD REGISTRY LIMITED OY
在线
// xn--3oq18vl8pn36a : 2015-07-02 Volkswagen (China) Investment Co., Ltd.
@@ -10377,7 +10349,7 @@ xin
// xn--45q11c : 2013-11-21 Zodiac Gemini Ltd
八卦
// xn--4gbrim : 2013-10-04 Suhub Electronic Establishment
// xn--4gbrim : 2013-10-04 Fans TLD Limited
موقع
// xn--55qw42g : 2013-11-08 China Organizational Name Administration Center
@@ -10437,10 +10409,13 @@ xin
// xn--cck2b3b : 2015-02-26 Amazon Registry Services, Inc.
ストア
// xn--cckwcxetd : 2019-12-19 Amazon Registry Services, Inc.
アマゾン
// xn--cg4bki : 2013-09-27 SAMSUNG SDS CO., LTD
삼성
// xn--czr694b : 2014-01-16 Dot Trademark TLD Holding Company Limited
// xn--czr694b : 2014-01-16 Internet DotTrademark Organisation Limited
商标
// xn--czrs0t : 2013-12-19 Binky Moon, LLC
@@ -10458,16 +10433,13 @@ xin
// xn--efvy88h : 2014-08-22 Guangzhou YU Wei Information Technology Co., Ltd.
新闻
// xn--estv75g : 2015-02-19 Industrial and Commercial Bank of China Limited
工行
// xn--fct429k : 2015-04-09 Amazon Registry Services, Inc.
家電
// xn--fhbei : 2015-01-15 VeriSign Sarl
كوم
// xn--fiq228c5hs : 2013-09-08 TLD REGISTRY LIMITED
// xn--fiq228c5hs : 2013-09-08 TLD REGISTRY LIMITED OY
中文网
// xn--fiq64b : 2013-10-14 CITIC Group Corporation
@@ -10497,7 +10469,7 @@ xin
// xn--i1b6b1a6a2e : 2013-11-14 Public Interest Registry
संगठन
// xn--imr513n : 2014-12-11 Dot Trademark TLD Holding Company Limited
// xn--imr513n : 2014-12-11 Internet DotTrademark Organisation Limited
餐厅
// xn--io0a7i : 2013-11-14 China Internet Network Information Center (CNNIC)
@@ -10506,6 +10478,9 @@ xin
// xn--j1aef : 2015-01-15 VeriSign Sarl
ком
// xn--jlq480n2rg : 2019-12-19 Amazon Registry Services, Inc.
亚马逊
// xn--jlq61u9w7b : 2015-01-08 Nokia Corporation
诺基亚
@@ -10566,7 +10541,7 @@ xin
// xn--nyqy26a : 2014-11-07 Stable Tone Limited
健康
// xn--otu796d : 2017-08-06 Dot Trademark TLD Holding Company Limited
// xn--otu796d : 2017-08-06 Jiang Yu Liang Cai Technology Company Limited
招聘
// xn--p1acf : 2013-12-12 Rusnames Limited
@@ -10641,7 +10616,7 @@ yahoo
// yamaxun : 2014-12-18 Amazon Registry Services, Inc.
yamaxun
// yandex : 2014-04-10 YANDEX, LLC
// yandex : 2014-04-10 Yandex Europe B.V.
yandex
// yodobashi : 2014-11-20 YODOBASHI CAMERA CO.,LTD.
@@ -10691,6 +10666,12 @@ cc.ua
inf.ua
ltd.ua
// Adobe : https://www.adobe.com/
// Submitted by Ian Boston <boston@adobe.com>
adobeaemcloud.com
adobeaemcloud.net
*.dev.adobeaemcloud.com
// Agnat sp. z o.o. : https://domena.pl
// Submitted by Przemyslaw Plewa <it-admin@domena.pl>
beep.pl
@@ -10808,6 +10789,10 @@ s3-website.eu-west-2.amazonaws.com
s3-website.eu-west-3.amazonaws.com
s3-website.us-east-2.amazonaws.com
// Amsterdam Wireless: https://www.amsterdamwireless.nl/
// Submitted by Imre Jonk <hostmaster@amsterdamwireless.nl>
amsw.nl
// Amune : https://amune.org/
// Submitted by Team Amune <cert@amune.org>
t3l3p0rt.net
@@ -10842,12 +10827,6 @@ sweetpepper.org
// Submitted by Vincent Tseng <vincenttseng@asustor.com>
myasustor.com
// Automattic Inc. : https://automattic.com/
// Submitted by Alex Concha <alex.concha@automattic.com>
go-vip.co
go-vip.net
wpcomstaging.com
// AVM : https://avm.de
// Submitted by Andreas Weise <a.weise@avm.de>
myfritz.net
@@ -10984,8 +10963,9 @@ certmgr.org
xenapponazure.com
// Civilized Discourse Construction Kit, Inc. : https://www.discourse.org/
// Submitted by Rishabh Nambiar <rishabh.nambiar@discourse.org>
// Submitted by Rishabh Nambiar & Michael Brown <team@discourse.org>
discourse.group
discourse.team
// ClearVox : http://www.clearvox.nl/
// Submitted by Leon Rowland <leon@clearvox.nl>
@@ -11000,6 +10980,10 @@ cleverapps.io
*.lcl.dev
*.stg.dev
// Clic2000 : https://clic2000.fr
// Submitted by Mathilde Blanchemanche <mathilde@clic2000.fr>
clic2000.net
// Cloud66 : https://www.cloud66.com/
// Submitted by Khash Sajadi <khash@cloud66.com>
c66.me
@@ -11082,6 +11066,15 @@ co.no
webhosting.be
hosting-cluster.nl
// Coordination Center for TLD RU and XN--P1AI : https://cctld.ru/en/domains/domens_ru/reserved/
// Submitted by George Georgievsky <gug@cctld.ru>
ac.ru
edu.ru
gov.ru
int.ru
mil.ru
test.ru
// COSIMO GmbH : http://www.cosimo.de
// Submitted by Rene Marticke <rmarticke@cosimo.de>
dyn.cosidns.de
@@ -11106,6 +11099,18 @@ realm.cz
// Submitted by Jonathan Rudenberg <jonathan@cupcake.io>
cupcake.is
// Curv UG : https://curv-labs.de/
// Submitted by Marvin Wiesner <Marvin@curv-labs.de>
curv.dev
// Customer OCI - Oracle Dyn https://cloud.oracle.com/home https://dyn.com/dns/
// Submitted by Gregory Drake <support@dyn.com>
// Note: This is intended to also include customer-oci.com due to wildcards implicitly including the current label
*.customer-oci.com
*.oci.customer-oci.com
*.ocp.customer-oci.com
*.ocs.customer-oci.com
// cyon GmbH : https://www.cyon.ch/
// Submitted by Dominic Luechinger <dol@cyon.ch>
cyon.link
@@ -11133,11 +11138,23 @@ firm.dk
reg.dk
store.dk
// dappnode.io : https://dappnode.io/
// Submitted by Abel Boldu / DAppNode Team <community@dappnode.io>
dyndns.dappnode.io
// dapps.earth : https://dapps.earth/
// Submitted by Daniil Burdakov <icqkill@gmail.com>
*.dapps.earth
*.bzz.dapps.earth
// Dark, Inc. : https://darklang.com
// Submitted by Paul Biggar <ops@darklang.com>
builtwithdark.com
// Datawire, Inc : https://www.datawire.io
// Submitted by Richard Li <secalert@datawire.io>
edgestack.me
// Debian : https://www.debian.org/
// Submitted by Peter Palfrader / Debian Sysadmin Team <dsa-publicsuffixlist@debian.org>
debian.net
@@ -11511,6 +11528,10 @@ dynv6.net
// Submitted by Vladimir Dudr <info@e4you.cz>
e4.cz
// En root‽ : https://en-root.org
// Submitted by Emmanuel Raviart <emmanuel@raviart.com>
en-root.fr
// Enalean SAS: https://www.enalean.com
// Submitted by Thomas Cottier <thomas.cottier@enalean.com>
mytuleap.com
@@ -11603,6 +11624,10 @@ twmail.org
mymailer.com.tw
url.tw
// Fabrica Technologies, Inc. : https://www.fabrica.dev/
// Submitted by Eric Jiang <eric@fabrica.dev>
onfabrica.com
// Facebook, Inc.
// Submitted by Peter Ruibal <public-suffix@fb.com>
apps.fbsbx.com
@@ -11686,6 +11711,7 @@ vologda.su
// Fancy Bits, LLC : http://getchannels.com
// Submitted by Aman Gupta <aman@getchannels.com>
channelsdvr.net
u.channelsdvr.net
// Fastly Inc. : http://www.fastly.com/
// Submitted by Fastly Security <security@fastly.com>
@@ -11704,6 +11730,10 @@ global.ssl.fastly.net
// Submitted by Likhachev Vasiliy <lihachev@fastvps.ru>
fastpanel.direct
fastvps-server.com
myfast.space
myfast.host
fastvps.site
fastvps.host
// Featherhead : https://featherhead.xyz/
// Submitted by Simon Menke <simon@featherhead.xyz>
@@ -11717,6 +11747,13 @@ cloud.fedoraproject.org
app.os.fedoraproject.org
app.os.stg.fedoraproject.org
// FearWorks Media Ltd. : https://fearworksmedia.co.uk
// submitted by Keith Fairley <domains@fearworksmedia.co.uk>
conn.uk
copro.uk
couk.me
ukco.me
// Fermax : https://fermax.com/
// submitted by Koen Van Isterdael <k.vanisterdael@fermax.be>
mydobiss.com
@@ -11737,9 +11774,12 @@ firebaseapp.com
// Flynn : https://flynn.io
// Submitted by Jonathan Rudenberg <jonathan@flynn.io>
flynnhub.com
flynnhosting.net
// Frederik Braun https://frederik-braun.com
// Submitted by Frederik Braun <fb@frederik-braun.com>
0e.vc
// Freebox : http://www.freebox.fr
// Submitted by Romain Fliedel <rfliedel@freebox.fr>
freebox-os.com
@@ -11773,8 +11813,9 @@ service.gov.uk
gehirn.ne.jp
usercontent.jp
// Gentlent, Limited : https://www.gentlent.com
// Submitted by Tom Klein <tklein@gentlent.com>
// Gentlent, Inc. : https://www.gentlent.com
// Submitted by Tom Klein <tom@gentlent.com>
gentapps.com
lab.ms
// GitHub, Inc.
@@ -11819,6 +11860,7 @@ a.run.app
web.app
*.0emm.com
appspot.com
*.r.appspot.com
blogspot.ae
blogspot.al
blogspot.am
@@ -11903,6 +11945,14 @@ publishproxy.com
withgoogle.com
withyoutube.com
// Aaron Marais' Gitlab pages: https://lab.aaronleem.co.za
// Submitted by Aaron Marais <its_me@aaronleem.co.za>
graphox.us
// Group 53, LLC : https://www.group53.com
// Submitted by Tyler Todd <noc@nova53.net>
awsmppl.com
// Hakaran group: http://hakaran.cz
// Submited by Arseniy Sokolov <security@hakaran.cz>
fin.ci
@@ -11952,6 +12002,7 @@ col.ng
firm.ng
gen.ng
ltd.ng
ngo.ng
ng.school
sch.so
@@ -12028,8 +12079,9 @@ pixolino.com
ipifony.net
// IServ GmbH : https://iserv.eu
// Submitted by Kim-Alexander Brodowski <kim.brodowski@iserv.eu>
// Submitted by Kim-Alexander Brodowski <info@iserv.eu>
mein-iserv.de
schulserver.de
test-iserv.de
iserv.dev
@@ -12072,6 +12124,10 @@ uni5.net
// Submitted by Roy Keene <rkeene@knightpoint.com>
knightpoint.systems
// KUROKU LTD : https://kuroku.ltd/
// Submitted by DisposaBoy <security@oya.to>
oya.to
// .KRD : http://nic.krd/data/krd/Registration%20Policy.pdf
co.krd
edu.krd
@@ -12211,8 +12267,8 @@ eu.meteorapp.com
co.pl
// Microsoft Corporation : http://microsoft.com
// Submitted by Justin Luk <juluk@microsoft.com>
azurecontainer.io
// Submitted by Mostafa Elzeiny <moelzein@microsoft.com>
*.azurecontainer.io
azurewebsites.net
azure-mobile.net
cloudapp.net
@@ -12258,6 +12314,7 @@ nctu.me
// Netlify : https://www.netlify.com
// Submitted by Jessica Parsons <jessica@netlify.com>
bitballoon.com
netlify.app
netlify.com
// Neustar Inc.
@@ -12415,12 +12472,13 @@ pcloud.host
nyc.mn
// NymNom : https://nymnom.com/
// Submitted by Dave McCormack <dave.mccormack@nymnom.com>
// Submitted by NymNom <psl@nymnom.com>
nom.ae
nom.af
nom.ai
nom.al
nym.by
nom.bz
nym.bz
nom.cl
nym.ec
@@ -12442,6 +12500,7 @@ nom.li
nym.li
nym.lt
nym.lu
nom.lv
nym.me
nom.mk
nym.mn
@@ -12466,6 +12525,10 @@ nom.uy
nom.vc
nom.vg
// Observable, Inc. : https://observablehq.com
// Submitted by Mike Bostock <dns@observablehq.com>
static.observableusercontent.com
// Octopodal Solutions, LLC. : https://ulterius.io/
// Submitted by Andrew Sampson <andrew@ulterius.io>
cya.gg
@@ -12486,6 +12549,10 @@ opencraft.hosting
// Submitted by Yngve Pettersen <yngve@opera.com>
operaunite.com
// Oursky Limited : https://skygear.io/
// Submited by Skygear Developer <hello@skygear.io>
skygearapp.com
// OutSystems
// Submitted by Duarte Santos <domain-admin@outsystemscloud.com>
outsystemscloud.com
@@ -12528,6 +12595,10 @@ gotpantheon.com
// Submitted by Steve Leung <steveleung@peplink.com>
mypep.link
// Perspecta : https://perspecta.com/
// Submitted by Kenneth Van Alstyne <kvanalstyne@perspecta.com>
perspecta.cloud
// Planet-Work : https://www.planet-work.com/
// Submitted by Frédéric VANNIÈRE <f.vanniere@planet-work.com>
on-web.fr
@@ -12537,6 +12608,12 @@ on-web.fr
*.platform.sh
*.platformsh.site
// Platter: https://platter.dev
// Submitted by Patrick Flor <patrick@platter.dev>
platter-app.com
platter-app.dev
platterp.us
// Port53 : https://port53.io/
// Submitted by Maximilian Schieder <maxi@zeug.co>
dyn53.io
@@ -12578,6 +12655,10 @@ pubtls.org
// Submitted by Xavier De Cock <xdecock@gmail.com>
qualifioapp.com
// QuickBackend: https://www.quickbackend.com
// Submitted by Dani Biro <dani@pymet.com>
qbuser.com
// Redstar Consultants : https://www.redstarconsultants.com/
// Submitted by Jons Slemmer <jons@redstarconsultants.com>
instantcloud.cn
@@ -12590,6 +12671,11 @@ ras.ru
// Submitted by Daniel Dent (https://www.danieldent.com/)
qa2.com
// QCX
// Submitted by Cassandra Beelen <cassandra@beelen.one>
qcx.io
*.sys.qcx.io
// QNAP System Inc : https://www.qnap.com
// Submitted by Nick Chang <nickchang@qnap.com>
dev-myqnapcloud.com
@@ -12612,6 +12698,7 @@ rackmaze.net
// Rancher Labs, Inc : https://rancher.com
// Submitted by Vincent Fiduccia <domains@rancher.com>
*.on-k3s.io
*.on-rancher.cloud
*.on-rio.io
@@ -12665,6 +12752,10 @@ logoip.com
// Submitted by Hanno Böck <hanno@schokokeks.org>
schokokeks.net
// Scottish Government: https://www.gov.scot
// Submitted by Martin Ellis <martin.ellis@gov.scot>
gov.scot
// Scry Security : http://www.scrysec.com
// Submitted by Shante Adam <shante@skyhat.io>
scrysec.com
@@ -12682,6 +12773,10 @@ my-firewall.org
myfirewall.org
spdns.org
// Senseering GmbH : https://www.senseering.de
// Submitted by Felix Mönckemeyer <f.moenckemeyer@senseering.de>
senseering.net
// Service Online LLC : http://drs.ua/
// Submitted by Serhii Bulakh <support@drs.ua>
biz.ua
@@ -12700,6 +12795,10 @@ myshopblocks.com
// Submitted by Craig McMahon <craig@shopitcommerce.com>
shopitsite.com
// shopware AG : https://shopware.com
// Submitted by Jens Küper <cloud@shopware.com>
shopware.store
// Siemens Mobility GmbH
// Submitted by Oliver Graebner <security@mo-siemens.io>
mo-siemens.io
@@ -12732,6 +12831,10 @@ static.land
dev.static.land
sites.static.land
// Sony Interactive Entertainment LLC : https://sie.com/
// Submitted by David Coles <david.coles@sony.com>
playstation-cloud.com
// SourceLair PC : https://www.sourcelair.com
// Submitted by Antonis Kalipetis <akalipetis@sourcelair.com>
apps.lair.io
@@ -12906,6 +13009,11 @@ inc.hk
virtualuser.de
virtual-user.de
// urown.net : https://urown.net
// Submitted by Hostmaster <hostmaster@urown.net>
urown.cloud
dnsupdate.info
// .US
// Submitted by Ed Moore <Ed.Moore@lib.de.us>
lib.de.us
@@ -12926,6 +13034,10 @@ v-info.info
// Submitted by Nathan van Bakel <info@voorloper.com>
voorloper.cloud
// V.UA Domain Administrator : https://domain.v.ua/
// Submitted by Serhii Rostilo <sergey@rostilo.kiev.ua>
v.ua
// Waffle Computer Inc., Ltd. : https://docs.waffleinfo.com
// Submitted by Masayuki Note <masa@blade.wafflecell.com>
wafflecell.com
@@ -12945,8 +13057,23 @@ wedeploy.sh
remotewd.com
// Wikimedia Labs : https://wikitech.wikimedia.org
// Submitted by Yuvi Panda <yuvipanda@wikimedia.org>
// Submitted by Arturo Borrero Gonzalez <aborrero@wikimedia.org>
wmflabs.org
toolforge.org
wmcloud.org
// WISP : https://wisp.gg
// Submitted by Stepan Fedotov <stepan@wisp.gg>
panel.gg
daemon.panel.gg
// WoltLab GmbH : https://www.woltlab.com
// Submitted by Tim Düsterhus <security@woltlab.cloud>
myforum.community
community-pro.de
diskussionsbereich.de
community-pro.net
meinforum.net
// XenonCloud GbR: https://xenoncloud.net
// Submitted by Julian Uphoff <publicsuffixlist@xenoncloud.net>
@@ -13010,7 +13137,10 @@ bss.design
// Submitted by Emil Stahl <esp@zitcom.dk>
basicserver.io
virtualserver.io
site.builder.nu
enterprisecloud.nu
// Mintere : https://mintere.com/
// Submitted by Ben Aubin <security@mintere.com>
mintere.site
// ===END PRIVATE DOMAINS===

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2015, 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
@@ -632,10 +632,37 @@ class name java/security/cert/X509CRL
class name java/security/cert/X509Certificate
-method name verify descriptor (Ljava/security/PublicKey;Ljava/security/Provider;)V
class name java/security/interfaces/RSAKey
-method name getParams descriptor ()Ljava/security/spec/AlgorithmParameterSpec;
-class name java/security/spec/DSAGenParameterSpec
class name java/security/spec/MGF1ParameterSpec
-field name SHA224 descriptor Ljava/security/spec/MGF1ParameterSpec;
-field name SHA512_224 descriptor Ljava/security/spec/MGF1ParameterSpec;
-field name SHA512_256 descriptor Ljava/security/spec/MGF1ParameterSpec;
class name java/security/spec/PSSParameterSpec
-field name TRAILER_FIELD_BC descriptor I
-method name toString descriptor ()Ljava/lang/String;
class name java/security/spec/RSAKeyGenParameterSpec
-method name <init> descriptor (ILjava/math/BigInteger;Ljava/security/spec/AlgorithmParameterSpec;)V
-method name getKeyParams descriptor ()Ljava/security/spec/AlgorithmParameterSpec;
class name java/security/spec/RSAMultiPrimePrivateCrtKeySpec
-method name <init> descriptor (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;[Ljava/security/spec/RSAOtherPrimeInfo;Ljava/security/spec/AlgorithmParameterSpec;)V
class name java/security/spec/RSAPrivateCrtKeySpec
-method name <init> descriptor (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/spec/AlgorithmParameterSpec;)V
class name java/security/spec/RSAPrivateKeySpec
-method name <init> descriptor (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/spec/AlgorithmParameterSpec;)V
-method name getParams descriptor ()Ljava/security/spec/AlgorithmParameterSpec;
class name java/security/spec/RSAPublicKeySpec
-method name <init> descriptor (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/spec/AlgorithmParameterSpec;)V
-method name getParams descriptor ()Ljava/security/spec/AlgorithmParameterSpec;
class name java/text/Collator
-method name getInstance descriptor (Ljava/util/Locale;)Ljava/text/Collator;
@@ -1457,6 +1484,14 @@ method name newUpdater descriptor (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/
-class name java/util/function/UnaryOperator
class name java/util/jar/Attributes$Name
-field name EXTENSION_INSTALLATION descriptor Ljava/util/jar/Attributes$Name;
-field name IMPLEMENTATION_VENDOR_ID descriptor Ljava/util/jar/Attributes$Name;
-field name IMPLEMENTATION_URL descriptor Ljava/util/jar/Attributes$Name;
field name EXTENSION_INSTALLATION descriptor Ljava/util/jar/Attributes$Name; flags 19
field name IMPLEMENTATION_VENDOR_ID descriptor Ljava/util/jar/Attributes$Name; flags 19
field name IMPLEMENTATION_URL descriptor Ljava/util/jar/Attributes$Name; flags 19
class name java/util/jar/JarFile
-method name stream descriptor ()Ljava/util/stream/Stream;
@@ -1535,6 +1570,9 @@ class name java/util/zip/ZipEntry
class name java/util/zip/ZipFile
-method name stream descriptor ()Ljava/util/stream/Stream;
class name javax/crypto/SealedObject
header extends java/lang/Object implements java/io/Serializable flags 21
class name javax/crypto/SecretKey
header extends java/lang/Object implements java/security/Key flags 601
@@ -1559,6 +1597,12 @@ class name javax/net/ssl/ExtendedSSLSession
-class name javax/net/ssl/SNIServerName
class name javax/net/ssl/SSLEngine
-method name getApplicationProtocol descriptor ()Ljava/lang/String;
-method name getHandshakeApplicationProtocol descriptor ()Ljava/lang/String;
-method name setHandshakeApplicationProtocolSelector descriptor (Ljava/util/function/BiFunction;)V
-method name getHandshakeApplicationProtocolSelector descriptor ()Ljava/util/function/BiFunction;
class name javax/net/ssl/SSLParameters
-method name setServerNames descriptor (Ljava/util/List;)V
-method name getServerNames descriptor ()Ljava/util/List;
@@ -1566,6 +1610,14 @@ class name javax/net/ssl/SSLParameters
-method name getSNIMatchers descriptor ()Ljava/util/Collection;
-method name setUseCipherSuitesOrder descriptor (Z)V
-method name getUseCipherSuitesOrder descriptor ()Z
-method name getApplicationProtocols descriptor ()[Ljava/lang/String;
-method name setApplicationProtocols descriptor ([Ljava/lang/String;)V
class name javax/net/ssl/SSLSocket
-method name getApplicationProtocol descriptor ()Ljava/lang/String;
-method name getHandshakeApplicationProtocol descriptor ()Ljava/lang/String;
-method name setHandshakeApplicationProtocolSelector descriptor (Ljava/util/function/BiFunction;)V
-method name getHandshakeApplicationProtocolSelector descriptor ()Ljava/util/function/BiFunction;
class name javax/net/ssl/SSLSocketFactory
-method name createSocket descriptor (Ljava/net/Socket;Ljava/io/InputStream;Z)Ljava/net/Socket;

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2015, 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
@@ -8200,6 +8200,7 @@ method name getW descriptor ()Ljava/security/spec/ECPoint; flags 401
class name java/security/interfaces/RSAKey
header extends java/lang/Object flags 601 classAnnotations @Ljdk/Profile+Annotation;(value=I1)
method name getModulus descriptor ()Ljava/math/BigInteger; flags 401
method name getParams descriptor ()Ljava/security/spec/AlgorithmParameterSpec; flags 1
class name java/security/interfaces/RSAMultiPrimePrivateCrtKey
header extends java/lang/Object implements java/security/interfaces/RSAPrivateKey flags 601 classAnnotations @Ljdk/Profile+Annotation;(value=I1)
@@ -8363,6 +8364,8 @@ field name SHA224 descriptor Ljava/security/spec/MGF1ParameterSpec; flags 19
field name SHA256 descriptor Ljava/security/spec/MGF1ParameterSpec; flags 19
field name SHA384 descriptor Ljava/security/spec/MGF1ParameterSpec; flags 19
field name SHA512 descriptor Ljava/security/spec/MGF1ParameterSpec; flags 19
field name SHA512_224 descriptor Ljava/security/spec/MGF1ParameterSpec; flags 19
field name SHA512_256 descriptor Ljava/security/spec/MGF1ParameterSpec; flags 19
method name <init> descriptor (Ljava/lang/String;)V flags 1
method name getDigestAlgorithm descriptor ()Ljava/lang/String; flags 1
@@ -8375,6 +8378,7 @@ method name getFormat descriptor ()Ljava/lang/String; flags 11
class name java/security/spec/PSSParameterSpec
header extends java/lang/Object implements java/security/spec/AlgorithmParameterSpec flags 21 classAnnotations @Ljdk/Profile+Annotation;(value=I1)
field name DEFAULT descriptor Ljava/security/spec/PSSParameterSpec; flags 19
field name TRAILER_FIELD_BC descriptor I constantValue 1 flags 19
method name <init> descriptor (Ljava/lang/String;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;II)V flags 1
method name <init> descriptor (I)V flags 1
method name getDigestAlgorithm descriptor ()Ljava/lang/String; flags 1
@@ -8382,6 +8386,7 @@ method name getMGFAlgorithm descriptor ()Ljava/lang/String; flags 1
method name getMGFParameters descriptor ()Ljava/security/spec/AlgorithmParameterSpec; flags 1
method name getSaltLength descriptor ()I flags 1
method name getTrailerField descriptor ()I flags 1
method name toString descriptor ()Ljava/lang/String; flags 1
class name java/security/spec/RSAKeyGenParameterSpec
header extends java/lang/Object implements java/security/spec/AlgorithmParameterSpec flags 21 classAnnotations @Ljdk/Profile+Annotation;(value=I1)
@@ -8390,6 +8395,8 @@ field name F4 descriptor Ljava/math/BigInteger; flags 19
method name <init> descriptor (ILjava/math/BigInteger;)V flags 1
method name getKeysize descriptor ()I flags 1
method name getPublicExponent descriptor ()Ljava/math/BigInteger; flags 1
method name <init> descriptor (ILjava/math/BigInteger;Ljava/security/spec/AlgorithmParameterSpec;)V flags 1
method name getKeyParams descriptor ()Ljava/security/spec/AlgorithmParameterSpec; flags 1
class name java/security/spec/RSAMultiPrimePrivateCrtKeySpec
header extends java/security/spec/RSAPrivateKeySpec flags 21 classAnnotations @Ljdk/Profile+Annotation;(value=I1)
@@ -8401,6 +8408,7 @@ method name getPrimeExponentP descriptor ()Ljava/math/BigInteger; flags 1
method name getPrimeExponentQ descriptor ()Ljava/math/BigInteger; flags 1
method name getCrtCoefficient descriptor ()Ljava/math/BigInteger; flags 1
method name getOtherPrimeInfo descriptor ()[Ljava/security/spec/RSAOtherPrimeInfo; flags 1
method name <init> descriptor (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;[Ljava/security/spec/RSAOtherPrimeInfo;Ljava/security/spec/AlgorithmParameterSpec;)V flags 1
class name java/security/spec/RSAOtherPrimeInfo
header extends java/lang/Object flags 21 classAnnotations @Ljdk/Profile+Annotation;(value=I1)
@@ -8418,18 +8426,23 @@ method name getPrimeQ descriptor ()Ljava/math/BigInteger; flags 1
method name getPrimeExponentP descriptor ()Ljava/math/BigInteger; flags 1
method name getPrimeExponentQ descriptor ()Ljava/math/BigInteger; flags 1
method name getCrtCoefficient descriptor ()Ljava/math/BigInteger; flags 1
method name <init> descriptor (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/spec/AlgorithmParameterSpec;)V flags 1
class name java/security/spec/RSAPrivateKeySpec
header extends java/lang/Object implements java/security/spec/KeySpec flags 21 classAnnotations @Ljdk/Profile+Annotation;(value=I1)
method name <init> descriptor (Ljava/math/BigInteger;Ljava/math/BigInteger;)V flags 1
method name getModulus descriptor ()Ljava/math/BigInteger; flags 1
method name getPrivateExponent descriptor ()Ljava/math/BigInteger; flags 1
method name <init> descriptor (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/spec/AlgorithmParameterSpec;)V flags 1
method name getParams descriptor ()Ljava/security/spec/AlgorithmParameterSpec; flags 1
class name java/security/spec/RSAPublicKeySpec
header extends java/lang/Object implements java/security/spec/KeySpec flags 21 classAnnotations @Ljdk/Profile+Annotation;(value=I1)
method name <init> descriptor (Ljava/math/BigInteger;Ljava/math/BigInteger;)V flags 1
method name getModulus descriptor ()Ljava/math/BigInteger; flags 1
method name getPublicExponent descriptor ()Ljava/math/BigInteger; flags 1
method name <init> descriptor (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/spec/AlgorithmParameterSpec;)V flags 1
method name getParams descriptor ()Ljava/security/spec/AlgorithmParameterSpec; flags 1
class name java/security/spec/X509EncodedKeySpec
header extends java/security/spec/EncodedKeySpec flags 21 classAnnotations @Ljdk/Profile+Annotation;(value=I1)
@@ -10429,6 +10442,7 @@ method name values descriptor ()[Ljava/time/chrono/JapaneseEra; flags 9
method name getValue descriptor ()I flags 1
method name range descriptor (Ljava/time/temporal/TemporalField;)Ljava/time/temporal/ValueRange; flags 1
method name toString descriptor ()Ljava/lang/String; flags 1
method name getDisplayName descriptor (Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String; flags 1
class name java/time/chrono/MinguoChronology
header extends java/time/chrono/AbstractChronology implements java/io/Serializable flags 31 classAnnotations @Ljdk/Profile+Annotation;(value=I1)
@@ -15563,15 +15577,15 @@ field name MAIN_CLASS descriptor Ljava/util/jar/Attributes$Name; flags 19
field name SEALED descriptor Ljava/util/jar/Attributes$Name; flags 19
field name EXTENSION_LIST descriptor Ljava/util/jar/Attributes$Name; flags 19
field name EXTENSION_NAME descriptor Ljava/util/jar/Attributes$Name; flags 19
field name EXTENSION_INSTALLATION descriptor Ljava/util/jar/Attributes$Name; flags 19
field name IMPLEMENTATION_TITLE descriptor Ljava/util/jar/Attributes$Name; flags 19
field name IMPLEMENTATION_VERSION descriptor Ljava/util/jar/Attributes$Name; flags 19
field name IMPLEMENTATION_VENDOR descriptor Ljava/util/jar/Attributes$Name; flags 19
field name IMPLEMENTATION_VENDOR_ID descriptor Ljava/util/jar/Attributes$Name; flags 19
field name IMPLEMENTATION_URL descriptor Ljava/util/jar/Attributes$Name; flags 19
field name SPECIFICATION_TITLE descriptor Ljava/util/jar/Attributes$Name; flags 19
field name SPECIFICATION_VERSION descriptor Ljava/util/jar/Attributes$Name; flags 19
field name SPECIFICATION_VENDOR descriptor Ljava/util/jar/Attributes$Name; flags 19
field name EXTENSION_INSTALLATION descriptor Ljava/util/jar/Attributes$Name; flags 19 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;
field name IMPLEMENTATION_VENDOR_ID descriptor Ljava/util/jar/Attributes$Name; flags 19 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;
field name IMPLEMENTATION_URL descriptor Ljava/util/jar/Attributes$Name; flags 19 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;
method name <init> descriptor (Ljava/lang/String;)V flags 1
method name equals descriptor (Ljava/lang/Object;)Z flags 1
method name hashCode descriptor ()I flags 1
@@ -16698,6 +16712,7 @@ method name <init> descriptor ()V flags 1
class name javax/crypto/SealedObject
header extends java/lang/Object implements java/io/Serializable flags 21
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
field name encodedParams descriptor [B flags 4
method name <init> descriptor (Ljava/io/Serializable;Ljavax/crypto/Cipher;)V thrownTypes java/io/IOException,javax/crypto/IllegalBlockSizeException flags 1
method name <init> descriptor (Ljavax/crypto/SealedObject;)V flags 4
@@ -17086,6 +17101,10 @@ method name setEnableSessionCreation descriptor (Z)V flags 401
method name getEnableSessionCreation descriptor ()Z flags 401
method name getSSLParameters descriptor ()Ljavax/net/ssl/SSLParameters; flags 1
method name setSSLParameters descriptor (Ljavax/net/ssl/SSLParameters;)V flags 1
method name getApplicationProtocol descriptor ()Ljava/lang/String; flags 1
method name getHandshakeApplicationProtocol descriptor ()Ljava/lang/String; flags 1
method name setHandshakeApplicationProtocolSelector descriptor (Ljava/util/function/BiFunction;)V flags 1 signature (Ljava/util/function/BiFunction<Ljavax/net/ssl/SSLEngine;Ljava/util/List<Ljava/lang/String;>;Ljava/lang/String;>;)V
method name getHandshakeApplicationProtocolSelector descriptor ()Ljava/util/function/BiFunction; flags 1 signature ()Ljava/util/function/BiFunction<Ljavax/net/ssl/SSLEngine;Ljava/util/List<Ljava/lang/String;>;Ljava/lang/String;>;
class name javax/net/ssl/SSLEngineResult
header extends java/lang/Object flags 21 classAnnotations @Ljdk/Profile+Annotation;(value=I1)
@@ -17156,6 +17175,8 @@ method name setSNIMatchers descriptor (Ljava/util/Collection;)V flags 11 signatu
method name getSNIMatchers descriptor ()Ljava/util/Collection; flags 11 signature ()Ljava/util/Collection<Ljavax/net/ssl/SNIMatcher;>;
method name setUseCipherSuitesOrder descriptor (Z)V flags 11
method name getUseCipherSuitesOrder descriptor ()Z flags 11
method name getApplicationProtocols descriptor ()[Ljava/lang/String; flags 1
method name setApplicationProtocols descriptor ([Ljava/lang/String;)V flags 1
class name javax/net/ssl/SSLPeerUnverifiedException
header extends javax/net/ssl/SSLException flags 21 classAnnotations @Ljdk/Profile+Annotation;(value=I1)
@@ -17272,6 +17293,10 @@ method name setEnableSessionCreation descriptor (Z)V flags 401
method name getEnableSessionCreation descriptor ()Z flags 401
method name getSSLParameters descriptor ()Ljavax/net/ssl/SSLParameters; flags 1
method name setSSLParameters descriptor (Ljavax/net/ssl/SSLParameters;)V flags 1
method name getApplicationProtocol descriptor ()Ljava/lang/String; flags 1
method name getHandshakeApplicationProtocol descriptor ()Ljava/lang/String; flags 1
method name setHandshakeApplicationProtocolSelector descriptor (Ljava/util/function/BiFunction;)V flags 1 signature (Ljava/util/function/BiFunction<Ljavax/net/ssl/SSLSocket;Ljava/util/List<Ljava/lang/String;>;Ljava/lang/String;>;)V
method name getHandshakeApplicationProtocolSelector descriptor ()Ljava/util/function/BiFunction; flags 1 signature ()Ljava/util/function/BiFunction<Ljavax/net/ssl/SSLSocket;Ljava/util/List<Ljava/lang/String;>;Ljava/lang/String;>;
class name javax/net/ssl/SSLSocketFactory
header extends javax/net/SocketFactory flags 421 classAnnotations @Ljdk/Profile+Annotation;(value=I1)

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2015, 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
@@ -2083,13 +2083,42 @@ method name equals descriptor (Ljava/lang/Object;)Z flags 1
method name toString descriptor ()Ljava/lang/String; flags 1
method name clone descriptor ()Ljava/lang/Object; thrownTypes java/lang/CloneNotSupportedException flags 1041
class name java/security/interfaces/RSAKey
-method name getParams descriptor ()Ljava/security/spec/AlgorithmParameterSpec;
class name java/security/spec/EncodedKeySpec
method name <init> descriptor ([BLjava/lang/String;)V flags 4
method name getAlgorithm descriptor ()Ljava/lang/String; flags 1
class name java/security/spec/MGF1ParameterSpec
-field name SHA512_224 descriptor Ljava/security/spec/MGF1ParameterSpec;
-field name SHA512_256 descriptor Ljava/security/spec/MGF1ParameterSpec;
class name java/security/spec/PKCS8EncodedKeySpec
method name <init> descriptor ([BLjava/lang/String;)V flags 1
class name java/security/spec/PSSParameterSpec
-field name TRAILER_FIELD_BC descriptor I
-method name toString descriptor ()Ljava/lang/String;
class name java/security/spec/RSAKeyGenParameterSpec
-method name <init> descriptor (ILjava/math/BigInteger;Ljava/security/spec/AlgorithmParameterSpec;)V
-method name getKeyParams descriptor ()Ljava/security/spec/AlgorithmParameterSpec;
class name java/security/spec/RSAMultiPrimePrivateCrtKeySpec
-method name <init> descriptor (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;[Ljava/security/spec/RSAOtherPrimeInfo;Ljava/security/spec/AlgorithmParameterSpec;)V
class name java/security/spec/RSAPrivateCrtKeySpec
-method name <init> descriptor (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/spec/AlgorithmParameterSpec;)V
class name java/security/spec/RSAPrivateKeySpec
-method name <init> descriptor (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/spec/AlgorithmParameterSpec;)V
-method name getParams descriptor ()Ljava/security/spec/AlgorithmParameterSpec;
class name java/security/spec/RSAPublicKeySpec
-method name <init> descriptor (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/spec/AlgorithmParameterSpec;)V
-method name getParams descriptor ()Ljava/security/spec/AlgorithmParameterSpec;
class name java/security/spec/X509EncodedKeySpec
method name <init> descriptor ([BLjava/lang/String;)V flags 1
@@ -2224,9 +2253,6 @@ innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang
class name java/time/chrono/IsoChronology
method name epochSecond descriptor (IIIIIILjava/time/ZoneOffset;)J flags 1
class name java/time/chrono/JapaneseEra
method name getDisplayName descriptor (Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String; flags 1
class name java/time/format/DateTimeFormatter
header extends java/lang/Object flags 31
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
@@ -3221,12 +3247,6 @@ header extends java/lang/Object implements java/util/function/Function flags 601
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
class name java/util/jar/Attributes$Name
-field name EXTENSION_INSTALLATION descriptor Ljava/util/jar/Attributes$Name;
-field name IMPLEMENTATION_VENDOR_ID descriptor Ljava/util/jar/Attributes$Name;
-field name IMPLEMENTATION_URL descriptor Ljava/util/jar/Attributes$Name;
field name EXTENSION_INSTALLATION descriptor Ljava/util/jar/Attributes$Name; flags 19 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;
field name IMPLEMENTATION_VENDOR_ID descriptor Ljava/util/jar/Attributes$Name; flags 19 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;
field name IMPLEMENTATION_URL descriptor Ljava/util/jar/Attributes$Name; flags 19 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;
field name MULTI_RELEASE descriptor Ljava/util/jar/Attributes$Name; flags 19
class name java/util/jar/JarFile
@@ -3381,6 +3401,9 @@ method name finalize descriptor ()V thrownTypes java/io/IOException flags 4 depr
class name javax/crypto/ExemptionMechanism
-method name finalize descriptor ()V
class name javax/crypto/SealedObject
header extends java/lang/Object implements java/io/Serializable flags 21
class name javax/net/ssl/ExtendedSSLSession
method name getStatusResponses descriptor ()Ljava/util/List; flags 1 signature ()Ljava/util/List<[B>;
@@ -3388,12 +3411,6 @@ class name javax/net/ssl/HandshakeCompletedEvent
-method name getPeerCertificateChain descriptor ()[Ljavax/security/cert/X509Certificate;
method name getPeerCertificateChain descriptor ()[Ljavax/security/cert/X509Certificate; thrownTypes javax/net/ssl/SSLPeerUnverifiedException flags 1 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
class name javax/net/ssl/SSLEngine
method name getApplicationProtocol descriptor ()Ljava/lang/String; flags 1
method name getHandshakeApplicationProtocol descriptor ()Ljava/lang/String; flags 1
method name setHandshakeApplicationProtocolSelector descriptor (Ljava/util/function/BiFunction;)V flags 1 signature (Ljava/util/function/BiFunction<Ljavax/net/ssl/SSLEngine;Ljava/util/List<Ljava/lang/String;>;Ljava/lang/String;>;)V
method name getHandshakeApplicationProtocolSelector descriptor ()Ljava/util/function/BiFunction; flags 1 signature ()Ljava/util/function/BiFunction<Ljavax/net/ssl/SSLEngine;Ljava/util/List<Ljava/lang/String;>;Ljava/lang/String;>;
class name javax/net/ssl/SSLEngineResult
header extends java/lang/Object flags 21
innerclass innerClass javax/net/ssl/SSLEngineResult$HandshakeStatus outerClass javax/net/ssl/SSLEngineResult innerClassName HandshakeStatus flags 4019
@@ -3409,19 +3426,11 @@ method name setEnableRetransmissions descriptor (Z)V flags 1
method name getEnableRetransmissions descriptor ()Z flags 1
method name setMaximumPacketSize descriptor (I)V flags 1
method name getMaximumPacketSize descriptor ()I flags 1
method name getApplicationProtocols descriptor ()[Ljava/lang/String; flags 1
method name setApplicationProtocols descriptor ([Ljava/lang/String;)V flags 1
class name javax/net/ssl/SSLSession
-method name getPeerCertificateChain descriptor ()[Ljavax/security/cert/X509Certificate;
method name getPeerCertificateChain descriptor ()[Ljavax/security/cert/X509Certificate; thrownTypes javax/net/ssl/SSLPeerUnverifiedException flags 401 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
class name javax/net/ssl/SSLSocket
method name getApplicationProtocol descriptor ()Ljava/lang/String; flags 1
method name getHandshakeApplicationProtocol descriptor ()Ljava/lang/String; flags 1
method name setHandshakeApplicationProtocolSelector descriptor (Ljava/util/function/BiFunction;)V flags 1 signature (Ljava/util/function/BiFunction<Ljavax/net/ssl/SSLSocket;Ljava/util/List<Ljava/lang/String;>;Ljava/lang/String;>;)V
method name getHandshakeApplicationProtocolSelector descriptor ()Ljava/util/function/BiFunction; flags 1 signature ()Ljava/util/function/BiFunction<Ljavax/net/ssl/SSLSocket;Ljava/util/List<Ljava/lang/String;>;Ljava/lang/String;>;
class name javax/security/auth/Policy
header extends java/lang/Object flags 421 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="1.4")

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2015, 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
@@ -77,6 +77,9 @@ class name javax/swing/ImageIcon
field name component descriptor Ljava/awt/Component; flags 1c
field name tracker descriptor Ljava/awt/MediaTracker; flags 1c
class name javax/swing/JComboBox
-method name processKeyBinding descriptor (Ljavax/swing/KeyStroke;Ljava/awt/event/KeyEvent;IZ)Z
class name javax/swing/JComponent
field name accessibleContext descriptor Ljavax/accessibility/AccessibleContext; flags 4
-method name hide descriptor ()V
@@ -90,8 +93,12 @@ field name accessibleFocusHandler descriptor Ljava/awt/event/FocusListener; flag
class name javax/swing/JDesktopPane
-method name remove descriptor (Ljava/awt/Component;)V
class name javax/swing/JViewport
-method name addNotify descriptor ()V
class name javax/swing/JList$AccessibleJList$AccessibleJListChild
method name getAccessibleAction descriptor ()Ljavax/accessibility/AccessibleAction; flags 1
class name javax/swing/plaf/basic/BasicRadioButtonUI
-method name installListeners descriptor (Ljavax/swing/AbstractButton;)V
-method name uninstallListeners descriptor (Ljavax/swing/AbstractButton;)V
class name javax/swing/tree/DefaultMutableTreeNode
-method name setParent descriptor (Ljavax/swing/tree/MutableTreeNode;)V

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2015, 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
@@ -13524,6 +13524,7 @@ method name getItemAt descriptor (I)Ljava/lang/Object; flags 1 signature (I)TE;
method name createDefaultKeySelectionManager descriptor ()Ljavax/swing/JComboBox$KeySelectionManager; flags 4
method name paramString descriptor ()Ljava/lang/String; flags 4
method name getAccessibleContext descriptor ()Ljavax/accessibility/AccessibleContext; flags 1
method name processKeyBinding descriptor (Ljavax/swing/KeyStroke;Ljava/awt/event/KeyEvent;IZ)Z flags 4
class name javax/swing/JComboBox$AccessibleJComboBox
header extends javax/swing/JComponent$AccessibleJComponent implements javax/accessibility/AccessibleAction,javax/accessibility/AccessibleSelection flags 21
@@ -14604,7 +14605,6 @@ method name getAccessibleChild descriptor (I)Ljavax/accessibility/Accessible; fl
method name getLocale descriptor ()Ljava/util/Locale; flags 1
method name addPropertyChangeListener descriptor (Ljava/beans/PropertyChangeListener;)V flags 1
method name removePropertyChangeListener descriptor (Ljava/beans/PropertyChangeListener;)V flags 1
method name getAccessibleAction descriptor ()Ljavax/accessibility/AccessibleAction; flags 1
method name getAccessibleComponent descriptor ()Ljavax/accessibility/AccessibleComponent; flags 1
method name getAccessibleSelection descriptor ()Ljavax/accessibility/AccessibleSelection; flags 1
method name getAccessibleText descriptor ()Ljavax/accessibility/AccessibleText; flags 1
@@ -16720,7 +16720,6 @@ method name updateUI descriptor ()V flags 1
method name getUIClassID descriptor ()Ljava/lang/String; flags 1
method name addImpl descriptor (Ljava/awt/Component;Ljava/lang/Object;I)V flags 4
method name remove descriptor (Ljava/awt/Component;)V flags 1
method name addNotify descriptor ()V flags 1
method name scrollRectToVisible descriptor (Ljava/awt/Rectangle;)V flags 1
method name setBorder descriptor (Ljavax/swing/border/Border;)V flags 11
method name getInsets descriptor ()Ljava/awt/Insets; flags 11
@@ -20281,6 +20280,8 @@ method name getDefaultIcon descriptor ()Ljavax/swing/Icon; flags 1
method name paint descriptor (Ljava/awt/Graphics;Ljavax/swing/JComponent;)V flags 21
method name paintFocus descriptor (Ljava/awt/Graphics;Ljava/awt/Rectangle;Ljava/awt/Dimension;)V flags 4
method name getPreferredSize descriptor (Ljavax/swing/JComponent;)Ljava/awt/Dimension; flags 1
method name installListeners descriptor (Ljavax/swing/AbstractButton;)V flags 4
method name uninstallListeners descriptor (Ljavax/swing/AbstractButton;)V flags 4
class name javax/swing/plaf/basic/BasicRootPaneUI
header extends javax/swing/plaf/RootPaneUI implements java/beans/PropertyChangeListener flags 21 classAnnotations @Ljdk/Profile+Annotation;(value=I4)

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2015, 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
@@ -2524,7 +2524,6 @@ method name getPopupMenuListeners descriptor ()[Ljavax/swing/event/PopupMenuList
method name setAction descriptor (Ljavax/swing/Action;)V flags 1 runtimeAnnotations @Ljava/beans/BeanProperty;(visualUpdate=Ztrue,description="the\u005C;u0020;Action\u005C;u0020;instance\u005C;u0020;connected\u005C;u0020;with\u005C;u0020;this\u005C;u0020;ActionEvent\u005C;u0020;source")
method name getSelectedObjects descriptor ()[Ljava/lang/Object; flags 1 runtimeAnnotations @Ljava/beans/BeanProperty;(bound=Zfalse)
method name setEnabled descriptor (Z)V flags 1 runtimeAnnotations @Ljava/beans/BeanProperty;(description="The\u005C;u0020;enabled\u005C;u0020;state\u005C;u0020;of\u005C;u0020;the\u005C;u0020;component.",preferred=Ztrue)
method name processKeyBinding descriptor (Ljavax/swing/KeyStroke;Ljava/awt/event/KeyEvent;IZ)Z flags 4
method name setKeySelectionManager descriptor (Ljavax/swing/JComboBox$KeySelectionManager;)V flags 1 runtimeAnnotations @Ljava/beans/BeanProperty;(expert=Ztrue,bound=Zfalse,description="The\u005C;u0020;objects\u005C;u0020;that\u005C;u0020;changes\u005C;u0020;the\u005C;u0020;selection\u005C;u0020;when\u005C;u0020;a\u005C;u0020;key\u005C;u0020;is\u005C;u0020;pressed.")
method name getItemCount descriptor ()I flags 1 runtimeAnnotations @Ljava/beans/BeanProperty;(bound=Zfalse)
method name getAccessibleContext descriptor ()Ljavax/accessibility/AccessibleContext; flags 1 runtimeAnnotations @Ljava/beans/BeanProperty;(bound=Zfalse)
@@ -3039,6 +3038,7 @@ class name javax/swing/JList$AccessibleJList$AccessibleJListChild
header extends javax/accessibility/AccessibleContext implements javax/accessibility/Accessible,javax/accessibility/AccessibleComponent,javax/accessibility/AccessibleAction flags 21
innerclass innerClass javax/swing/JList$AccessibleJList outerClass javax/swing/JList innerClassName AccessibleJList flags 4
innerclass innerClass javax/swing/JList$AccessibleJList$AccessibleJListChild outerClass javax/swing/JList$AccessibleJList innerClassName AccessibleJListChild flags 4
method name getAccessibleAction descriptor ()Ljavax/accessibility/AccessibleAction; flags 1
method name doAccessibleAction descriptor (I)Z flags 1
method name getAccessibleActionDescription descriptor (I)Ljava/lang/String; flags 1
method name getAccessibleActionCount descriptor ()I flags 1
@@ -3907,7 +3907,6 @@ innerclass innerClass javax/swing/JViewport$AccessibleJViewport outerClass javax
innerclass innerClass javax/swing/JViewport$ViewListener outerClass javax/swing/JViewport innerClassName ViewListener flags 4
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
-method name setUI descriptor (Ljavax/swing/plaf/ViewportUI;)V
-method name addNotify descriptor ()V
-method name getInsets descriptor (Ljava/awt/Insets;)Ljava/awt/Insets;
-method name setScrollMode descriptor (I)V
method name setUI descriptor (Ljavax/swing/plaf/ViewportUI;)V flags 1 runtimeAnnotations @Ljava/beans/BeanProperty;(hidden=Ztrue,visualUpdate=Ztrue,description="The\u005C;u0020;UI\u005C;u0020;object\u005C;u0020;that\u005C;u0020;implements\u005C;u0020;the\u005C;u0020;Component's\u005C;u0020;LookAndFeel.")
@@ -4402,8 +4401,6 @@ innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang
class name javax/swing/plaf/basic/BasicRadioButtonUI
header extends javax/swing/plaf/basic/BasicToggleButtonUI flags 21
innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
method name installListeners descriptor (Ljavax/swing/AbstractButton;)V flags 4
method name uninstallListeners descriptor (Ljavax/swing/AbstractButton;)V flags 4
class name javax/swing/plaf/basic/BasicScrollBarUI
header extends javax/swing/plaf/ScrollBarUI implements java/awt/LayoutManager,javax/swing/SwingConstants flags 21

View File

@@ -27,7 +27,7 @@
# ##########################################################
#
#command used to generate this file:
#build.tools.symbolgenerator.CreateSymbols build-description-incremental symbols include.list
#build.tools.symbolgenerator.CreateSymbols build-description-incremental-file symbols include.list 8 jdk8-updated.classes <none> --normalize-method-flags
#
generate platforms 6:7:8:9:A
platform version 8 files java.activation-8.sym.txt:java.base-8.sym.txt:java.compiler-8.sym.txt:java.corba-8.sym.txt:java.datatransfer-8.sym.txt:java.desktop-8.sym.txt:java.instrument-8.sym.txt:java.logging-8.sym.txt:java.management-8.sym.txt:java.management.rmi-8.sym.txt:java.naming-8.sym.txt:java.prefs-8.sym.txt:java.rmi-8.sym.txt:java.scripting-8.sym.txt:java.security.jgss-8.sym.txt:java.security.sasl-8.sym.txt:java.sql-8.sym.txt:java.sql.rowset-8.sym.txt:java.transaction-8.sym.txt:java.xml-8.sym.txt:java.xml.bind-8.sym.txt:java.xml.crypto-8.sym.txt:java.xml.ws-8.sym.txt:java.xml.ws.annotation-8.sym.txt:jdk.httpserver-8.sym.txt:jdk.management-8.sym.txt:jdk.scripting.nashorn-8.sym.txt:jdk.sctp-8.sym.txt:jdk.security.auth-8.sym.txt:jdk.security.jgss-8.sym.txt

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2019, 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
@@ -27,6 +27,12 @@
# Install the launcher name, release version string, full version
# string and the runtime name into the VersionProps.java file.
ifeq ($(COMPANY_NAME), N/A)
VENDOR=Oracle Corporation
else
VENDOR=$(COMPANY_NAME)
endif
$(eval $(call SetupTextFileProcessing, BUILD_VERSION_JAVA, \
SOURCE_FILES := $(TOPDIR)/src/java.base/share/classes/java/lang/VersionProps.java.template, \
OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/lang/VersionProps.java, \
@@ -41,7 +47,7 @@ $(eval $(call SetupTextFileProcessing, BUILD_VERSION_JAVA, \
@@VERSION_OPT@@ => $(VERSION_OPT) ; \
@@VERSION_DATE@@ => $(VERSION_DATE) ; \
@@VENDOR_VERSION_STRING@@ => $(VENDOR_VERSION_STRING) ; \
@@VENDOR@@ => $(COMPANY_NAME) ; \
@@VENDOR@@ => $(VENDOR) ; \
@@VENDOR_URL@@ => $(VENDOR_URL) ; \
@@VENDOR_URL_BUG@@ => $(VENDOR_URL_BUG) ; \
@@VENDOR_URL_VM_BUG@@ => $(VENDOR_URL_VM_BUG), \

View File

@@ -62,6 +62,10 @@ ifeq ($(call check-jvm-feature, compiler2), true)
ADLC_CFLAGS += -I$(TOPDIR)/src/hotspot/share
ifneq ($(call check-jvm-feature, shenandoahgc), true)
ADLC_CFLAGS += -DINCLUDE_SHENANDOAHGC=0
endif
$(eval $(call SetupNativeCompilation, BUILD_ADLC, \
NAME := adlc, \
TYPE := EXECUTABLE, \
@@ -136,6 +140,12 @@ ifeq ($(call check-jvm-feature, compiler2), true)
$d/os_cpu/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH)/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH).ad \
)))
ifeq ($(call check-jvm-feature, shenandoahgc), true)
AD_SRC_FILES += $(call uniq, $(wildcard $(foreach d, $(AD_SRC_ROOTS), \
$d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/gc/shenandoah/shenandoah_$(HOTSPOT_TARGET_CPU).ad \
)))
endif
SINGLE_AD_SRCFILE := $(ADLC_SUPPORT_DIR)/all-ad-src.ad
INSERT_FILENAME_AWK_SCRIPT := \

View File

@@ -57,7 +57,7 @@ JVM_LIBS += \
JVM_EXCLUDE_FILES += args.cc
JVM_EXCLUDES += adlc
# Needed by vm_version.cpp
# Needed by abstract_vm_version.cpp
ifeq ($(OPENJDK_TARGET_CPU), x86_64)
OPENJDK_TARGET_CPU_VM_VERSION := amd64
else ifeq ($(OPENJDK_TARGET_CPU), sparcv9)
@@ -158,7 +158,7 @@ $(eval $(call SetupNativeCompilation, BUILD_LIBJVM, \
EXCLUDE_PATTERNS := $(JVM_EXCLUDE_PATTERNS), \
EXTRA_OBJECT_FILES := $(DTRACE_EXTRA_OBJECT_FILES), \
CFLAGS := $(JVM_CFLAGS), \
vm_version.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
abstract_vm_version.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
arguments.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
DISABLED_WARNINGS_clang := tautological-compare, \
DISABLED_WARNINGS_solstudio := $(DISABLED_WARNINGS_solstudio), \
@@ -179,11 +179,11 @@ $(eval $(call SetupNativeCompilation, BUILD_LIBJVM, \
PRECOMPILED_HEADER_EXCLUDE := $(JVM_PRECOMPILED_HEADER_EXCLUDE), \
))
# Always recompile vm_version.cpp if libjvm needs to be relinked. This ensures
# Always recompile abstract_vm_version.cpp if libjvm needs to be relinked. This ensures
# that the internal vm version is updated as it relies on __DATE__ and __TIME__
# macros.
VM_VERSION_OBJ := $(JVM_OUTPUTDIR)/objs/vm_version$(OBJ_SUFFIX)
$(VM_VERSION_OBJ): $(filter-out $(VM_VERSION_OBJ) $(JVM_MAPFILE), \
ABSTRACT_VM_VERSION_OBJ := $(JVM_OUTPUTDIR)/objs/abstract_vm_version$(OBJ_SUFFIX)
$(ABSTRACT_VM_VERSION_OBJ): $(filter-out $(ABSTRACT_VM_VERSION_OBJ) $(JVM_MAPFILE), \
$(BUILD_LIBJVM_TARGET_DEPS))
ifneq ($(GENERATE_COMPILE_COMMANDS_ONLY), true)

View File

@@ -166,6 +166,11 @@ ifneq ($(call check-jvm-feature, zgc), true)
JVM_EXCLUDE_PATTERNS += gc/z
endif
ifneq ($(call check-jvm-feature, shenandoahgc), true)
JVM_CFLAGS_FEATURES += -DINCLUDE_SHENANDOAHGC=0
JVM_EXCLUDE_PATTERNS += gc/shenandoah
endif
ifneq ($(call check-jvm-feature, jfr), true)
JVM_CFLAGS_FEATURES += -DINCLUDE_JFR=0
JVM_EXCLUDE_PATTERNS += jfr

View File

@@ -36,6 +36,10 @@ ifeq ($(TOOLCHAIN_TYPE), gcc)
BUILD_LIBJVM_assembler_x86.cpp_CXXFLAGS := -Wno-maybe-uninitialized
BUILD_LIBJVM_cardTableBarrierSetAssembler_x86.cpp_CXXFLAGS := -Wno-maybe-uninitialized
BUILD_LIBJVM_interp_masm_x86.cpp_CXXFLAGS := -Wno-uninitialized
ifeq ($(DEBUG_LEVEL), release)
# Need extra inlining to collapse all marking code into the hot marking loop
BUILD_LIBJVM_shenandoahConcurrentMark.cpp_CXXFLAGS := --param inline-unit-growth=1000
endif
endif
LIBJVM_FDLIBM_COPY_OPT_FLAG := $(CXX_O_FLAG_NONE)
@@ -132,9 +136,6 @@ else ifeq ($(OPENJDK_TARGET_OS), macosx)
# NOTE: The old build tested clang version to make sure this workaround
# for the clang bug was still needed.
BUILD_LIBJVM_loopTransform.cpp_CXXFLAGS := $(CXX_O_FLAG_NONE)
ifneq ($(DEBUG_LEVEL), slowdebug)
BUILD_LIBJVM_unsafe.cpp_CXXFLAGS := -O1
endif
# The following files are compiled at various optimization
# levels due to optimization issues encountered at the
@@ -150,7 +151,6 @@ else ifeq ($(OPENJDK_TARGET_OS), macosx)
sharedRuntimeTrig.cpp \
sharedRuntimeTrans.cpp \
loopTransform.cpp \
unsafe.cpp \
jvmciCompilerToVM.cpp \
#
endif

View File

@@ -22,6 +22,7 @@
#
JVM_handle_linux_signal
JVM_IsUseContainerSupport
numa_error
numa_warn
sysThreadAvailableStackWithSlack

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013, 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
@@ -25,14 +25,24 @@
package build.tools.blacklistedcertsconverter;
import java.io.IOException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.PublicKey;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.security.interfaces.ECPublicKey;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import sun.security.util.DerInputStream;
import sun.security.util.DerOutputStream;
import sun.security.util.DerValue;
/**
* Converts blacklisted.certs.pem from System.in to blacklisted.certs in
@@ -75,8 +85,8 @@ public class BlacklistedCertsConverter {
// Output sorted so that it's easy to locate an entry.
Set<String> fingerprints = new TreeSet<>();
for (Certificate cert: certs) {
fingerprints.add(
getCertificateFingerPrint(mdAlg, (X509Certificate)cert));
fingerprints.addAll(
getCertificateFingerPrints(mdAlg, (X509Certificate)cert));
}
for (String s: fingerprints) {
@@ -97,17 +107,90 @@ public class BlacklistedCertsConverter {
}
/**
* Gets the requested finger print of the certificate.
* Computes the possible fingerprints of the certificate.
*/
private static String getCertificateFingerPrint(
private static List<String> getCertificateFingerPrints(
String mdAlg, X509Certificate cert) throws Exception {
byte[] encCertInfo = cert.getEncoded();
MessageDigest md = MessageDigest.getInstance(mdAlg);
byte[] digest = md.digest(encCertInfo);
StringBuffer buf = new StringBuffer();
for (int i = 0; i < digest.length; i++) {
byte2hex(digest[i], buf);
List<String> fingerprints = new ArrayList<>();
for (byte[] encoding : altEncodings(cert)) {
MessageDigest md = MessageDigest.getInstance(mdAlg);
byte[] digest = md.digest(encoding);
StringBuffer buf = new StringBuffer();
for (int i = 0; i < digest.length; i++) {
byte2hex(digest[i], buf);
}
fingerprints.add(buf.toString());
}
return buf.toString();
return fingerprints;
}
private static List<byte[]> altEncodings(X509Certificate c)
throws Exception {
List<byte[]> result = new ArrayList<>();
DerValue d = new DerValue(c.getEncoded());
DerValue[] seq = new DerValue[3];
// tbsCertificate
seq[0] = d.data.getDerValue();
// signatureAlgorithm
seq[1] = d.data.getDerValue();
// signature
seq[2] = d.data.getDerValue();
List<DerValue> algIds = Arrays.asList(seq[1], altAlgId(seq[1]));
List<DerValue> sigs;
PublicKey p = c.getPublicKey();
if (p instanceof ECPublicKey) {
ECPublicKey ep = (ECPublicKey) p;
BigInteger mod = ep.getParams().getOrder();
sigs = Arrays.asList(seq[2], altSig(mod, seq[2]));
} else {
sigs = Arrays.asList(seq[2]);
}
for (DerValue algId : algIds) {
for (DerValue sig : sigs) {
DerOutputStream tmp = new DerOutputStream();
tmp.putDerValue(seq[0]);
tmp.putDerValue(algId);
tmp.putDerValue(sig);
DerOutputStream tmp2 = new DerOutputStream();
tmp2.write(DerValue.tag_Sequence, tmp);
result.add(tmp2.toByteArray());
}
}
return result;
}
private static DerValue altSig(BigInteger mod, DerValue sig)
throws IOException {
byte[] sigBits = sig.getBitString();
DerInputStream in =
new DerInputStream(sigBits, 0, sigBits.length, false);
DerValue[] values = in.getSequence(2);
BigInteger r = values[0].getBigInteger();
BigInteger s = values[1].getBigInteger();
BigInteger s2 = s.negate().mod(mod);
DerOutputStream out = new DerOutputStream();
out.putInteger(r);
out.putInteger(s2);
DerOutputStream tmp = new DerOutputStream();
tmp.putBitString(new DerValue(DerValue.tag_Sequence,
out.toByteArray()).toByteArray());
return new DerValue(tmp.toByteArray());
}
private static DerValue altAlgId(DerValue algId) throws IOException {
DerInputStream in = algId.toDerInputStream();
DerOutputStream bytes = new DerOutputStream();
bytes.putOID(in.getOID());
// encode parameters as NULL if not present or omit if NULL
if (in.available() == 0) {
bytes.putNull();
}
DerOutputStream tmp = new DerOutputStream();
tmp.write(DerValue.tag_Sequence, bytes);
return new DerValue(tmp.toByteArray());
}
}

View File

@@ -297,7 +297,6 @@ class Bundle {
}
// First, weed out any empty timezone or metazone names from myMap.
// Fill in any missing abbreviations if locale is "en".
for (Iterator<String> it = myMap.keySet().iterator(); it.hasNext();) {
String key = it.next();
if (key.startsWith(CLDRConverter.TIMEZONE_ID_PREFIX)
@@ -310,10 +309,6 @@ class Bundle {
it.remove();
continue;
}
if (id.equals("en")) {
fillInJREs(key, nameMap);
}
}
}
for (Iterator<String> it = myMap.keySet().iterator(); it.hasNext();) {
@@ -626,42 +621,6 @@ class Bundle {
return null;
}
static List<Object[]> jreTimeZoneNames = Arrays.asList(TimeZoneNames.getContents());
private void fillInJREs(String key, Map<String, String> map) {
String tzid = null;
if (key.startsWith(CLDRConverter.METAZONE_ID_PREFIX)) {
// Look for tzid
String meta = key.substring(CLDRConverter.METAZONE_ID_PREFIX.length());
if (meta.equals("GMT")) {
tzid = meta;
} else {
for (String tz : CLDRConverter.handlerMetaZones.keySet()) {
if (CLDRConverter.handlerMetaZones.get(tz).equals(meta)) {
tzid = tz;
break;
}
}
}
} else {
tzid = key.substring(CLDRConverter.TIMEZONE_ID_PREFIX.length());
}
if (tzid != null) {
for (Object[] jreZone : jreTimeZoneNames) {
if (jreZone[0].equals(tzid)) {
for (int i = 0; i < ZONE_NAME_KEYS.length; i++) {
if (map.get(ZONE_NAME_KEYS[i]) == null) {
String[] jreNames = (String[])jreZone[1];
map.put(ZONE_NAME_KEYS[i], jreNames[i]);
}
}
break;
}
}
}
}
private void convert(CalendarType calendarType, char cldrLetter, int count, StringBuilder sb) {
switch (cldrLetter) {
case 'G':

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 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
@@ -25,7 +25,6 @@
package build.tools.cldrconverter;
import static build.tools.cldrconverter.Bundle.jreTimeZoneNames;
import build.tools.cldrconverter.BundleGenerator.BundleType;
import java.io.File;
import java.io.IOException;
@@ -87,7 +86,9 @@ public class CLDRConverter {
static final String ZONE_NAME_PREFIX = "timezone.displayname.";
static final String METAZONE_ID_PREFIX = "metazone.id.";
static final String PARENT_LOCALE_PREFIX = "parentLocale.";
static final String META_EMPTY_ZONE_NAME = "EMPTY_ZONE";
static final String[] EMPTY_ZONE = {"", "", "", "", "", ""};
static final String META_ETCUTC_ZONE_NAME = "ETC_UTC";
private static SupplementDataParseHandler handlerSuppl;
private static LikelySubtagsParseHandler handlerLikelySubtags;
@@ -666,60 +667,6 @@ public class CLDRConverter {
private static Map<String, Object> extractZoneNames(Map<String, Object> map, String id) {
Map<String, Object> names = new HashMap<>();
// Copy over missing time zone ids from JRE for English locale
if (id.equals("en")) {
Map<String[], String> jreMetaMap = new HashMap<>();
jreTimeZoneNames.stream().forEach(e -> {
String tzid = (String)e[0];
String[] data = (String[])e[1];
if (map.get(TIMEZONE_ID_PREFIX + tzid) == null &&
handlerMetaZones.get(tzid) == null ||
handlerMetaZones.get(tzid) != null &&
map.get(METAZONE_ID_PREFIX + handlerMetaZones.get(tzid)) == null) {
// First, check the alias
String canonID = canonicalTZMap.get(tzid);
if (canonID != null && !tzid.equals(canonID)) {
Object value = map.get(TIMEZONE_ID_PREFIX + canonID);
if (value != null) {
names.put(tzid, value);
return;
} else {
String meta = handlerMetaZones.get(canonID);
if (meta != null) {
value = map.get(METAZONE_ID_PREFIX + meta);
if (value != null) {
names.put(tzid, meta);
return;
}
}
}
}
// Check the CLDR meta key
Optional<Map.Entry<String, String>> cldrMeta =
handlerMetaZones.getData().entrySet().stream()
.filter(me ->
Arrays.deepEquals(data,
(String[])map.get(METAZONE_ID_PREFIX + me.getValue())))
.findAny();
cldrMeta.ifPresentOrElse(meta -> names.put(tzid, meta.getValue()), () -> {
// Check the JRE meta key, add if there is not.
Optional<Map.Entry<String[], String>> jreMeta =
jreMetaMap.entrySet().stream()
.filter(jm -> Arrays.deepEquals(data, jm.getKey()))
.findAny();
jreMeta.ifPresentOrElse(meta -> names.put(tzid, meta.getValue()), () -> {
String metaName = "JRE_" + tzid.replaceAll("[/-]", "_");
names.put(METAZONE_ID_PREFIX + metaName, data);
names.put(tzid, metaName);
});
});
}
});
}
getAvailableZoneIds().stream().forEach(tzid -> {
// If the tzid is deprecated, get the data for the replacement id
String tzKey = Optional.ofNullable((String)handlerSupplMeta.get(tzid))
@@ -727,7 +674,14 @@ public class CLDRConverter {
Object data = map.get(TIMEZONE_ID_PREFIX + tzKey);
if (data instanceof String[]) {
names.put(tzid, data);
// Hack for UTC. UTC is an alias to Etc/UTC in CLDR
if (tzid.equals("Etc/UTC") && !map.containsKey(TIMEZONE_ID_PREFIX + "UTC")) {
names.put(METAZONE_ID_PREFIX + META_ETCUTC_ZONE_NAME, data);
names.put(tzid, META_ETCUTC_ZONE_NAME);
names.put("UTC", META_ETCUTC_ZONE_NAME);
} else {
names.put(tzid, data);
}
} else {
String meta = handlerMetaZones.get(tzKey);
if (meta != null) {
@@ -744,24 +698,23 @@ public class CLDRConverter {
// exemplar cities.
Map<String, Object> exCities = map.entrySet().stream()
.filter(e -> e.getKey().startsWith(CLDRConverter.EXEMPLAR_CITY_PREFIX))
.collect(Collectors
.toMap(Map.Entry::getKey, Map.Entry::getValue));
.filter(e -> e.getKey().startsWith(CLDRConverter.EXEMPLAR_CITY_PREFIX))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
names.putAll(exCities);
if (!id.equals("en") &&
!names.isEmpty()) {
// CLDR does not have UTC entry, so add it here.
names.put("UTC", EMPTY_ZONE);
// no metazone zones
Arrays.asList(handlerMetaZones.get(MetaZonesParseHandler.NO_METAZONE_KEY)
.split("\\s")).stream()
.forEach(tz -> {
names.put(tz, EMPTY_ZONE);
});
// If there's no UTC entry at this point, add an empty one
if (!names.isEmpty() && !names.containsKey("UTC")) {
names.putIfAbsent(METAZONE_ID_PREFIX + META_EMPTY_ZONE_NAME, EMPTY_ZONE);
names.put("UTC", META_EMPTY_ZONE_NAME);
}
// Finally some compatibility stuff
ZoneId.SHORT_IDS.entrySet().stream()
.filter(e -> !names.containsKey(e.getKey()) && names.containsKey(e.getValue()))
.forEach(e -> {
names.put(e.getKey(), names.get(e.getValue()));
});
return names;
}

View File

@@ -31,6 +31,7 @@ import build.tools.symbolgenerator.CreateSymbols
import build.tools.symbolgenerator.CreateSymbols
.ModuleHeaderDescription
.RequiresDescription;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
@@ -41,6 +42,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.io.StringWriter;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
@@ -198,7 +200,7 @@ public class CreateSymbols {
*/
@SuppressWarnings("unchecked")
public void createSymbols(String ctDescriptionFile, String ctSymLocation, CtSymKind ctSymKind) throws IOException {
LoadDescriptions data = load(Paths.get(ctDescriptionFile), null);
LoadDescriptions data = load(Paths.get(ctDescriptionFile));
splitHeaders(data.classes);
@@ -237,7 +239,7 @@ public class CreateSymbols {
public static String EXTENSION = ".sig";
LoadDescriptions load(Path ctDescription, String deletePlatform) throws IOException {
LoadDescriptions load(Path ctDescription) throws IOException {
List<PlatformInput> platforms = new ArrayList<>();
Set<String> generatePlatforms = null;
@@ -247,13 +249,11 @@ public class CreateSymbols {
case "generate":
String[] platformsAttr = reader.attributes.get("platforms").split(":");
generatePlatforms = new HashSet<>(List.of(platformsAttr));
generatePlatforms.remove(deletePlatform);
reader.moveNext();
break;
case "platform":
PlatformInput platform = PlatformInput.load(reader);
if (!platform.version.equals(deletePlatform))
platforms.add(platform);
platforms.add(platform);
reader.moveNext();
break;
default:
@@ -318,18 +318,28 @@ public class CreateSymbols {
ClassList result = new ClassList();
for (ClassDescription desc : classes.values()) {
classes.values().forEach(result::add);
return new LoadDescriptions(result,
modules,
new ArrayList<>(platforms));
}
private static void removeVersion(LoadDescriptions load, String deletePlatform) {
for (Iterator<ClassDescription> it = load.classes.iterator(); it.hasNext();) {
ClassDescription desc = it.next();
Iterator<ClassHeaderDescription> chdIt = desc.header.iterator();
while (chdIt.hasNext()) {
ClassHeaderDescription chd = chdIt.next();
chd.versions = reduce(chd.versions, generatePlatforms);
if (chd.versions.isEmpty())
chd.versions = removeVersion(chd.versions, deletePlatform);
if (chd.versions.isEmpty()) {
chdIt.remove();
}
}
if (desc.header.isEmpty()) {
it.remove();
continue;
}
@@ -338,7 +348,7 @@ public class CreateSymbols {
while (methodIt.hasNext()) {
MethodDescription method = methodIt.next();
method.versions = reduce(method.versions, generatePlatforms);
method.versions = removeVersion(method.versions, deletePlatform);
if (method.versions.isEmpty())
methodIt.remove();
}
@@ -348,35 +358,29 @@ public class CreateSymbols {
while (fieldIt.hasNext()) {
FieldDescription field = fieldIt.next();
field.versions = reduce(field.versions, generatePlatforms);
field.versions = removeVersion(field.versions, deletePlatform);
if (field.versions.isEmpty())
fieldIt.remove();
}
result.add(desc);
}
Map<String, ModuleDescription> moduleList = new HashMap<>();
for (ModuleDescription desc : modules.values()) {
for (Iterator<ModuleDescription> it = load.modules.values().iterator(); it.hasNext();) {
ModuleDescription desc = it.next();
Iterator<ModuleHeaderDescription> mhdIt = desc.header.iterator();
while (mhdIt.hasNext()) {
ModuleHeaderDescription mhd = mhdIt.next();
mhd.versions = reduce(mhd.versions, generatePlatforms);
mhd.versions = removeVersion(mhd.versions, deletePlatform);
if (mhd.versions.isEmpty())
mhdIt.remove();
}
if (desc.header.isEmpty()) {
it.remove();
continue;
}
moduleList.put(desc.name, desc);
}
return new LoadDescriptions(result, moduleList, platforms);
}
static final class LoadDescriptions {
@@ -458,6 +462,17 @@ public class CreateSymbols {
return sb.toString();
}
private static String removeVersion(String original, String remove) {
StringBuilder sb = new StringBuilder();
for (char v : original.toCharArray()) {
if (v != remove.charAt(0)) {
sb.append(v);
}
}
return sb.toString();
}
private static class PlatformInput {
public final String version;
public final String basePlatform;
@@ -1129,24 +1144,9 @@ public class CreateSymbols {
Map<String, ModuleDescription> modules = new HashMap<>();
for (VersionDescription desc : versions) {
List<byte[]> classFileData = new ArrayList<>();
Iterable<byte[]> classFileData = loadClassData(desc.classes);
try (BufferedReader descIn =
Files.newBufferedReader(Paths.get(desc.classes))) {
String line;
while ((line = descIn.readLine()) != null) {
ByteArrayOutputStream data = new ByteArrayOutputStream();
for (int i = 0; i < line.length(); i += 2) {
String hex = line.substring(i, i + 2);
data.write(Integer.parseInt(hex, 16));
}
classFileData.add(data.toByteArray());
}
} catch (IOException ex) {
throw new IllegalStateException(ex);
}
loadVersionClasses(classes, modules, classFileData, excludesIncludes, desc.version);
loadVersionClasses(classes, modules, classFileData, excludesIncludes, desc.version, null);
}
List<PlatformInput> platforms =
@@ -1156,7 +1156,7 @@ public class CreateSymbols {
null))
.collect(Collectors.toList());
dumpDescriptions(classes, modules, platforms, descDest.resolve("symbols"), args);
dumpDescriptions(classes, modules, platforms, Set.of(), descDest.resolve("symbols"), args);
}
//where:
private static final String DO_NO_MODIFY =
@@ -1189,11 +1189,33 @@ public class CreateSymbols {
"# ##########################################################\n" +
"#\n";
private Iterable<byte[]> loadClassData(String path) {
List<byte[]> classFileData = new ArrayList<>();
try (BufferedReader descIn =
Files.newBufferedReader(Paths.get(path))) {
String line;
while ((line = descIn.readLine()) != null) {
ByteArrayOutputStream data = new ByteArrayOutputStream();
for (int i = 0; i < line.length(); i += 2) {
String hex = line.substring(i, i + 2);
data.write(Integer.parseInt(hex, 16));
}
classFileData.add(data.toByteArray());
}
} catch (IOException ex) {
throw new IllegalStateException(ex);
}
return classFileData;
}
private void loadVersionClasses(ClassList classes,
Map<String, ModuleDescription> modules,
Iterable<byte[]> classData,
ExcludeIncludeList excludesIncludes,
String version) {
String version,
String baseline) {
Map<String, ModuleDescription> currentVersionModules =
new HashMap<>();
@@ -1307,12 +1329,12 @@ public class CreateSymbols {
ClassDescription existing = classes.find(clazz.name, true);
if (existing != null) {
addClassHeader(existing, header, version);
addClassHeader(existing, header, version, baseline);
for (MethodDescription currentMethod : clazz.methods) {
addMethod(existing, currentMethod, version);
addMethod(existing, currentMethod, version, baseline);
}
for (FieldDescription currentField : clazz.fields) {
addField(existing, currentField, version);
addField(existing, currentField, version, baseline);
}
} else {
classes.add(clazz);
@@ -1349,6 +1371,7 @@ public class CreateSymbols {
private void dumpDescriptions(ClassList classes,
Map<String, ModuleDescription> modules,
List<PlatformInput> versions,
Set<String> forceWriteVersions,
Path ctDescriptionFile,
String[] args) throws IOException {
classes.sort();
@@ -1410,7 +1433,7 @@ public class CreateSymbols {
for (PlatformInput desc : versions) {
List<String> files = desc.files;
if (files == null) {
if (files == null || forceWriteVersions.contains(desc.version)) {
files = new ArrayList<>();
for (Entry<String, List<ClassDescription>> e : module2Classes.entrySet()) {
StringWriter data = new StringWriter();
@@ -1428,9 +1451,34 @@ public class CreateSymbols {
String dataString = data.toString();
if (!dataString.isEmpty()) {
try (Writer out = Files.newBufferedWriter(f)) {
out.append(DO_NO_MODIFY.replace("{YEAR}", String.valueOf(year)));
out.write(dataString);
String existingYear = null;
boolean hasChange = true;
if (Files.isReadable(f)) {
String oldContent = new String(Files.readAllBytes(f), StandardCharsets.UTF_8);
int yearPos = DO_NO_MODIFY.indexOf("{YEAR}");
String headerPattern =
Pattern.quote(DO_NO_MODIFY.substring(0, yearPos)) +
"([0-9]+)(, [0-9]+)?" +
Pattern.quote(DO_NO_MODIFY.substring(yearPos + "{YEAR}".length()));
String pattern = headerPattern +
Pattern.quote(dataString);
Matcher m = Pattern.compile(pattern, Pattern.MULTILINE).matcher(oldContent);
if (m.matches()) {
hasChange = false;
} else {
m = Pattern.compile(headerPattern).matcher(oldContent);
if (m.find()) {
existingYear = m.group(1);
}
}
}
if (hasChange) {
try (Writer out = Files.newBufferedWriter(f, StandardCharsets.UTF_8)) {
String currentYear = String.valueOf(year);
String yearSpec = (existingYear != null && !currentYear.equals(existingYear) ? existingYear + ", " : "") + currentYear;
out.append(DO_NO_MODIFY.replace("{YEAR}", yearSpec));
out.write(dataString);
}
}
files.add(f.getFileName().toString());
}
@@ -1472,15 +1520,17 @@ public class CreateSymbols {
}
}
public void createIncrementalBaseLine(String ctDescriptionFile,
String excludeFile,
String[] args) throws IOException {
String specVersion = System.getProperty("java.specification.version");
private void incrementalUpdate(String ctDescriptionFile,
String excludeFile,
String platformVersion,
Iterable<byte[]> classBytes,
Function<LoadDescriptions, String> baseline,
String[] args) throws IOException {
String currentVersion =
Integer.toString(Integer.parseInt(specVersion), Character.MAX_RADIX);
currentVersion = currentVersion.toUpperCase(Locale.ROOT);
Integer.toString(Integer.parseInt(platformVersion), Character.MAX_RADIX);
String version = currentVersion.toUpperCase(Locale.ROOT);
Path ctDescriptionPath = Paths.get(ctDescriptionFile).toAbsolutePath();
LoadDescriptions data = load(ctDescriptionPath, currentVersion);
LoadDescriptions data = load(ctDescriptionPath);
ClassList classes = data.classes;
Map<String, ModuleDescription> modules = data.modules;
@@ -1488,24 +1538,70 @@ public class CreateSymbols {
ExcludeIncludeList excludeList =
ExcludeIncludeList.create(excludeFile);
loadVersionClasses(classes, modules, classBytes, excludeList, "$", version);
Iterable<byte[]> classBytes = dumpCurrentClasses();
loadVersionClasses(classes, modules, classBytes, excludeList, currentVersion);
removeVersion(data, version);
String baseline;
if (versions.isEmpty()) {
baseline = null;
} else {
baseline = versions.stream()
.sorted((v1, v2) -> v2.version.compareTo(v1.version))
.findFirst()
.get()
.version;
for (ModuleDescription md : data.modules.values()) {
for (ModuleHeaderDescription header : md.header) {
header.versions = header.versions.replace("$", version);
}
}
versions.add(new PlatformInput(currentVersion, baseline, null));
dumpDescriptions(classes, modules, versions, ctDescriptionPath, args);
for (ClassDescription clazzDesc : data.classes) {
for (ClassHeaderDescription header : clazzDesc.header) {
header.versions = header.versions.replace("$", version);
}
for (MethodDescription method : clazzDesc.methods) {
method.versions = method.versions.replace("$", version);
}
for (FieldDescription field : clazzDesc.fields) {
field.versions = field.versions.replace("$", version);
}
}
if (versions.stream().noneMatch(inp -> version.equals(inp.version))) {
versions.add(new PlatformInput(version, baseline.apply(data), null));
}
Set<String> writeVersions = new HashSet<>();
writeVersions.add(version);
//re-write all platforms that have version as their basline:
versions.stream()
.filter(inp -> version.equals(inp.basePlatform))
.map(inp -> inp.version)
.forEach(writeVersions::add);
dumpDescriptions(classes, modules, versions, writeVersions, ctDescriptionPath, args);
}
public void createIncrementalBaseLineFromDataFile(String ctDescriptionFile,
String excludeFile,
String version,
String dataFile,
String baseline,
String[] args) throws IOException {
incrementalUpdate(ctDescriptionFile, excludeFile, version, loadClassData(dataFile), x -> baseline, args);
}
public void createIncrementalBaseLine(String ctDescriptionFile,
String excludeFile,
String[] args) throws IOException {
String specVersion = System.getProperty("java.specification.version");
Iterable<byte[]> classBytes = dumpCurrentClasses();
Function<LoadDescriptions, String> baseline = data -> {
if (data.versions.isEmpty()) {
return null;
} else {
return data.versions.stream()
.sorted((v1, v2) -> v2.version.compareTo(v1.version))
.findFirst()
.get()
.version;
}
};
incrementalUpdate(ctDescriptionFile, excludeFile, specVersion, classBytes, baseline, args);
}
private List<byte[]> dumpCurrentClasses() throws IOException {
@@ -1599,7 +1695,7 @@ public class CreateSymbols {
classes.add(clazzDesc);
}
addClassHeader(clazzDesc, headerDesc, version);
addClassHeader(clazzDesc, headerDesc, version, null);
for (Method m : cf.methods) {
if (!include(m.access_flags.flags))
@@ -1611,7 +1707,7 @@ public class CreateSymbols {
for (Attribute attr : m.attributes) {
readAttribute(cf, methDesc, attr);
}
addMethod(clazzDesc, methDesc, version);
addMethod(clazzDesc, methDesc, version, null);
}
for (Field f : cf.fields) {
if (!include(f.access_flags.flags))
@@ -1623,7 +1719,7 @@ public class CreateSymbols {
for (Attribute attr : f.attributes) {
readAttribute(cf, fieldDesc, attr);
}
addField(clazzDesc, fieldDesc, version);
addField(clazzDesc, fieldDesc, version, null);
}
}
@@ -1682,11 +1778,11 @@ public class CreateSymbols {
return (accessFlags & (AccessFlags.ACC_PUBLIC | AccessFlags.ACC_PROTECTED)) != 0;
}
private void addClassHeader(ClassDescription clazzDesc, ClassHeaderDescription headerDesc, String version) {
private void addClassHeader(ClassDescription clazzDesc, ClassHeaderDescription headerDesc, String version, String baseline) {
//normalize:
boolean existed = false;
for (ClassHeaderDescription existing : clazzDesc.header) {
if (existing.equals(headerDesc)) {
if (existing.equals(headerDesc) && (!existed || (baseline != null && existing.versions.contains(baseline)))) {
headerDesc = existing;
existed = true;
} else {
@@ -1718,14 +1814,13 @@ public class CreateSymbols {
}
}
private void addMethod(ClassDescription clazzDesc, MethodDescription methDesc, String version) {
private void addMethod(ClassDescription clazzDesc, MethodDescription methDesc, String version, String baseline) {
//normalize:
boolean methodExisted = false;
for (MethodDescription existing : clazzDesc.methods) {
if (existing.equals(methDesc)) {
if (existing.equals(methDesc) && (!methodExisted || (baseline != null && existing.versions.contains(baseline)))) {
methodExisted = true;
methDesc = existing;
break;
}
}
methDesc.versions += version;
@@ -1734,13 +1829,12 @@ public class CreateSymbols {
}
}
private void addField(ClassDescription clazzDesc, FieldDescription fieldDesc, String version) {
private void addField(ClassDescription clazzDesc, FieldDescription fieldDesc, String version, String baseline) {
boolean fieldExisted = false;
for (FieldDescription existing : clazzDesc.fields) {
if (existing.equals(fieldDesc)) {
if (existing.equals(fieldDesc) && (!fieldExisted || (baseline != null && existing.versions.contains(baseline)))) {
fieldExisted = true;
fieldDesc = existing;
break;
}
}
fieldDesc.versions += version;
@@ -2133,6 +2227,7 @@ public class CreateSymbols {
}
static abstract class FeatureDescription {
int flagsNormalization = ~0;
int flags;
boolean deprecated;
String signature;
@@ -2197,7 +2292,7 @@ public class CreateSymbols {
@Override
public int hashCode() {
int hash = 3;
hash = 89 * hash + this.flags;
hash = 89 * hash + (this.flags & flagsNormalization);
hash = 89 * hash + (this.deprecated ? 1 : 0);
hash = 89 * hash + Objects.hashCode(this.signature);
hash = 89 * hash + listHashCode(this.classAnnotations);
@@ -2214,7 +2309,7 @@ public class CreateSymbols {
return false;
}
final FeatureDescription other = (FeatureDescription) obj;
if (this.flags != other.flags) {
if ((this.flags & flagsNormalization) != (other.flags & flagsNormalization)) {
return false;
}
if (this.deprecated != other.deprecated) {
@@ -2785,6 +2880,7 @@ public class CreateSymbols {
}
static class MethodDescription extends FeatureDescription {
static int METHODS_FLAGS_NORMALIZATION = ~0;
String name;
String descriptor;
List<String> thrownTypes;
@@ -2792,6 +2888,10 @@ public class CreateSymbols {
List<List<AnnotationDescription>> classParameterAnnotations;
List<List<AnnotationDescription>> runtimeParameterAnnotations;
public MethodDescription() {
flagsNormalization = METHODS_FLAGS_NORMALIZATION;
}
@Override
public int hashCode() {
int hash = super.hashCode();
@@ -3516,6 +3616,24 @@ public class CreateSymbols {
args);
break;
}
case "build-description-incremental-file": {
if (args.length != 6 && args.length != 7) {
help();
return ;
}
if (args.length == 7) {
if ("--normalize-method-flags".equals(args[6])) {
MethodDescription.METHODS_FLAGS_NORMALIZATION = ~(0x100 | 0x20);
} else {
help();
return ;
}
}
new CreateSymbols().createIncrementalBaseLineFromDataFile(args[1], args[2], args[3], args[4], "<none>".equals(args[5]) ? null : args[5], args);
break;
}
case "build-description-incremental": {
if (args.length != 3) {
help();

View File

@@ -28,7 +28,8 @@ include LauncherCommon.gmk
$(eval $(call SetupBuildLauncher, jconsole, \
MAIN_CLASS := sun.tools.jconsole.JConsole, \
JAVA_ARGS := --add-opens java.base/java.io=jdk.jconsole \
-Djconsole.showOutputViewer, \
-Djconsole.showOutputViewer \
-Djdk.attach.allowAttachSelf=true, \
CFLAGS_windows := -DJAVAW, \
LIBS_windows := user32.lib, \
))

View File

@@ -24,6 +24,7 @@
#
include JdkNativeCompilation.gmk
include TextFileProcessing.gmk
ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN,/../lib/jli)
@@ -118,14 +119,25 @@ define SetupBuildLauncherBody
$1_LIBS :=
ifeq ($(OPENJDK_TARGET_OS), macosx)
ifeq ($$($1_MACOSX_PRIVILEGED), true)
$1_PLIST_FILE := Info-privileged.plist
$1_PLIST_SRC_FILE := Info-privileged.plist
else
$1_PLIST_FILE := Info-cmdline.plist
$1_PLIST_SRC_FILE := Info-cmdline.plist
endif
$1_CFLAGS += -DPACKAGE_PATH='"$(PACKAGE_PATH)"'
$1_LDFLAGS += -Wl,-all_load \
-sectcreate __TEXT __info_plist $(MACOSX_PLIST_DIR)/$$($1_PLIST_FILE)
$1_PLIST_FILE := $$(SUPPORT_OUTPUTDIR)/native/$$(MODULE)/$1/Info.plist
$$(eval $$(call SetupTextFileProcessing, BUILD_PLIST_$1, \
SOURCE_FILES := $$(TOPDIR)/src/java.base/macosx/native/launcher/$$($1_PLIST_SRC_FILE), \
OUTPUT_FILE := $$($1_PLIST_FILE), \
REPLACEMENTS := \
@@ID@@ => $(MACOSX_BUNDLE_ID_BASE).$(VERSION_SHORT).$1 ; \
@@VERSION@@ => $(VERSION_NUMBER) ; \
))
$1_LDFLAGS += -Wl,-all_load -sectcreate __TEXT __info_plist $$($1_PLIST_FILE)
ifeq ($(STATIC_BUILD), true)
$1_LDFLAGS += -exported_symbols_list \
$(SUPPORT_OUTPUTDIR)/build-static/exported.symbols
@@ -193,6 +205,8 @@ define SetupBuildLauncherBody
$1 += $$(BUILD_LAUNCHER_$1)
TARGETS += $$($1)
$$(BUILD_LAUNCHER_$1): $$(BUILD_PLIST_$1)
ifeq ($(OPENJDK_TARGET_OS), aix)
$$(BUILD_LAUNCHER_$1): $(call FindStaticLib, java.base, jli_static)
endif

View File

@@ -36,7 +36,7 @@ else ifeq ($(OPENJDK_TARGET_OS), solaris)
SA_LDFLAGS := -mt
else ifeq ($(OPENJDK_TARGET_OS), macosx)
SA_CFLAGS := -Damd64 -D_GNU_SOURCE -mno-omit-leaf-frame-pointer \
SA_CFLAGS := -D_GNU_SOURCE -mno-omit-leaf-frame-pointer \
-mstack-alignment=16 -fPIC
LIBSA_EXTRA_SRC := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.hotspot.agent
else ifeq ($(OPENJDK_TARGET_OS), windows)

View File

@@ -77,8 +77,8 @@ endif
ifeq ($(OPENJDK_TARGET_OS), macosx)
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libTestMainKeyWindow := -ObjC
BUILD_JDK_JTREG_LIBRARIES_LIBS_libTestMainKeyWindow := -framework JavaVM \
-framework Cocoa -framework JavaNativeFoundation
BUILD_JDK_JTREG_LIBRARIES_LIBS_libTestMainKeyWindow := -framework Cocoa \
-framework JavaNativeFoundation
else
BUILD_JDK_JTREG_EXCLUDE += libTestMainKeyWindow.c
endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
dnl Copyright (c) 2014, Red Hat Inc. All rights reserved.
dnl Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved.
dnl DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
dnl
dnl This code is free software; you can redistribute it and/or modify it
@@ -23,12 +23,12 @@ dnl
dnl Process this file with m4 aarch64_ad.m4 to generate the arithmetic
dnl and shift patterns patterns used in aarch64.ad.
dnl
// BEGIN This section of the file is automatically generated. Do not edit --------------
dnl
define(`ORL2I', `ifelse($1,I,orL2I)')
dnl
define(`BASE_SHIFT_INSN',
`
`// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
instruct $2$1_reg_$4_reg(iReg$1NoSp dst,
iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2,
immI src3, rFlagsReg cr) %{
@@ -46,9 +46,11 @@ instruct $2$1_reg_$4_reg(iReg$1NoSp dst,
%}
ins_pipe(ialu_reg_reg_shift);
%}')dnl
%}
')dnl
define(`BASE_INVERTED_INSN',
`
`// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
instruct $2$1_reg_not_reg(iReg$1NoSp dst,
iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2, imm$1_M1 m1,
rFlagsReg cr) %{
@@ -68,9 +70,11 @@ dnl into this canonical form.
%}
ins_pipe(ialu_reg_reg);
%}')dnl
%}
')dnl
define(`INVERTED_SHIFT_INSN',
`
`// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
instruct $2$1_reg_$4_not_reg(iReg$1NoSp dst,
iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2,
immI src3, imm$1_M1 src4, rFlagsReg cr) %{
@@ -91,9 +95,12 @@ dnl into this canonical form.
%}
ins_pipe(ialu_reg_reg_shift);
%}')dnl
%}
')dnl
define(`NOT_INSN',
`instruct reg$1_not_reg(iReg$1NoSp dst,
`// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
instruct reg$1_not_reg(iReg$1NoSp dst,
iReg$1`'ORL2I($1) src1, imm$1_M1 m1,
rFlagsReg cr) %{
match(Set dst (Xor$1 src1 m1));
@@ -108,7 +115,8 @@ define(`NOT_INSN',
%}
ins_pipe(ialu_reg);
%}')dnl
%}
')dnl
dnl
define(`BOTH_SHIFT_INSNS',
`BASE_SHIFT_INSN(I, $1, ifelse($2,andr,andw,$2w), $3, $4)
@@ -120,7 +128,7 @@ BASE_INVERTED_INSN(L, $1, $2, $3, $4)')dnl
dnl
define(`BOTH_INVERTED_SHIFT_INSNS',
`INVERTED_SHIFT_INSN(I, $1, $2w, $3, $4, ~0, int)
INVERTED_SHIFT_INSN(L, $1, $2, $3, $4, ~0l, long)')dnl
INVERTED_SHIFT_INSN(L, $1, $2, $3, $4, ~0l, jlong)')dnl
dnl
define(`ALL_SHIFT_KINDS',
`BOTH_SHIFT_INSNS($1, $2, URShift, LSR)
@@ -147,8 +155,10 @@ ALL_SHIFT_KINDS(Add, add)
ALL_SHIFT_KINDS(Sub, sub)
dnl
dnl EXTEND mode, rshift_op, src, lshift_count, rshift_count
define(`EXTEND', `($2$1 (LShift$1 $3 $4) $5)')
define(`BFM_INSN',`
define(`EXTEND', `($2$1 (LShift$1 $3 $4) $5)') dnl
define(`BFM_INSN',`// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
// Shift Left followed by Shift Right.
// This idiom is used by the compiler for the i2b bytecode etc.
instruct $4$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src, immI lshift_count, immI rshift_count)
@@ -170,7 +180,8 @@ instruct $4$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src, immI lshift_count, immI rsh
%}
ins_pipe(ialu_reg_shift);
%}')
%}
')
BFM_INSN(L, 63, RShift, sbfm)
BFM_INSN(I, 31, RShift, sbfmw)
BFM_INSN(L, 63, URShift, ubfm)
@@ -178,35 +189,45 @@ BFM_INSN(I, 31, URShift, ubfmw)
dnl
// Bitfield extract with shift & mask
define(`BFX_INSN',
`instruct $3$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src, immI rshift, imm$1_bitmask mask)
`// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
instruct $3$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src, immI rshift, imm$1_bitmask mask)
%{
match(Set dst (And$1 ($2$1 src rshift) mask));
// Make sure we are not going to exceed what $3 can do.
predicate((exact_log2$6(n->in(2)->get_$5() + 1) + (n->in(1)->in(2)->get_int() & $4)) <= ($4 + 1));
ins_cost(INSN_COST);
format %{ "$3 $dst, $src, $rshift, $mask" %}
ins_encode %{
int rshift = $rshift$$constant;
long mask = $mask$$constant;
int width = exact_log2(mask+1);
int rshift = $rshift$$constant & $4;
intptr_t mask = $mask$$constant;
int width = exact_log2$6(mask+1);
__ $3(as_Register($dst$$reg),
as_Register($src$$reg), rshift, width);
%}
ins_pipe(ialu_reg_shift);
%}')
BFX_INSN(I,URShift,ubfxw)
BFX_INSN(L,URShift,ubfx)
%}
')
BFX_INSN(I, URShift, ubfxw, 31, int)
BFX_INSN(L, URShift, ubfx, 63, long, _long)
// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
// We can use ubfx when extending an And with a mask when we know mask
// is positive. We know that because immI_bitmask guarantees it.
instruct ubfxIConvI2L(iRegLNoSp dst, iRegIorL2I src, immI rshift, immI_bitmask mask)
%{
match(Set dst (ConvI2L (AndI (URShiftI src rshift) mask)));
// Make sure we are not going to exceed what ubfxw can do.
predicate((exact_log2(n->in(1)->in(2)->get_int() + 1) + (n->in(1)->in(1)->in(2)->get_int() & 31)) <= (31 + 1));
ins_cost(INSN_COST * 2);
format %{ "ubfx $dst, $src, $rshift, $mask" %}
ins_encode %{
int rshift = $rshift$$constant;
long mask = $mask$$constant;
int rshift = $rshift$$constant & 31;
intptr_t mask = $mask$$constant;
int width = exact_log2(mask+1);
__ ubfx(as_Register($dst$$reg),
as_Register($src$$reg), rshift, width);
@@ -214,10 +235,12 @@ instruct ubfxIConvI2L(iRegLNoSp dst, iRegIorL2I src, immI rshift, immI_bitmask m
ins_pipe(ialu_reg_shift);
%}
define(`UBFIZ_INSN',
define(`UBFIZ_INSN', `// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
// We can use ubfiz when masking by a positive number and then left shifting the result.
// We know that the mask is positive because imm$1_bitmask guarantees it.
`instruct $2$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src, immI lshift, imm$1_bitmask mask)
instruct $2$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src, immI lshift, imm$1_bitmask mask)
%{
match(Set dst (LShift$1 (And$1 src mask) lshift));
predicate((unsigned int)n->in(2)->get_int() <= $3 &&
@@ -227,16 +250,20 @@ define(`UBFIZ_INSN',
format %{ "$2 $dst, $src, $lshift, $mask" %}
ins_encode %{
int lshift = $lshift$$constant;
long mask = $mask$$constant;
int width = exact_log2(mask+1);
intptr_t mask = $mask$$constant;
int width = exact_log2$5(mask+1);
__ $2(as_Register($dst$$reg),
as_Register($src$$reg), lshift, width);
%}
ins_pipe(ialu_reg_shift);
%}')
%}
')
UBFIZ_INSN(I, ubfizw, 31, int)
UBFIZ_INSN(L, ubfiz, 63, long, _long)
// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
// If there is a convert I to L block between and AndI and a LShiftL, we can also match ubfiz
instruct ubfizIConvI2L(iRegLNoSp dst, iRegIorL2I src, immI lshift, immI_bitmask mask)
%{
@@ -248,7 +275,7 @@ instruct ubfizIConvI2L(iRegLNoSp dst, iRegIorL2I src, immI lshift, immI_bitmask
format %{ "ubfiz $dst, $src, $lshift, $mask" %}
ins_encode %{
int lshift = $lshift$$constant;
long mask = $mask$$constant;
intptr_t mask = $mask$$constant;
int width = exact_log2(mask+1);
__ ubfiz(as_Register($dst$$reg),
as_Register($src$$reg), lshift, width);
@@ -256,10 +283,12 @@ instruct ubfizIConvI2L(iRegLNoSp dst, iRegIorL2I src, immI lshift, immI_bitmask
ins_pipe(ialu_reg_shift);
%}
// Rotations
define(`EXTRACT_INSN',
`instruct extr$3$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2, immI lshift, immI rshift, rFlagsReg cr)
// Rotations dnl
define(`EXTRACT_INSN',`
// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
instruct extr$3$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2, immI lshift, immI rshift, rFlagsReg cr)
%{
match(Set dst ($3$1 (LShift$1 src1 lshift) (URShift$1 src2 rshift)));
predicate(0 == ((n->in(1)->in(2)->get_int() + n->in(2)->in(2)->get_int()) & $2));
@@ -278,9 +307,10 @@ EXTRACT_INSN(L, 63, Or, extr)
EXTRACT_INSN(I, 31, Or, extrw)
EXTRACT_INSN(L, 63, Add, extr)
EXTRACT_INSN(I, 31, Add, extrw)
define(`ROL_EXPAND', `
// $2 expander
define(`ROL_EXPAND', `// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
// $2 expander
instruct $2$1_rReg(iReg$1NoSp dst, iReg$1 src, iRegI shift, rFlagsReg cr)
%{
effect(DEF dst, USE src, USE shift);
@@ -293,10 +323,12 @@ instruct $2$1_rReg(iReg$1NoSp dst, iReg$1 src, iRegI shift, rFlagsReg cr)
rscratch1);
%}
ins_pipe(ialu_reg_reg_vshift);
%}')dnl
define(`ROR_EXPAND', `
// $2 expander
%}
')
define(`ROR_EXPAND', `// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
// $2 expander
instruct $2$1_rReg(iReg$1NoSp dst, iReg$1 src, iRegI shift, rFlagsReg cr)
%{
effect(DEF dst, USE src, USE shift);
@@ -308,8 +340,10 @@ instruct $2$1_rReg(iReg$1NoSp dst, iReg$1 src, iRegI shift, rFlagsReg cr)
as_Register($shift$$reg));
%}
ins_pipe(ialu_reg_reg_vshift);
%}')dnl
define(ROL_INSN, `
%}
')dnl
define(ROL_INSN, `// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
instruct $3$1_rReg_Var_C$2(iReg$1NoSp dst, iReg$1 src, iRegI shift, immI$2 c$2, rFlagsReg cr)
%{
match(Set dst (Or$1 (LShift$1 src shift) (URShift$1 src (SubI c$2 shift))));
@@ -317,8 +351,10 @@ instruct $3$1_rReg_Var_C$2(iReg$1NoSp dst, iReg$1 src, iRegI shift, immI$2 c$2,
expand %{
$3$1_rReg(dst, src, shift, cr);
%}
%}')dnl
define(ROR_INSN, `
%}
')dnl
define(ROR_INSN, `// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
instruct $3$1_rReg_Var_C$2(iReg$1NoSp dst, iReg$1 src, iRegI shift, immI$2 c$2, rFlagsReg cr)
%{
match(Set dst (Or$1 (URShift$1 src shift) (LShift$1 src (SubI c$2 shift))));
@@ -326,7 +362,8 @@ instruct $3$1_rReg_Var_C$2(iReg$1NoSp dst, iReg$1 src, iRegI shift, immI$2 c$2,
expand %{
$3$1_rReg(dst, src, shift, cr);
%}
%}')dnl
%}
')dnl
ROL_EXPAND(L, rol, rorv)
ROL_EXPAND(I, rol, rorvw)
ROL_INSN(L, _64, rol)
@@ -343,6 +380,8 @@ ROR_INSN(I, 0, ror)
// Add/subtract (extended)
dnl ADD_SUB_EXTENDED(mode, size, add node, shift node, insn, shift type, wordsize
define(`ADD_SUB_CONV', `
// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
instruct $3Ext$1(iReg$2NoSp dst, iReg$2`'ORL2I($2) src1, iReg$1`'ORL2I($1) src2, rFlagsReg cr)
%{
match(Set dst ($3$2 src1 (ConvI2L src2)));
@@ -355,10 +394,12 @@ instruct $3Ext$1(iReg$2NoSp dst, iReg$2`'ORL2I($2) src1, iReg$1`'ORL2I($1) src2,
%}
ins_pipe(ialu_reg_reg);
%}')dnl
ADD_SUB_CONV(I,L,Add,add,sxtw);
ADD_SUB_CONV(I,L,Sub,sub,sxtw);
ADD_SUB_CONV(I,L,Add,add,sxtw)
ADD_SUB_CONV(I,L,Sub,sub,sxtw)
dnl
define(`ADD_SUB_EXTENDED', `
// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
instruct $3Ext$1_$6(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2, immI_`'eval($7-$2) lshift, immI_`'eval($7-$2) rshift, rFlagsReg cr)
%{
match(Set dst ($3$1 src1 EXTEND($1, $4, src2, lshift, rshift)));
@@ -370,7 +411,7 @@ instruct $3Ext$1_$6(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) sr
as_Register($src2$$reg), ext::$6);
%}
ins_pipe(ialu_reg_reg);
%}')
%}')dnl
ADD_SUB_EXTENDED(I,16,Add,RShift,add,sxth,32)
ADD_SUB_EXTENDED(I,8,Add,RShift,add,sxtb,32)
ADD_SUB_EXTENDED(I,8,Add,URShift,add,uxtb,32)
@@ -380,7 +421,8 @@ ADD_SUB_EXTENDED(L,8,Add,RShift,add,sxtb,64)
ADD_SUB_EXTENDED(L,8,Add,URShift,add,uxtb,64)
dnl
dnl ADD_SUB_ZERO_EXTEND(mode, size, add node, insn, shift type)
define(`ADD_SUB_ZERO_EXTEND', `
define(`ADD_SUB_ZERO_EXTEND', `// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
instruct $3Ext$1_$5_and(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2, imm$1_$2 mask, rFlagsReg cr)
%{
match(Set dst ($3$1 src1 (And$1 src2 mask)));
@@ -392,7 +434,8 @@ instruct $3Ext$1_$5_and(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1
as_Register($src2$$reg), ext::$5);
%}
ins_pipe(ialu_reg_reg);
%}')
%}
')
dnl
ADD_SUB_ZERO_EXTEND(I,255,Add,addw,uxtb)
ADD_SUB_ZERO_EXTEND(I,65535,Add,addw,uxth)
@@ -407,7 +450,8 @@ ADD_SUB_ZERO_EXTEND(L,65535,Sub,sub,uxth)
ADD_SUB_ZERO_EXTEND(L,4294967295,Sub,sub,uxtw)
dnl
dnl ADD_SUB_ZERO_EXTEND_SHIFT(mode, size, add node, insn, ext type)
define(`ADD_SUB_EXTENDED_SHIFT', `
define(`ADD_SUB_EXTENDED_SHIFT', `// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
instruct $3Ext$1_$6_shift(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2, immIExt lshift2, immI_`'eval($7-$2) lshift1, immI_`'eval($7-$2) rshift1, rFlagsReg cr)
%{
match(Set dst ($3$1 src1 (LShift$1 EXTEND($1, $4, src2, lshift1, rshift1) lshift2)));
@@ -419,7 +463,8 @@ instruct $3Ext$1_$6_shift(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I(
as_Register($src2$$reg), ext::$6, ($lshift2$$constant));
%}
ins_pipe(ialu_reg_reg_shift);
%}')
%}
')
dnl $1 $2 $3 $4 $5 $6 $7
ADD_SUB_EXTENDED_SHIFT(L,8,Add,RShift,add,sxtb,64)
ADD_SUB_EXTENDED_SHIFT(L,16,Add,RShift,add,sxth,64)
@@ -436,7 +481,8 @@ ADD_SUB_EXTENDED_SHIFT(I,8,Sub,RShift,subw,sxtb,32)
ADD_SUB_EXTENDED_SHIFT(I,16,Sub,RShift,subw,sxth,32)
dnl
dnl ADD_SUB_CONV_SHIFT(mode, add node, insn, ext type)
define(`ADD_SUB_CONV_SHIFT', `
define(`ADD_SUB_CONV_SHIFT', `// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
instruct $2ExtI_shift(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iRegIorL2I src2, immIExt lshift, rFlagsReg cr)
%{
match(Set dst ($2$1 src1 (LShiftL (ConvI2L src2) lshift)));
@@ -448,13 +494,14 @@ instruct $2ExtI_shift(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iRegIorL2I src2, i
as_Register($src2$$reg), ext::$4, ($lshift$$constant));
%}
ins_pipe(ialu_reg_reg_shift);
%}')
dnl
ADD_SUB_CONV_SHIFT(L,Add,add,sxtw);
ADD_SUB_CONV_SHIFT(L,Sub,sub,sxtw);
%}
')dnl
ADD_SUB_CONV_SHIFT(L,Add,add,sxtw)
ADD_SUB_CONV_SHIFT(L,Sub,sub,sxtw)
dnl
dnl ADD_SUB_ZERO_EXTEND(mode, size, add node, insn, ext type)
define(`ADD_SUB_ZERO_EXTEND_SHIFT', `
define(`ADD_SUB_ZERO_EXTEND_SHIFT', `// This pattern is automatically generated from aarch64_ad.m4
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
instruct $3Ext$1_$5_and_shift(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2, imm$1_$2 mask, immIExt lshift, rFlagsReg cr)
%{
match(Set dst ($3$1 src1 (LShift$1 (And$1 src2 mask) lshift)));
@@ -466,8 +513,8 @@ instruct $3Ext$1_$5_and_shift(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'OR
as_Register($src2$$reg), ext::$5, ($lshift$$constant));
%}
ins_pipe(ialu_reg_reg_shift);
%}')
dnl
%}
')dnl
dnl $1 $2 $3 $4 $5
ADD_SUB_ZERO_EXTEND_SHIFT(L,255,Add,add,uxtb)
ADD_SUB_ZERO_EXTEND_SHIFT(L,65535,Add,add,uxth)
@@ -483,4 +530,4 @@ dnl
ADD_SUB_ZERO_EXTEND_SHIFT(I,255,Sub,subw,uxtb)
ADD_SUB_ZERO_EXTEND_SHIFT(I,65535,Sub,subw,uxth)
dnl
// END This section of the file is automatically generated. Do not edit --------------

View File

@@ -31,7 +31,7 @@
#include "interpreter/interpreter.hpp"
#ifndef PRODUCT
const unsigned long Assembler::asm_bp = 0x00007fffee09ac88;
const uintptr_t Assembler::asm_bp = 0x00007fffee09ac88;
#endif
#include "compiler/disassembler.hpp"
@@ -134,14 +134,14 @@ void entry(CodeBuffer *cb) {
__ subs(r11, r5, 582u); // subs x11, x5, #582
// LogicalImmOp
__ andw(r23, r22, 32768ul); // and w23, w22, #0x8000
__ orrw(r4, r10, 4042322160ul); // orr w4, w10, #0xf0f0f0f0
__ eorw(r0, r24, 4042322160ul); // eor w0, w24, #0xf0f0f0f0
__ andsw(r19, r29, 2139127680ul); // ands w19, w29, #0x7f807f80
__ andr(r5, r10, 4503599627354112ul); // and x5, x10, #0xfffffffffc000
__ orr(r12, r30, 18445618178097414144ul); // orr x12, x30, #0xfffc0000fffc0000
__ eor(r30, r5, 262128ul); // eor x30, x5, #0x3fff0
__ ands(r26, r23, 4194300ul); // ands x26, x23, #0x3ffffc
__ andw(r23, r22, 32768ull); // and w23, w22, #0x8000
__ orrw(r4, r10, 4042322160ull); // orr w4, w10, #0xf0f0f0f0
__ eorw(r0, r24, 4042322160ull); // eor w0, w24, #0xf0f0f0f0
__ andsw(r19, r29, 2139127680ull); // ands w19, w29, #0x7f807f80
__ andr(r5, r10, 4503599627354112ull); // and x5, x10, #0xfffffffffc000
__ orr(r12, r30, 18445618178097414144ull); // orr x12, x30, #0xfffc0000fffc0000
__ eor(r30, r5, 262128ull); // eor x30, x5, #0x3fff0
__ ands(r26, r23, 4194300ull); // ands x26, x23, #0x3ffffc
// AbsOp
__ b(__ pc()); // b .
@@ -1226,7 +1226,7 @@ extern "C" {
Disassembler::decode((address)start, (address)start + len);
}
JNIEXPORT void das1(unsigned long insn) {
JNIEXPORT void das1(uintptr_t insn) {
das(insn, 1);
}
}
@@ -1265,7 +1265,7 @@ void Address::lea(MacroAssembler *as, Register r) const {
}
}
void Assembler::adrp(Register reg1, const Address &dest, unsigned long &byte_offset) {
void Assembler::adrp(Register reg1, const Address &dest, uint64_t &byte_offset) {
ShouldNotReachHere();
}
@@ -1274,7 +1274,7 @@ void Assembler::adrp(Register reg1, const Address &dest, unsigned long &byte_off
#define starti Instruction_aarch64 do_not_use(this); set_current(&do_not_use)
void Assembler::adr(Register Rd, address adr) {
long offset = adr - pc();
intptr_t offset = adr - pc();
int offset_lo = offset & 3;
offset >>= 2;
starti;
@@ -1285,7 +1285,7 @@ void Assembler::adrp(Register reg1, const Address &dest, unsigned long &byte_off
void Assembler::_adrp(Register Rd, address adr) {
uint64_t pc_page = (uint64_t)pc() >> 12;
uint64_t adr_page = (uint64_t)adr >> 12;
long offset = adr_page - pc_page;
intptr_t offset = adr_page - pc_page;
int offset_lo = offset & 3;
offset >>= 2;
starti;
@@ -1434,9 +1434,8 @@ void Assembler::add_sub_immediate(Register Rd, Register Rn, unsigned uimm, int o
srf(Rn, 5);
}
bool Assembler::operand_valid_for_add_sub_immediate(long imm) {
bool shift = false;
unsigned long uimm = uabs(imm);
bool Assembler::operand_valid_for_add_sub_immediate(int64_t imm) {
uint64_t uimm = (uint64_t)uabs((jlong)imm);
if (uimm < (1 << 12))
return true;
if (uimm < (1 << 24)

View File

@@ -199,7 +199,7 @@ public:
return extend(uval, msb - lsb);
}
static void patch(address a, int msb, int lsb, unsigned long val) {
static void patch(address a, int msb, int lsb, uint64_t val) {
int nbits = msb - lsb + 1;
guarantee(val < (1U << nbits), "Field too big for insn");
assert_cond(msb >= lsb);
@@ -212,9 +212,9 @@ public:
*(unsigned *)a = target;
}
static void spatch(address a, int msb, int lsb, long val) {
static void spatch(address a, int msb, int lsb, int64_t val) {
int nbits = msb - lsb + 1;
long chk = val >> (nbits - 1);
int64_t chk = val >> (nbits - 1);
guarantee (chk == -1 || chk == 0, "Field too big for insn");
unsigned uval = val;
unsigned mask = (1U << nbits) - 1;
@@ -245,9 +245,9 @@ public:
f(val, bit, bit);
}
void sf(long val, int msb, int lsb) {
void sf(int64_t val, int msb, int lsb) {
int nbits = msb - lsb + 1;
long chk = val >> (nbits - 1);
int64_t chk = val >> (nbits - 1);
guarantee (chk == -1 || chk == 0, "Field too big for insn");
unsigned uval = val;
unsigned mask = (1U << nbits) - 1;
@@ -355,7 +355,7 @@ class Address {
private:
Register _base;
Register _index;
long _offset;
int64_t _offset;
enum mode _mode;
extend _ext;
@@ -380,8 +380,14 @@ class Address {
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
Address(Register r, long o)
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
Address(Register r, long long o)
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
Address(Register r, unsigned int o)
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
Address(Register r, unsigned long o)
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
Address(Register r, unsigned long long o)
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
#ifdef ASSERT
Address(Register r, ByteSize disp)
: _mode(base_plus_offset), _base(r), _offset(in_bytes(disp)),
@@ -421,7 +427,7 @@ class Address {
"wrong mode");
return _base;
}
long offset() const {
int64_t offset() const {
return _offset;
}
Register index() const {
@@ -553,10 +559,10 @@ class Address {
void lea(MacroAssembler *, Register) const;
static bool offset_ok_for_immed(long offset, int shift = 0) {
static bool offset_ok_for_immed(int64_t offset, int shift = 0) {
unsigned mask = (1 << shift) - 1;
if (offset < 0 || offset & mask) {
return (uabs(offset) < (1 << (20 - 12))); // Unscaled offset
return (uabs((julong)offset) < (1 << (20 - 12))); // Unscaled offset
} else {
return ((offset >> shift) < (1 << (21 - 10 + 1))); // Scaled, unsigned offset
}
@@ -613,10 +619,10 @@ typedef enum {
class Assembler : public AbstractAssembler {
#ifndef PRODUCT
static const unsigned long asm_bp;
static const uintptr_t asm_bp;
void emit_long(jint x) {
if ((unsigned long)pc() == asm_bp)
if ((uintptr_t)pc() == asm_bp)
asm volatile ("nop");
AbstractAssembler::emit_int32(x);
}
@@ -659,7 +665,7 @@ public:
void f(unsigned val, int msb) {
current->f(val, msb, msb);
}
void sf(long val, int msb, int lsb) {
void sf(int64_t val, int msb, int lsb) {
current->sf(val, msb, lsb);
}
void rf(Register reg, int lsb) {
@@ -709,7 +715,7 @@ public:
wrap_label(Rd, L, &Assembler::_adrp);
}
void adrp(Register Rd, const Address &dest, unsigned long &offset);
void adrp(Register Rd, const Address &dest, uint64_t &offset);
#undef INSN
@@ -833,7 +839,7 @@ public:
// architecture. In debug mode we shrink it in order to test
// trampolines, but not so small that branches in the interpreter
// are out of range.
static const unsigned long branch_range = NOT_DEBUG(128 * M) DEBUG_ONLY(2 * M);
static const uint64_t branch_range = NOT_DEBUG(128 * M) DEBUG_ONLY(2 * M);
static bool reachable_from_branch_at(address branch, address target) {
return uabs(target - branch) < branch_range;
@@ -843,7 +849,7 @@ public:
#define INSN(NAME, opcode) \
void NAME(address dest) { \
starti; \
long offset = (dest - pc()) >> 2; \
int64_t offset = (dest - pc()) >> 2; \
DEBUG_ONLY(assert(reachable_from_branch_at(pc(), dest), "debug only")); \
f(opcode, 31), f(0b00101, 30, 26), sf(offset, 25, 0); \
} \
@@ -860,7 +866,7 @@ public:
// Compare & branch (immediate)
#define INSN(NAME, opcode) \
void NAME(Register Rt, address dest) { \
long offset = (dest - pc()) >> 2; \
int64_t offset = (dest - pc()) >> 2; \
starti; \
f(opcode, 31, 24), sf(offset, 23, 5), rf(Rt, 0); \
} \
@@ -878,7 +884,7 @@ public:
// Test & branch (immediate)
#define INSN(NAME, opcode) \
void NAME(Register Rt, int bitpos, address dest) { \
long offset = (dest - pc()) >> 2; \
int64_t offset = (dest - pc()) >> 2; \
int b5 = bitpos >> 5; \
bitpos &= 0x1f; \
starti; \
@@ -899,7 +905,7 @@ public:
{EQ, NE, HS, CS=HS, LO, CC=LO, MI, PL, VS, VC, HI, LS, GE, LT, GT, LE, AL, NV};
void br(Condition cond, address dest) {
long offset = (dest - pc()) >> 2;
int64_t offset = (dest - pc()) >> 2;
starti;
f(0b0101010, 31, 25), f(0, 24), sf(offset, 23, 5), f(0, 4), f(cond, 3, 0);
}
@@ -1278,7 +1284,7 @@ public:
// Load register (literal)
#define INSN(NAME, opc, V) \
void NAME(Register Rt, address dest) { \
long offset = (dest - pc()) >> 2; \
int64_t offset = (dest - pc()) >> 2; \
starti; \
f(opc, 31, 30), f(0b011, 29, 27), f(V, 26), f(0b00, 25, 24), \
sf(offset, 23, 5); \
@@ -1303,7 +1309,7 @@ public:
#define INSN(NAME, opc, V) \
void NAME(FloatRegister Rt, address dest) { \
long offset = (dest - pc()) >> 2; \
int64_t offset = (dest - pc()) >> 2; \
starti; \
f(opc, 31, 30), f(0b011, 29, 27), f(V, 26), f(0b00, 25, 24), \
sf(offset, 23, 5); \
@@ -1318,7 +1324,7 @@ public:
#define INSN(NAME, opc, V) \
void NAME(address dest, prfop op = PLDL1KEEP) { \
long offset = (dest - pc()) >> 2; \
int64_t offset = (dest - pc()) >> 2; \
starti; \
f(opc, 31, 30), f(0b011, 29, 27), f(V, 26), f(0b00, 25, 24), \
sf(offset, 23, 5); \
@@ -1394,7 +1400,7 @@ public:
assert(size == 0b10 || size == 0b11, "bad operand size in ldr");
assert(op == 0b01, "literal form can only be used with loads");
f(size & 0b01, 31, 30), f(0b011, 29, 27), f(0b00, 25, 24);
long offset = (adr.target() - pc()) >> 2;
int64_t offset = (adr.target() - pc()) >> 2;
sf(offset, 23, 5);
code_section()->relocate(pc(), adr.rspec());
return;
@@ -2612,7 +2618,7 @@ void ext(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, FloatRegister V
virtual void bang_stack_with_offset(int offset);
static bool operand_valid_for_logical_immediate(bool is32, uint64_t imm);
static bool operand_valid_for_add_sub_immediate(long imm);
static bool operand_valid_for_add_sub_immediate(int64_t imm);
static bool operand_valid_for_float_immediate(double imm);
void emit_data64(jlong data, relocInfo::relocType rtype, int format = 0);

View File

@@ -44,13 +44,13 @@ enum {
pd_nof_cpu_regs_frame_map = RegisterImpl::number_of_registers, // number of registers used during code emission
pd_nof_fpu_regs_frame_map = FloatRegisterImpl::number_of_registers, // number of registers used during code emission
pd_nof_caller_save_cpu_regs_frame_map = 19 - 2, // number of registers killed by calls
pd_nof_caller_save_cpu_regs_frame_map = 19 - 2 BSD_ONLY(- 1 /* r18 */), // number of registers killed by calls
pd_nof_caller_save_fpu_regs_frame_map = 32, // number of registers killed by calls
pd_first_callee_saved_reg = 19 - 2,
pd_last_callee_saved_reg = 26 - 2,
pd_first_callee_saved_reg = 19 - 2 BSD_ONLY(- 1 /* r18 */),
pd_last_callee_saved_reg = 26 - 2 BSD_ONLY(- 1 /* r18 */),
pd_last_allocatable_cpu_reg = 16,
pd_last_allocatable_cpu_reg = 16 BSD_ONLY(- 1 /* r18 */),
pd_nof_cpu_regs_reg_alloc
= pd_last_allocatable_cpu_reg + 1, // number of registers that are visible to register allocator
@@ -60,9 +60,9 @@ enum {
pd_nof_fpu_regs_linearscan = pd_nof_fpu_regs_frame_map, // number of registers visible to linear scan
pd_nof_xmm_regs_linearscan = 0, // like sparc we don't have any of these
pd_first_cpu_reg = 0,
pd_last_cpu_reg = 16,
pd_last_cpu_reg = 16 BSD_ONLY(- 1 /* r18 */),
pd_first_byte_reg = 0,
pd_last_byte_reg = 16,
pd_last_byte_reg = 16 BSD_ONLY(- 1 /* r18 */),
pd_first_fpu_reg = pd_nof_cpu_regs_frame_map,
pd_last_fpu_reg = pd_first_fpu_reg + 31,

View File

@@ -181,7 +181,9 @@ void FrameMap::initialize() {
map_register(i, r15); r15_opr = LIR_OprFact::single_cpu(i); i++;
map_register(i, r16); r16_opr = LIR_OprFact::single_cpu(i); i++;
map_register(i, r17); r17_opr = LIR_OprFact::single_cpu(i); i++;
#ifndef __APPLE__
map_register(i, r18); r18_opr = LIR_OprFact::single_cpu(i); i++;
#endif
map_register(i, r19); r19_opr = LIR_OprFact::single_cpu(i); i++;
map_register(i, r20); r20_opr = LIR_OprFact::single_cpu(i); i++;
map_register(i, r21); r21_opr = LIR_OprFact::single_cpu(i); i++;
@@ -199,6 +201,10 @@ void FrameMap::initialize() {
map_register(i, r8); r8_opr = LIR_OprFact::single_cpu(i); i++; // rscratch1
map_register(i, r9); r9_opr = LIR_OprFact::single_cpu(i); i++; // rscratch2
#ifdef __APPLE__
map_register(i, r18); r18_opr = LIR_OprFact::single_cpu(i); i++; // rscratch2
#endif
rscratch1_opr = r8_opr;
rscratch2_opr = r9_opr;
rscratch1_long_opr = LIR_OprFact::double_cpu(r8_opr->cpu_regnr(), r8_opr->cpu_regnr());
@@ -227,7 +233,9 @@ void FrameMap::initialize() {
_caller_save_cpu_regs[13] = r15_opr;
_caller_save_cpu_regs[14] = r16_opr;
_caller_save_cpu_regs[15] = r17_opr;
#ifndef __APPLE__
_caller_save_cpu_regs[16] = r18_opr;
#endif
for (int i = 0; i < 8; i++) {
_caller_save_fpu_regs[i] = LIR_OprFact::single_fpu(i);

View File

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2020, Red Hat Inc. 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
@@ -42,6 +42,7 @@
#include "oops/objArrayKlass.hpp"
#include "runtime/frame.inline.hpp"
#include "runtime/sharedRuntime.hpp"
#include "utilities/macros.hpp"
#include "vmreg_aarch64.inline.hpp"
@@ -1377,7 +1378,7 @@ void LIR_Assembler::emit_typecheck_helper(LIR_OpTypeCheck *op, Label* success, L
__ load_klass(klass_RInfo, obj);
if (k->is_loaded()) {
// See if we get an immediate positive hit
__ ldr(rscratch1, Address(klass_RInfo, long(k->super_check_offset())));
__ ldr(rscratch1, Address(klass_RInfo, int64_t(k->super_check_offset())));
__ cmp(k_RInfo, rscratch1);
if ((juint)in_bytes(Klass::secondary_super_cache_offset()) != k->super_check_offset()) {
__ br(Assembler::NE, *failure_target);
@@ -2625,7 +2626,7 @@ void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
Register res = op->result_opr()->as_register();
assert_different_registers(val, crc, res);
unsigned long offset;
uint64_t offset;
__ adrp(res, ExternalAddress(StubRoutines::crc_table_addr()), offset);
if (offset) __ add(res, res, offset);
@@ -2818,6 +2819,12 @@ void LIR_Assembler::negate(LIR_Opr left, LIR_Opr dest, LIR_Opr tmp) {
void LIR_Assembler::leal(LIR_Opr addr, LIR_Opr dest, LIR_PatchCode patch_code, CodeEmitInfo* info) {
#if INCLUDE_SHENANDOAHGC
if (UseShenandoahGC && patch_code != lir_patch_none) {
deoptimize_trap(info);
return;
}
#endif
assert(patch_code == lir_patch_none, "Patch code not supported");
__ lea(dest->as_register_lo(), as_Address(addr->as_address_ptr()));
}

View File

@@ -1,6 +1,6 @@
/*
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2020, Red Hat Inc. 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
@@ -672,14 +672,14 @@ intptr_t* frame::real_fp() const {
#define DESCRIBE_FP_OFFSET(name) \
{ \
unsigned long *p = (unsigned long *)fp; \
printf("0x%016lx 0x%016lx %s\n", (unsigned long)(p + frame::name##_offset), \
uintptr_t *p = (uintptr_t *)fp; \
printf("0x%016lx 0x%016lx %s\n", (uintptr_t)(p + frame::name##_offset), \
p[frame::name##_offset], #name); \
}
static __thread unsigned long nextfp;
static __thread unsigned long nextpc;
static __thread unsigned long nextsp;
static __thread uintptr_t nextfp;
static __thread uintptr_t nextpc;
static __thread uintptr_t nextsp;
static __thread RegisterMap *reg_map;
static void printbc(Method *m, intptr_t bcx) {
@@ -698,7 +698,7 @@ static void printbc(Method *m, intptr_t bcx) {
printf("%s : %s ==> %s\n", m->name_and_sig_as_C_string(), buf, name);
}
void internal_pf(unsigned long sp, unsigned long fp, unsigned long pc, unsigned long bcx) {
void internal_pf(uintptr_t sp, uintptr_t fp, uintptr_t pc, uintptr_t bcx) {
if (! fp)
return;
@@ -712,7 +712,7 @@ void internal_pf(unsigned long sp, unsigned long fp, unsigned long pc, unsigned
DESCRIBE_FP_OFFSET(interpreter_frame_locals);
DESCRIBE_FP_OFFSET(interpreter_frame_bcp);
DESCRIBE_FP_OFFSET(interpreter_frame_initial_sp);
unsigned long *p = (unsigned long *)fp;
uintptr_t *p = (uintptr_t *)fp;
// We want to see all frames, native and Java. For compiled and
// interpreted frames we have special information that allows us to
@@ -722,16 +722,16 @@ void internal_pf(unsigned long sp, unsigned long fp, unsigned long pc, unsigned
if (this_frame.is_compiled_frame() ||
this_frame.is_interpreted_frame()) {
frame sender = this_frame.sender(reg_map);
nextfp = (unsigned long)sender.fp();
nextpc = (unsigned long)sender.pc();
nextsp = (unsigned long)sender.unextended_sp();
nextfp = (uintptr_t)sender.fp();
nextpc = (uintptr_t)sender.pc();
nextsp = (uintptr_t)sender.unextended_sp();
} else {
nextfp = p[frame::link_offset];
nextpc = p[frame::return_addr_offset];
nextsp = (unsigned long)&p[frame::sender_sp_offset];
nextsp = (uintptr_t)&p[frame::sender_sp_offset];
}
if (bcx == -1ul)
if (bcx == -1ULL)
bcx = p[frame::interpreter_frame_bcp_offset];
if (Interpreter::contains((address)pc)) {
@@ -765,8 +765,8 @@ extern "C" void npf() {
internal_pf (nextsp, nextfp, nextpc, -1);
}
extern "C" void pf(unsigned long sp, unsigned long fp, unsigned long pc,
unsigned long bcx, unsigned long thread) {
extern "C" void pf(uintptr_t sp, uintptr_t fp, uintptr_t pc,
uintptr_t bcx, uintptr_t thread) {
if (!reg_map) {
reg_map = NEW_C_HEAP_OBJ(RegisterMap, mtNone);
::new (reg_map) RegisterMap((JavaThread*)thread, false);
@@ -785,9 +785,9 @@ extern "C" void pf(unsigned long sp, unsigned long fp, unsigned long pc,
// support for printing out where we are in a Java method
// needs to be passed current fp and bcp register values
// prints method name, bc index and bytecode name
extern "C" void pm(unsigned long fp, unsigned long bcx) {
extern "C" void pm(uintptr_t fp, uintptr_t bcx) {
DESCRIBE_FP_OFFSET(interpreter_frame_method);
unsigned long *p = (unsigned long *)fp;
uintptr_t *p = (uintptr_t *)fp;
Method* m = (Method*)p[frame::interpreter_frame_method_offset];
printbc(m, bcx);
}

View File

@@ -172,7 +172,7 @@ void BarrierSetAssembler::eden_allocate(MacroAssembler* masm, Register obj,
Label retry;
__ bind(retry);
{
unsigned long offset;
uint64_t offset;
__ adrp(rscratch1, ExternalAddress((address) Universe::heap()->end_addr()), offset);
__ ldr(heap_end, Address(rscratch1, offset));
}
@@ -181,7 +181,7 @@ void BarrierSetAssembler::eden_allocate(MacroAssembler* masm, Register obj,
// Get the current top of the heap
{
unsigned long offset;
uint64_t offset;
__ adrp(rscratch1, heap_top, offset);
// Use add() here after ARDP, rather than lea().
// lea() does not generate anything if its offset is zero.

View File

@@ -0,0 +1,113 @@
/*
* Copyright (c) 2018, Red Hat, Inc. All rights reserved.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
#include "precompiled.hpp"
#include "c1/c1_LIRAssembler.hpp"
#include "c1/c1_MacroAssembler.hpp"
#include "gc/shenandoah/shenandoahBarrierSet.hpp"
#include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp"
#include "gc/shenandoah/c1/shenandoahBarrierSetC1.hpp"
#define __ masm->masm()->
void LIR_OpShenandoahCompareAndSwap::emit_code(LIR_Assembler* masm) {
Register addr = _addr->as_register_lo();
Register newval = _new_value->as_register();
Register cmpval = _cmp_value->as_register();
Register tmp1 = _tmp1->as_register();
Register tmp2 = _tmp2->as_register();
Register result = result_opr()->as_register();
ShenandoahBarrierSet::assembler()->storeval_barrier(masm->masm(), newval, rscratch2);
if (UseCompressedOops) {
__ encode_heap_oop(tmp1, cmpval);
cmpval = tmp1;
__ encode_heap_oop(tmp2, newval);
newval = tmp2;
}
ShenandoahBarrierSet::assembler()->cmpxchg_oop(masm->masm(), addr, cmpval, newval, /*acquire*/ false, /*release*/ true, /*weak*/ false, /*is_cae*/ false, result);
}
#undef __
#ifdef ASSERT
#define __ gen->lir(__FILE__, __LINE__)->
#else
#define __ gen->lir()->
#endif
LIR_Opr ShenandoahBarrierSetC1::atomic_cmpxchg_at_resolved(LIRAccess& access, LIRItem& cmp_value, LIRItem& new_value) {
BasicType bt = access.type();
if (access.is_oop()) {
LIRGenerator *gen = access.gen();
if (ShenandoahSATBBarrier) {
pre_barrier(gen, access.access_emit_info(), access.decorators(), access.resolved_addr(),
LIR_OprFact::illegalOpr /* pre_val */);
}
if (ShenandoahCASBarrier) {
cmp_value.load_item();
new_value.load_item();
LIR_Opr t1 = gen->new_register(T_OBJECT);
LIR_Opr t2 = gen->new_register(T_OBJECT);
LIR_Opr addr = access.resolved_addr()->as_address_ptr()->base();
LIR_Opr result = gen->new_register(T_INT);
__ append(new LIR_OpShenandoahCompareAndSwap(addr, cmp_value.result(), new_value.result(), t1, t2, result));
return result;
}
}
return BarrierSetC1::atomic_cmpxchg_at_resolved(access, cmp_value, new_value);
}
LIR_Opr ShenandoahBarrierSetC1::atomic_xchg_at_resolved(LIRAccess& access, LIRItem& value) {
LIRGenerator* gen = access.gen();
BasicType type = access.type();
LIR_Opr result = gen->new_register(type);
value.load_item();
LIR_Opr value_opr = value.result();
if (access.is_oop()) {
value_opr = storeval_barrier(access.gen(), value_opr, access.access_emit_info(), access.decorators());
}
assert(type == T_INT || type == T_OBJECT || type == T_ARRAY LP64_ONLY( || type == T_LONG ), "unexpected type");
LIR_Opr tmp = gen->new_register(T_INT);
__ xchg(access.resolved_addr(), value_opr, result, tmp);
if (access.is_oop()) {
result = load_reference_barrier(access.gen(), result, LIR_OprFact::addressConst(0));
LIR_Opr tmp = gen->new_register(type);
__ move(result, tmp);
result = tmp;
if (ShenandoahSATBBarrier) {
pre_barrier(access.gen(), access.access_emit_info(), access.decorators(), LIR_OprFact::illegalOpr,
result /* pre_val */);
}
}
return result;
}

View File

@@ -0,0 +1,676 @@
/*
* Copyright (c) 2018, 2020, Red Hat, Inc. All rights reserved.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
#include "precompiled.hpp"
#include "gc/shenandoah/shenandoahBarrierSet.hpp"
#include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp"
#include "gc/shenandoah/shenandoahForwarding.hpp"
#include "gc/shenandoah/shenandoahHeap.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.hpp"
#include "gc/shenandoah/shenandoahRuntime.hpp"
#include "gc/shenandoah/shenandoahThreadLocalData.hpp"
#include "gc/shenandoah/heuristics/shenandoahHeuristics.hpp"
#include "interpreter/interpreter.hpp"
#include "interpreter/interp_masm.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/thread.hpp"
#ifdef COMPILER1
#include "c1/c1_LIRAssembler.hpp"
#include "c1/c1_MacroAssembler.hpp"
#include "gc/shenandoah/c1/shenandoahBarrierSetC1.hpp"
#endif
#define __ masm->
address ShenandoahBarrierSetAssembler::_shenandoah_lrb = NULL;
void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
Register src, Register dst, Register count, RegSet saved_regs) {
if (is_oop) {
bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0;
if ((ShenandoahSATBBarrier && !dest_uninitialized) || ShenandoahStoreValEnqueueBarrier || ShenandoahLoadRefBarrier) {
Label done;
// Avoid calling runtime if count == 0
__ cbz(count, done);
// Is GC active?
Address gc_state(rthread, in_bytes(ShenandoahThreadLocalData::gc_state_offset()));
__ ldrb(rscratch1, gc_state);
if (ShenandoahSATBBarrier && dest_uninitialized) {
__ tbz(rscratch1, ShenandoahHeap::HAS_FORWARDED_BITPOS, done);
} else {
__ mov(rscratch2, ShenandoahHeap::HAS_FORWARDED | ShenandoahHeap::MARKING);
__ tst(rscratch1, rscratch2);
__ br(Assembler::EQ, done);
}
__ push(saved_regs, sp);
if (UseCompressedOops) {
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_narrow_oop_entry), src, dst, count);
} else {
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_oop_entry), src, dst, count);
}
__ pop(saved_regs, sp);
__ bind(done);
}
}
}
void ShenandoahBarrierSetAssembler::shenandoah_write_barrier_pre(MacroAssembler* masm,
Register obj,
Register pre_val,
Register thread,
Register tmp,
bool tosca_live,
bool expand_call) {
if (ShenandoahSATBBarrier) {
satb_write_barrier_pre(masm, obj, pre_val, thread, tmp, tosca_live, expand_call);
}
}
void ShenandoahBarrierSetAssembler::satb_write_barrier_pre(MacroAssembler* masm,
Register obj,
Register pre_val,
Register thread,
Register tmp,
bool tosca_live,
bool expand_call) {
// If expand_call is true then we expand the call_VM_leaf macro
// directly to skip generating the check by
// InterpreterMacroAssembler::call_VM_leaf_base that checks _last_sp.
assert(thread == rthread, "must be");
Label done;
Label runtime;
assert_different_registers(obj, pre_val, tmp, rscratch1);
assert(pre_val != noreg && tmp != noreg, "expecting a register");
Address in_progress(thread, in_bytes(ShenandoahThreadLocalData::satb_mark_queue_active_offset()));
Address index(thread, in_bytes(ShenandoahThreadLocalData::satb_mark_queue_index_offset()));
Address buffer(thread, in_bytes(ShenandoahThreadLocalData::satb_mark_queue_buffer_offset()));
// Is marking active?
if (in_bytes(ShenandoahSATBMarkQueue::byte_width_of_active()) == 4) {
__ ldrw(tmp, in_progress);
} else {
assert(in_bytes(ShenandoahSATBMarkQueue::byte_width_of_active()) == 1, "Assumption");
__ ldrb(tmp, in_progress);
}
__ cbzw(tmp, done);
// Do we need to load the previous value?
if (obj != noreg) {
__ load_heap_oop(pre_val, Address(obj, 0), noreg, noreg, AS_RAW);
}
// Is the previous value null?
__ cbz(pre_val, done);
// Can we store original value in the thread's buffer?
// Is index == 0?
// (The index field is typed as size_t.)
__ ldr(tmp, index); // tmp := *index_adr
__ cbz(tmp, runtime); // tmp == 0?
// If yes, goto runtime
__ sub(tmp, tmp, wordSize); // tmp := tmp - wordSize
__ str(tmp, index); // *index_adr := tmp
__ ldr(rscratch1, buffer);
__ add(tmp, tmp, rscratch1); // tmp := tmp + *buffer_adr
// Record the previous value
__ str(pre_val, Address(tmp, 0));
__ b(done);
__ bind(runtime);
// save the live input values
RegSet saved = RegSet::of(pre_val);
if (tosca_live) saved += RegSet::of(r0);
if (obj != noreg) saved += RegSet::of(obj);
__ push(saved, sp);
// Calling the runtime using the regular call_VM_leaf mechanism generates
// code (generated by InterpreterMacroAssember::call_VM_leaf_base)
// that checks that the *(rfp+frame::interpreter_frame_last_sp) == NULL.
//
// If we care generating the pre-barrier without a frame (e.g. in the
// intrinsified Reference.get() routine) then ebp might be pointing to
// the caller frame and so this check will most likely fail at runtime.
//
// Expanding the call directly bypasses the generation of the check.
// So when we do not have have a full interpreter frame on the stack
// expand_call should be passed true.
if (expand_call) {
assert(pre_val != c_rarg1, "smashed arg");
__ super_call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), pre_val, thread);
} else {
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), pre_val, thread);
}
__ pop(saved, sp);
__ bind(done);
}
void ShenandoahBarrierSetAssembler::resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp) {
assert(ShenandoahLoadRefBarrier || ShenandoahCASBarrier, "Should be enabled");
Label is_null;
__ cbz(dst, is_null);
resolve_forward_pointer_not_null(masm, dst, tmp);
__ bind(is_null);
}
// IMPORTANT: This must preserve all registers, even rscratch1 and rscratch2, except those explicitely
// passed in.
void ShenandoahBarrierSetAssembler::resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp) {
assert(ShenandoahLoadRefBarrier || ShenandoahCASBarrier, "Should be enabled");
// The below loads the mark word, checks if the lowest two bits are
// set, and if so, clear the lowest two bits and copy the result
// to dst. Otherwise it leaves dst alone.
// Implementing this is surprisingly awkward. I do it here by:
// - Inverting the mark word
// - Test lowest two bits == 0
// - If so, set the lowest two bits
// - Invert the result back, and copy to dst
bool borrow_reg = (tmp == noreg);
if (borrow_reg) {
// No free registers available. Make one useful.
tmp = rscratch1;
if (tmp == dst) {
tmp = rscratch2;
}
__ push(RegSet::of(tmp), sp);
}
assert_different_registers(tmp, dst);
Label done;
__ ldr(tmp, Address(dst, oopDesc::mark_offset_in_bytes()));
__ eon(tmp, tmp, zr);
__ ands(zr, tmp, markOopDesc::lock_mask_in_place);
__ br(Assembler::NE, done);
__ orr(tmp, tmp, markOopDesc::marked_value);
__ eon(dst, tmp, zr);
__ bind(done);
if (borrow_reg) {
__ pop(RegSet::of(tmp), sp);
}
}
void ShenandoahBarrierSetAssembler::load_reference_barrier_not_null(MacroAssembler* masm, Register dst, Address load_addr) {
assert(ShenandoahLoadRefBarrier, "Should be enabled");
assert(dst != rscratch2, "need rscratch2");
assert_different_registers(load_addr.base(), load_addr.index(), rscratch1, rscratch2);
Label done;
__ enter();
Address gc_state(rthread, in_bytes(ShenandoahThreadLocalData::gc_state_offset()));
__ ldrb(rscratch2, gc_state);
// Check for heap stability
__ tbz(rscratch2, ShenandoahHeap::HAS_FORWARDED_BITPOS, done);
// use r1 for load address
Register result_dst = dst;
if (dst == r1) {
__ mov(rscratch1, dst);
dst = rscratch1;
}
// Save r0 and r1, unless it is an output register
RegSet to_save = RegSet::of(r0, r1) - result_dst;
__ push(to_save, sp);
__ lea(r1, load_addr);
__ mov(r0, dst);
__ far_call(RuntimeAddress(CAST_FROM_FN_PTR(address, ShenandoahBarrierSetAssembler::shenandoah_lrb())));
__ mov(result_dst, r0);
__ pop(to_save, sp);
__ bind(done);
__ leave();
}
void ShenandoahBarrierSetAssembler::storeval_barrier(MacroAssembler* masm, Register dst, Register tmp) {
if (ShenandoahStoreValEnqueueBarrier) {
// Save possibly live regs.
RegSet live_regs = RegSet::range(r0, r4) - dst;
__ push(live_regs, sp);
__ strd(v0, __ pre(sp, 2 * -wordSize));
satb_write_barrier_pre(masm, noreg, dst, rthread, tmp, true, false);
// Restore possibly live regs.
__ ldrd(v0, __ post(sp, 2 * wordSize));
__ pop(live_regs, sp);
}
}
void ShenandoahBarrierSetAssembler::load_reference_barrier(MacroAssembler* masm, Register dst, Address load_addr) {
if (ShenandoahLoadRefBarrier) {
Label is_null;
__ cbz(dst, is_null);
load_reference_barrier_not_null(masm, dst, load_addr);
__ bind(is_null);
}
}
//
// Arguments:
//
// Inputs:
// src: oop location to load from, might be clobbered
//
// Output:
// dst: oop loaded from src location
//
// Kill:
// rscratch1 (scratch reg)
//
// Alias:
// dst: rscratch1 (might use rscratch1 as temporary output register to avoid clobbering src)
//
void ShenandoahBarrierSetAssembler::load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
Register dst, Address src, Register tmp1, Register tmp_thread) {
// 1: non-reference load, no additional barrier is needed
if (!is_reference_type(type)) {
BarrierSetAssembler::load_at(masm, decorators, type, dst, src, tmp1, tmp_thread);
return;
}
// 2: load a reference from src location and apply LRB if needed
if (ShenandoahBarrierSet::need_load_reference_barrier(decorators, type)) {
Register result_dst = dst;
// Preserve src location for LRB
if (dst == src.base() || dst == src.index()) {
dst = rscratch1;
}
assert_different_registers(dst, src.base(), src.index());
BarrierSetAssembler::load_at(masm, decorators, type, dst, src, tmp1, tmp_thread);
load_reference_barrier(masm, dst, src);
if (dst != result_dst) {
__ mov(result_dst, dst);
dst = result_dst;
}
} else {
BarrierSetAssembler::load_at(masm, decorators, type, dst, src, tmp1, tmp_thread);
}
// 3: apply keep-alive barrier if needed
if (ShenandoahBarrierSet::need_keep_alive_barrier(decorators, type)) {
__ enter();
__ push_call_clobbered_registers();
satb_write_barrier_pre(masm /* masm */,
noreg /* obj */,
dst /* pre_val */,
rthread /* thread */,
tmp1 /* tmp */,
true /* tosca_live */,
true /* expand_call */);
__ pop_call_clobbered_registers();
__ leave();
}
}
void ShenandoahBarrierSetAssembler::store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
Address dst, Register val, Register tmp1, Register tmp2) {
bool on_oop = type == T_OBJECT || type == T_ARRAY;
if (!on_oop) {
BarrierSetAssembler::store_at(masm, decorators, type, dst, val, tmp1, tmp2);
return;
}
// flatten object address if needed
if (dst.index() == noreg && dst.offset() == 0) {
if (dst.base() != r3) {
__ mov(r3, dst.base());
}
} else {
__ lea(r3, dst);
}
shenandoah_write_barrier_pre(masm,
r3 /* obj */,
tmp2 /* pre_val */,
rthread /* thread */,
tmp1 /* tmp */,
val != noreg /* tosca_live */,
false /* expand_call */);
if (val == noreg) {
BarrierSetAssembler::store_at(masm, decorators, type, Address(r3, 0), noreg, noreg, noreg);
} else {
storeval_barrier(masm, val, tmp1);
// G1 barrier needs uncompressed oop for region cross check.
Register new_val = val;
if (UseCompressedOops) {
new_val = rscratch2;
__ mov(new_val, val);
}
BarrierSetAssembler::store_at(masm, decorators, type, Address(r3, 0), val, noreg, noreg);
}
}
void ShenandoahBarrierSetAssembler::try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
Register obj, Register tmp, Label& slowpath) {
Label done;
// Resolve jobject
BarrierSetAssembler::try_resolve_jobject_in_native(masm, jni_env, obj, tmp, slowpath);
// Check for null.
__ cbz(obj, done);
assert(obj != rscratch2, "need rscratch2");
Address gc_state(jni_env, ShenandoahThreadLocalData::gc_state_offset() - JavaThread::jni_environment_offset());
__ lea(rscratch2, gc_state);
__ ldrb(rscratch2, Address(rscratch2));
// Check for heap in evacuation phase
__ tbnz(rscratch2, ShenandoahHeap::EVACUATION_BITPOS, slowpath);
__ bind(done);
}
void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler* masm, Register addr, Register expected, Register new_val,
bool acquire, bool release, bool weak, bool is_cae,
Register result) {
Register tmp1 = rscratch1;
Register tmp2 = rscratch2;
bool is_narrow = UseCompressedOops;
Assembler::operand_size size = is_narrow ? Assembler::word : Assembler::xword;
assert_different_registers(addr, expected, new_val, tmp1, tmp2);
Label retry, done, fail;
// CAS, using LL/SC pair.
__ bind(retry);
__ load_exclusive(tmp1, addr, size, acquire);
if (is_narrow) {
__ cmpw(tmp1, expected);
} else {
__ cmp(tmp1, expected);
}
__ br(Assembler::NE, fail);
__ store_exclusive(tmp2, new_val, addr, size, release);
if (weak) {
__ cmpw(tmp2, 0u); // If the store fails, return NE to our caller
} else {
__ cbnzw(tmp2, retry);
}
__ b(done);
__ bind(fail);
// Check if rb(expected)==rb(tmp1)
// Shuffle registers so that we have memory value ready for next expected.
__ mov(tmp2, expected);
__ mov(expected, tmp1);
if (is_narrow) {
__ decode_heap_oop(tmp1, tmp1);
__ decode_heap_oop(tmp2, tmp2);
}
resolve_forward_pointer(masm, tmp1);
resolve_forward_pointer(masm, tmp2);
__ cmp(tmp1, tmp2);
// Retry with expected now being the value we just loaded from addr.
__ br(Assembler::EQ, retry);
if (is_cae && is_narrow) {
// For cmp-and-exchange and narrow oops, we need to restore
// the compressed old-value. We moved it to 'expected' a few lines up.
__ mov(tmp1, expected);
}
__ bind(done);
if (is_cae) {
__ mov(result, tmp1);
} else {
__ cset(result, Assembler::EQ);
}
}
#undef __
#ifdef COMPILER1
#define __ ce->masm()->
void ShenandoahBarrierSetAssembler::gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub) {
ShenandoahBarrierSetC1* bs = (ShenandoahBarrierSetC1*)BarrierSet::barrier_set()->barrier_set_c1();
// At this point we know that marking is in progress.
// If do_load() is true then we have to emit the
// load of the previous value; otherwise it has already
// been loaded into _pre_val.
__ bind(*stub->entry());
assert(stub->pre_val()->is_register(), "Precondition.");
Register pre_val_reg = stub->pre_val()->as_register();
if (stub->do_load()) {
ce->mem2reg(stub->addr(), stub->pre_val(), T_OBJECT, stub->patch_code(), stub->info(), false /*wide*/, false /*unaligned*/);
}
__ cbz(pre_val_reg, *stub->continuation());
ce->store_parameter(stub->pre_val()->as_register(), 0);
__ far_call(RuntimeAddress(bs->pre_barrier_c1_runtime_code_blob()->code_begin()));
__ b(*stub->continuation());
}
void ShenandoahBarrierSetAssembler::gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub) {
ShenandoahBarrierSetC1* bs = (ShenandoahBarrierSetC1*)BarrierSet::barrier_set()->barrier_set_c1();
__ bind(*stub->entry());
Register obj = stub->obj()->as_register();
Register res = stub->result()->as_register();
Register addr = stub->addr()->as_pointer_register();
Register tmp1 = stub->tmp1()->as_register();
Register tmp2 = stub->tmp2()->as_register();
assert(res == r0, "result must arrive in r0");
if (res != obj) {
__ mov(res, obj);
}
// Check for null.
__ cbz(res, *stub->continuation());
// Check for object in cset.
__ mov(tmp2, ShenandoahHeap::in_cset_fast_test_addr());
__ lsr(tmp1, res, ShenandoahHeapRegion::region_size_bytes_shift_jint());
__ ldrb(tmp2, Address(tmp2, tmp1));
__ cbz(tmp2, *stub->continuation());
// Check if object is already forwarded.
Label slow_path;
__ ldr(tmp1, Address(res, oopDesc::mark_offset_in_bytes()));
__ eon(tmp1, tmp1, zr);
__ ands(zr, tmp1, markOopDesc::lock_mask_in_place);
__ br(Assembler::NE, slow_path);
// Decode forwarded object.
__ orr(tmp1, tmp1, markOopDesc::marked_value);
__ eon(res, tmp1, zr);
__ b(*stub->continuation());
__ bind(slow_path);
ce->store_parameter(res, 0);
ce->store_parameter(addr, 1);
__ far_call(RuntimeAddress(bs->load_reference_barrier_rt_code_blob()->code_begin()));
__ b(*stub->continuation());
}
#undef __
#define __ sasm->
void ShenandoahBarrierSetAssembler::generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm) {
__ prologue("shenandoah_pre_barrier", false);
// arg0 : previous value of memory
BarrierSet* bs = BarrierSet::barrier_set();
const Register pre_val = r0;
const Register thread = rthread;
const Register tmp = rscratch1;
Address queue_index(thread, in_bytes(ShenandoahThreadLocalData::satb_mark_queue_index_offset()));
Address buffer(thread, in_bytes(ShenandoahThreadLocalData::satb_mark_queue_buffer_offset()));
Label done;
Label runtime;
// Is marking still active?
Address gc_state(thread, in_bytes(ShenandoahThreadLocalData::gc_state_offset()));
__ ldrb(tmp, gc_state);
__ mov(rscratch2, ShenandoahHeap::MARKING);
__ tst(tmp, rscratch2);
__ br(Assembler::EQ, done);
// Can we store original value in the thread's buffer?
__ ldr(tmp, queue_index);
__ cbz(tmp, runtime);
__ sub(tmp, tmp, wordSize);
__ str(tmp, queue_index);
__ ldr(rscratch2, buffer);
__ add(tmp, tmp, rscratch2);
__ load_parameter(0, rscratch2);
__ str(rscratch2, Address(tmp, 0));
__ b(done);
__ bind(runtime);
__ push_call_clobbered_registers();
__ load_parameter(0, pre_val);
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), pre_val, thread);
__ pop_call_clobbered_registers();
__ bind(done);
__ epilogue();
}
void ShenandoahBarrierSetAssembler::generate_c1_load_reference_barrier_runtime_stub(StubAssembler* sasm) {
__ prologue("shenandoah_load_reference_barrier", false);
// arg0 : object to be resolved
__ push_call_clobbered_registers();
__ load_parameter(0, r0);
__ load_parameter(1, r1);
if (UseCompressedOops) {
__ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_narrow));
} else {
__ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier));
}
__ blr(lr);
__ mov(rscratch1, r0);
__ pop_call_clobbered_registers();
__ mov(r0, rscratch1);
__ epilogue();
}
#undef __
#endif // COMPILER1
address ShenandoahBarrierSetAssembler::shenandoah_lrb() {
assert(_shenandoah_lrb != NULL, "need load reference barrier stub");
return _shenandoah_lrb;
}
#define __ cgen->assembler()->
// Shenandoah load reference barrier.
//
// Input:
// r0: OOP to evacuate. Not null.
// r1: load address
//
// Output:
// r0: Pointer to evacuated OOP.
//
// Trash rscratch1, rscratch2. Preserve everything else.
address ShenandoahBarrierSetAssembler::generate_shenandoah_lrb(StubCodeGenerator* cgen) {
__ align(6);
StubCodeMark mark(cgen, "StubRoutines", "shenandoah_lrb");
address start = __ pc();
Label slow_path;
__ mov(rscratch2, ShenandoahHeap::in_cset_fast_test_addr());
__ lsr(rscratch1, r0, ShenandoahHeapRegion::region_size_bytes_shift_jint());
__ ldrb(rscratch2, Address(rscratch2, rscratch1));
__ tbnz(rscratch2, 0, slow_path);
__ ret(lr);
__ bind(slow_path);
__ enter(); // required for proper stackwalking of RuntimeStub frame
__ push_call_clobbered_registers();
if (UseCompressedOops) {
__ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_narrow));
} else {
__ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier));
}
__ blr(lr);
__ mov(rscratch1, r0);
__ pop_call_clobbered_registers();
__ mov(r0, rscratch1);
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(lr);
return start;
}
#undef __
void ShenandoahBarrierSetAssembler::barrier_stubs_init() {
if (ShenandoahLoadRefBarrier) {
int stub_code_size = 2048;
ResourceMark rm;
BufferBlob* bb = BufferBlob::create("shenandoah_barrier_stubs", stub_code_size);
CodeBuffer buf(bb);
StubCodeGenerator cgen(&buf);
_shenandoah_lrb = generate_shenandoah_lrb(&cgen);
}
}

View File

@@ -0,0 +1,90 @@
/*
* Copyright (c) 2018, Red Hat, Inc. All rights reserved.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
#ifndef CPU_AARCH64_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_AARCH64_HPP
#define CPU_AARCH64_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_AARCH64_HPP
#include "asm/macroAssembler.hpp"
#include "gc/shared/barrierSetAssembler.hpp"
#ifdef COMPILER1
class LIR_Assembler;
class ShenandoahPreBarrierStub;
class ShenandoahLoadReferenceBarrierStub;
class StubAssembler;
#endif
class StubCodeGenerator;
class ShenandoahBarrierSetAssembler: public BarrierSetAssembler {
private:
static address _shenandoah_lrb;
void satb_write_barrier_pre(MacroAssembler* masm,
Register obj,
Register pre_val,
Register thread,
Register tmp,
bool tosca_live,
bool expand_call);
void shenandoah_write_barrier_pre(MacroAssembler* masm,
Register obj,
Register pre_val,
Register thread,
Register tmp,
bool tosca_live,
bool expand_call);
void resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp = noreg);
void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp = noreg);
void load_reference_barrier(MacroAssembler* masm, Register dst, Address load_addr);
void load_reference_barrier_not_null(MacroAssembler* masm, Register dst, Address load_addr);
address generate_shenandoah_lrb(StubCodeGenerator* cgen);
public:
static address shenandoah_lrb();
void storeval_barrier(MacroAssembler* masm, Register dst, Register tmp);
#ifdef COMPILER1
void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub);
void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub);
void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
void generate_c1_load_reference_barrier_runtime_stub(StubAssembler* sasm);
#endif
virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
Register src, Register dst, Register count, RegSet saved_regs);
virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
Register dst, Address src, Register tmp1, Register tmp_thread);
virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
Address dst, Register val, Register tmp1, Register tmp2);
virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
Register obj, Register tmp, Label& slowpath);
virtual void cmpxchg_oop(MacroAssembler* masm, Register addr, Register expected, Register new_val,
bool acquire, bool release, bool weak, bool is_cae, Register result);
virtual void barrier_stubs_init();
};
#endif // CPU_AARCH64_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_AARCH64_HPP

View File

@@ -0,0 +1,187 @@
//
// Copyright (c) 2018, Red Hat, Inc. All rights reserved.
//
// This code is free software; you can redistribute it and/or modify it
// under the terms of the GNU General Public License version 2 only, as
// published by the Free Software Foundation.
//
// This code is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// version 2 for more details (a copy is included in the LICENSE file that
// accompanied this code).
//
// You should have received a copy of the GNU General Public License version
// 2 along with this work; if not, write to the Free Software Foundation,
// Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
//
// Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
// or visit www.oracle.com if you need additional information or have any
// questions.
//
//
source_hpp %{
#include "gc/shenandoah/shenandoahBarrierSet.hpp"
#include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp"
%}
encode %{
enc_class aarch64_enc_cmpxchg_oop_shenandoah(memory mem, iRegP oldval, iRegP newval, iRegPNoSp tmp, iRegINoSp res) %{
MacroAssembler _masm(&cbuf);
guarantee($mem$$index == -1 && $mem$$disp == 0, "impossible encoding");
Register tmp = $tmp$$Register;
__ mov(tmp, $oldval$$Register); // Must not clobber oldval.
ShenandoahBarrierSet::assembler()->cmpxchg_oop(&_masm, $mem$$Register, tmp, $newval$$Register,
/*acquire*/ false, /*release*/ true, /*weak*/ false, /*is_cae*/ false, $res$$Register);
%}
enc_class aarch64_enc_cmpxchg_acq_oop_shenandoah(memory mem, iRegP oldval, iRegP newval, iRegPNoSp tmp, iRegINoSp res) %{
MacroAssembler _masm(&cbuf);
guarantee($mem$$index == -1 && $mem$$disp == 0, "impossible encoding");
Register tmp = $tmp$$Register;
__ mov(tmp, $oldval$$Register); // Must not clobber oldval.
ShenandoahBarrierSet::assembler()->cmpxchg_oop(&_masm, $mem$$Register, tmp, $newval$$Register,
/*acquire*/ true, /*release*/ true, /*weak*/ false, /*is_cae*/ false, $res$$Register);
%}
%}
instruct compareAndSwapP_shenandoah(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, iRegPNoSp tmp, rFlagsReg cr) %{
match(Set res (ShenandoahCompareAndSwapP mem (Binary oldval newval)));
ins_cost(2 * VOLATILE_REF_COST);
effect(TEMP tmp, KILL cr);
format %{
"cmpxchg_shenandoah_oop $mem, $oldval, $newval\t# (ptr) if $mem == $oldval then $mem <-- $newval with temp $tmp"
%}
ins_encode(aarch64_enc_cmpxchg_oop_shenandoah(mem, oldval, newval, tmp, res));
ins_pipe(pipe_slow);
%}
instruct compareAndSwapN_shenandoah(iRegINoSp res, indirect mem, iRegN oldval, iRegN newval, iRegNNoSp tmp, rFlagsReg cr) %{
match(Set res (ShenandoahCompareAndSwapN mem (Binary oldval newval)));
ins_cost(2 * VOLATILE_REF_COST);
effect(TEMP tmp, KILL cr);
format %{
"cmpxchgw_shenandoah_narrow_oop $mem, $oldval, $newval\t# (ptr) if $mem == $oldval then $mem <-- $newval with temp $tmp"
%}
ins_encode %{
Register tmp = $tmp$$Register;
__ mov(tmp, $oldval$$Register); // Must not clobber oldval.
ShenandoahBarrierSet::assembler()->cmpxchg_oop(&_masm, $mem$$Register, tmp, $newval$$Register, /*acquire*/ false, /*release*/ true, /*weak*/ false, /*is_cae*/ false, $res$$Register);
%}
ins_pipe(pipe_slow);
%}
instruct compareAndSwapPAcq_shenandoah(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, iRegPNoSp tmp, rFlagsReg cr) %{
predicate(needs_acquiring_load_exclusive(n));
match(Set res (ShenandoahCompareAndSwapP mem (Binary oldval newval)));
ins_cost(VOLATILE_REF_COST);
effect(TEMP tmp, KILL cr);
format %{
"cmpxchg_acq_shenandoah_oop $mem, $oldval, $newval\t# (ptr) if $mem == $oldval then $mem <-- $newval with temp $tmp"
%}
ins_encode(aarch64_enc_cmpxchg_acq_oop_shenandoah(mem, oldval, newval, tmp, res));
ins_pipe(pipe_slow);
%}
instruct compareAndSwapNAcq_shenandoah(iRegINoSp res, indirect mem, iRegN oldval, iRegN newval, iRegNNoSp tmp, rFlagsReg cr) %{
predicate(needs_acquiring_load_exclusive(n));
match(Set res (ShenandoahCompareAndSwapN mem (Binary oldval newval)));
ins_cost(VOLATILE_REF_COST);
effect(TEMP tmp, KILL cr);
format %{
"cmpxchgw_acq_shenandoah_narrow_oop $mem, $oldval, $newval\t# (ptr) if $mem == $oldval then $mem <-- $newval with temp $tmp"
%}
ins_encode %{
Register tmp = $tmp$$Register;
__ mov(tmp, $oldval$$Register); // Must not clobber oldval.
ShenandoahBarrierSet::assembler()->cmpxchg_oop(&_masm, $mem$$Register, tmp, $newval$$Register, /*acquire*/ true, /*release*/ true, /*weak*/ false, /*is_cae*/ false, $res$$Register);
%}
ins_pipe(pipe_slow);
%}
instruct compareAndExchangeN_shenandoah(iRegNNoSp res, indirect mem, iRegN oldval, iRegN newval, iRegNNoSp tmp, rFlagsReg cr) %{
match(Set res (ShenandoahCompareAndExchangeN mem (Binary oldval newval)));
ins_cost(3 * VOLATILE_REF_COST);
effect(TEMP_DEF res, TEMP tmp, KILL cr);
format %{
"cmpxchg_oop_shenandoah $res = $mem, $oldval, $newval\t# (narrow oop, weak) if $mem == $oldval then $mem <-- $newval"
%}
ins_encode %{
Register tmp = $tmp$$Register;
__ mov(tmp, $oldval$$Register); // Must not clobber oldval.
ShenandoahBarrierSet::assembler()->cmpxchg_oop(&_masm, $mem$$Register, tmp, $newval$$Register,
/*acquire*/ false, /*release*/ true, /*weak*/ false, /*is_cae*/ true, $res$$Register);
%}
ins_pipe(pipe_slow);
%}
instruct compareAndExchangeP_shenandoah(iRegPNoSp res, indirect mem, iRegP oldval, iRegP newval, iRegPNoSp tmp, rFlagsReg cr) %{
match(Set res (ShenandoahCompareAndExchangeP mem (Binary oldval newval)));
ins_cost(3 * VOLATILE_REF_COST);
effect(TEMP_DEF res, TEMP tmp, KILL cr);
format %{
"cmpxchg_oop_shenandoah $mem, $oldval, $newval\t# (ptr) if $mem == $oldval then $mem <-- $newval with temp $tmp"
%}
ins_encode %{
Register tmp = $tmp$$Register;
__ mov(tmp, $oldval$$Register); // Must not clobber oldval.
ShenandoahBarrierSet::assembler()->cmpxchg_oop(&_masm, $mem$$Register, tmp, $newval$$Register,
/*acquire*/ false, /*release*/ true, /*weak*/ false, /*is_cae*/ true, $res$$Register);
%}
ins_pipe(pipe_slow);
%}
instruct weakCompareAndSwapN_shenandoah(iRegINoSp res, indirect mem, iRegN oldval, iRegN newval, iRegNNoSp tmp, rFlagsReg cr) %{
match(Set res (ShenandoahWeakCompareAndSwapN mem (Binary oldval newval)));
ins_cost(3 * VOLATILE_REF_COST);
effect(TEMP tmp, KILL cr);
format %{
"cmpxchg_oop_shenandoah $res = $mem, $oldval, $newval\t# (narrow oop, weak) if $mem == $oldval then $mem <-- $newval"
%}
ins_encode %{
Register tmp = $tmp$$Register;
__ mov(tmp, $oldval$$Register); // Must not clobber oldval.
ShenandoahBarrierSet::assembler()->cmpxchg_oop(&_masm, $mem$$Register, tmp, $newval$$Register,
/*acquire*/ false, /*release*/ true, /*weak*/ true, /*is_cae*/ false, $res$$Register);
%}
ins_pipe(pipe_slow);
%}
instruct weakCompareAndSwapP_shenandoah(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, iRegPNoSp tmp, rFlagsReg cr) %{
match(Set res (ShenandoahWeakCompareAndSwapP mem (Binary oldval newval)));
ins_cost(3 * VOLATILE_REF_COST);
effect(TEMP tmp, KILL cr);
format %{
"cmpxchg_oop_shenandoah $res = $mem, $oldval, $newval\t# (ptr, weak) if $mem == $oldval then $mem <-- $newval"
%}
ins_encode %{
Register tmp = $tmp$$Register;
__ mov(tmp, $oldval$$Register); // Must not clobber oldval.
ShenandoahBarrierSet::assembler()->cmpxchg_oop(&_masm, $mem$$Register, tmp, $newval$$Register,
/*acquire*/ false, /*release*/ true, /*weak*/ true, /*is_cae*/ false, $res$$Register);
%}
ins_pipe(pipe_slow);
%}

View File

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2020, Red Hat Inc. 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
@@ -168,7 +168,7 @@ void InterpreterMacroAssembler::get_unsigned_2_byte_index_at_bcp(
}
void InterpreterMacroAssembler::get_dispatch() {
unsigned long offset;
uint64_t offset;
adrp(rdispatch, ExternalAddress((address)Interpreter::dispatch_table()), offset);
lea(rdispatch, Address(rdispatch, offset));
}
@@ -754,7 +754,7 @@ void InterpreterMacroAssembler::lock_object(Register lock_reg)
// copy
mov(rscratch1, sp);
sub(swap_reg, swap_reg, rscratch1);
ands(swap_reg, swap_reg, (unsigned long)(7 - os::vm_page_size()));
ands(swap_reg, swap_reg, (uint64_t)(7 - os::vm_page_size()));
// Save the test result, for recursive case, the result is zero
str(swap_reg, Address(lock_reg, mark_offset));

View File

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2020, Red Hat Inc. 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,6 +39,29 @@
#define __ _masm->
//describe amount of space in bytes occupied by type on native stack
#ifdef __APPLE__
const int nativeByteSpace = sizeof(jbyte);
const int nativeShortSpace = sizeof(jshort);
const int nativeIntSpace = sizeof(jint);
const int nativeLongSpace = wordSize;
const int nativeFloatSpace = nativeIntSpace;
const int nativeDoubleSpace = nativeLongSpace;
#else
const int nativeByteSpace = wordSize;
const int nativeShortSpace = wordSize;
const int nativeIntSpace = wordSize;
const int nativeLongSpace = wordSize;
const int nativeFloatSpace = nativeIntSpace;
const int nativeDoubleSpace = nativeLongSpace;
#endif
template <typename T>
static inline void store_and_inc(char* &to, T value, int inc_size) {
*(T *)to = value;
to = to + inc_size;
}
// Implementation of SignatureHandlerGenerator
Register InterpreterRuntime::SignatureHandlerGenerator::from() { return rlocals; }
Register InterpreterRuntime::SignatureHandlerGenerator::to() { return sp; }
@@ -52,6 +75,95 @@ InterpreterRuntime::SignatureHandlerGenerator::SignatureHandlerGenerator(
_stack_offset = 0;
}
// On macos/aarch64 native stack is packed, int/float are using only 4 bytes
// on stack. Natural alignment for types are still in place,
// for example double/long should be 8 bytes alligned
void InterpreterRuntime::SignatureHandlerGenerator::pass_byte() {
const Address src(from(), Interpreter::local_offset_in_bytes(offset()));
switch (_num_int_args) {
case 0:
__ ldr(c_rarg1, src);
_num_int_args++;
break;
case 1:
__ ldr(c_rarg2, src);
_num_int_args++;
break;
case 2:
__ ldr(c_rarg3, src);
_num_int_args++;
break;
case 3:
__ ldr(c_rarg4, src);
_num_int_args++;
break;
case 4:
__ ldr(c_rarg5, src);
_num_int_args++;
break;
case 5:
__ ldr(c_rarg6, src);
_num_int_args++;
break;
case 6:
__ ldr(c_rarg7, src);
_num_int_args++;
break;
default:
__ ldrb(r0, src);
__ strb(r0, Address(to(), _stack_offset));
_stack_offset += nativeByteSpace;
_num_int_args++;
break;
}
}
void InterpreterRuntime::SignatureHandlerGenerator::pass_short() {
const Address src(from(), Interpreter::local_offset_in_bytes(offset()));
switch (_num_int_args) {
case 0:
__ ldr(c_rarg1, src);
_num_int_args++;
break;
case 1:
__ ldr(c_rarg2, src);
_num_int_args++;
break;
case 2:
__ ldr(c_rarg3, src);
_num_int_args++;
break;
case 3:
__ ldr(c_rarg4, src);
_num_int_args++;
break;
case 4:
__ ldr(c_rarg5, src);
_num_int_args++;
break;
case 5:
__ ldr(c_rarg6, src);
_num_int_args++;
break;
case 6:
__ ldr(c_rarg7, src);
_num_int_args++;
break;
default:
_stack_offset = align_up(_stack_offset, nativeShortSpace);
__ ldrh(r0, src);
__ strh(r0, Address(to(), _stack_offset));
_stack_offset += nativeShortSpace;
_num_int_args++;
break;
}
}
void InterpreterRuntime::SignatureHandlerGenerator::pass_int() {
const Address src(from(), Interpreter::local_offset_in_bytes(offset()));
@@ -85,9 +197,10 @@ void InterpreterRuntime::SignatureHandlerGenerator::pass_int() {
_num_int_args++;
break;
default:
_stack_offset = align_up(_stack_offset, nativeIntSpace);
__ ldr(r0, src);
__ str(r0, Address(to(), _stack_offset));
_stack_offset += wordSize;
_stack_offset += nativeIntSpace;
_num_int_args++;
break;
}
@@ -126,9 +239,10 @@ void InterpreterRuntime::SignatureHandlerGenerator::pass_long() {
_num_int_args++;
break;
default:
_stack_offset = align_up(_stack_offset, nativeLongSpace);
__ ldr(r0, src);
__ str(r0, Address(to(), _stack_offset));
_stack_offset += wordSize;
_stack_offset += nativeLongSpace;
_num_int_args++;
break;
}
@@ -140,9 +254,10 @@ void InterpreterRuntime::SignatureHandlerGenerator::pass_float() {
if (_num_fp_args < Argument::n_float_register_parameters_c) {
__ ldrs(as_FloatRegister(_num_fp_args++), src);
} else {
_stack_offset = align_up(_stack_offset, nativeFloatSpace);
__ ldrw(r0, src);
__ strw(r0, Address(to(), _stack_offset));
_stack_offset += wordSize;
_stack_offset += nativeFloatSpace;
_num_fp_args++;
}
}
@@ -153,9 +268,10 @@ void InterpreterRuntime::SignatureHandlerGenerator::pass_double() {
if (_num_fp_args < Argument::n_float_register_parameters_c) {
__ ldrd(as_FloatRegister(_num_fp_args++), src);
} else {
_stack_offset = align_up(_stack_offset, nativeDoubleSpace);
__ ldr(r0, src);
__ str(r0, Address(to(), _stack_offset));
_stack_offset += wordSize;
_stack_offset += nativeDoubleSpace;
_num_fp_args++;
}
}
@@ -248,6 +364,7 @@ void InterpreterRuntime::SignatureHandlerGenerator::pass_object() {
__ cbnz(temp(), L);
__ mov(r0, zr);
__ bind(L);
_stack_offset = align_up(_stack_offset, wordSize);
__ str(r0, Address(to(), _stack_offset));
_stack_offset += wordSize;
_num_int_args++;
@@ -277,13 +394,46 @@ class SlowSignatureHandler
: public NativeSignatureIterator {
private:
address _from;
intptr_t* _to;
char* _to;
intptr_t* _int_args;
intptr_t* _fp_args;
intptr_t* _fp_identifiers;
unsigned int _num_int_args;
unsigned int _num_fp_args;
virtual void pass_byte()
{
NOT_BSD(return pass_int();)
jbyte from_obj = *(jbyte *)(_from+Interpreter::local_offset_in_bytes(0));
_from -= Interpreter::stackElementSize;
if (_num_int_args < Argument::n_int_register_parameters_c-1) {
*_int_args++ = from_obj;
_num_int_args++;
} else {
store_and_inc(_to, from_obj, nativeByteSpace);
_num_int_args++;
}
}
virtual void pass_short()
{
NOT_BSD(return pass_int();)
jshort from_obj = *(jshort *)(_from+Interpreter::local_offset_in_bytes(0));
_from -= Interpreter::stackElementSize;
if (_num_int_args < Argument::n_int_register_parameters_c-1) {
*_int_args++ = from_obj;
_num_int_args++;
} else {
_to = align_up(_to, nativeShortSpace);
store_and_inc(_to, from_obj, nativeShortSpace);
_num_int_args++;
}
}
virtual void pass_int()
{
jint from_obj = *(jint *)(_from+Interpreter::local_offset_in_bytes(0));
@@ -293,7 +443,9 @@ class SlowSignatureHandler
*_int_args++ = from_obj;
_num_int_args++;
} else {
*_to++ = from_obj;
_to = align_up(_to, nativeIntSpace);
store_and_inc(_to, from_obj, nativeIntSpace);
_num_int_args++;
}
}
@@ -307,7 +459,8 @@ class SlowSignatureHandler
*_int_args++ = from_obj;
_num_int_args++;
} else {
*_to++ = from_obj;
_to = align_up(_to, nativeLongSpace);
store_and_inc(_to, from_obj, nativeLongSpace);
_num_int_args++;
}
}
@@ -321,7 +474,8 @@ class SlowSignatureHandler
*_int_args++ = (*from_addr == 0) ? NULL : (intptr_t)from_addr;
_num_int_args++;
} else {
*_to++ = (*from_addr == 0) ? NULL : (intptr_t) from_addr;
_to = align_up(_to, wordSize);
store_and_inc(_to, (*from_addr == 0) ? (intptr_t)NULL : (intptr_t) from_addr, wordSize);
_num_int_args++;
}
}
@@ -335,7 +489,9 @@ class SlowSignatureHandler
*_fp_args++ = from_obj;
_num_fp_args++;
} else {
*_to++ = from_obj;
_to = align_up(_to, nativeFloatSpace);
store_and_inc(_to, from_obj, nativeFloatSpace);
_num_fp_args++;
}
}
@@ -347,10 +503,11 @@ class SlowSignatureHandler
if (_num_fp_args < Argument::n_float_register_parameters_c) {
*_fp_args++ = from_obj;
*_fp_identifiers |= (1 << _num_fp_args); // mark as double
*_fp_identifiers |= (1ull << _num_fp_args); // mark as double
_num_fp_args++;
} else {
*_to++ = from_obj;
_to = align_up(_to, nativeDoubleSpace);
store_and_inc(_to, from_obj, nativeDoubleSpace);
_num_fp_args++;
}
}
@@ -360,7 +517,7 @@ class SlowSignatureHandler
: NativeSignatureIterator(method)
{
_from = from;
_to = to;
_to = (char *)to;
_int_args = to - (method->is_static() ? 16 : 17);
_fp_args = to - 8;
@@ -383,7 +540,7 @@ IRT_ENTRY(address,
// handle arguments
SlowSignatureHandler ssh(m, (address)from, to);
ssh.iterate(UCONST64(-1));
ssh.iterate((uint64_t)CONST64(-1));
// return result handler
return Interpreter::result_handler(m->result_type());

View File

@@ -38,6 +38,8 @@ class SignatureHandlerGenerator: public NativeSignatureIterator {
unsigned int _num_int_args;
int _stack_offset;
void pass_byte();
void pass_short();
void pass_int();
void pass_long();
void pass_float();

View File

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* Copyright (c) 2004, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2020, Red Hat Inc. 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
@@ -73,7 +73,7 @@ address JNI_FastGetField::generate_fast_get_int_field0(BasicType type) {
Label slow;
unsigned long offset;
uint64_t offset;
__ adrp(rcounter_addr,
SafepointSynchronize::safepoint_counter_addr(), offset);
Address safepoint_counter_addr(rcounter_addr, offset);

View File

@@ -65,8 +65,8 @@
// Return the total length (in bytes) of the instructions.
int MacroAssembler::pd_patch_instruction_size(address branch, address target) {
int instructions = 1;
assert((uint64_t)target < (1ul << 48), "48-bit overflow in address constant");
long offset = (target - branch) >> 2;
assert((uint64_t)target < (1ull << 48), "48-bit overflow in address constant");
intptr_t offset = (target - branch) >> 2;
unsigned insn = *(unsigned*)branch;
if ((Instruction_aarch64::extract(insn, 29, 24) & 0b111011) == 0b011000) {
// Load register (literal)
@@ -129,9 +129,9 @@ int MacroAssembler::pd_patch_instruction_size(address branch, address target) {
Instruction_aarch64::extract(insn2, 4, 0)) {
// movk #imm16<<32
Instruction_aarch64::patch(branch + 4, 20, 5, (uint64_t)target >> 32);
long dest = ((long)target & 0xffffffffL) | ((long)branch & 0xffff00000000L);
long pc_page = (long)branch >> 12;
long adr_page = (long)dest >> 12;
uintptr_t dest = ((uintptr_t)target & 0xffffffffULL) | ((uintptr_t)branch & 0xffff00000000ULL);
uintptr_t pc_page = (uintptr_t)branch >> 12;
uintptr_t adr_page = (uintptr_t)dest >> 12;
offset = adr_page - pc_page;
instructions = 2;
}
@@ -200,7 +200,7 @@ int MacroAssembler::patch_narrow_klass(address insn_addr, narrowKlass n) {
}
address MacroAssembler::target_addr_for_insn(address insn_addr, unsigned insn) {
long offset = 0;
intptr_t offset = 0;
if ((Instruction_aarch64::extract(insn, 29, 24) & 0b011011) == 0b00011000) {
// Load register (literal)
offset = Instruction_aarch64::sextract(insn, 23, 5);
@@ -292,7 +292,7 @@ void MacroAssembler::safepoint_poll(Label& slow_path) {
ldr(rscratch1, Address(rthread, Thread::polling_page_offset()));
tbnz(rscratch1, exact_log2(SafepointMechanism::poll_bit()), slow_path);
} else {
unsigned long offset;
uint64_t offset;
adrp(rscratch1, ExternalAddress(SafepointSynchronize::address_of_state()), offset);
ldrw(rscratch1, Address(rscratch1, offset));
assert(SafepointSynchronize::_not_synchronized == 0, "rewrite this code");
@@ -400,7 +400,7 @@ void MacroAssembler::far_call(Address entry, CodeBuffer *cbuf, Register tmp) {
assert(CodeCache::find_blob(entry.target()) != NULL,
"destination of far call not found in code cache");
if (far_branches()) {
unsigned long offset;
uint64_t offset;
// We can use ADRP here because we know that the total size of
// the code cache cannot exceed 2Gb.
adrp(tmp, entry, offset);
@@ -418,7 +418,7 @@ void MacroAssembler::far_jump(Address entry, CodeBuffer *cbuf, Register tmp) {
assert(CodeCache::find_blob(entry.target()) != NULL,
"destination of far call not found in code cache");
if (far_branches()) {
unsigned long offset;
uint64_t offset;
// We can use ADRP here because we know that the total size of
// the code cache cannot exceed 2Gb.
adrp(tmp, entry, offset);
@@ -830,7 +830,7 @@ void MacroAssembler::c2bool(Register x) {
address MacroAssembler::ic_call(address entry, jint method_index) {
RelocationHolder rh = virtual_call_Relocation::spec(pc(), method_index);
// address const_ptr = long_constant((jlong)Universe::non_oop_word());
// unsigned long offset;
// uintptr_t offset;
// ldr_constant(rscratch2, const_ptr);
movptr(rscratch2, (uintptr_t)Universe::non_oop_word());
return trampoline_call(Address(entry, rh));
@@ -1307,7 +1307,7 @@ void MacroAssembler::verify_oop(Register reg, const char* s) {
stp(rscratch2, lr, Address(pre(sp, -2 * wordSize)));
mov(r0, reg);
mov(rscratch1, (address)b);
movptr(rscratch1, (uintptr_t)(address)b);
// call indirectly to solve generation ordering problem
lea(rscratch2, ExternalAddress(StubRoutines::verify_oop_subroutine_entry_address()));
@@ -1343,7 +1343,7 @@ void MacroAssembler::verify_oop_addr(Address addr, const char* s) {
} else {
ldr(r0, addr);
}
mov(rscratch1, (address)b);
movptr(rscratch1, (uintptr_t)(address)b);
// call indirectly to solve generation ordering problem
lea(rscratch2, ExternalAddress(StubRoutines::verify_oop_subroutine_entry_address()));
@@ -1480,11 +1480,11 @@ void MacroAssembler::movptr(Register r, uintptr_t imm64) {
#ifndef PRODUCT
{
char buffer[64];
snprintf(buffer, sizeof(buffer), "0x%"PRIX64, imm64);
snprintf(buffer, sizeof(buffer), "0x%"PRIX64, (uint64_t)imm64);
block_comment(buffer);
}
#endif
assert(imm64 < (1ul << 48), "48-bit overflow in address constant");
assert(imm64 < (1ull << 48), "48-bit overflow in address constant");
movz(r, imm64 & 0xffff);
imm64 >>= 16;
movk(r, imm64 & 0xffff, 16);
@@ -1543,7 +1543,7 @@ void MacroAssembler::mov_immediate64(Register dst, u_int64_t imm64)
#ifndef PRODUCT
{
char buffer[64];
snprintf(buffer, sizeof(buffer), "0x%"PRIX64, imm64);
snprintf(buffer, sizeof(buffer), "0x%"PRIX64, (uint64_t)imm64);
block_comment(buffer);
}
#endif
@@ -1688,7 +1688,7 @@ void MacroAssembler::mov_immediate32(Register dst, u_int32_t imm32)
// not actually be used: you must use the Address that is returned.
// It is up to you to ensure that the shift provided matches the size
// of your data.
Address MacroAssembler::form_address(Register Rd, Register base, long byte_offset, int shift) {
Address MacroAssembler::form_address(Register Rd, Register base, int64_t byte_offset, int shift) {
if (Address::offset_ok_for_immed(byte_offset, shift))
// It fits; no need for any heroics
return Address(base, byte_offset);
@@ -1703,9 +1703,9 @@ Address MacroAssembler::form_address(Register Rd, Register base, long byte_offse
// See if we can do this with two 12-bit offsets
{
unsigned long word_offset = byte_offset >> shift;
unsigned long masked_offset = word_offset & 0xfff000;
if (Address::offset_ok_for_immed(word_offset - masked_offset)
uint64_t word_offset = byte_offset >> shift;
uint64_t masked_offset = word_offset & 0xfff000;
if (Address::offset_ok_for_immed(word_offset - masked_offset, 0)
&& Assembler::operand_valid_for_add_sub_immediate(masked_offset << shift)) {
add(Rd, base, masked_offset << shift);
word_offset -= masked_offset;
@@ -1945,7 +1945,7 @@ void MacroAssembler::decrement(Register reg, int value)
if (value < (1 << 12)) { sub(reg, reg, value); return; }
/* else */ {
assert(reg != rscratch2, "invalid dst for register decrement");
mov(rscratch2, (unsigned long)value);
mov(rscratch2, (uint64_t)value);
sub(reg, reg, rscratch2);
}
}
@@ -2137,8 +2137,8 @@ void MacroAssembler::resolve_jobject(Register value, Register thread, Register t
void MacroAssembler::stop(const char* msg) {
address ip = pc();
pusha();
mov(c_rarg0, (address)msg);
mov(c_rarg1, (address)ip);
movptr(c_rarg0, (uintptr_t)(address)msg);
movptr(c_rarg1, (uintptr_t)(address)ip);
mov(c_rarg2, sp);
mov(c_rarg3, CAST_FROM_FN_PTR(address, MacroAssembler::debug64));
blr(c_rarg3);
@@ -2482,43 +2482,43 @@ void MacroAssembler::debug64(char* msg, int64_t pc, int64_t regs[])
#endif
if (os::message_box(msg, "Execution stopped, print registers?")) {
ttyLocker ttyl;
tty->print_cr(" pc = 0x%016lx", pc);
tty->print_cr(" pc = 0x%016" PRIx64, pc);
#ifndef PRODUCT
tty->cr();
findpc(pc);
tty->cr();
#endif
tty->print_cr(" r0 = 0x%016lx", regs[0]);
tty->print_cr(" r1 = 0x%016lx", regs[1]);
tty->print_cr(" r2 = 0x%016lx", regs[2]);
tty->print_cr(" r3 = 0x%016lx", regs[3]);
tty->print_cr(" r4 = 0x%016lx", regs[4]);
tty->print_cr(" r5 = 0x%016lx", regs[5]);
tty->print_cr(" r6 = 0x%016lx", regs[6]);
tty->print_cr(" r7 = 0x%016lx", regs[7]);
tty->print_cr(" r8 = 0x%016lx", regs[8]);
tty->print_cr(" r9 = 0x%016lx", regs[9]);
tty->print_cr("r10 = 0x%016lx", regs[10]);
tty->print_cr("r11 = 0x%016lx", regs[11]);
tty->print_cr("r12 = 0x%016lx", regs[12]);
tty->print_cr("r13 = 0x%016lx", regs[13]);
tty->print_cr("r14 = 0x%016lx", regs[14]);
tty->print_cr("r15 = 0x%016lx", regs[15]);
tty->print_cr("r16 = 0x%016lx", regs[16]);
tty->print_cr("r17 = 0x%016lx", regs[17]);
tty->print_cr("r18 = 0x%016lx", regs[18]);
tty->print_cr("r19 = 0x%016lx", regs[19]);
tty->print_cr("r20 = 0x%016lx", regs[20]);
tty->print_cr("r21 = 0x%016lx", regs[21]);
tty->print_cr("r22 = 0x%016lx", regs[22]);
tty->print_cr("r23 = 0x%016lx", regs[23]);
tty->print_cr("r24 = 0x%016lx", regs[24]);
tty->print_cr("r25 = 0x%016lx", regs[25]);
tty->print_cr("r26 = 0x%016lx", regs[26]);
tty->print_cr("r27 = 0x%016lx", regs[27]);
tty->print_cr("r28 = 0x%016lx", regs[28]);
tty->print_cr("r30 = 0x%016lx", regs[30]);
tty->print_cr("r31 = 0x%016lx", regs[31]);
tty->print_cr(" r0 = 0x%016" PRIx64, regs[0]);
tty->print_cr(" r1 = 0x%016" PRIx64, regs[1]);
tty->print_cr(" r2 = 0x%016" PRIx64, regs[2]);
tty->print_cr(" r3 = 0x%016" PRIx64, regs[3]);
tty->print_cr(" r4 = 0x%016" PRIx64, regs[4]);
tty->print_cr(" r5 = 0x%016" PRIx64, regs[5]);
tty->print_cr(" r6 = 0x%016" PRIx64, regs[6]);
tty->print_cr(" r7 = 0x%016" PRIx64, regs[7]);
tty->print_cr(" r8 = 0x%016" PRIx64, regs[8]);
tty->print_cr(" r9 = 0x%016" PRIx64, regs[9]);
tty->print_cr("r10 = 0x%016" PRIx64, regs[10]);
tty->print_cr("r11 = 0x%016" PRIx64, regs[11]);
tty->print_cr("r12 = 0x%016" PRIx64, regs[12]);
tty->print_cr("r13 = 0x%016" PRIx64, regs[13]);
tty->print_cr("r14 = 0x%016" PRIx64, regs[14]);
tty->print_cr("r15 = 0x%016" PRIx64, regs[15]);
tty->print_cr("r16 = 0x%016" PRIx64, regs[16]);
tty->print_cr("r17 = 0x%016" PRIx64, regs[17]);
tty->print_cr("r18 = 0x%016" PRIx64, regs[18]);
tty->print_cr("r19 = 0x%016" PRIx64, regs[19]);
tty->print_cr("r20 = 0x%016" PRIx64, regs[20]);
tty->print_cr("r21 = 0x%016" PRIx64, regs[21]);
tty->print_cr("r22 = 0x%016" PRIx64, regs[22]);
tty->print_cr("r23 = 0x%016" PRIx64, regs[23]);
tty->print_cr("r24 = 0x%016" PRIx64, regs[24]);
tty->print_cr("r25 = 0x%016" PRIx64, regs[25]);
tty->print_cr("r26 = 0x%016" PRIx64, regs[26]);
tty->print_cr("r27 = 0x%016" PRIx64, regs[27]);
tty->print_cr("r28 = 0x%016" PRIx64, regs[28]);
tty->print_cr("r30 = 0x%016" PRIx64, regs[30]);
tty->print_cr("r31 = 0x%016" PRIx64, regs[31]);
BREAKPOINT;
}
ThreadStateTransition::transition(thread, _thread_in_vm, saved_state);
@@ -2532,7 +2532,7 @@ void MacroAssembler::debug64(char* msg, int64_t pc, int64_t regs[])
void MacroAssembler::push_call_clobbered_registers() {
int step = 4 * wordSize;
push(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2), sp);
push(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2) BSD_ONLY(- r18), sp);
sub(sp, sp, step);
mov(rscratch1, -step);
// Push v0-v7, v16-v31.
@@ -2552,7 +2552,7 @@ void MacroAssembler::pop_call_clobbered_registers() {
as_FloatRegister(i+3), T1D, Address(post(sp, 4 * wordSize)));
}
pop(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2), sp);
pop(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2) BSD_ONLY(- r18), sp);
}
void MacroAssembler::push_CPU_state(bool save_vectors) {
@@ -2624,19 +2624,19 @@ Address MacroAssembler::spill_address(int size, int offset, Register tmp)
// Returns true if it is, else false.
bool MacroAssembler::merge_alignment_check(Register base,
size_t size,
long cur_offset,
long prev_offset) const {
int64_t cur_offset,
int64_t prev_offset) const {
if (AvoidUnalignedAccesses) {
if (base == sp) {
// Checks whether low offset if aligned to pair of registers.
long pair_mask = size * 2 - 1;
long offset = prev_offset > cur_offset ? cur_offset : prev_offset;
int64_t pair_mask = size * 2 - 1;
int64_t offset = prev_offset > cur_offset ? cur_offset : prev_offset;
return (offset & pair_mask) == 0;
} else { // If base is not sp, we can't guarantee the access is aligned.
return false;
}
} else {
long mask = size - 1;
int64_t mask = size - 1;
// Load/store pair instruction only supports element size aligned offset.
return (cur_offset & mask) == 0 && (prev_offset & mask) == 0;
}
@@ -2669,8 +2669,8 @@ bool MacroAssembler::ldst_can_merge(Register rt,
return false;
}
long max_offset = 63 * prev_size_in_bytes;
long min_offset = -64 * prev_size_in_bytes;
int64_t max_offset = 63 * prev_size_in_bytes;
int64_t min_offset = -64 * prev_size_in_bytes;
assert(prev_ldst->is_not_pre_post_index(), "pre-index or post-index is not supported to be merged.");
@@ -2679,8 +2679,8 @@ bool MacroAssembler::ldst_can_merge(Register rt,
return false;
}
long cur_offset = adr.offset();
long prev_offset = prev_ldst->offset();
int64_t cur_offset = adr.offset();
int64_t prev_offset = prev_ldst->offset();
size_t diff = abs(cur_offset - prev_offset);
if (diff != prev_size_in_bytes) {
return false;
@@ -2697,7 +2697,7 @@ bool MacroAssembler::ldst_can_merge(Register rt,
return false;
}
long low_offset = prev_offset > cur_offset ? cur_offset : prev_offset;
int64_t low_offset = prev_offset > cur_offset ? cur_offset : prev_offset;
// Offset range must be in ldp/stp instruction's range.
if (low_offset > max_offset || low_offset < min_offset) {
return false;
@@ -2722,7 +2722,7 @@ void MacroAssembler::merge_ldst(Register rt,
address prev = pc() - NativeInstruction::instruction_size;
NativeLdSt* prev_ldst = NativeLdSt_at(prev);
long offset;
int64_t offset;
if (adr.offset() < prev_ldst->offset()) {
offset = adr.offset();
@@ -3268,7 +3268,7 @@ void MacroAssembler::kernel_crc32(Register crc, Register buf, Register len,
Register table0, Register table1, Register table2, Register table3,
Register tmp, Register tmp2, Register tmp3) {
Label L_by16, L_by16_loop, L_by4, L_by4_loop, L_by1, L_by1_loop, L_exit;
unsigned long offset;
uint64_t offset;
if (UseCRC32) {
kernel_crc32_using_crc32(crc, buf, len, table0, table1, table2, table3);
@@ -3570,7 +3570,7 @@ void MacroAssembler::kernel_crc32c(Register crc, Register buf, Register len,
SkipIfEqual::SkipIfEqual(
MacroAssembler* masm, const bool* flag_addr, bool value) {
_masm = masm;
unsigned long offset;
uint64_t offset;
_masm->adrp(rscratch1, ExternalAddress((address)flag_addr), offset);
_masm->ldrb(rscratch1, Address(rscratch1, offset));
_masm->cbzw(rscratch1, _label);
@@ -3599,7 +3599,7 @@ void MacroAssembler::addptr(const Address &dst, int32_t src) {
}
void MacroAssembler::cmpptr(Register src1, Address src2) {
unsigned long offset;
uint64_t offset;
adrp(rscratch1, src2, offset);
ldr(rscratch1, Address(rscratch1, offset));
cmp(src1, rscratch1);
@@ -4185,7 +4185,7 @@ void MacroAssembler::get_polling_page(Register dest, address page, relocInfo::re
if (SafepointMechanism::uses_thread_local_poll()) {
ldr(dest, Address(rthread, Thread::polling_page_offset()));
} else {
unsigned long off;
uint64_t off;
adrp(dest, Address(page, rtype), off);
assert(off == 0, "polling page must be page aligned");
}
@@ -4207,13 +4207,12 @@ address MacroAssembler::read_polling_page(Register r, relocInfo::relocType rtype
return inst_mark();
}
void MacroAssembler::adrp(Register reg1, const Address &dest, unsigned long &byte_offset) {
relocInfo::relocType rtype = dest.rspec().reloc()->type();
unsigned long low_page = (unsigned long)CodeCache::low_bound() >> 12;
unsigned long high_page = (unsigned long)(CodeCache::high_bound()-1) >> 12;
unsigned long dest_page = (unsigned long)dest.target() >> 12;
long offset_low = dest_page - low_page;
long offset_high = dest_page - high_page;
void MacroAssembler::adrp(Register reg1, const Address &dest, uint64_t &byte_offset) {
uint64_t low_page = (uint64_t)CodeCache::low_bound() >> 12;
uint64_t high_page = (uint64_t)(CodeCache::high_bound()-1) >> 12;
uint64_t dest_page = (uint64_t)dest.target() >> 12;
int64_t offset_low = dest_page - low_page;
int64_t offset_high = dest_page - high_page;
assert(is_valid_AArch64_address(dest.target()), "bad address");
assert(dest.getMode() == Address::literal, "ADRP must be applied to a literal address");
@@ -4225,14 +4224,14 @@ void MacroAssembler::adrp(Register reg1, const Address &dest, unsigned long &byt
if (offset_high >= -(1<<20) && offset_low < (1<<20)) {
_adrp(reg1, dest.target());
} else {
unsigned long target = (unsigned long)dest.target();
unsigned long adrp_target
= (target & 0xffffffffUL) | ((unsigned long)pc() & 0xffff00000000UL);
uint64_t target = (uint64_t)dest.target();
uint64_t adrp_target
= (target & 0xffffffffULL) | ((uint64_t)pc() & 0xffff00000000ULL);
_adrp(reg1, (address)adrp_target);
movk(reg1, target >> 32, 32);
}
byte_offset = (unsigned long)dest.target() & 0xfff;
byte_offset = (uint64_t)dest.target() & 0xfff;
}
void MacroAssembler::load_byte_map_base(Register reg) {
@@ -4242,7 +4241,7 @@ void MacroAssembler::load_byte_map_base(Register reg) {
if (is_valid_AArch64_address((address)byte_map_base)) {
// Strictly speaking the byte_map_base isn't an address at all,
// and it might even be negative.
unsigned long offset;
uint64_t offset;
adrp(reg, ExternalAddress((address)byte_map_base), offset);
// We expect offset to be zero with most collectors.
if (offset != 0) {
@@ -5771,7 +5770,7 @@ void MacroAssembler::char_array_compress(Register src, Register dst, Register le
// aarch64_get_thread_helper() clobbers only r0, r1, and flags.
//
void MacroAssembler::get_thread(Register dst) {
RegSet saved_regs = RegSet::range(r0, r1) + lr - dst;
RegSet saved_regs = RegSet::range(r0, r1) + BSD_ONLY(RegSet::range(r2, r17)) + lr - dst;
push(saved_regs, sp);
mov(lr, CAST_FROM_FN_PTR(address, JavaThread::aarch64_get_thread_helper));

View File

@@ -88,7 +88,7 @@ class MacroAssembler: public Assembler {
= (operand_valid_for_logical_immediate(false /*is32*/,
(uint64_t)Universe::narrow_klass_base())
&& ((uint64_t)Universe::narrow_klass_base()
> (1UL << log2_intptr(Universe::narrow_klass_range()))));
> (1UL << log2_intptr((uintptr_t)Universe::narrow_klass_range()))));
}
// These routines should emit JVMTI PopFrame and ForceEarlyReturn handling code.
@@ -456,31 +456,20 @@ public:
// now mov instructions for loading absolute addresses and 32 or
// 64 bit integers
inline void mov(Register dst, address addr)
{
mov_immediate64(dst, (u_int64_t)addr);
}
inline void mov(Register dst, address addr) { mov_immediate64(dst, (uint64_t)addr); }
inline void mov(Register dst, u_int64_t imm64)
{
mov_immediate64(dst, imm64);
}
inline void mov(Register dst, int imm64) { mov_immediate64(dst, (uint64_t)imm64); }
inline void mov(Register dst, long imm64) { mov_immediate64(dst, (uint64_t)imm64); }
inline void mov(Register dst, long long imm64) { mov_immediate64(dst, (uint64_t)imm64); }
inline void mov(Register dst, unsigned int imm64) { mov_immediate64(dst, (uint64_t)imm64); }
inline void mov(Register dst, unsigned long imm64) { mov_immediate64(dst, (uint64_t)imm64); }
inline void mov(Register dst, unsigned long long imm64) { mov_immediate64(dst, (uint64_t)imm64); }
inline void movw(Register dst, u_int32_t imm32)
{
mov_immediate32(dst, imm32);
}
inline void mov(Register dst, long l)
{
mov(dst, (u_int64_t)l);
}
inline void mov(Register dst, int i)
{
mov(dst, (long)i);
}
void mov(Register dst, RegisterOrConstant src) {
if (src.is_register())
mov(dst, src.as_register());
@@ -1134,7 +1123,7 @@ public:
void sub(Register Rd, Register Rn, RegisterOrConstant decrement);
void subw(Register Rd, Register Rn, RegisterOrConstant decrement);
void adrp(Register reg1, const Address &dest, unsigned long &byte_offset);
void adrp(Register reg1, const Address &dest, uint64_t &byte_offset);
void tableswitch(Register index, jint lowbound, jint highbound,
Label &jumptable, Label &jumptable_end, int stride = 1) {
@@ -1151,7 +1140,7 @@ public:
// actually be used: you must use the Address that is returned. It
// is up to you to ensure that the shift provided matches the size
// of your data.
Address form_address(Register Rd, Register base, long byte_offset, int shift);
Address form_address(Register Rd, Register base, int64_t byte_offset, int shift);
// Return true iff an address is within the 48-bit AArch64 address
// space.
@@ -1176,7 +1165,7 @@ public:
if (NearCpool) {
ldr(dest, const_addr);
} else {
unsigned long offset;
uint64_t offset;
adrp(dest, InternalAddress(const_addr.target()), offset);
ldr(dest, Address(dest, offset));
}
@@ -1288,7 +1277,7 @@ private:
// Uses rscratch2 if the address is not directly reachable
Address spill_address(int size, int offset, Register tmp=rscratch2);
bool merge_alignment_check(Register base, size_t size, long cur_offset, long prev_offset) const;
bool merge_alignment_check(Register base, size_t size, int64_t cur_offset, int64_t prev_offset) const;
// Check whether two loads/stores can be merged into ldp/stp.
bool ldst_can_merge(Register rx, const Address &adr, size_t cur_size_in_bytes, bool is_store) const;

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