Compare commits

...

575 Commits

Author SHA1 Message Date
Jaikiran Pai
1fb9e3d674 8325304: Several classes in java.util.jar and java.util.zip don't specify the behaviour for null arguments
Reviewed-by: lancea, alanb
2024-02-08 06:35:47 +00:00
Kim Barrett
9cccf0515e 8325367: Rename nsk_list.h
Reviewed-by: coleenp
2024-02-08 00:00:00 +00:00
Chris Plummer
be7cc1c2b0 8323681: SA PointerFinder code should support G1
Reviewed-by: tschatzl, kevinw
2024-02-07 23:39:34 +00:00
Joe Darcy
fbd15b2087 8325189: Enable this-escape javac warning in java.base
Reviewed-by: alanb, erikj, naoto, smarks, ihse, joehw, lancea, weijun
2024-02-07 20:05:11 +00:00
Brian Burkhalter
299a8ee68d 8325302: Files.move(REPLACE_EXISTING) throws NoSuchFileException on deleted target
Reviewed-by: alanb
2024-02-07 19:02:30 +00:00
Joe Darcy
3a1f4d0f48 8325268: Add policy statement to langtools makefiles concerning warnings
Reviewed-by: ihse, jjg, vromero
2024-02-07 18:03:38 +00:00
Magnus Ihse Bursie
18e24d0619 8325109: Sort method modifiers in canonical order
Reviewed-by: aivanov, rriggs, darcy, prappo
2024-02-07 15:50:40 +00:00
Axel Boldt-Christmas
a3a2b1fbbf 8324881: ObjectSynchronizer::inflate(Thread* current...) is invoked for non-current thread
Reviewed-by: rrich, dholmes, coleenp, dcubed
2024-02-07 15:49:16 +00:00
Albert Mingkun Yang
a9c6e87c6a 8325416: Parallel: Refactor CheckForUnmarkedOops
Reviewed-by: stefank
2024-02-07 15:05:18 +00:00
Thomas Stuefe
1ecf74c296 8325306: Rename static huge pages to explicit huge pages
Reviewed-by: jsjolen, jwaters
2024-02-07 14:54:51 +00:00
Albert Mingkun Yang
c3a632dca7 8325248: Serial: Remove Generation::space_iterate
Reviewed-by: tschatzl
2024-02-07 12:21:30 +00:00
Albert Mingkun Yang
77ee7f0e24 8325221: Obsolete TLABStats
Reviewed-by: tschatzl, kbarrett
2024-02-07 12:21:21 +00:00
Daniel Lundén
4abb10eb0b 8317349: Randomize order of macro node expansion in C2
Reviewed-by: chagedorn, rcastanedalo, thartmann
2024-02-07 10:01:35 +00:00
Chen Liang
3bffe223a3 8319463: ClassSignature should have superclass and superinterfaces as ClassTypeSig
Reviewed-by: asotona
2024-02-07 07:54:22 +00:00
Aggelos Biboudis
e0d98dd301 8325257: jshell reports NoSuchFieldError with instanceof primitive type
Reviewed-by: mcimadamore
2024-02-07 06:59:48 +00:00
Kim Barrett
f2f634448e 8325347: Rename native_thread.h
Reviewed-by: coleenp, lmesnik
2024-02-06 23:42:08 +00:00
Joe Darcy
1797efd68d 8322218: Better escaping of single and double quotes in annotation toString() results
Reviewed-by: mchung
2024-02-06 23:22:46 +00:00
Martin Balao
0f5f3c9b97 8325254: CKA_TOKEN private and secret keys are not necessarily sensitive
Reviewed-by: valeriep
2024-02-06 19:49:30 +00:00
Brian Burkhalter
4b1e367eda 8325152: Clarify specification of java.io.RandomAccessFile.setLength
Reviewed-by: alanb
2024-02-06 19:35:03 +00:00
Naoto Sato
96eb0390d6 8324665: Loose matching of space separators in the lenient date/time parsing mode
Reviewed-by: joehw, jlu
2024-02-06 17:43:12 +00:00
Kim Barrett
2d252ee06e 8325180: Rename jvmti_FollowRefObjects.h
Reviewed-by: sspitsyn, jwaters, lmesnik
2024-02-06 17:15:36 +00:00
Mandy Chung
b814c3184e 8321703: jdeps generates illegal dot file containing nodesep=0,500000
8325262: jdeps can drop printing stack trace when FindException is thrown due to modules not found

Reviewed-by: jpai, alanb
2024-02-06 17:03:57 +00:00
Shaojin Wen
50b17d9846 8316704: Regex-free parsing of Formatter and FormatProcessor specifiers
Reviewed-by: redestad, rgiulietti
2024-02-06 15:16:40 +00:00
Kangcheng Xu
51d7169bd9 8320237: C2: late inlining of method handle invoke causes duplicate lines in PrintInlining output
Reviewed-by: roland, kvn, thartmann
2024-02-06 14:37:41 +00:00
Doug Simon
fd89b334c4 8316992: Potential null pointer from get_current_thread JVMCI helper function.
Reviewed-by: thartmann
2024-02-06 14:05:34 +00:00
George Adams
d1c82156ba 8325194: GHA: Add macOS M1 testing
Reviewed-by: clanger, ihse
2024-02-06 13:28:25 +00:00
Fredrik Bredberg
f356970b89 8322535: Change default AArch64 SpinPause instruction
Reviewed-by: eastigeevich, eosterlund, coleenp
2024-02-06 13:25:38 +00:00
Damon Fenacci
b75c134fac 8325313: Header format error in TestIntrinsicBailOut after JDK-8317299
Reviewed-by: chagedorn
2024-02-06 09:34:26 +00:00
Evgeny Astigeevich
4cd318756d 8324874: AArch64: crypto pmull based CRC32/CRC32C intrinsics clobber V8-V15 registers
Reviewed-by: aph, ngasson
2024-02-06 08:54:23 +00:00
Magnus Ihse Bursie
b02599d22e 8298046: Fix hidden but significant trailing whitespace in properties files for serviceability code
Reviewed-by: cjplummer, kevinw
2024-02-06 08:04:17 +00:00
Damon Fenacci
6d911f68a3 8317299: safepoint scalarization doesn't keep track of the depth of the JVM state
Reviewed-by: thartmann, vlivanov
2024-02-06 07:53:03 +00:00
Sonia Zaldana Calles
542b0b6656 8324126: Error message for mistyping -XX:+Unlock...Options is not helpful
Reviewed-by: dholmes, stuefe
2024-02-06 07:03:47 +00:00
Martin Doerr
9ee9f28849 8325213: Flags introduced by configure script are not passed to ADLC build
Reviewed-by: jwaters, ihse
2024-02-06 06:56:48 +00:00
Joe Darcy
729ae1d787 8325266: Enable this-escape javac warning in jdk.javadoc
Reviewed-by: jjg, erikj
2024-02-06 02:11:37 +00:00
Lei Zaakjyu
e0fd3f4dab 8325081: Move '_soft_ref_policy' to 'CollectedHeap'
Reviewed-by: kbarrett, tschatzl
2024-02-06 01:06:43 +00:00
Archie Cobbs
f1f93988fb 8323699: MessageFormat.toPattern() generates non-equivalent MessageFormat pattern
Reviewed-by: jlu, naoto
2024-02-05 23:14:50 +00:00
Daniel D. Daugherty
ab3b941783 8325270: ProblemList two compiler/intrinsics/float16 tests that fail due to JDK-8324724
Reviewed-by: vlivanov
2024-02-05 22:49:00 +00:00
Alex Menkov
f31957e6a1 8317636: Improve heap walking API tests to verify correctness of field indexes
Reviewed-by: cjplummer, sspitsyn
2024-02-05 21:57:15 +00:00
Alex Menkov
fd3042a04b 8318566: Heap walking functions should not use FilteredFieldStream
Reviewed-by: cjplummer, sspitsyn
2024-02-05 21:55:13 +00:00
Brian Burkhalter
209d87a856 8324960: Unsafe.allocateMemory documentation incorrect regarding zero return value
Reviewed-by: rriggs
2024-02-05 21:31:17 +00:00
Gerard Ziemski
7777eb5e15 8321931: memory_swap_current_in_bytes reports 0 as "unlimited"
Reviewed-by: sgehwolf, iklam
2024-02-05 19:35:43 +00:00
Bhavana Kilambi
51853f7488 8324724: Add Stub routines for FP16 conversions on aarch64
Reviewed-by: aph, ngasson
2024-02-05 18:29:32 +00:00
Eirik Bjørsnøs
c3adc61e6e 8325199: (zipfs) jdk/nio/zipfs/TestPosix.java failed 6 sub-tests
Reviewed-by: clanger, lancea
2024-02-05 17:59:59 +00:00
Tom Rodriguez
1993652653 8324983: race in CompileBroker::possibly_add_compiler_threads
Reviewed-by: kvn, dholmes, dnsimon
2024-02-05 17:43:34 +00:00
Claes Redestad
55c1446b68 8321468: Remove StringUTF16::equals
Reviewed-by: rriggs, kvn
2024-02-05 16:30:16 +00:00
Claes Redestad
19e92201b4 8325169: Reduce String::indexOf overheads
Reviewed-by: rriggs, rgiulietti, mli
2024-02-05 16:30:05 +00:00
Emanuel Peter
89e6a02e3b 8325064: C2 SuperWord: refactor construct_bb
Reviewed-by: kvn, chagedorn
2024-02-05 16:28:51 +00:00
Magnus Ihse Bursie
d395ac2879 8321373: Build should use LC_ALL=C.UTF-8
Reviewed-by: redestad, erikj
2024-02-05 14:06:16 +00:00
Albert Mingkun Yang
51671c0b92 8323809: Serial: Refactor card table verification
Reviewed-by: tschatzl, sjohanss
2024-02-05 11:18:43 +00:00
Albert Mingkun Yang
cdf918b1d0 8325134: Serial: Remove Generation::used_region
Reviewed-by: tschatzl, iwalulya
2024-02-05 10:54:41 +00:00
Daniel Lundén
4da28b40f0 8291809: Convert compiler/c2/cr7200264/TestSSE2IntVect.java to IR verification test
Reviewed-by: rcastanedalo, epeter, chagedorn
2024-02-05 10:53:38 +00:00
Johan Sjölen
0377f1abe1 8325133: Missing MEMFLAGS parameter in parts of os API
Reviewed-by: stefank, gziemski
2024-02-05 09:27:07 +00:00
Aggelos Biboudis
df35462a4e 8323502: javac crash with wrongly typed method block in Flow
Co-authored-by: Jan Lahoda <jlahoda@openjdk.org>
Reviewed-by: jlahoda
2024-02-05 08:59:55 +00:00
Julian Waters
af32262c28 8325049: stubGenerator_ppc.cpp should use alignas
Reviewed-by: mdoerr
2024-02-05 07:00:54 +00:00
Emanuel Peter
85e320121e 8325159: C2 SuperWord: measure time for CITime
Reviewed-by: rcastanedalo, kvn
2024-02-05 06:53:51 +00:00
Amit Kumar
8796f43c6c 8315762: Update subtype check profile collection on s390x following 8308869
Reviewed-by: mdoerr, lucy
2024-02-05 06:29:48 +00:00
Wang Zhuo
80642dd7af 8324817: Parallel GC does not pre-touch all heap pages when AlwaysPreTouch enabled and large page disabled
Reviewed-by: ayang, tschatzl
2024-02-05 06:19:02 +00:00
Eirik Bjørsnøs
692c9f8821 8325201: (zipfs) Disable TestPosix.setPermissionsShouldConvertToUnix which fails on Windows
Reviewed-by: lancea
2024-02-04 21:01:37 +00:00
Hamlin Li
ed068469f3 8325037: x86: enable and fix hotspot/jtreg/compiler/vectorization/TestRoundVectFloat.java
Reviewed-by: thartmann, kvn, jbhateja
2024-02-04 09:46:15 +00:00
Eirik Bjørsnøs
a18b03b86f 8324635: (zipfs) Regression in Files.setPosixFilePermissions called on existing MSDOS entries
Reviewed-by: lancea
2024-02-02 21:50:13 +00:00
Chris Plummer
7476e29053 8323680: SA PointerFinder code can do a better job of leveraging existing code to determine if an address is in the TLAB
Reviewed-by: kevinw, sspitsyn
2024-02-02 20:41:37 +00:00
Eirik Bjørsnøs
63cb1f8818 8321396: Retire test/jdk/java/util/zip/NoExtensionSignature.java
Reviewed-by: lancea
2024-02-02 20:21:46 +00:00
Eirik Bjørsnøs
f613e13397 8313739: ZipOutputStream.close() should always close the wrapped stream
Reviewed-by: jpai, lancea
2024-02-02 20:20:36 +00:00
Joe Darcy
adc3604027 8325148: Enable restricted javac warning in java.base
Reviewed-by: erikj, jvernee, mcimadamore, pminborg, ihse
2024-02-02 17:47:28 +00:00
Paul Sandoz
1ae851387f 8324858: [vectorapi] Bounds checking issues when accessing memory segments
Reviewed-by: mcimadamore, jbhateja
2024-02-02 16:53:10 +00:00
Mark Powers
38c01971ff 8318105: [jmh] the test java.security.HSS failed with 2 active threads
Reviewed-by: ascarpino
2024-02-02 16:30:46 +00:00
Kim Barrett
6787c4c3dd 8325055: Rename Injector.h
Reviewed-by: dholmes, amenkov, sspitsyn
2024-02-02 16:19:08 +00:00
Doug Simon
91d8dac9cf 8325137: com/sun/management/ThreadMXBean/ThreadCpuTimeArray.java can fail in Xcomp with out of expected range
Reviewed-by: dholmes, sspitsyn
2024-02-02 10:44:42 +00:00
Pasam Soujanya
783ae56634 8311893: Interactive component with ARIA role 'tabpanel' does not have a programmatically associated name
Reviewed-by: hannesw
2024-02-02 09:01:45 +00:00
Justin Lu
d3c3194ac3 6285888: ChoiceFormat can support unescaped relational symbols in the Format segment
Reviewed-by: naoto
2024-02-01 22:21:45 +00:00
Joe Darcy
144a08ee50 8325078: Better escaping of single and double quotes in javac annotation toString() results
Reviewed-by: jlahoda
2024-02-01 20:20:33 +00:00
Coleen Phillimore
b3ecd55601 8324679: Replace NULL with nullptr in HotSpot .ad files
Reviewed-by: kvn
2024-02-01 19:39:54 +00:00
Chris Plummer
192349eee4 8324066: "clhsdb jstack" should not by default scan for j.u.c locks because it can be very slow
Reviewed-by: kevinw, amenkov
2024-02-01 19:24:39 +00:00
Denghui Dong
6b09a79d64 8324974: JFR: EventCompilerPhase should be created as UNTIMED
Reviewed-by: egahlin
2024-02-01 15:52:25 +00:00
Tejesh R
70e7cdcb9e 8323670: A few client tests intermittently throw ConcurrentModificationException
Reviewed-by: aivanov, serb
2024-02-01 14:05:06 +00:00
Sean Coffey
ac1cd31949 8325096: Test java/security/cert/CertPathBuilder/akiExt/AKISerialNumber.java is failing
Reviewed-by: weijun
2024-02-01 13:54:03 +00:00
Magnus Ihse Bursie
8e45182357 8324834: Use _LARGE_FILES on AIX
Reviewed-by: erikj, mbaesken
2024-02-01 13:09:11 +00:00
Matthias Baesken
cab74b075e 8324287: Record total and free swap space in JFR
Reviewed-by: jbechberger, lucy, egahlin
2024-02-01 12:50:18 +00:00
Per Minborg
6b84f9bb3e 8325001: Typo in the javadocs for the Arena::ofShared method
Reviewed-by: dfuchs
2024-02-01 11:53:02 +00:00
Albert Mingkun Yang
cd11059f10 8325053: Serial: Move Generation::save_used_region to TenuredGeneration
Reviewed-by: stefank, ehelin
2024-02-01 11:00:09 +00:00
Kevin Walls
d9331bfd49 8324845: management.properties text "interface name" is misleading
Reviewed-by: mchung, alanb
2024-02-01 09:18:08 +00:00
Daniel Jeliński
68206b533b 8324585: JVM native memory leak in PCKS11-NSS security provider
Reviewed-by: valeriep
2024-02-01 08:37:24 +00:00
Aleksey Shipilev
1aba78f272 8324937: GHA: Avoid multiple test suites per job
Reviewed-by: erikj, clanger
2024-02-01 08:11:46 +00:00
Jaikiran Pai
a663248786 8324668: JDWP process management needs more efficient file descriptor handling
Reviewed-by: gziemski, dholmes, cjplummer
2024-02-01 05:55:58 +00:00
Julian Waters
a2229b18bf 8324838: test_nmt_locationprinting.cpp broken in the gcc windows build
Reviewed-by: dholmes, kevinw, jsjolen
2024-02-01 05:54:57 +00:00
SendaoYan
432756b6e5 8325024: java/security/cert/CertPathValidator/OCSP/OCSPTimeout.java incorrect comment information
Reviewed-by: jnimeh, fyang
2024-02-01 03:08:33 +00:00
John Jiang
fe78c0f191 8325022: Incorrect error message on client authentication
Reviewed-by: jnimeh, hchao, djelinski
2024-02-01 02:35:34 +00:00
Vladimir Kozlov
5b9b176c67 8324174: assert(m->is_entered(current)) failed: invariant
Reviewed-by: epeter, dlong, thartmann
2024-01-31 19:42:02 +00:00
Kim Barrett
0cc8e5beed 8325042: remove unused JVMDITools test files
Reviewed-by: coleenp
2024-01-31 19:19:21 +00:00
Per Minborg
f2920533e9 8323621: JDK build should exclude snippet class in java.lang.foreign
Reviewed-by: mcimadamore
2024-01-31 17:59:50 +00:00
Harshitha Onkar
62c9530c05 8324238: [macOS] java/awt/Frame/ShapeNotSetSometimes/ShapeNotSetSometimes.java fails with the shape has not been applied msg
Reviewed-by: azvegint, dnguyen
2024-01-31 17:42:00 +00:00
Rajat Mahajan
1f2922ad85 8320342: Use PassFailJFrame for TruncatedPopupMenuTest.java
Reviewed-by: honkar, aivanov
2024-01-31 17:35:50 +00:00
William Kemper
2cd1ba6a52 8324981: Shenandoah: Move commit and soft max heap changed methods into heap
Reviewed-by: shade
2024-01-31 16:42:44 +00:00
Aggelos Biboudis
1733d2ea24 8303374: Implement JEP 455: Primitive Types in Patterns, instanceof, and switch (Preview)
Co-authored-by: Jan Lahoda <jlahoda@openjdk.org>
Co-authored-by: Maurizio Cimadamore <mcimadamore@openjdk.org>
Co-authored-by: Gavin Bierman <gbierman@openjdk.org>
Co-authored-by: Brian Goetz <briangoetz@openjdk.org>
Co-authored-by: Raffaello Giulietti <rgiulietti@openjdk.org>
Co-authored-by: Aggelos Biboudis <abimpoudis@openjdk.org>
Reviewed-by: vromero, jlahoda
2024-01-31 14:18:13 +00:00
Eirik Bjørsnøs
66971600f7 8320712: Rewrite BadFactoryTest in pure Java
Reviewed-by: jpai, sundar
2024-01-31 13:59:19 +00:00
Albert Mingkun Yang
725314fb73 8324771: Obsolete RAMFraction related flags
Reviewed-by: dholmes, mbaesken, tschatzl
2024-01-31 12:44:39 +00:00
Albert Mingkun Yang
ec6c35c4ac 8324970: Serial: Refactor signature of maintain_old_to_young_invariant
Reviewed-by: tschatzl
2024-01-31 12:44:29 +00:00
Lance Andersen
b5c267fc8a 8324632: Update Zlib Data Compression Library to Version 1.3.1
Reviewed-by: iris, alanb
2024-01-31 11:06:01 +00:00
Per Minborg
ec56c72b51 8323601: Improve LayoutPath.PathElement::toString
Reviewed-by: jvernee
2024-01-31 09:54:03 +00:00
Varada M
f7121de4a0 8322648: Improve class initialization barrier in TemplateTable::_new for PPC
Reviewed-by: mdoerr
2024-01-31 06:12:35 +00:00
Tejesh R
577de17d24 8259550: The content of the print out displayed incomplete with the NimbusLAF
Reviewed-by: dnguyen, psadhukhan, abhiscxk
2024-01-31 05:26:30 +00:00
Amit Kumar
83b3c9b3ee 8322649: Improve class initialization barrier in TemplateTable::_new for S390
Reviewed-by: mdoerr, lucy
2024-01-31 04:41:50 +00:00
Leonid Mesnik
7d1a48807a 8324861: Exceptions::wrap_dynamic_exception() doesn't have ResourceMark
Reviewed-by: dholmes, coleenp
2024-01-30 23:56:04 +00:00
Eirik Bjørsnøs
c3c1d5bd12 8324998: Add test cases for String.regionMatches comparing Turkic dotted/dotless I with uppercase latin I
Reviewed-by: naoto, iris
2024-01-30 23:52:37 +00:00
Leonid Mesnik
8892d45b9f 8324582: Replace -Djava.util.concurrent.ForkJoinPool.common.parallelism to -Djdk.virtualThreadScheduler.maxPoolSize in jvmti vthread tests
Reviewed-by: cjplummer, sspitsyn
2024-01-30 21:05:12 +00:00
Emanuel Peter
11e28bd619 8324794: C2 SuperWord: do not ignore reductions in SuperWord::unrolling_analysis
Reviewed-by: chagedorn, kvn
2024-01-30 20:14:20 +00:00
Calvin Cheung
d51aaf6304 8323950: Null CLD while loading shared lambda proxy class with javaagent active
Reviewed-by: matsaave, iklam
2024-01-30 20:00:10 +00:00
Kim Barrett
f57c7223cf 8324880: Rename get_stack_trace.h
Reviewed-by: dholmes, jwaters, sspitsyn
2024-01-30 18:10:25 +00:00
Roman Kennke
f0024f585d 8324734: Relax too-strict assert(VM_Version::supports_evex()) in Assembler::locate_operand()
Co-authored-by: Vladimir Kozlov <kvn@openjdk.org>
Reviewed-by: kvn, shade
2024-01-30 13:26:10 +00:00
Albert Mingkun Yang
fd8adf3083 8324856: Serial: Move Generation::is_in to DefNewGeneration
Reviewed-by: stefank, tschatzl
2024-01-30 08:52:17 +00:00
Gui Cao
a1d65eb6d8 8324125: Improve class initialization barrier in TemplateTable::_new for RISC-V
Reviewed-by: fyang, rehn
2024-01-30 02:07:20 +00:00
Vladimir Kozlov
b6d364ad88 8324865: windows-x64-slowdebug still does not build after JDK-8324840
Reviewed-by: dholmes, dcubed
2024-01-30 01:08:18 +00:00
Vladimir Petko
64c3642c57 8242564: javadoc crashes:: class cast exception com.sun.tools.javac.code.Symtab$6
Reviewed-by: jjg
2024-01-29 21:28:49 +00:00
Aleksey Shipilev
e999dfcb40 8323503: x86: Shorter movptr(reg, imm) for 32-bit unsigned immediates
Reviewed-by: stuefe, kvn, eastigeevich
2024-01-29 20:25:32 +00:00
Joshua Cao
84deeb6cd5 8324667: fold Parse::seems_stable_comparison()
Reviewed-by: jkarthikeyan, chagedorn, xliu
2024-01-29 19:54:42 +00:00
Doug Simon
fb07bbe7b2 8324717: Remove HotSpotJVMCICompilerFactory
Reviewed-by: thartmann, never
2024-01-29 19:12:44 +00:00
Harshitha Onkar
d1e676360d 8324733: [macos14] Problem list tests which fail due to macOS bug described in JDK-8322653
Reviewed-by: prr, tr
2024-01-29 18:03:30 +00:00
Coleen Phillimore
c1281e6b45 8324678: Replace NULL with nullptr in HotSpot gtests
Reviewed-by: kbarrett, dholmes, jwaters
2024-01-29 17:12:13 +00:00
Coleen Phillimore
a6bdee48f3 8324681: Replace NULL with nullptr in HotSpot jtreg test native code files
Reviewed-by: kevinw, kbarrett, dholmes
2024-01-29 17:07:32 +00:00
Aleksey Shipilev
951b5f8ecb 8324723: GHA: Upgrade some actions to avoid deprecated Node 16
Reviewed-by: sgehwolf, ihse
2024-01-29 15:13:44 +00:00
Thomas Schatzl
fe0eec7e20 8324840: windows-x64-slowdebug does not build anymore after JDK-8317572
Reviewed-by: epeter
2024-01-29 13:55:00 +00:00
Albert Mingkun Yang
4df04f0ec9 8324769: Serial: Remove unused TenuredGeneration::unsafe_max_alloc_nogc
Reviewed-by: tschatzl
2024-01-29 12:42:10 +00:00
Emanuel Peter
3066d49cc1 8317572: C2 SuperWord: refactor/improve TraceSuperWord, replace VectorizeDebugOption with TraceAutoVectorization
Reviewed-by: chagedorn, kvn
2024-01-29 10:13:43 +00:00
Denghui Dong
7a300b63b5 8324213: C1: There is no need for Canonicalizer to handle IfOp
Reviewed-by: dlong, chagedorn
2024-01-29 09:47:24 +00:00
Kuai Wei
628348d3e9 8324186: Use "dmb.ishst+dmb.ishld" for release barrier
Reviewed-by: fyang, aph
2024-01-29 09:33:22 +00:00
Christian Hagedorn
72ba8178a8 8324236: compiler/ciReplay/TestInliningProtectionDomain.java failed with RuntimeException: should only dump inline information for ... expected true, was false
Reviewed-by: kvn
2024-01-29 09:20:52 +00:00
Hamlin Li
b39b876493 8324304: RISC-V: add hw probe flags
Reviewed-by: fyang, rehn
2024-01-29 09:17:46 +00:00
Daniel Lundén
69586e7bdf 8322996: BoxLockNode creation fails with assert(reg < CHUNK_SIZE) failed: sanity
Reviewed-by: rcastanedalo, kvn
2024-01-29 09:14:26 +00:00
Emanuel Peter
f0bae7939a 8324750: C2: rename Matcher methods using "superword" -> "autovectorization"
Reviewed-by: kvn, chagedorn
2024-01-29 08:50:35 +00:00
Emanuel Peter
6ad78ca8a5 8324775: C2 SuperWord: refactor visited sets
Reviewed-by: kvn, chagedorn
2024-01-29 08:46:34 +00:00
Tobias Holenstein
422020c4d6 8210858: AArch64: remove Math.log intrinsic
Reviewed-by: ngasson, shade
2024-01-29 08:37:06 +00:00
Thomas Schatzl
0d5f5e15d4 8322484: 22-b26 Regression in J2dBench-bimg_misc-G1 (and more) on Windows-x64 and macOS-x64
Reviewed-by: kbarrett, ayang
2024-01-29 08:36:51 +00:00
Julian Waters
af9cd975ce 8324800: gcc windows build broken after 8322757
Reviewed-by: kbarrett, dholmes
2024-01-29 08:03:20 +00:00
Matthias Baesken
8950d68ddb 8324753: [AIX] adjust os_posix after JDK-8318696
Reviewed-by: jkern, stuefe, kbarrett, dholmes
2024-01-29 07:38:32 +00:00
Emanuel Peter
65d6bc1d4c 8324765: C2 SuperWord: remove dead code: SuperWord::insert_extracts
Reviewed-by: kvn, chagedorn
2024-01-29 07:00:12 +00:00
Emanuel Peter
525c0cd09f 8324752: C2 Superword: remove SuperWordRTDepCheck
Reviewed-by: kvn, chagedorn
2024-01-29 06:54:50 +00:00
Joe Darcy
2e748c998e 8175386: Clarify exception behavior of Types utility methods
Reviewed-by: jjg
2024-01-26 22:33:17 +00:00
Daniel D. Daugherty
70f4a4e18e 8324786: validate-source fails after JDK-8042981
Reviewed-by: darcy
2024-01-26 22:01:07 +00:00
Joe Darcy
ed3272cc44 8042981: Strip type annotations in Types' utility methods
Co-authored-by: Liam Miller-Cushon <cushon@openjdk.org>
Reviewed-by: cushon, jjg, jlahoda
2024-01-26 20:55:46 +00:00
Daniel D. Daugherty
6d1856234f 8324785: ProblemList two tests on linux due to JDK-8315923
Reviewed-by: rriggs
2024-01-26 20:18:08 +00:00
Vicente Romero
91d8ea79d9 8323835: Updating ASM to 9.6 for JDK 23
Reviewed-by: mchung
2024-01-26 18:34:56 +00:00
Liming Liu
a65a89522d 8315923: pretouch_memory by atomic-add-0 fragments huge pages unexpectedly
Reviewed-by: jsjolen, stuefe
2024-01-26 16:42:46 +00:00
Volker Simonis
62b3293df0 8324241: Always record evol_method deps to avoid excessive method flushing
Reviewed-by: eastigeevich, phh, coleenp, dlong, shade
2024-01-26 13:11:58 +00:00
Albert Mingkun Yang
885e9b76d6 8324722: Serial: Inline block_is_obj of subclasses of Generation
Reviewed-by: stefank, tschatzl
2024-01-26 13:03:59 +00:00
Albert Mingkun Yang
32ddcf504c 8324301: Obsolete MaxGCMinorPauseMillis
Reviewed-by: kbarrett, tschatzl
2024-01-26 13:03:50 +00:00
Aleksey Shipilev
c313d451a5 8324659: GHA: Generic jtreg errors are not reported
Reviewed-by: erikj, jwaters, stuefe
2024-01-26 08:51:00 +00:00
Sergey Bylokhov
781f368d42 8324347: Enable "maybe-uninitialized" warning for FreeType 2.13.1
Reviewed-by: erikj, azvegint, jwaters, aivanov
2024-01-26 08:46:34 +00:00
Matthias Baesken
33324a59cc 8324637: [aix] Implement support for reporting swap space in jdk.management
Reviewed-by: kevinw, stuefe
2024-01-26 07:57:29 +00:00
Alisen Chung
10066cd4ef 8324571: JDK 23 L10n resource files update
Reviewed-by: jlu, jjg
2024-01-26 03:47:19 +00:00
Wang Zhuo
bde87895c8 8324123: aarch64: fix prfm literal encoding in assembler
Reviewed-by: aph, dlong
2024-01-26 02:30:49 +00:00
Joe Darcy
b5995a76f7 8302019: Clarify Elements.overrides
Reviewed-by: prappo, jjg
2024-01-25 22:17:07 +00:00
Daniel Jeliński
95310eab6c 8223696: java/net/httpclient/MaxStreams.java failed with didn't finish within the time-out
Reviewed-by: dfuchs
2024-01-25 22:01:18 +00:00
Kim Barrett
39b756a0d1 8324492: Remove Atomic support for OopHandle
Reviewed-by: aboldtch, coleenp
2024-01-25 18:35:20 +00:00
Aleksey Shipilev
12b89cd2ee 8323717: Introduce test keyword for tests that need external dependencies
Reviewed-by: dholmes, lmesnik
2024-01-25 18:03:16 +00:00
Emanuel Peter
746a08686b 8306767: Concurrent repacking of extra data in MethodData is potentially unsafe
Reviewed-by: eosterlund, roland, coleenp, never
2024-01-25 15:50:33 +00:00
Roger Riggs
ffe3bb6763 8324657: Intermittent OOME on exception message create
Reviewed-by: lancea, iris, naoto
2024-01-25 14:51:50 +00:00
Albert Mingkun Yang
e709842eae 8324636: Serial: Remove Generation::block_is_obj
Reviewed-by: stefank, ysr
2024-01-25 14:25:45 +00:00
Matthias Baesken
7a798d3ceb 8324598: use mem_unit when working with sysinfo memory and swap related information
Reviewed-by: dholmes, mdoerr
2024-01-25 10:36:00 +00:00
Jatin Bhateja
6d36eb78ad 8322768: Optimize non-subword vector compress and expand APIs for AVX2 target.
Reviewed-by: epeter, sviswanathan
2024-01-25 10:07:50 +00:00
Jaikiran Pai
9d1a6d1484 8323645: Remove unused internal sun.net.www.protocol.jar.URLJarFileCallBack interface
Reviewed-by: alanb, dfuchs
2024-01-25 09:35:35 +00:00
Kim Barrett
3059c3b69e 8324242: Avoid null check for OopHandle::ptr_raw()
Reviewed-by: shade, jsjolen, coleenp
2024-01-25 05:44:18 +00:00
David Holmes
929af9ed03 8307788: vmTestbase/gc/gctests/LargeObjects/large003/TestDescription.java timed out
Reviewed-by: lmesnik, shade
2024-01-25 05:26:13 +00:00
MaxXSoft
e7fdac9d5c 8324280: RISC-V: Incorrect implementation in VM_Version::parse_satp_mode
Reviewed-by: rehn, fyang
2024-01-25 03:10:28 +00:00
Justin Lu
3d32c460eb 6503196: API doc for DecimalFormat::getMaximumIntegerDigits is unclear
Reviewed-by: naoto, iris
2024-01-24 23:42:53 +00:00
Jie Fu
2d5cb97288 8324647: Invalid test group of lib-test after JDK-8323515
Reviewed-by: shade
2024-01-24 23:25:17 +00:00
Alexander Zuev
6212264cc6 8320692: Null icon returned for .exe without custom icon
Co-authored-by: Alexey Ivanov <aivanov@openjdk.org>
Reviewed-by: aivanov
2024-01-24 22:10:28 +00:00
William Kemper
32eb5290c2 8324553: Shenandoah: Move periodic tasks closer to their collaborators
Reviewed-by: kdnilsen, shade
2024-01-24 19:15:21 +00:00
Christian Stein
c702dcabf8 8323815: Source launcher should find classes with $ in names
Reviewed-by: jlahoda, sundar
2024-01-24 19:05:15 +00:00
Joshua Cao
c432dc008b 8322149: ConcurrentHashMap smarter presizing for copy constructor and putAll
Reviewed-by: shade, simonis
2024-01-24 18:52:38 +00:00
Aleksey Shipilev
fb822e49f2 8324514: ClassLoaderData::print_on should print address of class loader
Reviewed-by: kbarrett, coleenp
2024-01-24 17:40:22 +00:00
Raffaello Giulietti
00bb6bf509 8324220: jdk/jfr/event/io/TestSerializationMisdeclarationEvent.java had 22 failures
Reviewed-by: egahlin
2024-01-24 16:19:46 +00:00
Albert Mingkun Yang
bccd823c8e 8324613: Serial: Rename GenerationPool to TenuredGenerationPool
Reviewed-by: stefank
2024-01-24 13:03:03 +00:00
Thomas Schatzl
8c003d83c4 8321512: runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java fails on 32-bit platforms
Reviewed-by: shade, iwalulya
2024-01-24 12:00:17 +00:00
Magnus Ihse Bursie
67f29b16ef 8324537: Remove superfluous _FILE_OFFSET_BITS=64
Reviewed-by: shade, erikj, kbarrett
2024-01-24 10:09:05 +00:00
Albert Mingkun Yang
1c1cb048cd 8324512: Serial: Remove Generation::Name
Reviewed-by: stefank, iwalulya, cjplummer
2024-01-24 10:02:28 +00:00
Albert Mingkun Yang
b65e5eb14e 8324543: Remove Space::object_iterate
Reviewed-by: stefank, kbarrett
2024-01-24 10:02:18 +00:00
David Holmes
6d2f6408e4 8324578: [BACKOUT] [IMPROVE] OPEN_MAX is no longer the max limit on macOS >= 10.6 for RLIMIT_NOFILE
Reviewed-by: darcy, kvn
2024-01-24 03:14:01 +00:00
William Kemper
c17059dee7 8324334: Shenandoah: Improve end of process report
Reviewed-by: kdnilsen, ysr
2024-01-24 02:08:11 +00:00
Justin Lu
96607df7f0 8321545: Override toString() for Format subclasses
Reviewed-by: naoto, rriggs
2024-01-23 22:22:16 +00:00
Chris Plummer
edfee7f348 8323546: Cleanup jcmd docs for Compiler.perfmap and VM.cds filename parameter
Reviewed-by: dholmes, sspitsyn, iklam
2024-01-23 20:33:49 +00:00
Aleksey Shipilev
8b9bf75880 8323515: Create test alias "all" for all test roots
Reviewed-by: dholmes, alanb, joehw, lmesnik
2024-01-23 17:03:35 +00:00
Gerard Ziemski
3d8236367d 8300088: [IMPROVE] OPEN_MAX is no longer the max limit on macOS >= 10.6 for RLIMIT_NOFILE
Reviewed-by: dholmes, fparain, dcubed
2024-01-23 16:15:59 +00:00
Albert Mingkun Yang
2a01c798d3 8324513: Inline ContiguousSpace::object_iterate_from
Reviewed-by: stefank
2024-01-23 15:51:58 +00:00
Darragh Clarke
fbaaac63d4 8314164: java/net/HttpURLConnection/HttpURLConnectionExpectContinueTest.java fails intermittently in timeout
Reviewed-by: dfuchs, djelinski
2024-01-23 14:07:17 +00:00
sendaoYan
791b427f44 8323640: [TESTBUG]testMemoryFailCount in jdk/internal/platform/docker/TestDockerMemoryMetrics.java always fail because OOM killed
Reviewed-by: sgehwolf
2024-01-23 13:19:49 +00:00
Hamlin Li
bcaad515fd 8318228: RISC-V: C2 ConvF2HF
Reviewed-by: fyang, vkempik
2024-01-23 12:02:28 +00:00
Albert Mingkun Yang
5acd37fa96 8324207: Serial: Remove Space::set_saved_mark_word
Reviewed-by: tschatzl, stefank
2024-01-23 09:40:09 +00:00
Albert Mingkun Yang
f5e6d111b1 8324210: Serial: Remove unused methods in Generation
Reviewed-by: tschatzl, stefank
2024-01-23 09:38:47 +00:00
Kim Barrett
bcb340da09 8324286: Fix backsliding on use of nullptr instead of NULL
Reviewed-by: jsjolen, coleenp, jwaters
2024-01-23 08:49:46 +00:00
Matthias Baesken
3696765b7d 8323964: runtime/Thread/ThreadCountLimit.java fails intermittently on AIX
Reviewed-by: dholmes, stuefe
2024-01-23 08:17:00 +00:00
David Holmes
5a74c2a67e 8323438: Enhance assertions for Windows sync API failures
Reviewed-by: ccheung, jwaters, dcubed
2024-01-23 01:09:14 +00:00
Vladimir Kozlov
52523d33dd 8324050: Issue store-store barrier after re-materializing objects during deoptimization
Reviewed-by: dlong, shade
2024-01-22 22:50:32 +00:00
Y. Srinivas Ramakrishna
df370d725e 8314329: AgeTable: add is_clear() & allocation spec, and relax assert to allow use of 0-index slot
AgeTable changes:
1. add CHeap allocation spec
2. add a non-product const is_clear() method to check if the age table has only zero entries
3. relax the assertion that the 0th index of the age table is never used, to allow use of that slot

Reviewed-by: wkemper, kdnilsen, ayang, shade
2024-01-22 19:51:47 +00:00
Naoto Sato
0d8543d677 8324065: Daylight saving information for Africa/Casablanca are incorrect
Reviewed-by: iris, joehw, jlu
2024-01-22 17:15:53 +00:00
Jan Lahoda
c9cacfb25d 8323657: Compilation of snippet results in VerifyError at runtime with --release 9 (and above)
Reviewed-by: vromero
2024-01-22 13:06:19 +00:00
Aleksey Shipilev
bde650f21e 8322282: Incorrect LoaderConstraintTable::add_entry after JDK-8298468
Reviewed-by: dholmes, simonis, coleenp
2024-01-22 12:30:36 +00:00
Tobias Holenstein
be943a9fd6 8321984: IGV: Upgrade to Netbeans Platform 20
Reviewed-by: rcastanedalo, chagedorn
2024-01-22 12:18:22 +00:00
Johan Sjölen
d3b2ac1507 8314186: runtime/8176717/TestInheritFD.java failed with "Log file was leaked"
Reviewed-by: lkorinth, dholmes
2024-01-22 11:03:39 +00:00
Jan Lahoda
72f199024d 8323057: Recoverable errors may be reported before unrecoverable errors when annotation processing is skipped
Reviewed-by: vromero
2024-01-22 10:55:10 +00:00
Emanuel Peter
c84af49386 8324129: C2: Remove some ttyLocker usages in preparation for JDK-8306767
Reviewed-by: kvn, vlivanov, dholmes
2024-01-22 10:41:36 +00:00
Hamlin Li
fd372629f7 8323748: RISC-V: Add Zfh probe code
Reviewed-by: fyang
2024-01-22 10:14:25 +00:00
Cesar Soares Lucas
76afa02dab 8322572: AllocationMergesTests.java fails with "IRViolationException: There were one or multiple IR rule failures."
Reviewed-by: kvn, thartmann
2024-01-22 08:22:33 +00:00
Martin Desruisseaux
2003610b3b 8323108: BufferedImage.setData(Raster) should not cast float and double values to integers
Reviewed-by: prr, bpb, serb
2024-01-21 23:47:51 +00:00
Kim Barrett
a474b37212 8324240: Remove unused GrowableArrayView::EMPTY
Reviewed-by: dcubed
2024-01-21 02:28:54 +00:00
Erik Gahlin
68b5aab020 8324229: JFR: Temporarily disable assertion for missing object reference
Reviewed-by: mgronlun
2024-01-20 18:21:45 +00:00
Jonathan Gibbons
f54a336cb7 8324231: bad command-line option in make/Docs.gmk
Reviewed-by: erikj
2024-01-20 18:12:44 +00:00
Sam James
f4d08ccf80 8318696: Do not use LFS64 symbols on Linux
Reviewed-by: ihse, dholmes, kbarrett, mbaesken
2024-01-20 09:49:44 +00:00
Magnus Ihse Bursie
9049402a1b 8323675: Race in jdk.javadoc-gendata
Reviewed-by: erikj, jlahoda
2024-01-19 22:31:23 +00:00
Harshitha Onkar
f1b73350c2 8320113: [macos14] : ShapeNotSetSometimes.java fails intermittently on macOS 14
Reviewed-by: dnguyen, azvegint, kizune
2024-01-19 21:42:34 +00:00
Serguei Spitsyn
8700de66e4 8322744: VirtualThread.notifyJvmtiDisableSuspend should be static
Reviewed-by: pchilanomate, alanb
2024-01-19 18:40:55 +00:00
Mandy Chung
6c0bebccb0 8159927: Add a test to verify JMOD files created in the images do not have debug symbols
Reviewed-by: jlaskey
2024-01-19 17:42:55 +00:00
Calvin Cheung
437342b93e 8323556: CDS archive space addresses should be randomized with ArchiveRelocationMode=1
Reviewed-by: iklam, matsaave
2024-01-19 17:11:01 +00:00
Calvin Cheung
39005e27d6 8324041: ModuleOption.java failed with update release versioning scheme
Reviewed-by: dholmes, mbaesken
2024-01-19 17:02:29 +00:00
Coleen Phillimore
2865afe759 8323685: PrintSystemDictionaryAtExit has mutex rank assert
Co-authored-by: Thomas Schatzl <tschatzl@openjdk.org>
Reviewed-by: tschatzl, ayang
2024-01-19 16:54:03 +00:00
Christian Hagedorn
6997bfc68d 8323154: C2: assert(cmp != nullptr && cmp->Opcode() == Op_Cmp(bt)) failed: no exit test
Reviewed-by: roland, thartmann, qamai
2024-01-19 15:49:02 +00:00
Roman Kennke
16be38887f 8322383: G1: Only preserve marks on objects that are actually moved
Reviewed-by: ayang, tschatzl
2024-01-19 12:59:21 +00:00
Albert Mingkun Yang
0081d8c07f 8324147: Serial: Remove generation::compute_new_size
Reviewed-by: ehelin
2024-01-19 11:48:34 +00:00
Matthias Baesken
5f7141982c 8322366: Add IEEE rounding mode corruption check to JNI checks
Reviewed-by: dholmes, lucy
2024-01-19 09:10:37 +00:00
Matthias Baesken
05330227be 8222719: libperfstat on AIX - cleanup old API versions
Reviewed-by: goetz, clanger
2024-01-19 08:14:13 +00:00
Tejesh R
05dad67cc2 8295804: javax/swing/JFileChooser/JFileChooserSetLocationTest.java failed with "setLocation() is not working properly"
Reviewed-by: prr, serb
2024-01-19 05:57:02 +00:00
Pavel Rappo
9efdd242fb 8324053: Use the blessed modifier order for sealed in java.base
Reviewed-by: naoto, darcy, ihse, dfuchs
2024-01-18 22:28:23 +00:00
Hannes Wallnöfer
81df265e41 8320458: Improve structural navigation in API documentation
Reviewed-by: erikj, jjg
2024-01-18 19:06:26 +00:00
Joe Darcy
a6c0b10704 8323684: TypeMirror.{getAnnotationsByType, getAnnotation} return uninformative results
Reviewed-by: jjg
2024-01-18 19:04:26 +00:00
Daniel D. Daugherty
5c874c19cb 8324161: validate-source fails after JDK-8275338
Reviewed-by: darcy
2024-01-18 17:42:55 +00:00
Matthew Donovan
b6233c3de7 8321925: sun/security/mscapi/KeytoolChangeAlias.java fails with "Alias <246810> does not exist"
Reviewed-by: rhalade
2024-01-18 17:33:31 +00:00
Raffaello Giulietti
bfd2afe5ad 8275338: Add JFR events for notable serialization situations
Reviewed-by: rriggs, egahlin
2024-01-18 17:05:35 +00:00
Claes Redestad
4c1a0fc58f 8323995: Suppress notes generated on incremental microbenchmark builds
Reviewed-by: erikj, ihse
2024-01-18 15:40:39 +00:00
Albert Mingkun Yang
a2b117ae02 8324132: G1: Remove unimplemented G1MonitoringSupport::recalculate_eden_size
Reviewed-by: tschatzl
2024-01-18 15:23:11 +00:00
Albert Mingkun Yang
8e534598b5 8323993: Serial: Refactor gc_prologue and gc_epilogue
Reviewed-by: stefank, ehelin
2024-01-18 15:22:56 +00:00
Daniel D. Daugherty
aeb304b29e 8324074: increase timeout for jvmci test TestResolvedJavaMethod.java
Reviewed-by: stuefe, thartmann
2024-01-18 13:16:05 +00:00
Daniel D. Daugherty
a22ae909bc 8321938: java/foreign/critical/TestCriticalUpcall.java does not need a core file
Reviewed-by: dholmes
2024-01-18 13:15:55 +00:00
Daniel D. Daugherty
806ffb1085 8324082: more monitoring test timeout adjustments
Reviewed-by: kevinw, sspitsyn
2024-01-18 13:15:45 +00:00
Patricio Chilano Mateo
52f787f675 8323595: is_aligned(p, alignof(OopT))) assertion fails in Jetty without compressed OOPs
Reviewed-by: fparain, dlong
2024-01-18 12:16:26 +00:00
Song Pham
cbfddf4e1d 8317287: [macos14] InterJVMGetDropSuccessTest.java: Child VM: abnormal termination
Reviewed-by: honkar, aivanov, shurailine
2024-01-18 10:03:47 +00:00
Andrew Leonard
57fad67781 8323667: Library debug files contain non-reproducible full gcc include paths
Reviewed-by: erikj, ihse
2024-01-18 09:56:54 +00:00
Gui Cao
ff8cc268fd 8323694: RISC-V: Unnecessary ResourceMark in NativeCall::set_destination_mt_safe
Reviewed-by: fyang, rehn
2024-01-18 02:28:54 +00:00
Renjith Kannath Pariyangad
dadd9cd1e8 8316497: ColorConvertOp - typo for non-ICC conversions needs one-line fix
Co-authored-by: Sergey Bylokhov <serb@openjdk.org>
Co-authored-by: Alexey Ivanov <aivanov@openjdk.org>
Reviewed-by: aivanov, serb
2024-01-18 01:23:30 +00:00
Sergey Bylokhov
de237fb058 8323554: The typos in Javadoc: "@return if "
Reviewed-by: prr
2024-01-17 19:35:05 +00:00
Anthony Scarpino
51dbd36c74 8322100: Fix GCMIncrementByte4 & GCMIncrementDirect4, and increase overlap testing
Reviewed-by: jnimeh
2024-01-17 18:08:38 +00:00
Artem Semenov
ffa33d7b80 8317771: [macos14] Expand/collapse a JTree using keyboard freezes the application in macOS 14 Sonoma
Reviewed-by: kizune
2024-01-17 16:44:27 +00:00
Brian Burkhalter
4e5323538c 8323710: (fc) FileChannel.lock creates a FileKey with a poor hashCode after JDK-8321429 (win)
Reviewed-by: alanb
2024-01-17 16:34:48 +00:00
Brian Burkhalter
19287eeeb2 8321561: (fs) Clarify non-atomic behavior of Files.move
Reviewed-by: alanb
2024-01-17 16:34:33 +00:00
Claes Redestad
8b29e127c2 8323794: Remove unused jimage compressor plugin configuration
Reviewed-by: jlaskey, mchung
2024-01-17 15:41:13 +00:00
Aleksey Shipilev
7be9f1d054 8321137: Reconsider ICStub alignment
Reviewed-by: dlong, eosterlund, mdoerr, fyang, aph
2024-01-17 12:48:37 +00:00
Alan Bateman
b8dafa642e 8323612: IOVecWrapper should be changed to be TerminatingThreadLocal
Reviewed-by: bpb
2024-01-17 10:56:17 +00:00
Albert Mingkun Yang
f2a4ed680b 8323779: Serial: Remove Generation::promotion_attempt_is_safe
Reviewed-by: stefank, cjplummer
2024-01-17 10:25:00 +00:00
Joachim Kern
22642ff0aa 8319382: com/sun/jdi/JdwpAllowTest.java shows failures on AIX if prefixLen of mask is larger than 32 in IPv6 case
Reviewed-by: mbaesken, amenkov
2024-01-17 09:34:09 +00:00
Tobias Holenstein
b89172149d 8316756: C2 EA fails with "missing memory path" when encountering unsafe_arraycopy stub call
Co-authored-by: Vladimir Kozlov <kvn@openjdk.org>
Reviewed-by: kvn, thartmann, chagedorn
2024-01-17 08:07:04 +00:00
Roberto Castañeda Lozano
bf666bc0c7 8322692: ZGC: avoid over-unrolling due to hidden barrier size
Reviewed-by: eosterlund, kvn
2024-01-17 07:50:03 +00:00
Richard Reingruber
de97c0eb4b 8290965: PPC64: Implement post-call NOPs
Reviewed-by: mdoerr
2024-01-17 06:50:32 +00:00
Prasanta Sadhukhan
f70667ea68 8318112: CSS percentage values are capped at 100%
Reviewed-by: tr, prr
2024-01-17 02:28:36 +00:00
Henry Jen
2063bb8ffa Merge
Reviewed-by: erikj
2024-01-17 01:41:52 +00:00
Joe Darcy
d8b63370f3 8323839: Expand use of Messager convenience methods in langtools regression tests
Reviewed-by: jjg
2024-01-17 00:29:05 +00:00
John Jiang
43d2d68da5 8320449: ECDHKeyAgreement should validate parameters before using them
Reviewed-by: mullan
2024-01-16 22:54:45 +00:00
Joshua Cao
b058063c40 8323820: [MacOS] build failure: non-void function does not return a value
Reviewed-by: shade, lucy
2024-01-16 22:01:21 +00:00
Doug Simon
19c9388c20 8323616: [JVMCI] TestInvalidJVMCIOption.java fails intermittently with NPE
Reviewed-by: thartmann, never
2024-01-16 19:31:04 +00:00
Jonathan Gibbons
b533272ecb 8299627: Fix/improve handling of "missing" element-list file
Reviewed-by: hannesw
2024-01-16 18:41:25 +00:00
Thomas Schatzl
1007618f6f 8323731: Unproblemlist gc/stress/TestStressG1Humongous.java
Reviewed-by: ehelin
2024-01-16 14:42:32 +00:00
Albert Mingkun Yang
790871e908 8323800: Serial: Fix include guard macro in generation.hpp
Reviewed-by: stefank
2024-01-16 14:26:22 +00:00
Stefan Karlsson
0216f5de55 8323730: Tweak TestZAllocationStallEvent.java to allocate smaller objects
Reviewed-by: aboldtch, sjohanss
2024-01-16 14:26:10 +00:00
Erik Gahlin
21f647310b 8322675: JFR: Fail-fast mode when constants cannot be resolved
Reviewed-by: mgronlun
2024-01-16 13:59:29 +00:00
Markus Grönlund
e2d6023cb9 8323631: JfrTypeSet::write_klass can enqueue a CLD klass that is unloading
Reviewed-by: egahlin
2024-01-16 13:31:03 +00:00
Jorn Vernee
2fd775f69c 8323651: compiler/c2/irTests/TestPrunedExHandler.java fails with -XX:+DeoptimizeALot
Reviewed-by: alanb, kvn
2024-01-16 13:25:49 +00:00
Chris Hegarty
ee4d9aa4c1 8323659: LinkedTransferQueue add and put methods call overridable offer
Reviewed-by: alanb
2024-01-16 12:13:57 +00:00
Thomas Schatzl
5045839cb2 8323635: Test gc/g1/TestHumongousAllocConcurrentStart.java fails with -XX:TieredStopAtLevel=3
Reviewed-by: shade, lmesnik
2024-01-16 12:00:57 +00:00
Albert Mingkun Yang
44a9392eca 8323780: Serial: Remove unused _full_collections_completed
Reviewed-by: ehelin, stefank
2024-01-16 11:56:10 +00:00
Stefan Karlsson
59062402b9 8323716: Only print ZGC Phase Switch events in hs_err files when running with ZGC
Reviewed-by: aboldtch, tschatzl, shade
2024-01-16 10:30:32 +00:00
Emanuel Peter
e01f6da1b8 8320175: [BACKOUT] 8316533: C2 compilation fails with assert(verify(phase)) failed: missing Value() optimization
Reviewed-by: thartmann, chagedorn
2024-01-16 10:15:00 +00:00
Albert Mingkun Yang
8abaf11965 8323715: Serial: Move genMemoryPools to serial folder
Reviewed-by: stefank, tschatzl
2024-01-16 08:39:07 +00:00
Albert Mingkun Yang
67204994dc 8323738: Serial: Remove unreachable methods in Generation
Reviewed-by: tschatzl, stefank
2024-01-16 08:38:53 +00:00
Ferenc Rakoczi
bf7bd9a16c 8317547: Enhance TLS connection support
Reviewed-by: ahgross, rhalade, weijun, valeriep
2024-01-16 05:55:56 +00:00
Christian Hagedorn
c1a568c9c4 8314307: Improve loop handling
Co-authored-by: Christian Hagedorn <chagedorn@openjdk.org>
Co-authored-by: Roland Westrelin <rwestrel@redhat.com>
Co-authored-by: Emanuel Peter <epeter@openjdk.org>
Reviewed-by: mschoene, rhalade, thartmann, epeter
2024-01-16 05:55:56 +00:00
Tobias Hartmann
1cc6fbd9b0 8318588: Windows build failure after JDK-8314468 due to ambiguous call
Reviewed-by: epeter
2024-01-16 05:55:56 +00:00
Tobias Hartmann
ed238e8b88 8314468: Improve Compiler loops
Co-authored-by: Dean Long <dlong@openjdk.org>
Reviewed-by: rhalade, mschoene, iveresov, kvn
2024-01-16 05:55:55 +00:00
Coleen Phillimore
fac49b8375 8317331: Solaris build failed with "declaration can not follow a statement (E_DECLARATION_IN_CODE)"
Backport-of: 852276d1f833d49802693f2a5a82ba6eb2722de6
2024-01-16 05:55:55 +00:00
Coleen Phillimore
fff750c99d 8314295: Enhance verification of verifier
Reviewed-by: mschoene, rhalade, dholmes, dlong
2024-01-16 05:55:55 +00:00
Sean Mullan
a2544568f9 8308204: Enhanced certificate processing
Reviewed-by: mschoene, rhalade, jnimeh
2024-01-16 05:55:55 +00:00
Yude Lin
36f4b34f19 8323122: AArch64: Increase itable stub size estimate
Reviewed-by: aph, eastigeevich
2024-01-16 05:15:22 +00:00
Hamlin Li
b363472265 8318227: RISC-V: C2 ConvHF2F
Reviewed-by: fyang
2024-01-15 18:41:53 +00:00
Per Minborg
edc0ebb780 8323745: Missing comma in copyright header in TestScope
Reviewed-by: alanb
2024-01-15 16:30:59 +00:00
Glavo
a03eb6d3f6 8321620: Optimize JImage decompressors
Reviewed-by: mchung, redestad
2024-01-15 16:10:35 +00:00
Per Minborg
f5b757ced6 8323159: Consider adding some text re. memory zeroing in Arena::allocate
Reviewed-by: mcimadamore, jvernee
2024-01-15 16:07:56 +00:00
Albert Mingkun Yang
1f4474f677 8323726: Serial: Remove unused definitions in Generation
Reviewed-by: stefank
2024-01-15 15:21:09 +00:00
Andrew Leonard
dd0694b9cb 8323671: DevKit build gcc libraries contain full paths to source location
Reviewed-by: erikj, ihse
2024-01-15 14:39:28 +00:00
Guoxiong Li
bf813be0f3 8322279: Generational ZGC: Use ZFragmentationLimit and ZYoungCompactionLimit as percentage instead of multiples
Reviewed-by: eosterlund
2024-01-15 14:34:14 +00:00
Magnus Ihse Bursie
c84c0ab52d 8323637: Capture hotspot replay files in GHA
Reviewed-by: shade
2024-01-15 14:14:13 +00:00
Rajat Mahajan
f368a0c12e 8320328: Restore interrupted flag in ImageIcon.loadImage
Reviewed-by: aivanov, serb
2024-01-15 13:09:00 +00:00
Albert Mingkun Yang
a45b5b4921 8323722: Serial: Remove unused no_gc_in_progress
Reviewed-by: stefank, tschatzl
2024-01-15 12:58:23 +00:00
Christian Hagedorn
7e0a4ed629 8323101: C2: assert(n->in(0) == nullptr) failed: divisions with zero check should already have bailed out earlier in split-if
Reviewed-by: kvn, thartmann
2024-01-15 12:16:10 +00:00
Aleksey Shipilev
34f85ee94e 8323584: AArch64: Unnecessary ResourceMark in NativeCall::set_destination_mt_safe
Reviewed-by: tholenstein, fyang, aph
2024-01-15 12:03:01 +00:00
Jan Kratochvil
62fd26f094 8323700: Add fontconfig requirement to building.md for Alpine Linux
Reviewed-by: ihse
2024-01-15 11:20:44 +00:00
Kevin Walls
8c238eddce 8318707: Remove the Java Management Extension (JMX) Management Applet (m-let) feature
Reviewed-by: sspitsyn, dfuchs
2024-01-15 11:12:38 +00:00
Emanuel Peter
cd0fe37741 8323641: Test compiler/loopopts/superword/TestAlignVectorFuzzer.java timed out
Reviewed-by: chagedorn, kvn
2024-01-15 10:44:01 +00:00
Emanuel Peter
45c65e6b1a 8323577: C2 SuperWord: remove AlignVector restrictions on IR tests added in JDK-8305055
Reviewed-by: rcastanedalo, chagedorn
2024-01-15 10:41:05 +00:00
Thomas Schatzl
8643cc2133 8323610: G1: HeapRegion pin count should be size_t to avoid overflows
Reviewed-by: kbarrett, ayang
2024-01-15 09:35:50 +00:00
Lei Zaakjyu
e66a76f524 8323660: Serial: Fix header ordering and indentation
Reviewed-by: ayang, cjplummer, kbarrett
2024-01-15 09:13:47 +00:00
Aleksey Shipilev
ba3c3bbd87 8323519: Add applications/ctw/modules to Hotspot tiered testing
Reviewed-by: xliu, kvn
2024-01-15 09:10:11 +00:00
Lei Zaakjyu
922f8e44ee 8323693: Update some copyright announcements in the new files created in 8234502
Reviewed-by: cjplummer, dholmes
2024-01-15 07:40:49 +00:00
Zhiqiang Zang
1515bd7c9d 8322077: Add Ideal transformation: (~a) | (~b) => ~(a & b)
Reviewed-by: thartmann, epeter
2024-01-15 06:48:00 +00:00
Sergey Bylokhov
bdee968e3e 4760025: sRGB conversions to and from CIE XYZ incorrect
Reviewed-by: prr, aivanov
2024-01-14 23:05:47 +00:00
David Holmes
71d9a83dec 8323243: JNI invocation of an abstract instance method corrupts the stack
Reviewed-by: coleenp, shade
2024-01-14 22:01:44 +00:00
Varada M
d83ea92085 8301466: [AIX] Revisit CommittedVirtualMemoryTest
Reviewed-by: mdoerr
2024-01-13 14:12:44 +00:00
Sergey Bylokhov
5cf7947ccd 8323562: SaslInputStream.read() may return wrong value
Co-authored-by: Aleksey Shipilev <shade@openjdk.org>
Reviewed-by: shade, dfuchs
2024-01-12 23:50:28 +00:00
Alisen Chung
dc7d3b182d 8321489: Update LCMS to 2.16
Reviewed-by: serb, dnguyen, prr
2024-01-12 22:16:09 +00:00
Alex Menkov
84cf4cb350 8318563: GetClassFields should not use random access to field
Reviewed-by: sspitsyn, cjplummer, fparain
2024-01-12 20:41:49 +00:00
Joe Darcy
9e9c05f0ee 8322979: Add informative discussion to Modifier
Reviewed-by: alanb
2024-01-12 19:40:55 +00:00
Harshitha Onkar
c54bca6f7f 8323617: Add missing null checks to GetMousePositionWithPopup.java test
Reviewed-by: serb, aivanov, dnguyen
2024-01-12 19:21:52 +00:00
William Kemper
95a91682c3 8323627: Shenandoah: Refactor init logger
Reviewed-by: ysr, kdnilsen, shade, phh
2024-01-12 18:57:36 +00:00
Harshitha Onkar
999e556be4 8312518: [macos13] setFullScreenWindow() shows black screen on macOS 13 & above
Reviewed-by: serb, tr, azvegint
2024-01-12 17:56:16 +00:00
Rajat Mahajan
8b6293f6bf 8301994: Remove unused code from awt_List.cpp
Reviewed-by: serb, prr, aivanov
2024-01-12 17:14:16 +00:00
William Kemper
e33031b850 8323629: Shenandoah: Fix missing include and declaration
Reviewed-by: ysr, kdnilsen, phh
2024-01-12 17:04:51 +00:00
Denghui Dong
c5e7245096 8322735: C2: minor improvements of bubble sort used in SuperWord::packset_sort
Reviewed-by: epeter, kvn
2024-01-12 15:21:37 +00:00
Axel Boldt-Christmas
65a0672791 8319773: Avoid inflating monitors when installing hash codes for LM_LIGHTWEIGHT
Reviewed-by: rkennke, dcubed, thartmann
2024-01-12 14:34:42 +00:00
Albert Mingkun Yang
e22ab10991 8322537: Parallel: Remove experimental adjustment in PSAdaptiveSizePolicy
Reviewed-by: kbarrett, tschatzl
2024-01-12 13:51:29 +00:00
Erik Gahlin
be900f1253 8323425: JFR: Auto-generated filename doesn't work with time-limited recording
Reviewed-by: mgronlun
2024-01-12 13:12:37 +00:00
Matthias Baesken
68c4286026 8323008: filter out harmful -std* flags added by autoconf from CXX
Reviewed-by: erikj, clanger, ihse
2024-01-12 12:29:07 +00:00
Lei Zaakjyu
7dc9dd6fdf 8234502: Merge GenCollectedHeap and SerialHeap
Reviewed-by: ayang, cjplummer
2024-01-12 10:56:50 +00:00
Cesar Soares Lucas
ed18222365 8323190: Segfault during deoptimization of C2-compiled code
Reviewed-by: thartmann, chagedorn
2024-01-12 10:43:16 +00:00
Claes Redestad
3e19bf88d5 8323529: Relativize test image dependencies in microbenchmarks
Reviewed-by: mcimadamore, jvernee, erikj
2024-01-12 10:00:37 +00:00
Stefan Karlsson
ba23025cd8 8322957: Generational ZGC: Relocation selection must join the STS
Co-authored-by: Axel Boldt-Christmas <aboldtch@openjdk.org>
Reviewed-by: eosterlund, aboldtch
2024-01-12 09:32:50 +00:00
Stefan Karlsson
7c3a39f400 8323297: Fix incorrect placement of precompiled.hpp include lines
Reviewed-by: kbarrett, dholmes, shade, ysr
2024-01-12 08:57:09 +00:00
Alan Bateman
e72723dc5c 8323296: java/lang/Thread/virtual/stress/GetStackTraceALotWhenPinned.java#id1 timed out
Reviewed-by: jpai
2024-01-12 08:33:27 +00:00
Afshin Zafari
66520be7a7 8280056: gtest/LargePageGtests.java#use-large-pages failed "os.release_one_mapping_multi_commits_vm"
Reviewed-by: stuefe, gziemski
2024-01-12 08:21:42 +00:00
Abhishek Kumar
82a63a03c0 8258979: The image didn't show correctly with GTK LAF
Reviewed-by: psadhukhan, tr
2024-01-12 07:53:41 +00:00
Kim Barrett
8d9814a521 8322757: Enable -Wparentheses warnings
Reviewed-by: dholmes, jwaters, erikj, ihse
2024-01-12 06:12:20 +00:00
Renjith Kannath Pariyangad
0ff2deab5d 8320673: PageFormat/CustomPaper.java has no Pass/Fail buttons; multiple instructions
Reviewed-by: serb, aivanov
2024-01-12 02:55:22 +00:00
Alexey Semenyuk
8e12053e03 8322799: Test JPKG003-013: ServiceTest fails because the user cannot uninstall the "servicetest" package on OEL 9.2 x64 and OEL 9.2 64-bit Arm (aarch64)
Reviewed-by: almatvee
2024-01-11 22:58:20 +00:00
Joe Wang
e4389d8dc2 8323571: Regression in source resolution process
Reviewed-by: lancea, naoto
2024-01-11 22:38:39 +00:00
Pavel Rappo
49e6121347 8310813: Simplify and modernize equals, hashCode, and compareTo for BigInteger
Reviewed-by: rriggs, redestad, rgiulietti
2024-01-11 21:48:58 +00:00
Justin Lu
4ea7b36447 8322235: Split up and improve LocaleProvidersRun
Reviewed-by: naoto
2024-01-11 20:59:53 +00:00
Chris Plummer
93bedd7aba 8323213: Fix some javadoc broken links in ObjectReference, and other misc javadoc cleanups
Reviewed-by: sspitsyn, amenkov
2024-01-11 18:13:11 +00:00
Tim Prinzing
b78896b9aa 8319571: Update jni/nullCaller/NullCallerTest.java to accept flags or mark as flagless
Reviewed-by: mchung
2024-01-11 17:37:30 +00:00
Sandhya Viswanathan
e10d14004f 8321712: C2: "failed: Multiple uses of register" in C2_MacroAssembler::vminmax_fp
Co-authored-by: Volodymyr Paprotski <vpaprotski@openjdk.org>
Reviewed-by: kvn, thartmann, epeter, jbhateja
2024-01-11 16:54:16 +00:00
Matthew Donovan
c2e77e2f17 8319128: sun/security/pkcs11 tests fail on OL 7.9 aarch64
Reviewed-by: mbaesken
2024-01-11 15:19:48 +00:00
Weijun Wang
9fd855ed47 8322971: KEM.getInstance() should check if a 3rd-party security provider is signed
Reviewed-by: mullan, valeriep
2024-01-11 13:45:40 +00:00
Joachim Kern
b8ae4a8c09 8320890: [AIX] Find a better way to mimic dl handle equality
Reviewed-by: stuefe, mdoerr
2024-01-11 13:12:32 +00:00
Varada M
e5aed6be7a 8323276: StressDirListings.java fails on AIX
Reviewed-by: jpai, dfuchs
2024-01-11 12:17:35 +00:00
Roland Westrelin
b922f8d459 8319793: C2 compilation fails with "Bad graph detected in build_loop_late" after JDK-8279888
Reviewed-by: chagedorn, epeter
2024-01-11 09:00:44 +00:00
Viktor Klang
35e9662767 8314515: java/util/concurrent/SynchronousQueue/Fairness.java failed with "Error: fair=false i=8 j=0"
Reviewed-by: alanb
2024-01-11 08:16:28 +00:00
Matthias Baesken
cb1d25fcfa 8323330: [BACKOUT] JDK-8276809: java/awt/font/JNICheck/FreeTypeScalerJNICheck.java shows JNI warning on Windows
Reviewed-by: prr, stuefe
2024-01-11 08:13:28 +00:00
Tejesh R
2b7fc0506a 8264102: JTable Keyboards Navigation differs with Test Instructions.
Reviewed-by: psadhukhan, abhiscxk
2024-01-11 07:34:14 +00:00
Denghui Dong
af942a693b 8323188: JFR: Needless RESOURCE_ARRAY when sending EventOSInformation
Reviewed-by: mgronlun
2024-01-11 07:17:28 +00:00
Eirik Bjørsnøs
26de9e247a 8321616: Retire binary test vectors in test/jdk/java/util/zip/ZipFile
8322830: Add test case for ZipFile opening a ZIP with no entries

Reviewed-by: lancea
2024-01-11 06:32:24 +00:00
Alex Menkov
b530c0281b 8317804: com/sun/jdi/JdwpAllowTest.java fails on Alpine 3.17 / 3.18
Reviewed-by: cjplummer, mbaesken
2024-01-11 00:36:16 +00:00
Eirik Bjørsnøs
e70cb4e6c7 8322565: (zipfs) Files.setPosixPermissions should preserve 'external file attributes' bits
Reviewed-by: clanger, lancea
2024-01-10 21:42:23 +00:00
Xin Liu
d89602a53f 8322982: CTW fails to build after 8308753
Reviewed-by: shade, phh
2024-01-10 19:42:03 +00:00
Naoto Sato
3bd9042054 8320788: The system properties page is missing some properties
Reviewed-by: iris, rriggs, bpb, joehw
2024-01-10 18:54:02 +00:00
Joe Darcy
525063be90 8322878: Including sealing information Class.toGenericString()
Co-authored-by: Pavel Rappo <prappo@openjdk.org>
Reviewed-by: rriggs
2024-01-10 18:46:56 +00:00
Markus Grönlund
c1282b57f5 8323540: assert((!((((method)->is_trace_flag_set(((1 << 4) << 8))))))) failed: invariant
Reviewed-by: mikael
2024-01-10 18:37:33 +00:00
Vicente Romero
5ba69e1734 8322477: order of subclasses in the permits clause can differ between compilations
Reviewed-by: jlahoda
2024-01-10 17:52:50 +00:00
Gerard Ziemski
c96cbe481c 8313083: Print 'rss' and 'cache' as part of the container information
Reviewed-by: sgehwolf
2024-01-10 17:29:55 +00:00
William Kemper
a7db4feceb 8323428: Shenandoah: Unused memory in regions compacted during a full GC should be mangled
Reviewed-by: ysr, kdnilsen, shade
2024-01-10 17:10:39 +00:00
Viktor Klang
b86c3b7a68 8309218: java/util/concurrent/locks/Lock/OOMEInAQS.java still times out with ZGC, Generational ZGC, and SerialGC
Reviewed-by: jpai, dholmes, alanb
2024-01-10 16:42:30 +00:00
Brian Burkhalter
475306b757 7057369: (fs spec) FileStore getUsableSpace and getUnallocatedSpace could be clearer
Reviewed-by: alanb
2024-01-10 16:34:06 +00:00
Albert Mingkun Yang
f016934184 8323518: Parallel: Remove unused methods in psParallelCompact.hpp
Reviewed-by: tschatzl
2024-01-10 15:19:09 +00:00
Albert Mingkun Yang
2174f6646e 8323005: Parallel: Refactor PSPromotionManager::claim_or_forward_depth
Reviewed-by: tschatzl, rrich
2024-01-10 15:18:57 +00:00
Matthias Baesken
16170678a7 8323331: fix typo hpage_pdm_size
Reviewed-by: shade, mdoerr
2024-01-10 15:03:21 +00:00
Serguei Spitsyn
2806adee2d 8321685: Missing ResourceMark in code called from JvmtiEnvBase::get_vthread_jvf
Reviewed-by: amenkov, cjplummer
2024-01-10 14:07:57 +00:00
Stefan Karlsson
ec38505720 8323508: Remove TestGCLockerWithShenandoah.java line from TEST.groups
Reviewed-by: dholmes, shade, tschatzl
2024-01-10 13:25:43 +00:00
Jorn Vernee
d2d58dd6a8 8322324: java/foreign/TestStubAllocFailure.java times out while waiting for forked process
8322637: java/foreign/critical/TestCriticalUpcall.java timed out

Reviewed-by: mcimadamore
2024-01-10 13:13:32 +00:00
Markus Grönlund
b2a39c5767 8316241: Test jdk/jdk/jfr/jvm/TestChunkIntegrity.java failed
Reviewed-by: egahlin
2024-01-10 13:03:36 +00:00
Guoxiong Li
679f526d89 8322278: Generational ZGC: Adjust the comment of ZHeuristics::use_per_cpu_shared_small_pages
Reviewed-by: eosterlund
2024-01-10 12:18:12 +00:00
Richard Reingruber
2e472fe7ea 8322294: Cleanup NativePostCallNop
Reviewed-by: mdoerr, aph
2024-01-10 12:18:01 +00:00
Guoxiong Li
88dafe564f 8314629: Generational ZGC: Clearing All SoftReferences log line lacks GCId
Reviewed-by: eosterlund, tschatzl
2024-01-10 12:15:38 +00:00
Albert Mingkun Yang
8d9479910f 8322828: Parallel: Rename ParallelCompactData::_region_start
Reviewed-by: tschatzl, ehelin
2024-01-10 11:28:51 +00:00
Albert Mingkun Yang
9847086466 8323499: Remove unused methods in space.hpp
Reviewed-by: tschatzl
2024-01-10 10:56:24 +00:00
Thomas Schatzl
40861761c2 8322987: Remove gc/stress/gclocker/TestGCLocker* since they always fail with OOME
Reviewed-by: ayang, lmesnik
2024-01-10 09:57:16 +00:00
Tobias Holenstein
88378ed058 8277869: Maven POMs are using HTTP links where HTTPS is available
Reviewed-by: kvn, thartmann
2024-01-10 08:30:47 +00:00
Zhiqiang Zang
8569227473 8322589: Add Ideal transformation: (~a) & (~b) => ~(a | b)
Reviewed-by: thartmann, epeter
2024-01-10 07:31:56 +00:00
Kim Barrett
f4ca41ad75 8322816: RISC-V: Incorrect guarantee in patch_vtype
Reviewed-by: fyang, luhenry
2024-01-10 00:19:05 +00:00
Naoto Sato
376051a9be 8320919: Clarify Locale related system properties
Reviewed-by: smarks, rriggs
2024-01-09 23:11:21 +00:00
Kim Barrett
a5071e010b 8322817: RISC-V: Eliminate -Wparentheses warnings in riscv code
Reviewed-by: fyang, luhenry
2024-01-09 22:47:36 +00:00
Kim Barrett
28d8149c69 8323115: x86-32: Incorrect predicates for cmov instruct transforms with UseSSE
Reviewed-by: shade, thartmann
2024-01-09 22:33:13 +00:00
Kim Barrett
e9f7db3045 8322880: Eliminate -Wparentheses warnings in arm32 code
Reviewed-by: shade, dholmes
2024-01-09 22:26:17 +00:00
Sergey Bylokhov
aba19334ea 8323210: Update the usage of cmsFLAGS_COPY_ALPHA
Reviewed-by: prr
2024-01-09 22:05:37 +00:00
Mandy Chung
f3be138eb8 8322809: SystemModulesMap::classNames and moduleNames arrays do not match the order
Reviewed-by: alanb
2024-01-09 22:04:02 +00:00
Albert Mingkun Yang
bc05893f82 8323318: Remove unused Space::is_free_block
Reviewed-by: tschatzl
2024-01-09 19:37:28 +00:00
Alex Menkov
dd8ae61643 8322237: Heap dump contains duplicate thread records for mounted virtual threads
Reviewed-by: dholmes, sspitsyn
2024-01-09 19:31:03 +00:00
Thomas Schatzl
ee98d26218 8323066: gc/g1/TestSkipRebuildRemsetPhase.java fails with 'Skipping Remembered Set Rebuild.' missing
Reviewed-by: ayang, iwalulya
2024-01-09 17:03:28 +00:00
Lei Zaakjyu
886386c039 8322890: Directly return in OldPLABSizeConstraintFunc
Reviewed-by: ayang, tschatzl
2024-01-09 15:52:39 +00:00
Albert Mingkun Yang
438ab7c115 8323284: Remove unused FilteringClosure declaration
Reviewed-by: stefank, tschatzl
2024-01-09 14:23:42 +00:00
Thomas Schatzl
52c7ff1d81 8322330: JavadocHelperTest.java OOMEs with Parallel GC and ZGC
Reviewed-by: ayang, aboldtch
2024-01-09 13:47:32 +00:00
Lei Zaakjyu
ff499ef79f 8233443: G1 DetailedUsage class names overly generic for global namespace
Reviewed-by: ayang, gli, tschatzl
2024-01-09 13:26:38 +00:00
Pavel Rappo
37a61720b6 8322936: Update blessed-modifier-order.sh for default, sealed, and non-sealed
Reviewed-by: erikj, rriggs, martin
2024-01-09 11:36:36 +00:00
Pavel Rappo
7d42aa1513 8310277: jdk/javadoc/doclet/testMethodCommentAlgorithm/TestMethodCommentsAlgorithm.java fails with IllegalStateException
Reviewed-by: jjg
2024-01-09 11:31:50 +00:00
Albert Mingkun Yang
6e9671a8a8 8323264: Serial: Remove unused GenerationBlockSizeClosure
Reviewed-by: stefank
2024-01-09 10:37:02 +00:00
Boris Ulasevich
52a6c37558 8322858: compiler/c2/aarch64/TestFarJump.java fails on AArch64 due to unexpected PrintAssembly output
Reviewed-by: aph, thartmann
2024-01-09 10:33:52 +00:00
David Holmes
075fed91bd 8323241: jcmd manpage should use lists for argument lists
Reviewed-by: alanb
2024-01-09 08:19:57 +00:00
Robbin Ehn
30f93a29c2 8320069: RISC-V: Add Zcb instructions
Reviewed-by: fyang, vkempik
2024-01-09 07:34:50 +00:00
Ludovic Henry
4cf131a101 8319716: RISC-V: Add SHA-2
Co-authored-by: Robbin Ehn <rehn@openjdk.org>
Reviewed-by: fyang, mli, luhenry
2024-01-09 07:26:35 +00:00
Alan Bateman
7286f5291d 8322829: Refactor nioBlocker to avoid blocking while holding Thread's interrupt lock
Reviewed-by: jpai
2024-01-09 07:05:27 +00:00
Albert Mingkun Yang
07fce8eff2 8320864: Serial: Extract out Full GC related fields from ContiguousSpace
Reviewed-by: kbarrett, sjohanss
2024-01-09 06:11:44 +00:00
Athijegannathan Sundararajan
176606d0cb 8310995: missing @since tags in 36 jdk.dynalink classes
Reviewed-by: jlaskey, iris, attila
2024-01-09 04:36:30 +00:00
Weibing Xiao
8ae309ebac 8318971: Better Error Handling for Jar Tool When Processing Non-existent Files
Reviewed-by: alanb, jpai
2024-01-09 04:04:12 +00:00
Calvin Cheung
841ab487f8 8322657: CDS filemap fastdebug assert while loading Graal CE Polyglot in isolated classloader
Reviewed-by: matsaave, dholmes
2024-01-08 23:53:06 +00:00
Calvin Cheung
61ebe3b0c4 8323032: OptimizedModuleHandlingTest failed in dynamic CDS archive mode
Reviewed-by: dholmes, matsaave
2024-01-08 22:41:07 +00:00
Kim Barrett
ca9635df33 8322759: Eliminate -Wparentheses warnings in compiler code
Reviewed-by: kvn, shade
2024-01-08 21:26:18 +00:00
Mikael Vidstedt
8a4dc79e1a 8274300: Address dsymutil warning by excluding platform specific files
Reviewed-by: erikj
2024-01-08 20:17:29 +00:00
Rajat Mahajan
d78e8dab93 8322545: Declare newInsets as static in ThemeReader.cpp
Reviewed-by: serb, aivanov
2024-01-08 19:58:32 +00:00
Joshua Cao
24823ba647 8323095: Expand TraceOptoParse block output abbreviations
Reviewed-by: thartmann, chagedorn, xliu
2024-01-08 19:46:04 +00:00
Xin Liu
d47393bd82 8320128: Clean up Parse constructor for OSR
Reviewed-by: thartmann, shade
2024-01-08 18:53:41 +00:00
Chris Plummer
387828a3f7 8322980: Debug agent's dumpThread() API should update thread's name before printing it
Reviewed-by: kevinw, sspitsyn
2024-01-08 16:56:44 +00:00
William Kemper
c4a83bd6f6 8323086: Shenandoah: Heap could be corrupted by oom during evacuation
Reviewed-by: kdnilsen, shade
2024-01-08 16:44:28 +00:00
Emanuel Peter
827c71dac9 8310190: C2 SuperWord: AlignVector is broken, generates misaligned packs
Co-authored-by: Christian Hagedorn <chagedorn@openjdk.org>
Reviewed-by: kvn, chagedorn
2024-01-08 16:10:21 +00:00
Ilya Gavrilin
2acb5bd992 8322790: RISC-V: Tune costs for shuffles with no conversion
Reviewed-by: rehn, fyang
2024-01-08 15:53:58 +00:00
Jorn Vernee
c8fa3e21e6 8320310: CompiledMethod::has_monitors flag can be incorrect
Reviewed-by: vlivanov, thartmann
2024-01-08 14:55:17 +00:00
Jan Lahoda
57a65fe436 8322003: JShell - Incorrect type inference in lists of records implementing interfaces
Reviewed-by: vromero
2024-01-08 14:09:27 +00:00
Thomas Stuefe
c90768c93b 8318444: Write details about compilation bailouts into crash reports
Reviewed-by: thartmann, chagedorn
2024-01-08 13:47:43 +00:00
Fredrik Bredberg
29397d29ba 8320317: ObjectMonitor NotRunnable is not really an optimization
Reviewed-by: eosterlund, dholmes, shade, dcubed
2024-01-08 13:32:17 +00:00
Fredrik Bredberg
fc04750817 8321371: SpinPause() not implemented for bsd_aarch64/macOS
Reviewed-by: eosterlund, dholmes, dcubed, eastigeevich, shade
2024-01-08 13:30:23 +00:00
Christian Hagedorn
458e563cd9 8310711: [IR Framework] Remove safepoint while printing handling
Reviewed-by: thartmann, epeter
2024-01-08 12:57:55 +00:00
Matthias Baesken
71aac7a5fb 8276809: java/awt/font/JNICheck/FreeTypeScalerJNICheck.java shows JNI warning on Windows
Reviewed-by: rschmelter, stuefe
2024-01-08 11:45:18 +00:00
Markus Grönlund
09c6c4ff02 8322489: 22-b27: Up to 7% regression in all Footprint3-*-G1/ZGC
Reviewed-by: egahlin
2024-01-08 11:41:51 +00:00
Aleksey Shipilev
eb9e754b3a 8323065: Unneccesary CodeBlob lookup in CompiledIC::internal_set_ic_destination
Reviewed-by: dlong, thartmann
2024-01-08 10:27:00 +00:00
Kim Barrett
a40d397d5d 8323110: Eliminate -Wparentheses warnings in ppc code
Reviewed-by: dholmes
2024-01-08 09:01:33 +00:00
Per Minborg
7edd10e5fa 8321786: SegmentAllocator:allocateFrom(ValueLayout, MemorySegment,ValueLayout,long,long) spec mismatch in exception scenario
Reviewed-by: mcimadamore
2024-01-08 08:20:07 +00:00
Kim Barrett
d75d876edd 8322806: Eliminate -Wparentheses warnings in aarch64 code
Reviewed-by: stefank, dholmes
2024-01-08 07:30:21 +00:00
Prasanta Sadhukhan
e44276989f 8322754: click JComboBox when dialog about to close causes IllegalComponentStateException
Reviewed-by: abhiscxk, serb
2024-01-08 02:46:10 +00:00
Kim Barrett
3560e680bc 8322815: Eliminate -Wparentheses warnings in shenandoah code
Reviewed-by: shade, zgu
2024-01-08 02:37:10 +00:00
Alan Bateman
faa9c6909d 8322846: Running with -Djdk.tracePinnedThreads set can hang
Reviewed-by: jpai
2024-01-06 18:24:28 +00:00
Alan Bateman
ace010b38a 8319757: java/nio/channels/DatagramChannel/InterruptibleOrNot.java failed: wrong exception thrown
Reviewed-by: jpai, bpb
2024-01-06 08:52:27 +00:00
Jonathan Gibbons
be4614eb5e 8323016: Improve reporting for bad options
Reviewed-by: prappo
2024-01-05 22:16:52 +00:00
David Leopoldseder
35a1b77da5 8322636: [JVMCI] HotSpotSpeculationLog can be inconsistent across a single compile
Reviewed-by: dnsimon, never
2024-01-05 19:00:18 +00:00
Chris Plummer
46965a096c 8322981: Fix 2 locations in JDI that throw IOException without using the "Caused by" exception
Reviewed-by: dholmes, lmesnik
2024-01-05 17:53:45 +00:00
Aleksey Shipilev
700c25f5b4 8322954: Shenandoah: Convert evac-update closures asserts to rich asserts
Reviewed-by: wkemper, kdnilsen, ysr
2024-01-05 17:04:32 +00:00
Daniel D. Daugherty
631a9f60f3 8323073: ProblemList gc/g1/TestSkipRebuildRemsetPhase.java on linux-aarch64
8323075: ProblemList runtime/cds/appcds/jigsaw/modulepath/OptimizeModuleHandlingTest.java

Reviewed-by: thartmann
2024-01-05 16:26:02 +00:00
Tobias Hartmann
ed9f3243f0 8322985: [BACKOUT] 8318562: Computational test more than 2x slower when AVX instructions are used
Reviewed-by: chagedorn, shade
2024-01-05 15:40:32 +00:00
Tobias Hartmann
ade21a965f 8310844: [AArch64] C1 compilation fails because monitor offset in OSR buffer is too large for immediate
Reviewed-by: aph, chagedorn
2024-01-05 13:48:31 +00:00
Jan Lahoda
f0cfd361bd 8322532: JShell : Unnamed variable issue
Reviewed-by: asotona
2024-01-05 11:34:03 +00:00
Tobias Hartmann
78623c95f2 8323012: C2 fails with fatal error: no reachable node should have no use
Reviewed-by: chagedorn
2024-01-05 11:13:34 +00:00
William Kemper
f0e2e4311b 8323021: Shenandoah: Encountered reference count always attributed to first worker thread
Reviewed-by: kdnilsen, ysr, shade
2024-01-05 10:39:08 +00:00
Denghui Dong
3dc4bd8581 8322989: New test serviceability/HeapDump/FullGCHeapDumpLimitTest.java fails
Reviewed-by: stefank, dholmes
2024-01-05 09:23:42 +00:00
Stefan Karlsson
1d1cd32bc3 8321812: Update GC tests to use execute[Limited]TestJava
Reviewed-by: tschatzl, aboldtch
2024-01-05 09:12:24 +00:00
Stefan Karlsson
868f8745fa 8322920: Some ProcessTools.execute* functions are declared to throw Throwable
Reviewed-by: dholmes, lmesnik
2024-01-05 09:07:03 +00:00
Johny Jose
2a9c3589d9 8322725: (tz) Update Timezone Data to 2023d
Reviewed-by: coffeys, naoto
2024-01-05 08:12:59 +00:00
Gui Cao
5235cc987d 8322583: RISC-V: Enable fast class initialization checks
Reviewed-by: rehn, fyang, fjiang
2024-01-05 04:39:55 +00:00
Calvin Cheung
3b1e56a427 8322322: Support archived full module graph when -Xbootclasspath/a is used
Reviewed-by: alanb, mchung
2024-01-05 00:00:24 +00:00
Chris Plummer
3fbccb01dc 8322978: Remove debug agent debugMonitorTimedWait() function. It is no longer used.
Reviewed-by: dholmes, sspitsyn
2024-01-04 17:22:49 +00:00
Naoto Sato
ad31ec5c5f 8322647: Short name for the Europe/Lisbon time zone is incorrect
Reviewed-by: joehw, iris
2024-01-04 17:16:33 +00:00
Justin Lu
15cf8f8531 8319626: Override toString() for ZipFile
Reviewed-by: jpai, alanb, coffeys
2024-01-04 17:16:22 +00:00
Joshua Cao
ade40741ca 8322976: Remove reference to transform_no_reclaim
Reviewed-by: shade, thartmann
2024-01-04 16:55:04 +00:00
Daniel D. Daugherty
ea19e9c6aa 8323011: ProblemList serviceability/HeapDump/FullGCHeapDumpLimitTest.java
Reviewed-by: azvegint, ctornqvi
2024-01-04 16:28:52 +00:00
Alan Bateman
d33dfe5cb2 8323002: test/jdk/java/lang/Thread/virtual/stress/GetStackTraceALotWhenPinned.java times out on macosx-x64
Reviewed-by: pchilanomate
2024-01-04 15:20:23 +00:00
Denghui Dong
27d5f5c237 8322781: C1: Debug build crash in GraphBuilder::vmap() when print stats
Reviewed-by: kvn, thartmann, shade
2024-01-04 13:11:47 +00:00
Jim Laskey
df22fb322e 8322512: StringBuffer.repeat does not work correctly after toString() was called
Reviewed-by: rriggs, jpai
2024-01-04 12:46:31 +00:00
Albert Mingkun Yang
c3cd1f1814 8323000: Parallel: Remove unused class declarations in psScavenge
Reviewed-by: stefank
2024-01-04 11:35:56 +00:00
Aleksey Shipilev
dd517c6404 8237842: Separate definitions for default cache line and padding sizes
Reviewed-by: stefank, kvn, stuefe, tschatzl
2024-01-04 08:39:50 +00:00
Albert Mingkun Yang
83564ea5f3 8322888: Parallel: Remove unused variables in PSPromotionManager
Reviewed-by: kbarrett
2024-01-04 08:32:00 +00:00
Albert Mingkun Yang
bbe0079d98 8322298: Obsolete unused AdaptiveSizePolicyCollectionCostMargin
Reviewed-by: tschatzl, sjohanss, kbarrett, gli
2024-01-04 08:31:50 +00:00
Matthias Baesken
730663649f 8322945: Problemlist runtime/CompressedOops/CompressedClassPointers.java on AIX
Reviewed-by: mdoerr
2024-01-04 08:21:57 +00:00
Matthias Baesken
1369c545ac 8322782: Clean up usages of unnecessary fully qualified class name "java.util.Arrays"
Reviewed-by: alanb, aivanov
2024-01-04 08:06:14 +00:00
Alan Bateman
4db7a1c3bb 8322818: Thread::getStackTrace can fail with InternalError if virtual thread is timed-parked when pinned
Reviewed-by: pchilanomate
2024-01-04 05:59:52 +00:00
Joe Wang
755722ced6 8322214: Return value of XMLInputFactory.getProperty() changed from boolean to String in JDK 22 early access builds
Reviewed-by: lancea
2024-01-04 05:04:45 +00:00
Denghui Dong
1cf9335b24 8321404: Limit the number of heap dumps triggered by HeapDumpBeforeFullGC/AfterFullGC
Reviewed-by: dholmes, cjplummer
2024-01-04 03:20:06 +00:00
Scott Gibbons
13c11487f7 8321599: Data loss in AVX3 Base64 decoding
Reviewed-by: sviswanathan, kvn
2024-01-04 01:36:28 +00:00
David Holmes
028ec7e744 8319948: jcmd man page needs to be updated
Co-authored-by: Thomas Stuefe <stuefe@openjdk.org>
Reviewed-by: kevinw, alanb
2024-01-03 22:30:54 +00:00
Brian Burkhalter
54b3ceeca2 8322877: java/io/BufferedInputStream/TransferTo.java failed with IndexOutOfBoundsException
Reviewed-by: alanb, stsypanov
2024-01-03 21:23:06 +00:00
Kim Barrett
30a0c61de0 8322879: Eliminate -Wparentheses warnings in x86-32 code
Reviewed-by: kvn, shade
2024-01-03 20:13:57 +00:00
Matias Saavedra Silva
409a39ec8d 8320276: Improve class initialization barrier in TemplateTable::_new
Reviewed-by: dholmes, fparain
2024-01-03 20:10:59 +00:00
Mikael Vidstedt
296c5b645a 8322873: Duplicate -ljava -ljvm options for libinstrument
Reviewed-by: dholmes, jwaters, erikj
2024-01-03 19:23:43 +00:00
Daniel D. Daugherty
cc9ab5f197 8322963: ProblemList java/io/BufferedInputStream/TransferTo.java
Reviewed-by: bpb
2024-01-03 17:17:24 +00:00
Carter Kozak
1551928502 8322142: JFR: Periodic tasks aren't orphaned between recordings
Reviewed-by: egahlin
2024-01-03 15:09:06 +00:00
Alan Bateman
b67b71cd87 8320707: Virtual thread test updates
Reviewed-by: jpai
2024-01-03 14:59:03 +00:00
Denghui Dong
7eb25ec7b3 8322853: Should use ConditionalMutexLocker in NativeHeapTrimmerThread::print_state
Reviewed-by: dholmes, shade
2024-01-03 13:10:22 +00:00
Denghui Dong
539da24863 8322779: C1: Remove the unused counter 'totalInstructionNodes'
Reviewed-by: kvn, thartmann
2024-01-03 13:08:48 +00:00
Matthias Baesken
a8e4229852 8322783: prioritize /etc/os-release over /etc/SuSE-release in hs_err/info output
Reviewed-by: dholmes, mdoerr
2024-01-03 09:15:07 +00:00
Stefan Karlsson
cbe329b90a 8321713: Harmonize executeTestJvm with create[Limited]TestJavaProcessBuilder
Reviewed-by: lkorinth, lmesnik
2024-01-03 08:53:01 +00:00
John Jiang
06dd735342 8322766: Micro bench SSLHandshake should use default algorithms
Reviewed-by: djelinski
2024-01-03 08:27:42 +00:00
Stefan Karlsson
9ab29f8dcd 8321718: ProcessTools.executeProcess calls waitFor before logging
Reviewed-by: dholmes, jpai
2024-01-03 07:48:57 +00:00
Albert Mingkun Yang
ba426d6887 8322841: Parallel: Remove unused using-declaration in MutableNUMASpace
Reviewed-by: kbarrett
2024-01-03 06:12:00 +00:00
Guoxiong Li
18cdc903cf 8322801: RISC-V: The riscv path of the debian sysroot had been changed
Reviewed-by: rehn, erikj
2024-01-03 04:17:15 +00:00
Joe Darcy
fcf8368eb1 8322248: Fix inconsistent wording in ElementFilter.typesIn
Reviewed-by: jjg, iris
2024-01-02 23:05:58 +00:00
Kim Barrett
a678416994 8322805: Eliminate -Wparentheses warnings in x86 code
Reviewed-by: dholmes, kvn
2024-01-02 22:47:18 +00:00
Kim Barrett
122bc7770e 8322758: Eliminate -Wparentheses warnings in C2 code
Reviewed-by: aph, kvn
2024-01-02 22:32:58 +00:00
Patricio Chilano Mateo
e9e694f4ef 8320275: assert(_chunk->bitmap().at(index)) failed: Bit not set at index
Reviewed-by: dlong, fparain
2024-01-02 22:22:03 +00:00
Kim Barrett
da1091eed9 8322807: Eliminate -Wparentheses warnings in gc code
Reviewed-by: ayang
2024-01-02 21:57:45 +00:00
Brian Burkhalter
c2477a5cad 8322868: java/io/BufferedInputStream/TransferToTrusted.java has bad copyright header
Reviewed-by: dcubed
2024-01-02 20:35:09 +00:00
Eirik Bjørsnøs
2cf5f01397 8322802: Add testing for ZipFile.getEntry respecting the 'Language encoding' flag
Reviewed-by: lancea, jpai
2024-01-02 20:31:38 +00:00
Sergey Tsypanov
38042ad4e9 8320971: Use BufferedInputStream.buf directly when param of implTransferTo() is trusted
Reviewed-by: alanb, bpb
2024-01-02 20:05:31 +00:00
William Kemper
51238c4bdb 8322503: Shenandoah: Clarify gc state usage
Reviewed-by: ysr, gli
2024-01-02 17:08:36 +00:00
Renjith Kannath Pariyangad
9481d06e62 8320343: Generate GIF images for AbstractButton/5049549/bug5049549.java
Reviewed-by: aivanov
2024-01-02 16:16:20 +00:00
Adam Sotona
a5cf4210cd 8320360: ClassFile.parse: Some defect class files cause unexpected exceptions to be thrown
Reviewed-by: jpai
2024-01-02 12:58:53 +00:00
Adam Sotona
f9aec02f3c 8321540: ClassSignature.parseFrom() throws StringIndexOutOfBoundsException for invalid signatures
Reviewed-by: jpai
2024-01-02 12:39:41 +00:00
Jan Lahoda
7455b1b527 8322159: ThisEscapeAnalyzer crashes for erroneous code
Reviewed-by: vromero
2024-01-02 11:15:12 +00:00
ANUPAM DEV
d4fb30885b 8317846: Typo in API documentation of classes IdentityHashMap
Reviewed-by: mli, jpai
2024-01-02 11:10:15 +00:00
Guoxiong Li
d786c49525 8322751: ZGC: Fix comments about marking roots
Reviewed-by: eosterlund
2024-01-02 10:34:25 +00:00
Archie Cobbs
5852f3eafe 8322027: One XMLStreamException constructor fails to initialize cause
Reviewed-by: joehw, jpai
2024-01-02 10:13:37 +00:00
Lei Zaakjyu
be0e1c7b14 8297573: Parallel: Rename do_oop_nv to do_oop_work in subclasses of OopClosure
Reviewed-by: ayang, gli
2024-01-02 08:45:55 +00:00
Kim Barrett
7c1d481d6d 8322765: Eliminate -Wparentheses warnings in runtime code
Reviewed-by: dholmes
2024-01-02 03:06:13 +00:00
Kim Barrett
518ec97114 8322747: StringTable should be AllStatic
Reviewed-by: eosterlund
2023-12-31 17:26:57 +00:00
Christoph Langer
32d80e2caf 8322772: Clean up code after JDK-8322417
Reviewed-by: mdoerr, goetz, mbaesken, vtewari
2023-12-29 21:49:06 +00:00
Olga Mikhaltsova
19147f326c 8318158: RISC-V: implement roundD/roundF intrinsics
Co-authored-by: Vladimir Kempik <vkempik@openjdk.org>
Reviewed-by: luhenry, fyang, mli
2023-12-29 18:33:43 +00:00
John Jiang
2a59243cba 8322734: A redundant return in method padWithLen
Reviewed-by: jiefu
2023-12-27 02:31:50 +00:00
Eamonn McManus
4fc6b0ffa4 8068958: Timestamp.from(Instant) should throw when conversion is not possible
Reviewed-by: rgiulietti, rriggs
2023-12-23 22:53:23 +00:00
Jie Fu
28c82bf18d 8322661: Build broken due to missing jvmtiExport.hpp after JDK-8320139
Reviewed-by: chagedorn, never
2023-12-22 23:53:42 +00:00
Joshua Cao
7263e25d9b 8322490: cleanup CastNode construction
Reviewed-by: chagedorn, phh
2023-12-22 21:08:45 +00:00
Rajat Mahajan
f695ca5884 8321151: JDK-8294427 breaks Windows L&F on all older Windows versions
Reviewed-by: aivanov, achung
2023-12-22 20:16:45 +00:00
Eirik Bjørsnøs
93fedc12db 8321802: (zipfs) Add validation of incorrect LOC signature in ZipFileSystem
Reviewed-by: alanb, lancea
2023-12-22 16:09:22 +00:00
Matthias Baesken
1230853343 8322163: runtime/Unsafe/InternalErrorTest.java fails on Alpine after JDK-8320886
Reviewed-by: mdoerr, clanger
2023-12-22 13:30:05 +00:00
Stefan Karlsson
dce7a5732e 8321683: Tests fail with AssertionError in RangeWithPageSize
Reviewed-by: stuefe, mbaesken
2023-12-22 13:25:39 +00:00
Albert Mingkun Yang
c53f845ec9 8322539: Parallel: Remove duplicated methods in PSAdaptiveSizePolicy
Reviewed-by: tschatzl, kbarrett
2023-12-22 07:58:09 +00:00
Raphael Mosaner
84c2379285 8320139: [JVMCI] VmObjectAlloc is not generated by intrinsics methods which allocate objects
Reviewed-by: never, dnsimon
2023-12-21 19:22:48 +00:00
Evgeny Astigeevich
3b908c4781 8319795: Static huge pages are not used for CodeCache
Reviewed-by: shade, simonis, thartmann, stuefe
2023-12-21 18:51:50 +00:00
Lei Zaakjyu
1802601a12 8293623: Simplify G1ConcurrentRefineThreadControl
Reviewed-by: kbarrett, tschatzl
2023-12-21 15:20:01 +00:00
Goetz Lindenmaier
6de23bf36e 8322418: Problem list gc/TestAllocHumongousFragment.java subtests for 8298781
Reviewed-by: mbaesken
2023-12-21 11:40:30 +00:00
Serguei Spitsyn
aff659aaf7 8322538: remove fatal from JVM_VirtualThread functions for !INCLUDE_JVMTI
Reviewed-by: dholmes, alanb
2023-12-21 10:07:31 +00:00
Thomas Schatzl
05745e3f1d 8319548: Unexpected internal name for Filler array klass causes error in VisualVM
Co-authored-by: Tomáš Hůrka <tomas.hurka@oracle.com>
Reviewed-by: ayang, dholmes
2023-12-21 09:17:31 +00:00
Gui Cao
e8768ae08d 8321972: test runtime/Unsafe/InternalErrorTest.java timeout on linux-riscv64 platform
Co-authored-by: Fei Yang <fyang@openjdk.org>
Reviewed-by: fyang
2023-12-21 01:28:48 +00:00
Sean Coffey
f6fe39ff11 8322078: ZipSourceCache.testKeySourceMapping() test fails with The process cannot access the file because it is being used by another process
Reviewed-by: lancea
2023-12-20 22:03:10 +00:00
Matthias Baesken
e204242118 8321017: Record in JFR that IEEE rounding mode was corrupted by loading a library
Reviewed-by: stuefe, jbechberger
2023-12-20 17:32:23 +00:00
Markus KARG
2d609557ff 8322141: SequenceInputStream.transferTo should not return as soon as Long.MAX_VALUE bytes have been transferred
Reviewed-by: vsitnikov, bpb, jpai
2023-12-20 17:00:44 +00:00
Albert Mingkun Yang
e0bad5153b 8322543: Parallel: Remove unused _major_pause_old_slope_counter
Reviewed-by: tschatzl
2023-12-20 15:56:50 +00:00
Weijun Wang
424c58f3e9 8187634: keystore.getCertificateAlias(cert) returns original alias, inconsistent with fix of JDK-6483657
Reviewed-by: mullan
2023-12-20 15:45:33 +00:00
Albert Mingkun Yang
14dab319a8 8322377: Parallel: Remove unused arg in adjust_promo_for_pause_time and adjust_eden_for_pause_time
Reviewed-by: tschatzl
2023-12-20 09:41:33 +00:00
Albert Mingkun Yang
5fcac7c846 8322364: Parallel: Remove unused SizePolicyTrueValues enum members
Reviewed-by: tschatzl
2023-12-20 09:41:24 +00:00
Goetz Lindenmaier
2f917bff5c 8322417: Console read line with zero out should zero out when throwing exception
Reviewed-by: mbaesken, stuefe, naoto
2023-12-20 08:01:08 +00:00
bobpengxie
7db69e6a12 8322513: Build failure with minimal
Reviewed-by: dholmes, rehn
2023-12-20 07:46:11 +00:00
Ioi Lam
f7dc257a20 8322321: Add man page doc for -XX:+VerifySharedSpaces
Reviewed-by: dholmes, ccheung
2023-12-20 05:50:45 +00:00
Guoxiong Li
97db670956 8321688: Build on linux with GCC 7.5.0 fails after 8319577
Reviewed-by: kbarrett, sviswanathan
2023-12-20 03:58:12 +00:00
Brian Burkhalter
51be857f3c 8322166: Files.isReadable/isWritable/isExecutable expensive when file does not exist
Reviewed-by: alanb
2023-12-19 18:27:06 +00:00
Serguei Spitsyn
0f8e4e0a81 8311218: fatal error: stuck in JvmtiVTMSTransitionDisabler::VTMS_transition_disable
Reviewed-by: lmesnik, alanb
2023-12-19 17:26:55 +00:00
Ludovic Henry
6313223bcd 8315856: RISC-V: Use Zacas extension for cmpxchg
Reviewed-by: rehn, fyang
2023-12-19 14:15:24 +00:00
Frederic Thevenet
3bc5679cab 8322309: Fix an inconsistancy in spacing style in spec.gmk.template
Reviewed-by: sgehwolf, erikj
2023-12-19 13:54:49 +00:00
Erik Österlund
be49dabd0d 8321619: Generational ZGC: ZColorStoreGoodOopClosure is only valid for young objects
Reviewed-by: stefank, sjohanss
2023-12-19 13:49:01 +00:00
Quan Anh Mai
ac968c36d7 8319451: PhaseIdealLoop::conditional_move is too conservative
Reviewed-by: redestad, thartmann, kvn
2023-12-19 10:39:50 +00:00
Guoxiong Li
0ad6c9e3d9 8322255: Generational ZGC: ZPageSizeMedium should be set before MaxTenuringThreshold
Reviewed-by: tschatzl, eosterlund
2023-12-19 10:39:37 +00:00
Hamlin Li
fff2e580cd 8322195: RISC-V: Minor improvement of MD5 instrinsic
Reviewed-by: luhenry, fyang
2023-12-19 08:45:15 +00:00
Albert Mingkun Yang
7b4d62c794 8322300: Remove redundant arg in PSAdaptiveSizePolicy::adjust_promo_for_pause_time
Reviewed-by: tschatzl
2023-12-19 08:39:45 +00:00
Jatin Bhateja
76637c53c5 8321648: Integral gather optimized mask computation.
Reviewed-by: thartmann, sviswanathan
2023-12-19 07:51:52 +00:00
Gui Cao
59073fa3eb 8322154: RISC-V: JDK-8315743 missed change in MacroAssembler::load_reserved
Reviewed-by: fyang, rehn, luhenry
2023-12-19 07:45:59 +00:00
William Kemper
808a03927c 8321815: Shenandoah: gc state should be synchronized to java threads only once per safepoint
Reviewed-by: kdnilsen, ysr
2023-12-19 00:09:31 +00:00
Alex Menkov
459957f30a 8322062: com/sun/jdi/JdwpAllowTest.java does not performs negative testing with prefix length
Reviewed-by: cjplummer, sspitsyn
2023-12-18 21:14:09 +00:00
Brian Burkhalter
b98d13fc3c 8259637: java.io.File.getCanonicalPath() returns different values for same path
Reviewed-by: alanb
2023-12-18 18:10:34 +00:00
Ioi Lam
4f3de09672 8321940: Improve CDSHeapVerifier in handling of interned strings
Reviewed-by: ccheung, matsaave
2023-12-18 17:56:07 +00:00
Matias Saavedra Silva
1fde8b868a 8321933: TestCDSVMCrash.java spawns two processes
Reviewed-by: ccheung, iklam
2023-12-18 17:05:22 +00:00
Afshin Zafari
66aeb89469 8315462: [REDO] runtime/NMT/SummarySanityCheck.java failed with "Total committed (MMMMMM) did not match the summarized committed (NNNNNN)"
Reviewed-by: gziemski, stuefe
2023-12-18 16:52:36 +00:00
Yi-Fan Tsai
a5122d7f6c 8314029: Add file name parameter to Compiler.perfmap
Reviewed-by: cjplummer, eastigeevich
2023-12-18 15:20:59 +00:00
Yi-Fan Tsai
c0a3b76958 8316197: Make tracing of inline cache available in unified logging
Reviewed-by: kvn, dholmes
2023-12-18 15:19:16 +00:00
Albert Mingkun Yang
7e1d26dd5c 8322287: Parallel: Remove unused arg in adjust_eden_for_pause_time and adjust_eden_for_minor_pause_time
Reviewed-by: tschatzl
2023-12-18 14:29:00 +00:00
Albert Mingkun Yang
5584ba36c6 8322097: Serial: Refactor CardTableRS::find_first_clean_card
Reviewed-by: tschatzl, iwalulya
2023-12-18 13:30:34 +00:00
Albert Mingkun Yang
75d382d3db 8322204: Parallel: Remove unused _collection_cost_margin_fraction
Reviewed-by: tschatzl
2023-12-18 12:57:12 +00:00
Albert Mingkun Yang
febf8af4b5 8322089: Parallel: Remove PSAdaptiveSizePolicy::set_survivor_size
Reviewed-by: tschatzl
2023-12-18 12:57:01 +00:00
Alexander Scherbatiy
10335f60f9 7001133: OutOfMemoryError by CustomMediaSizeName implementation
Reviewed-by: psadhukhan
2023-12-18 12:11:41 +00:00
Lei Zaakjyu
ecff9c1ef7 8315040: Remove redundant check in WorkerPolicy::parallel_worker_threads
Reviewed-by: ayang, tschatzl
2023-12-18 11:05:48 +00:00
Hamlin Li
a247d0c74b 8322209: RISC-V: Enable some tests related to MD5 instrinsic
Reviewed-by: luhenry, fyang
2023-12-18 10:31:29 +00:00
Johan Sjölen
341b4e09b7 8321975: Print when add_reserved_region fails even in product mode
Reviewed-by: dholmes, stuefe
2023-12-18 09:45:26 +00:00
Ivan Walulya
f696796e88 8280087: G1: Handle out-of-mark stack situations during reference processing more gracefully
Reviewed-by: tschatzl, ayang
2023-12-18 09:43:53 +00:00
Lei Zaakjyu
413dbf8757 8322205: Parallel: Remove unused arg in PSCardTable::pre_scavenge
Reviewed-by: ayang, tschatzl
2023-12-18 09:31:13 +00:00
Thomas Schatzl
f553819502 8317007: Add bulk removal of dead nmethods during class unloading
Reviewed-by: ayang, iwalulya
2023-12-18 08:44:43 +00:00
Steven Schlansker
34351b7a79 8321892: Typo in log message logged by src/hotspot/share/nmt/virtualMemoryTracker.cpp
Reviewed-by: dholmes, azafari
2023-12-16 01:40:19 +00:00
Alisen Chung
b061b6678f 8322041: JDK 22 RDP1 L10n resource files update
Reviewed-by: almatvee, cstein, asemenyuk, joehw, jjg
2023-12-16 01:03:09 +00:00
Calvin Cheung
dcdcd48d8f 8321479: java -D-D crashes
Reviewed-by: dholmes, iklam
2023-12-15 19:04:42 +00:00
Naoto Sato
87ef73329f 8321958: @param/@return descriptions of ZoneRules#isDaylightSavings() are incorrect
Reviewed-by: jlu, joehw, jpai
2023-12-15 17:33:50 +00:00
Tom Rodriguez
05f7f0ade2 8321288: [JVMCI] HotSpotJVMCIRuntime doesn't clean up WeakReferences in resolvedJavaTypes
Reviewed-by: dnsimon, kvn
2023-12-15 17:25:24 +00:00
Roger Riggs
6311dabe68 8322018: Test java/lang/String/CompactString/MaxSizeUTF16String.java fails with -Xcomp
Reviewed-by: jpai
2023-12-15 16:13:36 +00:00
Liam Miller-Cushon
bdebf198bb 8322175: test/langtools/tools/javac/classreader/BadMethodParameter.java doesn't compile
Reviewed-by: jlahoda
2023-12-15 12:18:01 +00:00
Liam Miller-Cushon
20de541b13 8322040: Missing array bounds check in ClassReader.parameter
Reviewed-by: vromero
2023-12-15 10:16:35 +00:00
Matthias Baesken
b31454e362 8322098: os::Linux::print_system_memory_info enhance the THP output with /sys/kernel/mm/transparent_hugepage/hpage_pmd_size
Reviewed-by: mdoerr, lucy
2023-12-15 07:42:39 +00:00
Gui Cao
0be0775a76 8320397: RISC-V: Avoid passing t0 as temp register to MacroAssembler:: cmpxchg_obj_header/cmpxchgptr
Reviewed-by: rehn, fyang
2023-12-15 07:23:50 +00:00
Joshua Cao
6dfb8120c2 8321823: Remove redundant PhaseGVN transform_no_reclaim
Reviewed-by: chagedorn, phh
2023-12-15 00:35:37 +00:00
Zhengyu Gu
a7dde578a8 8322057: Memory leaks in creating jfr symbol array
Reviewed-by: mgronlun
2023-12-14 22:33:34 +00:00
David Holmes
692be57738 8322065: Initial nroff manpage generation for JDK 23
Reviewed-by: alanb
2023-12-14 21:26:10 +00:00
David Holmes
d02bc873f8 8309981: Remove expired flags in JDK 23
Reviewed-by: alanb, kvn
2023-12-14 21:24:17 +00:00
Justin Lu
8b24851b9d 8321480: ISO 4217 Amendment 176 Update
Reviewed-by: naoto
2023-12-14 21:16:19 +00:00
Ben Perez
c328f9589d 8296787: Unify debug printing format of X.509 cert serial numbers
Reviewed-by: mullan, coffeys
2023-12-14 17:57:36 +00:00
Aleksei Voitylov
fde5b16817 8321514: UTF16 string gets constructed incorrectly from codepoints if CompactStrings is not enabled
Co-authored-by: Roger Riggs <rriggs@openjdk.org>
Reviewed-by: rriggs
2023-12-14 14:39:04 +00:00
Weijun Wang
45a9ade337 8202598: keytool -certreq output contains inconsistent line separators
Reviewed-by: hchao, mullan
2023-12-14 14:37:15 +00:00
Darragh Clarke
62b7c5eaed 8319647: Few java/lang/System/LoggerFinder/modules tests ignore vm flags
Reviewed-by: lmesnik
2023-12-14 13:24:19 +00:00
Daniel Lundén
69014cd55b 8320682: [AArch64] C1 compilation fails with "Field too big for insn"
Reviewed-by: thartmann, aph, dlong
2023-12-14 13:09:39 +00:00
Albert Mingkun Yang
5a97dbf606 8322034: Parallel: Remove unused methods in PSAdaptiveSizePolicy
Reviewed-by: kbarrett
2023-12-14 12:30:47 +00:00
Adam Sotona
2838a916ab 8288989: Make tests not depend on the source code
Reviewed-by: mcimadamore
2023-12-14 11:36:57 +00:00
Jaikiran Pai
d2ba3b1ef7 8312150: Remove -Xnoagent option
Reviewed-by: dholmes, alanb
2023-12-14 10:36:23 +00:00
Daniel Lundén
d632d743e0 8321820: TestLoadNIdeal fails on 32-bit because -XX:+UseCompressedOops is not recognized
Reviewed-by: rcastanedalo, chagedorn, shade
2023-12-14 09:29:34 +00:00
Joe Wang
ddbbd36e4b 8320279: Link issues in java.xml module-info.java
Reviewed-by: iris, lancea, naoto
2023-12-14 07:45:02 +00:00
Tobias Hartmann
c8ad7b7f84 8321974: Crash in ciKlass::is_subtype_of because TypeAryPtr::_klass is not initialized
Reviewed-by: roland, kvn
2023-12-14 07:23:21 +00:00
2986 changed files with 60392 additions and 33911 deletions

View File

@@ -66,7 +66,7 @@ runs:
shell: bash
- name: 'Upload build logs'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: failure-logs-${{ inputs.platform }}${{ inputs.debug-suffix }}
path: failure-logs
@@ -74,7 +74,7 @@ runs:
# This is the best way I found to abort the job with an error message
- name: 'Notify about build failures'
uses: actions/github-script@v6
uses: actions/github-script@v7
with:
script: core.setFailed('Build failed. See summary for details.')
if: steps.check.outputs.failure == 'true'

View File

@@ -65,7 +65,7 @@ runs:
- name: 'Check cache for BootJDK'
id: get-cached-bootjdk
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: bootjdk/jdk
key: boot-jdk-${{ inputs.platform }}-${{ steps.sha256.outputs.value }}

View File

@@ -48,14 +48,14 @@ runs:
steps:
- name: 'Download bundles artifact'
id: download-bundles
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: bundles-${{ inputs.platform }}${{ inputs.debug-suffix }}
path: bundles
continue-on-error: true
- name: 'Download bundles artifact (retry)'
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: bundles-${{ inputs.platform }}${{ inputs.debug-suffix }}
path: bundles

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2023, 2024, 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
@@ -41,7 +41,7 @@ runs:
- name: 'Check cache for JTReg'
id: get-cached-jtreg
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: jtreg/installed
key: jtreg-${{ steps.version.outputs.value }}
@@ -57,7 +57,7 @@ runs:
- name: 'Build JTReg'
run: |
# Build JTReg and move files to the proper locations
bash make/build.sh --jdk "$JAVA_HOME_17_X64"
bash make/build.sh --jdk "$(realpath bootjdk/jdk)"
mkdir ../installed
mv build/images/jtreg/* ../installed
working-directory: jtreg/src

View File

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

View File

@@ -69,7 +69,7 @@ runs:
shell: bash
- name: 'Upload bundles artifact'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: bundles-${{ inputs.platform }}${{ inputs.debug-suffix }}
path: bundles

View File

@@ -1,6 +1,6 @@
#!/bin/bash
#
# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2022, 2024, 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
@@ -44,8 +44,8 @@ for test in $failures $errors; do
base_path="$(echo "$test" | tr '#' '_')"
report_file="$report_dir/$base_path.jtr"
hs_err_files=$(ls $report_dir/$base_path/hs_err*.log 2> /dev/null || true)
replay_files=$(ls $report_dir/$base_path/replay*.log 2> /dev/null || true)
echo "#### <a id="$anchor">$test"
echo '<details><summary>View test results</summary>'
echo ''
echo '```'
@@ -73,6 +73,20 @@ for test in $failures $errors; do
echo ''
fi
if [[ "$replay_files" != "" ]]; then
echo '<details><summary>View HotSpot replay file</summary>'
echo ''
for replay in $replay_files; do
echo '```'
echo "$replay:"
echo ''
cat "$replay"
echo '```'
done
echo '</details>'
echo ''
fi
done >> $GITHUB_STEP_SUMMARY
# With many failures, the summary can easily exceed 1024 kB, the limit set by Github

View File

@@ -42,6 +42,7 @@ error_count=$(echo $errors | wc -w || true)
if [[ "$failures" = "" && "$errors" = "" ]]; then
# We know something went wrong, but not what
echo 'failure=true' >> $GITHUB_OUTPUT
echo 'error-message=Unspecified test suite failure. Please see log for job for details.' >> $GITHUB_OUTPUT
exit 0
fi

View File

@@ -120,7 +120,7 @@ jobs:
- name: 'Check cache for sysroot'
id: get-cached-sysroot
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: sysroot
key: sysroot-${{ matrix.debian-arch }}-${{ hashFiles('./.github/workflows/build-cross-compile.yml') }}

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,9 @@ on:
platform:
required: true
type: string
runs-on:
required: true
type: string
extra-conf-options:
required: false
type: string
@@ -55,7 +58,7 @@ on:
jobs:
build-macos:
name: build
runs-on: macos-13
runs-on: ${{ inputs.runs-on }}
strategy:
fail-fast: false
@@ -74,7 +77,7 @@ jobs:
id: bootjdk
uses: ./.github/actions/get-bootjdk
with:
platform: macos-x64
platform: ${{ inputs.platform }}
- name: 'Get JTReg'
id: jtreg
@@ -87,7 +90,7 @@ jobs:
- name: 'Install toolchain and dependencies'
run: |
# Run Homebrew installation and xcode-select
brew install make
brew install autoconf make
sudo xcode-select --switch /Applications/Xcode_${{ inputs.xcode-toolset-version }}.app/Contents/Developer
# This will make GNU make available as 'make' and not only as 'gmake'
echo '/usr/local/opt/make/libexec/gnubin' >> $GITHUB_PATH

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2022, 2024, 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
@@ -228,6 +228,7 @@ jobs:
uses: ./.github/workflows/build-macos.yml
with:
platform: macos-x64
runs-on: 'macos-13'
xcode-toolset-version: '14.3.1'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
@@ -239,8 +240,8 @@ jobs:
uses: ./.github/workflows/build-macos.yml
with:
platform: macos-aarch64
runs-on: 'macos-14'
xcode-toolset-version: '14.3.1'
extra-conf-options: '--openjdk-target=aarch64-apple-darwin'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
if: needs.select.outputs.macos-aarch64 == 'true'
@@ -321,6 +322,16 @@ jobs:
bootjdk-platform: macos-x64
runs-on: macos-13
test-macos-aarch64:
name: macos-aarch64
needs:
- build-macos-aarch64
uses: ./.github/workflows/test.yml
with:
platform: macos-aarch64
bootjdk-platform: macos-aarch64
runs-on: macos-14
test-windows-x64:
name: windows-x64
needs:
@@ -357,7 +368,7 @@ jobs:
# Hack to get hold of the api environment variables that are only defined for actions
- name: 'Get API configuration'
id: api
uses: actions/github-script@v6
uses: actions/github-script@v7
with:
script: 'return { url: process.env["ACTIONS_RUNTIME_URL"], token: process.env["ACTIONS_RUNTIME_TOKEN"] }'

View File

@@ -63,6 +63,7 @@ jobs:
- 'hs/tier1 compiler part 1'
- 'hs/tier1 compiler part 2'
- 'hs/tier1 compiler part 3'
- 'hs/tier1 compiler not-xcomp'
- 'hs/tier1 gc'
- 'hs/tier1 runtime'
- 'hs/tier1 serviceability'
@@ -90,13 +91,17 @@ jobs:
debug-suffix: -debug
- test-name: 'hs/tier1 compiler part 2'
test-suite: 'test/hotspot/jtreg/:tier1_compiler_2 test/hotspot/jtreg/:tier1_compiler_not_xcomp'
test-suite: 'test/hotspot/jtreg/:tier1_compiler_2'
debug-suffix: -debug
- test-name: 'hs/tier1 compiler part 3'
test-suite: 'test/hotspot/jtreg/:tier1_compiler_3'
debug-suffix: -debug
- test-name: 'hs/tier1 compiler not-xcomp'
test-suite: 'test/hotspot/jtreg/:tier1_compiler_not_xcomp'
debug-suffix: -debug
- test-name: 'hs/tier1 gc'
test-suite: 'test/hotspot/jtreg/:tier1_gc'
debug-suffix: -debug
@@ -206,7 +211,7 @@ jobs:
if: always()
- name: 'Upload test results'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
path: results
name: ${{ steps.package.outputs.artifact-name }}
@@ -214,7 +219,7 @@ jobs:
# This is the best way I found to abort the job with an error message
- name: 'Notify about test failures'
uses: actions/github-script@v6
uses: actions/github-script@v7
with:
script: core.setFailed('${{ steps.run-tests.outputs.error-message }}')
if: steps.run-tests.outputs.failure == 'true'

View File

@@ -1,5 +1,6 @@
#!/bin/bash
#
# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
# Copyright 2015 Google, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
@@ -26,12 +27,17 @@ usage() {
echo "$0 DIR ..."
echo "Modifies in place all the java source files found"
echo "in the given directories so that all java language modifiers"
echo "are in the canonical order given by Modifier#toString()."
echo "are in the canonical order."
echo "Tries to get it right even within javadoc comments,"
echo "and even if the list of modifiers spans 2 lines."
echo
echo "See:"
echo "https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Modifier.html#toString-int-"
echo "https://docs.oracle.com/javase/specs/jls/se21/html/jls-8.html#jls-8.1.1"
echo "https://docs.oracle.com/javase/specs/jls/se21/html/jls-8.html#jls-8.3.1"
echo "https://docs.oracle.com/javase/specs/jls/se21/html/jls-8.html#jls-8.4.3"
echo "https://docs.oracle.com/javase/specs/jls/se21/html/jls-8.html#jls-8.8.3"
echo "https://docs.oracle.com/javase/specs/jls/se21/html/jls-9.html#jls-9.1.1"
echo "https://docs.oracle.com/javase/specs/jls/se21/html/jls-9.html#jls-9.4"
echo
echo "Example:"
echo "$0 jdk/src/java.base jdk/test/java/{util,io,lang}"
@@ -46,7 +52,7 @@ for dir in "${dirs[@]}"; do [[ -d "$dir" ]] || usage; done
declare -ar modifiers=(
public protected private
abstract static final transient
abstract default static final sealed non-sealed transient
volatile synchronized native strictfp
)
declare -r SAVE_IFS="$IFS"

View File

@@ -753,6 +753,8 @@ macOS.</p>
<code>sudo apt-get install libfontconfig-dev</code>.</li>
<li>To install on an rpm-based Linux, try running
<code>sudo yum install fontconfig-devel</code>.</li>
<li>To install on Alpine Linux, try running
<code>sudo apk add fontconfig-dev</code>.</li>
</ul>
<p>Use <code>--with-fontconfig-include=&lt;path&gt;</code> and
<code>--with-fontconfig=&lt;path&gt;</code> if <code>configure</code>
@@ -1499,9 +1501,7 @@ like this:</p>
--resolve-deps \
buster \
~/sysroot-arm64 \
https://httpredir.debian.org/debian/</code></pre>
<p>If the target architecture is <code>riscv64</code>, the path should
be <code>debian-ports</code> instead of <code>debian</code>.</p></li>
https://httpredir.debian.org/debian/</code></pre></li>
<li><p>To create an Ubuntu-based chroot:</p>
<pre><code>sudo debootstrap \
--arch=arm64 \

View File

@@ -572,6 +572,7 @@ required on all platforms except Windows and macOS.
libfontconfig-dev`.
* To install on an rpm-based Linux, try running `sudo yum install
fontconfig-devel`.
* To install on Alpine Linux, try running `sudo apk add fontconfig-dev`.
Use `--with-fontconfig-include=<path>` and `--with-fontconfig=<path>` if
`configure` does not automatically locate the platform Fontconfig files.
@@ -1316,9 +1317,6 @@ For example, cross-compiling to AArch64 from x86_64 could be done like this:
https://httpredir.debian.org/debian/
```
If the target architecture is `riscv64`, the path should be `debian-ports`
instead of `debian`.
* To create an Ubuntu-based chroot:
```

View File

@@ -139,11 +139,6 @@ ifeq ($(IS_DRAFT), true)
endif
DRAFT_TEXT := This specification is not final and is subject to change. \
Use is subject to <a href="$(LICENSE_URL)">license terms</a>.
# Workaround stylesheet bug
HEADER_STYLE := style="margin-top: 9px;"
else
HEADER_STYLE := style="margin-top: 14px;"
endif
# $1 - Relative prefix to COPYRIGHT_URL
@@ -339,7 +334,7 @@ define SetupApiDocsGenerationBody
$1_DOC_TITLE := $$($1_LONG_NAME)<br>Version $$(VERSION_SPECIFICATION) API \
Specification
$1_WINDOW_TITLE := $$(subst &amp;,&,$$($1_SHORT_NAME))$$(DRAFT_MARKER_TITLE)
$1_HEADER_TITLE := <div $$(HEADER_STYLE)><strong>$$($1_SHORT_NAME)</strong> \
$1_HEADER_TITLE := <div><strong>$$($1_SHORT_NAME)</strong> \
$$(DRAFT_MARKER_STR)</div>
ifneq ($$($1_OTHER_VERSIONS), )
$1_JAVADOC_BOTTOM := $$(call JAVADOC_BOTTOM, <a href="$$($1_OTHER_VERSIONS)">Other versions.</a>)
@@ -647,7 +642,7 @@ ifeq ($(ENABLE_PANDOC), true)
GLOBAL_SPECS_DEFAULT_CSS_FILE := $(DOCS_OUTPUTDIR)/resources/jdk-default.css
# Unset the following to suppress the link to the tool guides
NAV_LINK_GUIDES := --nav-link-guides
HEADER_RIGHT_SIDE_INFO := <strong>$(subst &amp;,&,$(JDK_SHORT_NAME))$(DRAFT_MARKER_STR)</strong>
HEADER_RIGHT_SIDE_INFO := <strong>$(subst &amp;,&,$(JDK_SHORT_NAME))</strong>$(DRAFT_MARKER_STR)
$(foreach m, $(ALL_MODULES), \
$(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \

View File

@@ -969,20 +969,28 @@ else
jdk.jdeps-gendata: java
# The ct.sym generation uses all the moduleinfos as input
jdk.compiler-gendata: $(GENSRC_MODULEINFO_TARGETS) $(JAVA_TARGETS)
# jdk.compiler-gendata needs the BUILD_JDK. If the BUILD_JDK was supplied
# externally, no extra prerequisites are needed.
# jdk.compiler gendata generates ct.sym, which requires all generated
# java source and compiled classes present.
jdk.compiler-gendata: $(JAVA_TARGETS)
# jdk.javadoc gendata generates element-list, which requires all java sources
# but not compiled classes.
jdk.javadoc-gendata: $(GENSRC_TARGETS)
# ct.sym and element-list generation also needs the BUILD_JDK. If the
# BUILD_JDK was supplied externally, no extra prerequisites are needed.
ifeq ($(CREATE_BUILDJDK), true)
ifneq ($(CREATING_BUILDJDK), true)
# When cross compiling and an external BUILD_JDK wasn't supplied, it's
# produced by the create-buildjdk target.
jdk.compiler-gendata: create-buildjdk
jdk.javadoc-gendata: create-buildjdk
endif
else ifeq ($(EXTERNAL_BUILDJDK), false)
# When not cross compiling, the BUILD_JDK is the interim jdk image, and
# the javac launcher is needed.
jdk.compiler-gendata: jdk.compiler-launchers
jdk.javadoc-gendata: jdk.compiler-launchers
endif
# Declare dependencies between jmod targets.

View File

@@ -620,11 +620,16 @@ define SetupRunMicroTestBody
$1_MICRO_WARMUP_TIME := -w $$(MICRO_WARMUP_TIME)
endif
# Microbenchmarks are executed from the root of the test image directory.
# This enables JMH tests to add dependencies using relative paths such as
# -Djava.library.path=micro/native
run-test-$1: pre-run-test
$$(call LogWarn)
$$(call LogWarn, Running test '$$($1_TEST)')
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/micro, ( \
$$(CD) $$(TEST_IMAGE_DIR) && \
$$(FIXPATH) $$($1_MICRO_TEST_JDK)/bin/java $$($1_MICRO_JAVA_OPTIONS) \
-jar $$($1_MICRO_BENCHMARKS_JAR) \
$$($1_MICRO_ITER) $$($1_MICRO_FORK) $$($1_MICRO_TIME) \

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2024, 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
@@ -123,6 +123,22 @@ AC_DEFUN_ONCE([BASIC_SETUP_BUILD_ENV],
]
)
AC_SUBST(BUILD_ENV)
if test "x$LOCALE" != x; then
# Check if we actually have C.UTF-8; if so, use it
if $LOCALE -a | $GREP -q -E "^C\.(utf8|UTF-8)$"; then
LOCALE_USED=C.UTF-8
else
AC_MSG_WARN([C.UTF-8 locale not found, using C locale])
LOCALE_USED=C
fi
else
AC_MSG_WARN([locale command not not found, using C locale])
LOCALE_USED=C
fi
export LC_ALL=$LOCALE_USED
AC_SUBST(LOCALE_USED)
])
###############################################################################

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2024, 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
@@ -54,6 +54,7 @@ AC_DEFUN_ONCE([BASIC_SETUP_FUNDAMENTAL_TOOLS],
UTIL_REQUIRE_SPECIAL(SED, [AC_PROG_SED])
# Tools only needed on some platforms
UTIL_LOOKUP_PROGS(LOCALE, locale)
UTIL_LOOKUP_PROGS(PATHTOOL, cygpath wslpath)
UTIL_LOOKUP_PROGS(CMD, cmd.exe, $PATH:/cygdrive/c/windows/system32:/mnt/c/windows/system32:/c/windows/system32)
])

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2024, 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
@@ -117,6 +117,11 @@ AC_DEFUN([FLAGS_SETUP_DEBUG_SYMBOLS],
FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${DEBUG_PREFIX_CFLAGS}],
IF_FALSE: [
DEBUG_PREFIX_CFLAGS=
],
IF_TRUE: [
# Add debug prefix map gcc system include paths, as they cause
# non-deterministic debug paths depending on gcc path location.
DEBUG_PREFIX_MAP_GCC_INCLUDE_PATHS
]
)
fi
@@ -158,6 +163,55 @@ AC_DEFUN([FLAGS_SETUP_DEBUG_SYMBOLS],
AC_SUBST(ASFLAGS_DEBUG_SYMBOLS)
])
# gcc will embed the full system include paths in the debug info
# resulting in non-deterministic debug symbol files and thus
# non-reproducible native libraries if gcc includes are located
# in different paths.
# Add -fdebug-prefix-map'ings for root and gcc include paths,
# pointing to a common set of folders so that the binaries are deterministic:
# root include : /usr/include
# gcc include : /usr/local/gcc_include
# g++ include : /usr/local/gxx_include
AC_DEFUN([DEBUG_PREFIX_MAP_GCC_INCLUDE_PATHS],
[
# Determine gcc system include paths.
# Assume default roots to start with:
GCC_ROOT_INCLUDE="/usr/include"
# Determine is sysroot or devkit specified?
if test "x$SYSROOT" != "x"; then
GCC_ROOT_INCLUDE="${SYSROOT%/}/usr/include"
fi
# Add root include mapping => /usr/include
GCC_INCLUDE_DEBUG_MAP_FLAGS="-fdebug-prefix-map=${GCC_ROOT_INCLUDE}/=/usr/include/"
# Add gcc system include mapping => /usr/local/gcc_include
# Find location of stddef.h using build C compiler
GCC_SYSTEM_INCLUDE=`$ECHO "#include <stddef.h>" | \
$CC $CFLAGS -v -E - 2>&1 | \
$GREP stddef | $TAIL -1 | $TR -s " " | $CUT -d'"' -f2`
if test "x$GCC_SYSTEM_INCLUDE" != "x"; then
GCC_SYSTEM_INCLUDE=`$DIRNAME $GCC_SYSTEM_INCLUDE`
GCC_INCLUDE_DEBUG_MAP_FLAGS="$GCC_INCLUDE_DEBUG_MAP_FLAGS \
-fdebug-prefix-map=${GCC_SYSTEM_INCLUDE}/=/usr/local/gcc_include/"
fi
# Add g++ system include mapping => /usr/local/gxx_include
# Find location of cstddef using build C++ compiler
GXX_SYSTEM_INCLUDE=`$ECHO "#include <cstddef>" | \
$CXX $CXXFLAGS -v -E -x c++ - 2>&1 | \
$GREP cstddef | $TAIL -1 | $TR -s " " | $CUT -d'"' -f2`
if test "x$GXX_SYSTEM_INCLUDE" != "x"; then
GXX_SYSTEM_INCLUDE=`$DIRNAME $GXX_SYSTEM_INCLUDE`
GCC_INCLUDE_DEBUG_MAP_FLAGS="$GCC_INCLUDE_DEBUG_MAP_FLAGS \
-fdebug-prefix-map=${GXX_SYSTEM_INCLUDE}/=/usr/local/gxx_include/"
fi
# Add to debug prefix cflags
DEBUG_PREFIX_CFLAGS="$DEBUG_PREFIX_CFLAGS $GCC_INCLUDE_DEBUG_MAP_FLAGS"
])
AC_DEFUN([FLAGS_SETUP_WARNINGS],
[
# Set default value.
@@ -425,13 +479,13 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
[
#### OS DEFINES, these should be independent on toolchain
if test "x$OPENJDK_TARGET_OS" = xlinux; then
CFLAGS_OS_DEF_JVM="-DLINUX"
CFLAGS_OS_DEF_JVM="-DLINUX -D_FILE_OFFSET_BITS=64"
CFLAGS_OS_DEF_JDK="-D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
CFLAGS_OS_DEF_JVM="-D_ALLBSD_SOURCE -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
CFLAGS_OS_DEF_JDK="-D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
elif test "x$OPENJDK_TARGET_OS" = xaix; then
CFLAGS_OS_DEF_JVM="-DAIX"
CFLAGS_OS_DEF_JVM="-DAIX -D_LARGE_FILES"
elif test "x$OPENJDK_TARGET_OS" = xbsd; then
CFLAGS_OS_DEF_JDK="-D_ALLBSD_SOURCE"
elif test "x$OPENJDK_TARGET_OS" = xwindows; then

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2024, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -56,8 +56,8 @@ COMMA := ,
# What make to use for main processing, after bootstrapping top-level Makefile.
MAKE := @MAKE@
# Make sure all shell commands are executed with the C locale
export LC_ALL := C
# Make sure all shell commands are executed with a proper locale
export LC_ALL := @LOCALE_USED@
# Make sure we override any local CLASSPATH variable
export CLASSPATH := @CLASSPATH@
@@ -191,7 +191,7 @@ PRODUCT_NAME := @PRODUCT_NAME@
PRODUCT_SUFFIX := @PRODUCT_SUFFIX@
JDK_RC_PLATFORM_NAME := @JDK_RC_PLATFORM_NAME@
JDK_RC_NAME := @JDK_RC_NAME@
JDK_RC_COMPANY_NAME:=@JDK_RC_COMPANY_NAME@
JDK_RC_COMPANY_NAME := @JDK_RC_COMPANY_NAME@
COMPANY_NAME := @COMPANY_NAME@
HOTSPOT_VM_DISTRO := @HOTSPOT_VM_DISTRO@
MACOSX_BUNDLE_NAME_BASE := @MACOSX_BUNDLE_NAME_BASE@

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2024, 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
@@ -389,6 +389,10 @@ AC_DEFUN_ONCE([TOOLCHAIN_POST_DETECTION],
# This is necessary since AC_PROG_CC defaults CFLAGS to "-g -O2"
CFLAGS="$ORG_CFLAGS"
CXXFLAGS="$ORG_CXXFLAGS"
# filter out some unwanted additions autoconf may add to CXX; we saw this on macOS with autoconf 2.72
UTIL_GET_NON_MATCHING_VALUES(cxx_filtered, $CXX, -std=c++11 -std=gnu++11)
CXX="$cxx_filtered"
])
# Check if a compiler is of the toolchain type we expect, and save the version

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2024, 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
@@ -199,7 +199,7 @@ AC_DEFUN([UTIL_GET_NON_MATCHING_VALUES],
if test -z "$legal_values"; then
$1="$2"
else
result=`$GREP -Fvx "$legal_values" <<< "$values_to_check" | $GREP -v '^$'`
result=`$GREP -Fvx -- "$legal_values" <<< "$values_to_check" | $GREP -v '^$'`
$1=${result//$'\n'/ }
fi
])
@@ -226,7 +226,7 @@ AC_DEFUN([UTIL_GET_MATCHING_VALUES],
if test -z "$illegal_values"; then
$1=""
else
result=`$GREP -Fx "$illegal_values" <<< "$values_to_check" | $GREP -v '^$'`
result=`$GREP -Fx -- "$illegal_values" <<< "$values_to_check" | $GREP -v '^$'`
$1=${result//$'\n'/ }
fi
])

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2020, 2024, 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
@@ -36,6 +36,10 @@ MACOS_X64_BOOT_JDK_EXT=tar.gz
MACOS_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_macos-x64_bin.tar.gz
MACOS_X64_BOOT_JDK_SHA256=af32e84c11009f72f783fdcdc9917efc277893988f097e198e2576875d1e88c1
MACOS_AARCH64_BOOT_JDK_EXT=tar.gz
MACOS_AARCH64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_macos-aarch64_bin.tar.gz
MACOS_AARCH64_BOOT_JDK_SHA256=f12e1e0a2dffc847951598f597c8ee60fb0913932f24b2b09c62cfd2f0f4dfb9
WINDOWS_X64_BOOT_JDK_EXT=zip
WINDOWS_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_windows-x64_bin.zip
WINDOWS_X64_BOOT_JDK_SHA256=5434faaf029e66e7ce6e75770ca384de476750984a7d2881ef7686894c4b4944

View File

@@ -223,6 +223,7 @@ JVM_VirtualThreadEnd
JVM_VirtualThreadMount
JVM_VirtualThreadUnmount
JVM_VirtualThreadHideFrames
JVM_VirtualThreadDisableSuspend
# Scoped values
JVM_EnsureMaterializedForStackWalk_func

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2013, 2024, 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
@@ -548,6 +548,7 @@ $(BUILDDIR)/$(gcc_ver)/Makefile \
$(PATHPRE) $(ENVS) $(GCC_CFG) $(EXTRA_CFLAGS) \
$(CONFIG) \
--with-sysroot=$(SYSROOT) \
--with-debug-prefix-map=$(OUTPUT_ROOT)=devkit \
--enable-languages=c,c++ \
--enable-shared \
--disable-nls \

View File

@@ -51,7 +51,7 @@ ifeq ($(call check-jvm-feature, compiler2), true)
endif
# Set the C++ standard
ADLC_CFLAGS += $(ADLC_LANGSTD_CXXFLAG)
ADLC_CFLAGS += $(ADLC_LANGSTD_CXXFLAGS)
# NOTE: The old build didn't set -DASSERT for windows but it doesn't seem to
# hurt.

View File

@@ -85,7 +85,7 @@ CFLAGS_VM_VERSION := \
DISABLED_WARNINGS_gcc := array-bounds comment delete-non-virtual-dtor \
empty-body implicit-fallthrough int-in-bool-context \
maybe-uninitialized missing-field-initializers parentheses \
maybe-uninitialized missing-field-initializers \
shift-negative-value unknown-pragmas
DISABLED_WARNINGS_clang := sometimes-uninitialized \

View File

@@ -48,9 +48,6 @@ ifneq ($(FDLIBM_CFLAGS), )
endif
ifeq ($(call isTargetOs, linux), true)
BUILD_LIBJVM_ostream.cpp_CXXFLAGS := -D_FILE_OFFSET_BITS=64
BUILD_LIBJVM_logFileOutput.cpp_CXXFLAGS := -D_FILE_OFFSET_BITS=64
BUILD_LIBJVM_sharedRuntimeTrig.cpp_CXXFLAGS := -DNO_PCH $(FDLIBM_CFLAGS) $(LIBJVM_FDLIBM_COPY_OPT_FLAG)
BUILD_LIBJVM_sharedRuntimeTrans.cpp_CXXFLAGS := -DNO_PCH $(FDLIBM_CFLAGS) $(LIBJVM_FDLIBM_COPY_OPT_FLAG)

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2016, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2016, 2024, 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
@@ -35,6 +35,7 @@ import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.net.InetAddress;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystems;
import java.time.LocalDateTime;
import java.time.ZoneId;
@@ -132,6 +133,8 @@ public class HelloClasslist {
String oldDate = String.format("%s%n",
DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.ROOT)
.format(new Date()));
StandardCharsets.US_ASCII.encode("");
StandardCharsets.UTF_8.encode("");
// A selection of trivial and common reflection operations
var instance = HelloClasslist.class.getConstructor().newInstance();

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 2024, 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
@@ -1289,25 +1289,58 @@ public class CLDRConverter {
*/
private static void generateTZDBShortNamesMap() throws IOException {
Files.walk(Path.of(tzDataDir), 1, FileVisitOption.FOLLOW_LINKS)
.filter(p -> p.toFile().isFile())
.filter(p -> p.toFile().isFile() && !p.endsWith("jdk11_backward"))
.forEach(p -> {
try {
String zone = null;
String rule = null;
String format = null;
boolean inVanguard = false;
boolean inRearguard = false;
for (var line : Files.readAllLines(p)) {
if (line.contains("#STDOFF")) continue;
// Interpret the line in rearguard mode so that STD/DST
// correctly handles negative DST cases, such as "GMT/IST"
// vs. "IST/GMT" case for Europe/Dublin
if (inVanguard) {
if (line.startsWith("# Rearguard")) {
inVanguard = false;
inRearguard = true;
}
continue;
} else if (line.startsWith("# Vanguard")) {
inVanguard = true;
continue;
}
if (inRearguard) {
if (line.startsWith("# End of rearguard")) {
inRearguard = false;
continue;
} else {
if (line.startsWith("#\t")) {
line = line.substring(1); // omit #
}
}
}
if (line.isBlank() || line.matches("^[ \t]*#.*")) {
// ignore blank/comment lines
continue;
}
// remove comments in-line
line = line.replaceAll("[ \t]*#.*", "");
// Zone line
if (line.startsWith("Zone")) {
if (zone != null) {
tzdbShortNamesMap.put(zone, format + NBSP + rule);
}
var zl = line.split("[ \t]+", -1);
zone = zl[1];
rule = zl[3];
format = zl[4];
} else {
if (zone != null) {
if (line.isBlank()) {
if (line.startsWith("Rule") ||
line.startsWith("Link")) {
tzdbShortNamesMap.put(zone, format + NBSP + rule);
zone = null;
rule = null;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2001, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,6 +32,7 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
@@ -339,9 +340,15 @@ public class GenerateCurrencyData {
validCurrencyCodes.substring(i * 7 + 3, i * 7 + 6));
checkCurrencyCode(currencyCode);
int tableEntry = mainTable[(currencyCode.charAt(0) - 'A') * A_TO_Z + (currencyCode.charAt(1) - 'A')];
if (tableEntry == INVALID_COUNTRY_ENTRY ||
(tableEntry & SPECIAL_CASE_COUNTRY_MASK) != 0 ||
(tableEntry & SIMPLE_CASE_COUNTRY_FINAL_CHAR_MASK) != (currencyCode.charAt(2) - 'A')) {
// Do not allow a future currency to be classified as an otherCurrency,
// otherwise it will leak out into Currency:getAvailableCurrencies
boolean futureCurrency = Arrays.asList(specialCaseNewCurrencies).contains(currencyCode);
boolean simpleCurrency = (tableEntry & SIMPLE_CASE_COUNTRY_FINAL_CHAR_MASK) == (currencyCode.charAt(2) - 'A');
// If neither a simple currency, or one defined in the future
// then the current currency is applicable to be added to the otherTable
if (!futureCurrency && !simpleCurrency) {
if (otherCurrenciesCount == maxOtherCurrencies) {
throw new RuntimeException("too many other currencies");
}

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2020, 2024, 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
@@ -23,7 +23,11 @@
# questions.
#
DISABLED_WARNINGS_java += this-escape restricted
# The base module should be built with all warnings enabled. When a
# new warning is added to javac, it can be temporarily added to the
# disabled warnings list.
#
# DISABLED_WARNINGS_java +=
DOCLINT += -Xdoclint:all/protected \
'-Xdoclint/package:java.*,javax.*'
@@ -37,7 +41,8 @@ EXCLUDE_FILES += \
EXCLUDES += java/lang/doc-files \
java/lang/classfile/snippet-files \
java/lang/classfile/components/snippet-files
java/lang/classfile/components/snippet-files \
java/lang/foreign/snippet-files
# Exclude BreakIterator classes that are just used in compile process to generate
# data files and shouldn't go in the product

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2020, 2024, 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
@@ -23,6 +23,10 @@
# questions.
#
# To the extent technically possible, this module should be built with
# -Werror and all lint warnings enabled. In particular,
# DISABLED_WARNINGS_java should not be augmented.
DOCLINT += -Xdoclint:all/protected \
'-Xdoclint/package:java.*,javax.*'

View File

@@ -449,7 +449,6 @@ else
LIBFREETYPE_LIBS := -lfreetype
endif
# gcc_ftobjs.c := maybe-uninitialized required for GCC 7 builds.
$(eval $(call SetupJdkLibrary, BUILD_LIBFREETYPE, \
NAME := freetype, \
OPTIMIZATION := HIGHEST, \
@@ -458,7 +457,6 @@ else
EXTRA_HEADER_DIRS := $(BUILD_LIBFREETYPE_HEADER_DIRS), \
DISABLED_WARNINGS_microsoft := 4267 4244 4996, \
DISABLED_WARNINGS_gcc := dangling-pointer stringop-overflow, \
DISABLED_WARNINGS_gcc_ftobjs.c := maybe-uninitialized, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
))

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2024, 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
@@ -47,7 +47,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBINSTRUMENT, \
LDFLAGS_macosx := -L$(call FindLibDirForModule, java.base), \
LDFLAGS_aix := -L$(SUPPORT_OUTPUTDIR)/native/java.base, \
LIBS := $(JDKLIB_LIBS), \
LIBS_unix := -ljava -ljvm $(LIBZ_LIBS), \
LIBS_unix := $(LIBZ_LIBS), \
LIBS_linux := -ljli $(LIBDL), \
LIBS_aix := -liconv -ljli_static $(LIBDL), \
LIBS_macosx := -ljli -liconv -framework Cocoa -framework Security \

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2020, 2024, 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
@@ -23,6 +23,10 @@
# questions.
#
# To the extent technically possible, this module should be built with
# -Werror and all lint warnings enabled. In particular,
# DISABLED_WARNINGS_java should not be augmented.
DOCLINT += -Xdoclint:all/protected \
'-Xdoclint/package:-com.sun.tools.*,-jdk.internal.*,sun.tools.serialver.resources.*'
JAVAC_FLAGS += -XDstringConcat=inline

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2020, 2024, 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
@@ -23,6 +23,8 @@
# questions.
#
DISABLED_WARNINGS_java += this-escape
# To the extent technically possible, this module should be built with
# -Werror and all lint warnings enabled. In particular,
# DISABLED_WARNINGS_java should not be augmented.
COPY += .xml .css .svg .js .js.template .png .txt

View File

@@ -107,6 +107,7 @@ $(eval $(call SetupJavaCompilation, BUILD_JDK_MICROBENCHMARK, \
--add-exports java.base/sun.invoke.util=ALL-UNNAMED \
--add-exports java.base/sun.security.util=ALL-UNNAMED \
--enable-preview \
-XDsuppressNotes \
-processor org.openjdk.jmh.generators.BenchmarkProcessor, \
JAVA_FLAGS := \
--add-exports java.base/jdk.internal.vm=ALL-UNNAMED \

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2020, 2024, 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
@@ -45,6 +45,10 @@ BUILD_LIBTEST_OUTPUT_DIR := $(OUTPUTDIR)/support/test/lib/native
BUILD_LIBTEST_IMAGE_DIR := $(TEST_IMAGE_DIR)/lib
ifeq ($(call isTargetOs, windows), false)
BUILD_LIBTEST_LIBRARIES_EXCLUDE += libFileUtils.c
endif
# This evaluation is expensive and should only be done if this target was
# explicitly called.
ifneq ($(filter build-test-lib-native, $(MAKECMDGOALS)), )

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2015, 2024, 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
@@ -857,6 +857,11 @@ else
exeinvoke.c exestack-gap.c exestack-tls.c libAsyncGetCallTraceTest.cpp
endif
ifeq ($(call And, $(call isTargetOs, linux) $(call isTargetCpu, aarch64)), false)
BUILD_HOTSPOT_JTREG_EXCLUDE += libTestSVEWithJNI.c
endif
BUILD_HOTSPOT_JTREG_EXECUTABLES_LIBS_exesigtest := -ljvm
ifeq ($(call isTargetOs, windows), true)

View File

@@ -1,6 +1,6 @@
/*
*
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007, 2024, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -1716,7 +1716,7 @@ public class Intro extends JPanel {
this.beginning = beg;
this.ending = end;
fm = surf.getMetrics(font);
java.util.Arrays.sort(members);
Arrays.sort(members);
cast.add("CONTRIBUTORS");
cast.add(" ");
cast.addAll(Arrays.asList(members));

View File

@@ -1,5 +1,5 @@
//
// Copyright (c) 2003, 2023, Oracle and/or its affiliates. All rights reserved.
// Copyright (c) 2003, 2024, Oracle and/or its affiliates. All rights reserved.
// Copyright (c) 2014, 2021, Red Hat, Inc. All rights reserved.
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
//
@@ -1237,7 +1237,7 @@ source %{
// r27 is not allocatable when compressed oops is on and heapbase is not
// zero, compressed klass pointers doesn't use r27 after JDK-8234794
if (UseCompressedOops && (CompressedOops::ptrs_base() != NULL)) {
if (UseCompressedOops && (CompressedOops::ptrs_base() != nullptr)) {
_NO_SPECIAL_REG32_mask.Remove(OptoReg::as_OptoReg(r27->as_VMReg()));
_NO_SPECIAL_REG_mask.Remove(OptoReg::as_OptoReg(r27->as_VMReg()));
_NO_SPECIAL_PTR_REG_mask.Remove(OptoReg::as_OptoReg(r27->as_VMReg()));
@@ -1581,7 +1581,7 @@ bool needs_releasing_store(const Node *n)
{
// assert n->is_Store();
StoreNode *st = n->as_Store();
return st->trailing_membar() != NULL;
return st->trailing_membar() != nullptr;
}
// predicate controlling translation of CAS
@@ -1593,9 +1593,9 @@ bool needs_acquiring_load_exclusive(const Node *n)
assert(is_CAS(n->Opcode(), true), "expecting a compare and swap");
LoadStoreNode* ldst = n->as_LoadStore();
if (is_CAS(n->Opcode(), false)) {
assert(ldst->trailing_membar() != NULL, "expected trailing membar");
assert(ldst->trailing_membar() != nullptr, "expected trailing membar");
} else {
return ldst->trailing_membar() != NULL;
return ldst->trailing_membar() != nullptr;
}
// so we can just return true here
@@ -1734,7 +1734,7 @@ void MachPrologNode::format(PhaseRegAlloc *ra_, outputStream *st) const {
st->print("mov rscratch1, #%d\n\t", framesize - 2 * wordSize);
st->print("sub sp, sp, rscratch1");
}
if (C->stub_function() == NULL && BarrierSet::barrier_set()->barrier_set_nmethod() != NULL) {
if (C->stub_function() == nullptr && BarrierSet::barrier_set()->barrier_set_nmethod() != nullptr) {
st->print("\n\t");
st->print("ldr rscratch1, [guard]\n\t");
st->print("dmb ishld\n\t");
@@ -1783,9 +1783,9 @@ void MachPrologNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
__ build_frame(framesize);
if (C->stub_function() == NULL) {
if (C->stub_function() == nullptr) {
BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
if (BarrierSet::barrier_set()->barrier_set_nmethod() != NULL) {
if (BarrierSet::barrier_set()->barrier_set_nmethod() != nullptr) {
// Dummy labels for just measuring the code size
Label dummy_slow_path;
Label dummy_continuation;
@@ -2153,12 +2153,12 @@ void MachSpillCopyNode::format(PhaseRegAlloc *ra_, outputStream *st) const {
if (!ra_)
st->print("N%d = SpillCopy(N%d)", _idx, in(1)->_idx);
else
implementation(NULL, ra_, false, st);
implementation(nullptr, ra_, false, st);
}
#endif
void MachSpillCopyNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
implementation(&cbuf, ra_, false, NULL);
implementation(&cbuf, ra_, false, nullptr);
}
uint MachSpillCopyNode::size(PhaseRegAlloc *ra_) const {
@@ -2249,7 +2249,7 @@ int HandlerImpl::emit_exception_handler(CodeBuffer& cbuf)
// That's why we must use the macroassembler to generate a handler.
C2_MacroAssembler _masm(&cbuf);
address base = __ start_a_stub(size_exception_handler());
if (base == NULL) {
if (base == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return 0; // CodeBuffer::expand failed
}
@@ -2267,7 +2267,7 @@ int HandlerImpl::emit_deopt_handler(CodeBuffer& cbuf)
// That's why we must use the macroassembler to generate a handler.
C2_MacroAssembler _masm(&cbuf);
address base = __ start_a_stub(size_deopt_handler());
if (base == NULL) {
if (base == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return 0; // CodeBuffer::expand failed
}
@@ -2377,7 +2377,7 @@ int Matcher::min_vector_size(const BasicType bt) {
return MIN2(size, max_size);
}
int Matcher::superword_max_vector_size(const BasicType bt) {
int Matcher::max_vector_size_auto_vectorization(const BasicType bt) {
return Matcher::max_vector_size(bt);
}
@@ -2410,7 +2410,7 @@ MachOper* Matcher::pd_specialize_generic_vector_operand(MachOper* generic_opnd,
case Op_VecX: return new vecXOper();
}
ShouldNotReachHere();
return NULL;
return nullptr;
}
bool Matcher::is_reg2reg_move(MachNode* m) {
@@ -2583,7 +2583,7 @@ Assembler::Condition to_assembler_cond(BoolTest::mask cond) {
// Binary src (Replicate con)
bool is_valid_sve_arith_imm_pattern(Node* n, Node* m) {
if (n == NULL || m == NULL) {
if (n == nullptr || m == nullptr) {
return false;
}
@@ -2624,7 +2624,7 @@ bool is_valid_sve_arith_imm_pattern(Node* n, Node* m) {
// (XorV src (Replicate m1))
// (XorVMask src (MaskAll m1))
bool is_vector_bitwise_not_pattern(Node* n, Node* m) {
if (n != NULL && m != NULL) {
if (n != nullptr && m != nullptr) {
return (n->Opcode() == Op_XorV || n->Opcode() == Op_XorVMask) &&
VectorNode::is_all_ones_vector(m);
}
@@ -3430,7 +3430,7 @@ encode %{
C2_MacroAssembler _masm(&cbuf);
Register dst_reg = as_Register($dst$$reg);
address con = (address)$src$$constant;
if (con == NULL || con == (address)1) {
if (con == nullptr || con == (address)1) {
ShouldNotReachHere();
} else {
relocInfo::relocType rtype = $src->constant_reloc();
@@ -3473,7 +3473,7 @@ encode %{
C2_MacroAssembler _masm(&cbuf);
Register dst_reg = as_Register($dst$$reg);
address con = (address)$src$$constant;
if (con == NULL) {
if (con == nullptr) {
ShouldNotReachHere();
} else {
relocInfo::relocType rtype = $src->constant_reloc();
@@ -3492,7 +3492,7 @@ encode %{
C2_MacroAssembler _masm(&cbuf);
Register dst_reg = as_Register($dst$$reg);
address con = (address)$src$$constant;
if (con == NULL) {
if (con == nullptr) {
ShouldNotReachHere();
} else {
relocInfo::relocType rtype = $src->constant_reloc();
@@ -3675,7 +3675,7 @@ encode %{
Label miss;
C2_MacroAssembler _masm(&cbuf);
__ check_klass_subtype_slow_path(sub_reg, super_reg, temp_reg, result_reg,
NULL, &miss,
nullptr, &miss,
/*set_cond_codes:*/ true);
if ($primary) {
__ mov(result_reg, zr);
@@ -3691,7 +3691,7 @@ encode %{
if (!_method) {
// A call to a runtime wrapper, e.g. new, new_typeArray_Java, uncommon_trap.
call = __ trampoline_call(Address(addr, relocInfo::runtime_call_type));
if (call == NULL) {
if (call == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return;
}
@@ -3705,7 +3705,7 @@ encode %{
RelocationHolder rspec = _optimized_virtual ? opt_virtual_call_Relocation::spec(method_index)
: static_call_Relocation::spec(method_index);
call = __ trampoline_call(Address(addr, rspec));
if (call == NULL) {
if (call == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return;
}
@@ -3716,7 +3716,7 @@ encode %{
} else {
// Emit stub for static call
address stub = CompiledStaticCall::emit_to_interp_stub(cbuf, call);
if (stub == NULL) {
if (stub == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return;
}
@@ -3735,7 +3735,7 @@ encode %{
C2_MacroAssembler _masm(&cbuf);
int method_index = resolved_method_index(cbuf);
address call = __ ic_call((address)$meth$$method, method_index);
if (call == NULL) {
if (call == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return;
}
@@ -3764,7 +3764,7 @@ encode %{
CodeBlob *cb = CodeCache::find_blob(entry);
if (cb) {
address call = __ trampoline_call(Address(entry, relocInfo::runtime_call_type));
if (call == NULL) {
if (call == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return;
}
@@ -4663,7 +4663,7 @@ operand immP()
interface(CONST_INTER);
%}
// NULL Pointer Immediate
// Null Pointer Immediate
operand immP0()
%{
predicate(n->get_ptr() == 0);
@@ -4795,7 +4795,7 @@ operand immN()
interface(CONST_INTER);
%}
// Narrow NULL Pointer Immediate
// Narrow Null Pointer Immediate
operand immN0()
%{
predicate(n->get_narrowcon() == 0);
@@ -7219,7 +7219,7 @@ instruct loadConP0(iRegPNoSp dst, immP0 con)
match(Set dst con);
ins_cost(INSN_COST);
format %{ "mov $dst, $con\t# NULL ptr" %}
format %{ "mov $dst, $con\t# null pointer" %}
ins_encode(aarch64_enc_mov_p0(dst, con));
@@ -7233,7 +7233,7 @@ instruct loadConP1(iRegPNoSp dst, immP_1 con)
match(Set dst con);
ins_cost(INSN_COST);
format %{ "mov $dst, $con\t# NULL ptr" %}
format %{ "mov $dst, $con\t# null pointer" %}
ins_encode(aarch64_enc_mov_p1(dst, con));
@@ -7275,7 +7275,7 @@ instruct loadConN0(iRegNNoSp dst, immN0 con)
match(Set dst con);
ins_cost(INSN_COST);
format %{ "mov $dst, $con\t# compressed NULL ptr" %}
format %{ "mov $dst, $con\t# compressed null pointer" %}
ins_encode(aarch64_enc_mov_n0(dst, con));
@@ -8237,6 +8237,24 @@ instruct popCountL_mem(iRegINoSp dst, memory8 mem, vRegD tmp) %{
ins_pipe(pipe_class_default);
%}
// ============================================================================
// VerifyVectorAlignment Instruction
instruct verify_vector_alignment(iRegP addr, immL_positive_bitmaskI mask, rFlagsReg cr) %{
match(Set addr (VerifyVectorAlignment addr mask));
effect(KILL cr);
format %{ "verify_vector_alignment $addr $mask \t! verify alignment" %}
ins_encode %{
Label Lskip;
// check if masked bits of addr are zero
__ tst($addr$$Register, $mask$$constant);
__ br(Assembler::EQ, Lskip);
__ stop("verify_vector_alignment found a misaligned vector memory access");
__ bind(Lskip);
%}
ins_pipe(pipe_slow);
%}
// ============================================================================
// MemBar Instruction
@@ -8271,7 +8289,7 @@ instruct membar_acquire() %{
ins_cost(VOLATILE_REF_COST);
format %{ "membar_acquire\n\t"
"dmb ish" %}
"dmb ishld" %}
ins_encode %{
__ block_comment("membar_acquire");
@@ -8325,11 +8343,12 @@ instruct membar_release() %{
ins_cost(VOLATILE_REF_COST);
format %{ "membar_release\n\t"
"dmb ish" %}
"dmb ishst\n\tdmb ishld" %}
ins_encode %{
__ block_comment("membar_release");
__ membar(Assembler::LoadStore|Assembler::StoreStore);
__ membar(Assembler::StoreStore);
__ membar(Assembler::LoadStore);
%}
ins_pipe(pipe_serial);
%}
@@ -15238,7 +15257,7 @@ instruct clearArray_reg_reg(iRegL_R11 cnt, iRegP_R10 base, Universe dummy, rFlag
ins_encode %{
address tpc = __ zero_words($base$$Register, $cnt$$Register);
if (tpc == NULL) {
if (tpc == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return;
}
@@ -15259,7 +15278,7 @@ instruct clearArray_imm_reg(immL cnt, iRegP_R10 base, iRegL_R11 temp, Universe d
ins_encode %{
address tpc = __ zero_words($base$$Register, (uint64_t)$cnt$$constant);
if (tpc == NULL) {
if (tpc == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return;
}
@@ -17086,23 +17105,7 @@ instruct string_equalsL(iRegP_R1 str1, iRegP_R3 str2, iRegI_R4 cnt,
ins_encode %{
// Count is in 8-bit bytes; non-Compact chars are 16 bits.
__ string_equals($str1$$Register, $str2$$Register,
$result$$Register, $cnt$$Register, 1);
%}
ins_pipe(pipe_class_memory);
%}
instruct string_equalsU(iRegP_R1 str1, iRegP_R3 str2, iRegI_R4 cnt,
iRegI_R0 result, rFlagsReg cr)
%{
predicate(((StrEqualsNode*)n)->encoding() == StrIntrinsicNode::UU);
match(Set result (StrEquals (Binary str1 str2) cnt));
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt, KILL cr);
format %{ "String Equals $str1,$str2,$cnt -> $result" %}
ins_encode %{
// Count is in 8-bit bytes; non-Compact chars are 16 bits.
__ string_equals($str1$$Register, $str2$$Register,
$result$$Register, $cnt$$Register, 2);
$result$$Register, $cnt$$Register);
%}
ins_pipe(pipe_class_memory);
%}
@@ -17124,7 +17127,7 @@ instruct array_equalsB(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result,
address tpc = __ arrays_equals($ary1$$Register, $ary2$$Register,
$tmp1$$Register, $tmp2$$Register, $tmp3$$Register,
$result$$Register, $tmp$$Register, 1);
if (tpc == NULL) {
if (tpc == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return;
}
@@ -17149,7 +17152,7 @@ instruct array_equalsC(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result,
address tpc = __ arrays_equals($ary1$$Register, $ary2$$Register,
$tmp1$$Register, $tmp2$$Register, $tmp3$$Register,
$result$$Register, $tmp$$Register, 2);
if (tpc == NULL) {
if (tpc == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return;
}
@@ -17164,7 +17167,7 @@ instruct count_positives(iRegP_R1 ary1, iRegI_R2 len, iRegI_R0 result, rFlagsReg
format %{ "count positives byte[] $ary1,$len -> $result" %}
ins_encode %{
address tpc = __ count_positives($ary1$$Register, $len$$Register, $result$$Register);
if (tpc == NULL) {
if (tpc == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return;
}
@@ -17207,7 +17210,7 @@ instruct string_inflate(Universe dummy, iRegP_R0 src, iRegP_R1 dst, iRegI_R2 len
address tpc = __ byte_array_inflate($src$$Register, $dst$$Register, $len$$Register,
$vtmp0$$FloatRegister, $vtmp1$$FloatRegister,
$vtmp2$$FloatRegister, $tmp$$Register);
if (tpc == NULL) {
if (tpc == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return;
}

View File

@@ -1,5 +1,5 @@
//
// Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
// Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved.
// Copyright (c) 2020, 2023, Arm Limited. All rights reserved.
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
//
@@ -126,7 +126,7 @@ source %{
}
}
bool Matcher::match_rule_supported_superword(int opcode, int vlen, BasicType bt) {
bool Matcher::match_rule_supported_auto_vectorization(int opcode, int vlen, BasicType bt) {
if (UseSVE == 0) {
// These operations are not profitable to be vectorized on NEON, because no direct
// NEON instructions support them. But the match rule support for them is profitable for

View File

@@ -1,5 +1,5 @@
//
// Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
// Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved.
// Copyright (c) 2020, 2023, Arm Limited. All rights reserved.
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
//
@@ -116,7 +116,7 @@ source %{
}
}
bool Matcher::match_rule_supported_superword(int opcode, int vlen, BasicType bt) {
bool Matcher::match_rule_supported_auto_vectorization(int opcode, int vlen, BasicType bt) {
if (UseSVE == 0) {
// These operations are not profitable to be vectorized on NEON, because no direct
// NEON instructions support them. But the match rule support for them is profitable for

View File

@@ -187,6 +187,26 @@ void Address::lea(MacroAssembler *as, Register r) const {
zrf(Rd, 0);
}
// This encoding is similar (but not quite identical) to the encoding used
// by literal ld/st. see JDK-8324123.
// PRFM does not support writeback or pre/post index.
void Assembler::prfm(const Address &adr, prfop pfop) {
Address::mode mode = adr.getMode();
// PRFM does not support pre/post index
guarantee((mode != Address::pre) && (mode != Address::post), "prfm does not support pre/post indexing");
if (mode == Address::literal) {
starti;
f(0b11, 31, 30), f(0b011, 29, 27), f(0b000, 26, 24);
f(pfop, 4, 0);
int64_t offset = (adr.target() - pc()) >> 2;
sf(offset, 23, 5);
} else {
assert((mode == Address::base_plus_offset)
|| (mode == Address::base_plus_offset_reg), "must be base_plus_offset/base_plus_offset_reg");
ld_st2(as_Register(pfop), adr, 0b11, 0b10);
}
}
// An "all-purpose" add/subtract immediate, per ARM documentation:
// A "programmer-friendly" assembler may accept a negative immediate
// between -(2^24 -1) and -1 inclusive, causing it to convert a

View File

@@ -797,6 +797,8 @@ public:
void adrp(Register Rd, const Address &dest, uint64_t &offset) = delete;
void prfm(const Address &adr, prfop pfop = PLDL1KEEP);
#undef INSN
void add_sub_immediate(Instruction_aarch64 &current_insn, Register Rd, Register Rn,
@@ -1574,17 +1576,6 @@ public:
#undef INSN
#define INSN(NAME, size, op) \
void NAME(const Address &adr, prfop pfop = PLDL1KEEP) { \
ld_st2(as_Register(pfop), adr, size, op); \
}
INSN(prfm, 0b11, 0b10); // FIXME: PRFM should not be used with
// writeback modes, but the assembler
// doesn't enfore that.
#undef INSN
#define INSN(NAME, size, op) \
void NAME(FloatRegister Rt, const Address &adr) { \
ld_st2(as_Register(Rt), adr, size, op, 1); \

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2024, 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.
*
@@ -282,7 +282,8 @@ void LIR_Assembler::osr_entry() {
__ bind(L);
}
#endif
__ ldp(r19, r20, Address(OSR_buf, slot_offset));
__ ldr(r19, Address(OSR_buf, slot_offset));
__ ldr(r20, Address(OSR_buf, slot_offset + BytesPerWord));
__ str(r19, frame_map()->address_for_monitor_lock(i));
__ str(r20, frame_map()->address_for_monitor_object(i));
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2005, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -831,18 +831,12 @@ void LIRGenerator::do_LibmIntrinsic(Intrinsic* x) {
}
break;
case vmIntrinsics::_dlog:
if (StubRoutines::dlog() != nullptr) {
__ call_runtime_leaf(StubRoutines::dlog(), getThreadTemp(), result_reg, cc->args());
} else {
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dlog), getThreadTemp(), result_reg, cc->args());
}
// Math.log intrinsic is not implemented on AArch64 (see JDK-8210858),
// but we can still call the shared runtime.
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dlog), getThreadTemp(), result_reg, cc->args());
break;
case vmIntrinsics::_dlog10:
if (StubRoutines::dlog10() != nullptr) {
__ call_runtime_leaf(StubRoutines::dlog10(), getThreadTemp(), result_reg, cc->args());
} else {
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dlog10), getThreadTemp(), result_reg, cc->args());
}
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dlog10), getThreadTemp(), result_reg, cc->args());
break;
case vmIntrinsics::_dpow:
if (StubRoutines::dpow() != nullptr) {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2020, 2024, 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
@@ -111,10 +111,10 @@ void C2_MacroAssembler::fast_lock(Register objectReg, Register boxReg, Register
// Handle existing monitor.
bind(object_has_monitor);
// The object's monitor m is unlocked iff m->owner == NULL,
// The object's monitor m is unlocked iff m->owner == nullptr,
// otherwise m->owner may contain a thread or a stack address.
//
// Try to CAS m->owner from NULL to current thread.
// Try to CAS m->owner from null to current thread.
add(tmp, disp_hdr, (in_bytes(ObjectMonitor::owner_offset())-markWord::monitor_value));
cmpxchg(tmp, zr, rthread, Assembler::xword, /*acquire*/ true,
/*release*/ true, /*weak*/ false, tmp3Reg); // Sets flags for result

View File

@@ -28,6 +28,7 @@
#include "code/compiledIC.hpp"
#include "code/icBuffer.hpp"
#include "code/nmethod.hpp"
#include "logging/log.hpp"
#include "memory/resourceArea.hpp"
#include "runtime/mutexLocker.hpp"
#include "runtime/safepoint.hpp"
@@ -90,9 +91,9 @@ void CompiledDirectStaticCall::set_to_interpreted(const methodHandle& callee, ad
address stub = find_stub();
guarantee(stub != nullptr, "stub not found");
if (TraceICs) {
{
ResourceMark rm;
tty->print_cr("CompiledDirectStaticCall@" INTPTR_FORMAT ": set_to_interpreted %s",
log_trace(inlinecache)("CompiledDirectStaticCall@" INTPTR_FORMAT ": set_to_interpreted %s",
p2i(instruction_address()),
callee->name_and_sig_as_C_string());
}

View File

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2023, Red Hat, Inc. All rights reserved.
* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2023, 2024, 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
@@ -58,7 +58,7 @@ static char* reserve_at_eor_compatible_address(size_t size, bool aslr) {
0x7ffc, 0x7ffe, 0x7fff
};
static constexpr int num_immediates = sizeof(immediates) / sizeof(immediates[0]);
const int start_index = aslr ? os::random() : 0;
const int start_index = aslr ? os::next_random((int)os::javaTimeNanos()) : 0;
constexpr int max_tries = 64;
for (int ntry = 0; result == nullptr && ntry < max_tries; ntry ++) {
// As in os::attempt_reserve_memory_between, we alternate between higher and lower

View File

@@ -156,8 +156,6 @@
static void verify_deopt_original_pc( CompiledMethod* nm, intptr_t* unextended_sp);
#endif
const ImmutableOopMap* get_oop_map() const;
public:
// Constructors

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -195,7 +195,7 @@ inline bool frame::equal(frame other) const {
&& unextended_sp() == other.unextended_sp()
&& fp() == other.fp()
&& pc() == other.pc();
assert(!ret || ret && cb() == other.cb() && _deopt_state == other._deopt_state, "inconsistent construction");
assert(!ret || (cb() == other.cb() && _deopt_state == other._deopt_state), "inconsistent construction");
return ret;
}
@@ -359,20 +359,6 @@ inline int frame::sender_sp_ret_address_offset() {
return frame::sender_sp_offset - frame::return_addr_offset;
}
inline const ImmutableOopMap* frame::get_oop_map() const {
if (_cb == nullptr) return nullptr;
if (_cb->oop_maps() != nullptr) {
NativePostCallNop* nop = nativePostCallNop_at(_pc);
if (nop != nullptr && nop->displacement() != 0) {
int slot = ((nop->displacement() >> 24) & 0xff);
return _cb->oop_map_for_slot(slot, _pc);
}
const ImmutableOopMap* oop_map = OopMapSet::find_map(this);
return oop_map;
}
return nullptr;
}
//------------------------------------------------------------------------------
// frame::sender
inline frame frame::sender(RegisterMap* map) const {

View File

@@ -42,8 +42,12 @@ const bool CCallingConventionRequiresIntsAsLongs = false;
// and Operational Models for ARMv8"
#define CPU_MULTI_COPY_ATOMIC
// The expected size in bytes of a cache line.
#define DEFAULT_CACHE_LINE_SIZE 64
// The default padding size for data structures to avoid false sharing.
#define DEFAULT_PADDING_SIZE DEFAULT_CACHE_LINE_SIZE
// According to the ARMv8 ARM, "Concurrent modification and execution
// of instructions can lead to the resulting instruction performing
// any behavior that can be achieved by executing any sequence of

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2024, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2019, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -117,7 +117,7 @@ define_pd_global(intx, InlineSmallCode, 1000);
"Use prfm hint with specified distance in compiled code." \
"Value -1 means off.") \
range(-1, 4096) \
product(ccstr, OnSpinWaitInst, "none", DIAGNOSTIC, \
product(ccstr, OnSpinWaitInst, "yield", DIAGNOSTIC, \
"The instruction to use to implement " \
"java.lang.Thread.onSpinWait()." \
"Options: none, nop, isb, yield.") \
@@ -127,6 +127,8 @@ define_pd_global(intx, InlineSmallCode, 1000);
range(1, 99) \
product(ccstr, UseBranchProtection, "none", \
"Branch Protection to use: none, standard, pac-ret") \
product(bool, AlwaysMergeDMB, false, DIAGNOSTIC, \
"Always merge DMB instructions in code emission") \
// end of ARCH_FLAGS

View File

@@ -2066,14 +2066,21 @@ void MacroAssembler::membar(Membar_mask_bits order_constraint) {
address last = code()->last_insn();
if (last != nullptr && nativeInstruction_at(last)->is_Membar() && prev == last) {
NativeMembar *bar = NativeMembar_at(prev);
// We are merging two memory barrier instructions. On AArch64 we
// can do this simply by ORing them together.
bar->set_kind(bar->get_kind() | order_constraint);
BLOCK_COMMENT("merged membar");
} else {
code()->set_last_insn(pc());
dmb(Assembler::barrier(order_constraint));
// Don't promote DMB ST|DMB LD to DMB (a full barrier) because
// doing so would introduce a StoreLoad which the caller did not
// intend
if (AlwaysMergeDMB || bar->get_kind() == order_constraint
|| bar->get_kind() == AnyAny
|| order_constraint == AnyAny) {
// We are merging two memory barrier instructions. On AArch64 we
// can do this simply by ORing them together.
bar->set_kind(bar->get_kind() | order_constraint);
BLOCK_COMMENT("merged membar");
return;
}
}
code()->set_last_insn(pc());
dmb(Assembler::barrier(order_constraint));
}
bool MacroAssembler::try_merge_ldst(Register rt, const Address &adr, size_t size_in_bytes, bool is_store) {
@@ -4258,108 +4265,117 @@ void MacroAssembler::kernel_crc32_common_fold_using_crypto_pmull(Register crc, R
}
add(table, table, table_offset);
// Registers v0..v7 are used as data registers.
// Registers v16..v31 are used as tmp registers.
sub(buf, buf, 0x10);
ldrq(v1, Address(buf, 0x10));
ldrq(v2, Address(buf, 0x20));
ldrq(v3, Address(buf, 0x30));
ldrq(v4, Address(buf, 0x40));
ldrq(v5, Address(buf, 0x50));
ldrq(v6, Address(buf, 0x60));
ldrq(v7, Address(buf, 0x70));
ldrq(v8, Address(pre(buf, 0x80)));
ldrq(v0, Address(buf, 0x10));
ldrq(v1, Address(buf, 0x20));
ldrq(v2, Address(buf, 0x30));
ldrq(v3, Address(buf, 0x40));
ldrq(v4, Address(buf, 0x50));
ldrq(v5, Address(buf, 0x60));
ldrq(v6, Address(buf, 0x70));
ldrq(v7, Address(pre(buf, 0x80)));
movi(v25, T4S, 0);
mov(v25, S, 0, crc);
eor(v1, T16B, v1, v25);
movi(v31, T4S, 0);
mov(v31, S, 0, crc);
eor(v0, T16B, v0, v31);
ldrq(v0, Address(table));
// Register v16 contains constants from the crc table.
ldrq(v16, Address(table));
b(CRC_by128_loop);
align(OptoLoopAlignment);
BIND(CRC_by128_loop);
pmull (v9, T1Q, v1, v0, T1D);
pmull2(v10, T1Q, v1, v0, T2D);
ldrq(v1, Address(buf, 0x10));
eor3(v1, T16B, v9, v10, v1);
pmull (v17, T1Q, v0, v16, T1D);
pmull2(v18, T1Q, v0, v16, T2D);
ldrq(v0, Address(buf, 0x10));
eor3(v0, T16B, v17, v18, v0);
pmull (v11, T1Q, v2, v0, T1D);
pmull2(v12, T1Q, v2, v0, T2D);
ldrq(v2, Address(buf, 0x20));
eor3(v2, T16B, v11, v12, v2);
pmull (v19, T1Q, v1, v16, T1D);
pmull2(v20, T1Q, v1, v16, T2D);
ldrq(v1, Address(buf, 0x20));
eor3(v1, T16B, v19, v20, v1);
pmull (v13, T1Q, v3, v0, T1D);
pmull2(v14, T1Q, v3, v0, T2D);
ldrq(v3, Address(buf, 0x30));
eor3(v3, T16B, v13, v14, v3);
pmull (v21, T1Q, v2, v16, T1D);
pmull2(v22, T1Q, v2, v16, T2D);
ldrq(v2, Address(buf, 0x30));
eor3(v2, T16B, v21, v22, v2);
pmull (v15, T1Q, v4, v0, T1D);
pmull2(v16, T1Q, v4, v0, T2D);
ldrq(v4, Address(buf, 0x40));
eor3(v4, T16B, v15, v16, v4);
pmull (v23, T1Q, v3, v16, T1D);
pmull2(v24, T1Q, v3, v16, T2D);
ldrq(v3, Address(buf, 0x40));
eor3(v3, T16B, v23, v24, v3);
pmull (v17, T1Q, v5, v0, T1D);
pmull2(v18, T1Q, v5, v0, T2D);
ldrq(v5, Address(buf, 0x50));
eor3(v5, T16B, v17, v18, v5);
pmull (v25, T1Q, v4, v16, T1D);
pmull2(v26, T1Q, v4, v16, T2D);
ldrq(v4, Address(buf, 0x50));
eor3(v4, T16B, v25, v26, v4);
pmull (v19, T1Q, v6, v0, T1D);
pmull2(v20, T1Q, v6, v0, T2D);
ldrq(v6, Address(buf, 0x60));
eor3(v6, T16B, v19, v20, v6);
pmull (v27, T1Q, v5, v16, T1D);
pmull2(v28, T1Q, v5, v16, T2D);
ldrq(v5, Address(buf, 0x60));
eor3(v5, T16B, v27, v28, v5);
pmull (v21, T1Q, v7, v0, T1D);
pmull2(v22, T1Q, v7, v0, T2D);
ldrq(v7, Address(buf, 0x70));
eor3(v7, T16B, v21, v22, v7);
pmull (v29, T1Q, v6, v16, T1D);
pmull2(v30, T1Q, v6, v16, T2D);
ldrq(v6, Address(buf, 0x70));
eor3(v6, T16B, v29, v30, v6);
pmull (v23, T1Q, v8, v0, T1D);
pmull2(v24, T1Q, v8, v0, T2D);
ldrq(v8, Address(pre(buf, 0x80)));
eor3(v8, T16B, v23, v24, v8);
// Reuse registers v23, v24.
// Using them won't block the first instruction of the next iteration.
pmull (v23, T1Q, v7, v16, T1D);
pmull2(v24, T1Q, v7, v16, T2D);
ldrq(v7, Address(pre(buf, 0x80)));
eor3(v7, T16B, v23, v24, v7);
subs(len, len, 0x80);
br(Assembler::GE, CRC_by128_loop);
// fold into 512 bits
ldrq(v0, Address(table, 0x10));
// Use v31 for constants because v16 can be still in use.
ldrq(v31, Address(table, 0x10));
pmull (v10, T1Q, v1, v0, T1D);
pmull2(v11, T1Q, v1, v0, T2D);
eor3(v1, T16B, v10, v11, v5);
pmull (v17, T1Q, v0, v31, T1D);
pmull2(v18, T1Q, v0, v31, T2D);
eor3(v0, T16B, v17, v18, v4);
pmull (v12, T1Q, v2, v0, T1D);
pmull2(v13, T1Q, v2, v0, T2D);
eor3(v2, T16B, v12, v13, v6);
pmull (v19, T1Q, v1, v31, T1D);
pmull2(v20, T1Q, v1, v31, T2D);
eor3(v1, T16B, v19, v20, v5);
pmull (v14, T1Q, v3, v0, T1D);
pmull2(v15, T1Q, v3, v0, T2D);
eor3(v3, T16B, v14, v15, v7);
pmull (v21, T1Q, v2, v31, T1D);
pmull2(v22, T1Q, v2, v31, T2D);
eor3(v2, T16B, v21, v22, v6);
pmull (v16, T1Q, v4, v0, T1D);
pmull2(v17, T1Q, v4, v0, T2D);
eor3(v4, T16B, v16, v17, v8);
pmull (v23, T1Q, v3, v31, T1D);
pmull2(v24, T1Q, v3, v31, T2D);
eor3(v3, T16B, v23, v24, v7);
// fold into 128 bits
ldrq(v5, Address(table, 0x20));
pmull (v10, T1Q, v1, v5, T1D);
pmull2(v11, T1Q, v1, v5, T2D);
eor3(v4, T16B, v4, v10, v11);
// Use v17 for constants because v31 can be still in use.
ldrq(v17, Address(table, 0x20));
pmull (v25, T1Q, v0, v17, T1D);
pmull2(v26, T1Q, v0, v17, T2D);
eor3(v3, T16B, v3, v25, v26);
ldrq(v6, Address(table, 0x30));
pmull (v12, T1Q, v2, v6, T1D);
pmull2(v13, T1Q, v2, v6, T2D);
eor3(v4, T16B, v4, v12, v13);
// Use v18 for constants because v17 can be still in use.
ldrq(v18, Address(table, 0x30));
pmull (v27, T1Q, v1, v18, T1D);
pmull2(v28, T1Q, v1, v18, T2D);
eor3(v3, T16B, v3, v27, v28);
ldrq(v7, Address(table, 0x40));
pmull (v14, T1Q, v3, v7, T1D);
pmull2(v15, T1Q, v3, v7, T2D);
eor3(v1, T16B, v4, v14, v15);
// Use v19 for constants because v18 can be still in use.
ldrq(v19, Address(table, 0x40));
pmull (v29, T1Q, v2, v19, T1D);
pmull2(v30, T1Q, v2, v19, T2D);
eor3(v0, T16B, v3, v29, v30);
add(len, len, 0x80);
add(buf, buf, 0x10);
mov(tmp0, v1, D, 0);
mov(tmp1, v1, D, 1);
mov(tmp0, v0, D, 0);
mov(tmp1, v0, D, 1);
}
SkipIfEqual::SkipIfEqual(
@@ -5339,28 +5355,25 @@ address MacroAssembler::arrays_equals(Register a1, Register a2, Register tmp3,
// For Strings we're passed the address of the first characters in a1
// and a2 and the length in cnt1.
// elem_size is the element size in bytes: either 1 or 2.
// There are two implementations. For arrays >= 8 bytes, all
// comparisons (including the final one, which may overlap) are
// performed 8 bytes at a time. For strings < 8 bytes, we compare a
// halfword, then a short, and then a byte.
void MacroAssembler::string_equals(Register a1, Register a2,
Register result, Register cnt1, int elem_size)
Register result, Register cnt1)
{
Label SAME, DONE, SHORT, NEXT_WORD;
Register tmp1 = rscratch1;
Register tmp2 = rscratch2;
Register cnt2 = tmp2; // cnt2 only used in array length compare
assert(elem_size == 1 || elem_size == 2, "must be 2 or 1 byte");
assert_different_registers(a1, a2, result, cnt1, rscratch1, rscratch2);
#ifndef PRODUCT
{
const char kind = (elem_size == 2) ? 'U' : 'L';
char comment[64];
snprintf(comment, sizeof comment, "{string_equals%c", kind);
snprintf(comment, sizeof comment, "{string_equalsL");
BLOCK_COMMENT(comment);
}
#endif
@@ -5408,14 +5421,12 @@ void MacroAssembler::string_equals(Register a1, Register a2,
cbnzw(tmp1, DONE);
}
bind(TAIL01);
if (elem_size == 1) { // Only needed when comparing 1-byte elements
tbz(cnt1, 0, SAME); // 0-1 bytes left.
tbz(cnt1, 0, SAME); // 0-1 bytes left.
{
ldrb(tmp1, a1);
ldrb(tmp2, a2);
eorw(tmp1, tmp1, tmp2);
cbnzw(tmp1, DONE);
}
ldrb(tmp1, a1);
ldrb(tmp2, a2);
eorw(tmp1, tmp1, tmp2);
cbnzw(tmp1, DONE);
}
// Arrays are equal.
bind(SAME);

View File

@@ -1399,8 +1399,7 @@ public:
address arrays_equals(Register a1, Register a2, Register result, Register cnt1,
Register tmp1, Register tmp2, Register tmp3, int elem_size);
void string_equals(Register a1, Register a2, Register result, Register cnt1,
int elem_size);
void string_equals(Register a1, Register a2, Register result, Register cnt1);
void fill_words(Register base, Register cnt, Register value);
address zero_words(Register base, uint64_t cnt);
@@ -1425,11 +1424,6 @@ public:
FloatRegister vtmp2, FloatRegister vtmp3,
FloatRegister vtmp4, FloatRegister vtmp5);
void fast_log(FloatRegister vtmp0, FloatRegister vtmp1, FloatRegister vtmp2,
FloatRegister vtmp3, FloatRegister vtmp4, FloatRegister vtmp5,
FloatRegister tmpC1, FloatRegister tmpC2, FloatRegister tmpC3,
FloatRegister tmpC4, Register tmp1, Register tmp2,
Register tmp3, Register tmp4, Register tmp5);
void generate_dsin_dcos(bool isCos, address npio2_hw, address two_over_pi,
address pio2, address dsin_coef, address dcos_coef);
private:

View File

@@ -1,366 +0,0 @@
/* Copyright (c) 2018, Cavium. All rights reserved. (By BELLSOFT)
* Copyright (c) 2016, 2021, Intel Corporation. All rights reserved.
* Intel Math Library (LIBM) Source Code
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
#include "precompiled.hpp"
#include "asm/assembler.hpp"
#include "asm/assembler.inline.hpp"
#include "macroAssembler_aarch64.hpp"
// Algorithm idea is taken from x86 hotspot intrinsic and adapted for AARCH64.
//
// For mathematical background please refer to the following literature:
//
// Tang, Ping-Tak Peter.
// Table-driven implementation of the logarithm function
// in IEEE floating-point arithmetic.
// ACM Transactions on Mathematical Software (TOMS) 16, no. 4, 1990: 378-400.
/******************************************************************************/
// ALGORITHM DESCRIPTION - LOG()
// ---------------------
//
// x=2^k * mx, mx in [1,2)
//
// Get B~1/mx based on the output of frecpe instruction (B0)
// B = int((B0*2^7+0.5))/2^7
//
// Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
//
// Result: k*log(2) - log(B) + p(r) if |x-1| >= small value (2^-6) and
// p(r) is a degree 7 polynomial
// -log(B) read from data table (high, low parts)
// Result is formed from high and low parts
//
// Special cases:
// 1. log(NaN) = quiet NaN
// 2. log(+INF) = that INF
// 3. log(0) = -INF
// 4. log(1) = +0
// 5. log(x) = NaN if x < -0, including -INF
//
/******************************************************************************/
// Table with p(r) polynomial coefficients
// and table representation of logarithm values (hi and low parts)
ATTRIBUTE_ALIGNED(64) juint _L_tbl[] =
{
// coefficients of p(r) polynomial:
// _coeff[]
0x00000000UL, 0xbfd00000UL, // C1_0 = -0.25
0x92492492UL, 0x3fc24924UL, // C1_1 = 0.14285714285714285
0x55555555UL, 0x3fd55555UL, // C2_0 = 0.3333333333333333
0x3d6fb175UL, 0xbfc5555eUL, // C2_1 = -0.16666772842235003
0x00000000UL, 0xbfe00000UL, // C3_0 = -0.5
0x9999999aUL, 0x3fc99999UL, // C3_1 = 0.2
// _log2[]
0xfefa3800UL, 0x3fa62e42UL, // C4_0 = 0.043321698784993146
0x93c76730UL, 0x3ceef357UL, // C4_1 = 3.436201886692732e-15
// _L_tbl[] with logarithm values (hi and low parts)
0xfefa3800UL, 0x3fe62e42UL, 0x93c76730UL, 0x3d2ef357UL, 0xaa241800UL,
0x3fe5ee82UL, 0x0cda46beUL, 0x3d220238UL, 0x5c364800UL, 0x3fe5af40UL,
0xac10c9fbUL, 0x3d2dfa63UL, 0x26bb8c00UL, 0x3fe5707aUL, 0xff3303ddUL,
0x3d09980bUL, 0x26867800UL, 0x3fe5322eUL, 0x5d257531UL, 0x3d05ccc4UL,
0x835a5000UL, 0x3fe4f45aUL, 0x6d93b8fbUL, 0xbd2e6c51UL, 0x6f970c00UL,
0x3fe4b6fdUL, 0xed4c541cUL, 0x3cef7115UL, 0x27e8a400UL, 0x3fe47a15UL,
0xf94d60aaUL, 0xbd22cb6aUL, 0xf2f92400UL, 0x3fe43d9fUL, 0x481051f7UL,
0xbcfd984fUL, 0x2125cc00UL, 0x3fe4019cUL, 0x30f0c74cUL, 0xbd26ce79UL,
0x0c36c000UL, 0x3fe3c608UL, 0x7cfe13c2UL, 0xbd02b736UL, 0x17197800UL,
0x3fe38ae2UL, 0xbb5569a4UL, 0xbd218b7aUL, 0xad9d8c00UL, 0x3fe35028UL,
0x9527e6acUL, 0x3d10b83fUL, 0x44340800UL, 0x3fe315daUL, 0xc5a0ed9cUL,
0xbd274e93UL, 0x57b0e000UL, 0x3fe2dbf5UL, 0x07b9dc11UL, 0xbd17a6e5UL,
0x6d0ec000UL, 0x3fe2a278UL, 0xe797882dUL, 0x3d206d2bUL, 0x1134dc00UL,
0x3fe26962UL, 0x05226250UL, 0xbd0b61f1UL, 0xd8bebc00UL, 0x3fe230b0UL,
0x6e48667bUL, 0x3d12fc06UL, 0x5fc61800UL, 0x3fe1f863UL, 0xc9fe81d3UL,
0xbd2a7242UL, 0x49ae6000UL, 0x3fe1c078UL, 0xed70e667UL, 0x3cccacdeUL,
0x40f23c00UL, 0x3fe188eeUL, 0xf8ab4650UL, 0x3d14cc4eUL, 0xf6f29800UL,
0x3fe151c3UL, 0xa293ae49UL, 0xbd2edd97UL, 0x23c75c00UL, 0x3fe11af8UL,
0xbb9ddcb2UL, 0xbd258647UL, 0x8611cc00UL, 0x3fe0e489UL, 0x07801742UL,
0x3d1c2998UL, 0xe2d05400UL, 0x3fe0ae76UL, 0x887e7e27UL, 0x3d1f486bUL,
0x0533c400UL, 0x3fe078bfUL, 0x41edf5fdUL, 0x3d268122UL, 0xbe760400UL,
0x3fe04360UL, 0xe79539e0UL, 0xbd04c45fUL, 0xe5b20800UL, 0x3fe00e5aUL,
0xb1727b1cUL, 0xbd053ba3UL, 0xaf7a4800UL, 0x3fdfb358UL, 0x3c164935UL,
0x3d0085faUL, 0xee031800UL, 0x3fdf4aa7UL, 0x6f014a8bUL, 0x3d12cde5UL,
0x56b41000UL, 0x3fdee2a1UL, 0x5a470251UL, 0x3d2f27f4UL, 0xc3ddb000UL,
0x3fde7b42UL, 0x5372bd08UL, 0xbd246550UL, 0x1a272800UL, 0x3fde148aUL,
0x07322938UL, 0xbd1326b2UL, 0x484c9800UL, 0x3fddae75UL, 0x60dc616aUL,
0xbd1ea42dUL, 0x46def800UL, 0x3fdd4902UL, 0xe9a767a8UL, 0x3d235bafUL,
0x18064800UL, 0x3fdce42fUL, 0x3ec7a6b0UL, 0xbd0797c3UL, 0xc7455800UL,
0x3fdc7ff9UL, 0xc15249aeUL, 0xbd29b6ddUL, 0x693fa000UL, 0x3fdc1c60UL,
0x7fe8e180UL, 0x3d2cec80UL, 0x1b80e000UL, 0x3fdbb961UL, 0xf40a666dUL,
0x3d27d85bUL, 0x04462800UL, 0x3fdb56faUL, 0x2d841995UL, 0x3d109525UL,
0x5248d000UL, 0x3fdaf529UL, 0x52774458UL, 0xbd217cc5UL, 0x3c8ad800UL,
0x3fda93edUL, 0xbea77a5dUL, 0x3d1e36f2UL, 0x0224f800UL, 0x3fda3344UL,
0x7f9d79f5UL, 0x3d23c645UL, 0xea15f000UL, 0x3fd9d32bUL, 0x10d0c0b0UL,
0xbd26279eUL, 0x43135800UL, 0x3fd973a3UL, 0xa502d9f0UL, 0xbd152313UL,
0x635bf800UL, 0x3fd914a8UL, 0x2ee6307dUL, 0xbd1766b5UL, 0xa88b3000UL,
0x3fd8b639UL, 0xe5e70470UL, 0xbd205ae1UL, 0x776dc800UL, 0x3fd85855UL,
0x3333778aUL, 0x3d2fd56fUL, 0x3bd81800UL, 0x3fd7fafaUL, 0xc812566aUL,
0xbd272090UL, 0x687cf800UL, 0x3fd79e26UL, 0x2efd1778UL, 0x3d29ec7dUL,
0x76c67800UL, 0x3fd741d8UL, 0x49dc60b3UL, 0x3d2d8b09UL, 0xe6af1800UL,
0x3fd6e60eUL, 0x7c222d87UL, 0x3d172165UL, 0x3e9c6800UL, 0x3fd68ac8UL,
0x2756eba0UL, 0x3d20a0d3UL, 0x0b3ab000UL, 0x3fd63003UL, 0xe731ae00UL,
0xbd2db623UL, 0xdf596000UL, 0x3fd5d5bdUL, 0x08a465dcUL, 0xbd0a0b2aUL,
0x53c8d000UL, 0x3fd57bf7UL, 0xee5d40efUL, 0x3d1fadedUL, 0x0738a000UL,
0x3fd522aeUL, 0x8164c759UL, 0x3d2ebe70UL, 0x9e173000UL, 0x3fd4c9e0UL,
0x1b0ad8a4UL, 0xbd2e2089UL, 0xc271c800UL, 0x3fd4718dUL, 0x0967d675UL,
0xbd2f27ceUL, 0x23d5e800UL, 0x3fd419b4UL, 0xec90e09dUL, 0x3d08e436UL,
0x77333000UL, 0x3fd3c252UL, 0xb606bd5cUL, 0x3d183b54UL, 0x76be1000UL,
0x3fd36b67UL, 0xb0f177c8UL, 0x3d116ecdUL, 0xe1d36000UL, 0x3fd314f1UL,
0xd3213cb8UL, 0xbd28e27aUL, 0x7cdc9000UL, 0x3fd2bef0UL, 0x4a5004f4UL,
0x3d2a9cfaUL, 0x1134d800UL, 0x3fd26962UL, 0xdf5bb3b6UL, 0x3d2c93c1UL,
0x6d0eb800UL, 0x3fd21445UL, 0xba46baeaUL, 0x3d0a87deUL, 0x635a6800UL,
0x3fd1bf99UL, 0x5147bdb7UL, 0x3d2ca6edUL, 0xcbacf800UL, 0x3fd16b5cUL,
0xf7a51681UL, 0x3d2b9acdUL, 0x8227e800UL, 0x3fd1178eUL, 0x63a5f01cUL,
0xbd2c210eUL, 0x67616000UL, 0x3fd0c42dUL, 0x163ceae9UL, 0x3d27188bUL,
0x604d5800UL, 0x3fd07138UL, 0x16ed4e91UL, 0x3cf89cdbUL, 0x5626c800UL,
0x3fd01eaeUL, 0x1485e94aUL, 0xbd16f08cUL, 0x6cb3b000UL, 0x3fcf991cUL,
0xca0cdf30UL, 0x3d1bcbecUL, 0xe4dd0000UL, 0x3fcef5adUL, 0x65bb8e11UL,
0xbcca2115UL, 0xffe71000UL, 0x3fce530eUL, 0x6041f430UL, 0x3cc21227UL,
0xb0d49000UL, 0x3fcdb13dUL, 0xf715b035UL, 0xbd2aff2aUL, 0xf2656000UL,
0x3fcd1037UL, 0x75b6f6e4UL, 0xbd084a7eUL, 0xc6f01000UL, 0x3fcc6ffbUL,
0xc5962bd2UL, 0xbcf1ec72UL, 0x383be000UL, 0x3fcbd087UL, 0x595412b6UL,
0xbd2d4bc4UL, 0x575bd000UL, 0x3fcb31d8UL, 0x4eace1aaUL, 0xbd0c358dUL,
0x3c8ae000UL, 0x3fca93edUL, 0x50562169UL, 0xbd287243UL, 0x07089000UL,
0x3fc9f6c4UL, 0x6865817aUL, 0x3d29904dUL, 0xdcf70000UL, 0x3fc95a5aUL,
0x58a0ff6fUL, 0x3d07f228UL, 0xeb390000UL, 0x3fc8beafUL, 0xaae92cd1UL,
0xbd073d54UL, 0x6551a000UL, 0x3fc823c1UL, 0x9a631e83UL, 0x3d1e0ddbUL,
0x85445000UL, 0x3fc7898dUL, 0x70914305UL, 0xbd1c6610UL, 0x8b757000UL,
0x3fc6f012UL, 0xe59c21e1UL, 0xbd25118dUL, 0xbe8c1000UL, 0x3fc6574eUL,
0x2c3c2e78UL, 0x3d19cf8bUL, 0x6b544000UL, 0x3fc5bf40UL, 0xeb68981cUL,
0xbd127023UL, 0xe4a1b000UL, 0x3fc527e5UL, 0xe5697dc7UL, 0x3d2633e8UL,
0x8333b000UL, 0x3fc4913dUL, 0x54fdb678UL, 0x3d258379UL, 0xa5993000UL,
0x3fc3fb45UL, 0x7e6a354dUL, 0xbd2cd1d8UL, 0xb0159000UL, 0x3fc365fcUL,
0x234b7289UL, 0x3cc62fa8UL, 0x0c868000UL, 0x3fc2d161UL, 0xcb81b4a1UL,
0x3d039d6cUL, 0x2a49c000UL, 0x3fc23d71UL, 0x8fd3df5cUL, 0x3d100d23UL,
0x7e23f000UL, 0x3fc1aa2bUL, 0x44389934UL, 0x3d2ca78eUL, 0x8227e000UL,
0x3fc1178eUL, 0xce2d07f2UL, 0x3d21ef78UL, 0xb59e4000UL, 0x3fc08598UL,
0x7009902cUL, 0xbd27e5ddUL, 0x39dbe000UL, 0x3fbfe891UL, 0x4fa10afdUL,
0xbd2534d6UL, 0x830a2000UL, 0x3fbec739UL, 0xafe645e0UL, 0xbd2dc068UL,
0x63844000UL, 0x3fbda727UL, 0x1fa71733UL, 0x3d1a8940UL, 0x01bc4000UL,
0x3fbc8858UL, 0xc65aacd3UL, 0x3d2646d1UL, 0x8dad6000UL, 0x3fbb6ac8UL,
0x2bf768e5UL, 0xbd139080UL, 0x40b1c000UL, 0x3fba4e76UL, 0xb94407c8UL,
0xbd0e42b6UL, 0x5d594000UL, 0x3fb9335eUL, 0x3abd47daUL, 0x3d23115cUL,
0x2f40e000UL, 0x3fb8197eUL, 0xf96ffdf7UL, 0x3d0f80dcUL, 0x0aeac000UL,
0x3fb700d3UL, 0xa99ded32UL, 0x3cec1e8dUL, 0x4d97a000UL, 0x3fb5e95aUL,
0x3c5d1d1eUL, 0xbd2c6906UL, 0x5d208000UL, 0x3fb4d311UL, 0x82f4e1efUL,
0xbcf53a25UL, 0xa7d1e000UL, 0x3fb3bdf5UL, 0xa5db4ed7UL, 0x3d2cc85eUL,
0xa4472000UL, 0x3fb2aa04UL, 0xae9c697dUL, 0xbd20b6e8UL, 0xd1466000UL,
0x3fb1973bUL, 0x560d9e9bUL, 0xbd25325dUL, 0xb59e4000UL, 0x3fb08598UL,
0x7009902cUL, 0xbd17e5ddUL, 0xc006c000UL, 0x3faeea31UL, 0x4fc93b7bUL,
0xbd0e113eUL, 0xcdddc000UL, 0x3faccb73UL, 0x47d82807UL, 0xbd1a68f2UL,
0xd0fb0000UL, 0x3faaaef2UL, 0x353bb42eUL, 0x3d20fc1aUL, 0x149fc000UL,
0x3fa894aaUL, 0xd05a267dUL, 0xbd197995UL, 0xf2d4c000UL, 0x3fa67c94UL,
0xec19afa2UL, 0xbd029efbUL, 0xd42e0000UL, 0x3fa466aeUL, 0x75bdfd28UL,
0xbd2c1673UL, 0x2f8d0000UL, 0x3fa252f3UL, 0xe021b67bUL, 0x3d283e9aUL,
0x89e74000UL, 0x3fa0415dUL, 0x5cf1d753UL, 0x3d0111c0UL, 0xec148000UL,
0x3f9c63d2UL, 0x3f9eb2f3UL, 0x3d2578c6UL, 0x28c90000UL, 0x3f984925UL,
0x325a0c34UL, 0xbd2aa0baUL, 0x25980000UL, 0x3f9432a9UL, 0x928637feUL,
0x3d098139UL, 0x58938000UL, 0x3f902056UL, 0x06e2f7d2UL, 0xbd23dc5bUL,
0xa3890000UL, 0x3f882448UL, 0xda74f640UL, 0xbd275577UL, 0x75890000UL,
0x3f801015UL, 0x999d2be8UL, 0xbd10c76bUL, 0x59580000UL, 0x3f700805UL,
0xcb31c67bUL, 0x3d2166afUL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
0x80000000UL
};
// BEGIN dlog PSEUDO CODE:
// double dlog(double X) {
// // p(r) polynomial coefficients initialized from _L_tbl table
// double C1_0 = _L_tbl[0];
// double C1_1 = _L_tbl[1];
// double C2_0 = _L_tbl[2];
// double C2_1 = _L_tbl[3];
// double C3_0 = _L_tbl[4];
// double C3_1 = _L_tbl[5];
// double C4_0 = _L_tbl[6];
// double C4_1 = _L_tbl[7];
// // NOTE: operations with coefficients above are mostly vectorized in assembly
// // Check corner cases first
// if (X == 1.0d || AS_LONG_BITS(X) + 0x0010000000000000 <= 0x0010000000000000) {
// // NOTE: AS_LONG_BITS(X) + 0x0010000000000000 <= 0x0010000000000000 means
// // that X < 0 or X >= 0x7FF0000000000000 (0x7FF* is NaN or INF)
// if (X < 0 || X is NaN) return NaN;
// if (X == 1.0d) return 0.0d;
// if (X == 0.0d) return -INFINITY;
// if (X is INFINITY) return INFINITY;
// }
// // double representation is 2^exponent * mantissa
// // split X into two multipliers: 2^exponent and 1.0 * mantissa
// // pseudo function: zeroExponent(X) return value of X with exponent == 0
// float vtmp5 = 1/(float)(zeroExponent(X)); // reciprocal estimate
// // pseudo function: HI16(X) returns high 16 bits of double value
// int hiWord = HI16(X);
// double vtmp1 = (double) 0x77F0 << 48 | mantissa(X);
// hiWord -= 16;
// if (AS_LONG_BITS(hiWord) > 0x8000) {
// // SMALL_VALUE branch
// vtmp0 = vtmp1 = vtmp0 * AS_DOUBLE_BITS(0x47F0000000000000);
// hiWord = HI16(vtmp1);
// vtmp0 = AS_DOUBLE_BITS(AS_LONG_BITS(vtmp0) |= 0x3FF0000000000000);
// vtmp5 = (double) (1/(float)vtmp0);
// vtmp1 <<= 12;
// vtmp1 >>= 12;
// }
// // MAIN branch
// double vtmp3 = AS_LONG_BITS(vtmp1) & 0xffffe00000000000; // hi part
// int intB0 = AS_INT_BITS(vtmp5) + 0x8000;
// double vtmp0 = AS_DOUBLE_BITS(0xffffe00000000000 & (intB0<<29));
// int index = (intB0 >> 16) && 0xFF;
// double hiTableValue = _L_tbl[8+index]; // vtmp2[0]
// double lowTableValue = _L_tbl[16+index]; // vtmp2[1]
// vtmp5 = AS_DOUBLE_BITS(hiWord & 0x7FF0 - 0x3FE0); // 0x3FE = 1023 << 4
// vtmp1 -= vtmp3; // low part
// vtmp3 = vtmp3*vtmp0 - 1.0;
// hiTableValue += C4_0 * vtmp5;
// lowTableValue += C4_1 * vtmp5;
// double r = vtmp1 * vtmp0 + vtmp3; // r = B*mx-1.0, computed in hi and low parts
// vtmp0 = hiTableValue + r;
// hiTableValue -= vtmp0;
// double r2 = r*r;
// double r3 = r2*r;
// double p7 = C3_0*r2 + C2_0*r3 + C1_0*r2*r2 + C3_1*r3*r2 + C2_1*r3*r3
// + C1_1*r3*r2*r2; // degree 7 polynomial
// return p7 + (vtmp0 + ((r + hiTableValue) + lowTableValue));
// }
//
// END dlog PSEUDO CODE
// Generate log(X). X passed in register v0. Return log(X) into v0.
// Generator parameters: 10 temporary FPU registers and temporary general
// purpose registers
void MacroAssembler::fast_log(FloatRegister vtmp0, FloatRegister vtmp1,
FloatRegister vtmp2, FloatRegister vtmp3,
FloatRegister vtmp4, FloatRegister vtmp5,
FloatRegister C1, FloatRegister C2,
FloatRegister C3, FloatRegister C4,
Register tmp1, Register tmp2, Register tmp3,
Register tmp4, Register tmp5) {
Label DONE, CHECK_CORNER_CASES, SMALL_VALUE, MAIN,
CHECKED_CORNER_CASES, RETURN_MINF_OR_NAN;
const int64_t INF_OR_NAN_PREFIX = 0x7FF0;
const int64_t MINF_OR_MNAN_PREFIX = 0xFFF0;
const int64_t ONE_PREFIX = 0x3FF0;
movz(tmp2, ONE_PREFIX, 48);
movz(tmp4, 0x0010, 48);
fmovd(rscratch1, v0); // rscratch1 = AS_LONG_BITS(X)
lea(rscratch2, ExternalAddress((address)_L_tbl));
movz(tmp5, 0x7F);
add(tmp1, rscratch1, tmp4);
cmp(tmp2, rscratch1);
lsr(tmp3, rscratch1, 29);
ccmp(tmp1, tmp4, 0b1101 /* LE */, NE);
bfm(tmp3, tmp5, 41, 8);
fmovs(vtmp5, tmp3);
// Load coefficients from table. All coefficients are organized to be
// in specific order, because load below will load it in vectors to be used
// later in vector instructions. Load will be performed in parallel while
// branches are taken. C1 will contain vector of {C1_0, C1_1}, C2 =
// {C2_0, C2_1}, C3 = {C3_0, C3_1}, C4 = {C4_0, C4_1}
ld1(C1, C2, C3, C4, T2D, post(rscratch2, 64));
br(LE, CHECK_CORNER_CASES);
bind(CHECKED_CORNER_CASES);
// all corner cases are handled
frecpe(vtmp5, vtmp5, S); // vtmp5 ~= 1/vtmp5
lsr(tmp2, rscratch1, 48);
movz(tmp4, 0x77f0, 48);
fmovd(vtmp4, 1.0);
movz(tmp1, INF_OR_NAN_PREFIX, 48);
bfm(tmp4, rscratch1, 0, 51); // tmp4 = 0x77F0 << 48 | mantissa(X)
// vtmp1 = AS_DOUBLE_BITS(0x77F0 << 48 | mantissa(X)) == mx
fmovd(vtmp1, tmp4);
subw(tmp2, tmp2, 16);
subs(zr, tmp2, 0x8000);
br(GE, SMALL_VALUE);
bind(MAIN);
fmovs(tmp3, vtmp5); // int intB0 = AS_INT_BITS(B);
mov(tmp5, 0x3FE0);
uint64_t mask = UCONST64(0xffffe00000000000);
mov(rscratch1, mask);
andr(tmp2, tmp2, tmp1, LSR, 48); // hiWord & 0x7FF0
sub(tmp2, tmp2, tmp5); // tmp2 = hiWord & 0x7FF0 - 0x3FE0
scvtfwd(vtmp5, tmp2); // vtmp5 = (double)tmp2;
addw(tmp3, tmp3, 0x8000); // tmp3 = B
andr(tmp4, tmp4, rscratch1); // tmp4 == hi_part(mx)
andr(rscratch1, rscratch1, tmp3, LSL, 29); // rscratch1 = hi_part(B)
ubfm(tmp3, tmp3, 16, 23); // int index = (intB0 >> 16) && 0xFF
ldrq(vtmp2, Address(rscratch2, tmp3, Address::lsl(4))); // vtmp2 = _L_tbl[index]
// AS_LONG_BITS(vtmp1) & 0xffffe00000000000 // hi_part(mx)
fmovd(vtmp3, tmp4);
fmovd(vtmp0, rscratch1); // vtmp0 = hi_part(B)
fsubd(vtmp1, vtmp1, vtmp3); // vtmp1 -= vtmp3; // low_part(mx)
fnmsub(vtmp3, vtmp3, vtmp0, vtmp4); // vtmp3 = vtmp3*vtmp0 - vtmp4
fmlavs(vtmp2, T2D, C4, vtmp5, 0); // vtmp2 += {C4} * vtmp5
// vtmp1 = r = vtmp1 * vtmp0 + vtmp3 == low_part(mx) * hi_part(B) + (hi_part(mx)*hi_part(B) - 1.0)
fmaddd(vtmp1, vtmp1, vtmp0, vtmp3);
ins(vtmp5, D, vtmp2, 0, 1); // vtmp5 = vtmp2[1];
faddd(vtmp0, vtmp2, vtmp1); // vtmp0 = vtmp2 + vtmp1
fmlavs(C3, T2D, C2, vtmp1, 0); // {C3} += {C2}*vtmp1
fsubd(vtmp2, vtmp2, vtmp0); // vtmp2 -= vtmp0
fmuld(vtmp3, vtmp1, vtmp1); // vtmp3 = vtmp1*vtmp1
faddd(C4, vtmp1, vtmp2); // C4[0] = vtmp1 + vtmp2
fmlavs(C3, T2D, C1, vtmp3, 0); // {C3} += {C1}*vtmp3
faddd(C4, C4, vtmp5); // C4 += vtmp5
fmuld(vtmp4, vtmp3, vtmp1); // vtmp4 = vtmp3*vtmp1
faddd(vtmp0, vtmp0, C4); // vtmp0 += C4
fmlavs(C3, T2D, vtmp4, C3, 1); // {C3} += {vtmp4}*C3[1]
fmaddd(vtmp0, C3, vtmp3, vtmp0); // vtmp0 = C3 * vtmp3 + vtmp0
ret(lr);
block_comment("if (AS_LONG_BITS(hiWord) > 0x8000)"); {
bind(SMALL_VALUE);
movz(tmp2, 0x47F0, 48);
fmovd(vtmp1, tmp2);
fmuld(vtmp0, vtmp1, v0);
fmovd(vtmp1, vtmp0);
umov(tmp2, vtmp1, S, 3);
orr(vtmp0, T16B, vtmp0, vtmp4);
ushr(vtmp5, T2D, vtmp0, 27);
ushr(vtmp5, T4S, vtmp5, 2);
frecpe(vtmp5, vtmp5, S);
shl(vtmp1, T2D, vtmp1, 12);
ushr(vtmp1, T2D, vtmp1, 12);
b(MAIN);
}
block_comment("Corner cases"); {
bind(RETURN_MINF_OR_NAN);
movz(tmp1, MINF_OR_MNAN_PREFIX, 48);
orr(rscratch1, rscratch1, tmp1);
fmovd(v0, rscratch1);
ret(lr);
bind(CHECK_CORNER_CASES);
movz(tmp1, INF_OR_NAN_PREFIX, 48);
cmp(rscratch1, zr);
br(LE, RETURN_MINF_OR_NAN);
cmp(rscratch1, tmp1);
br(GE, DONE);
cmp(rscratch1, tmp2);
br(NE, CHECKED_CORNER_CASES);
fmovd(v0, 0.0);
}
bind(DONE);
ret(lr);
}

View File

@@ -28,7 +28,6 @@
#include "code/codeCache.hpp"
#include "code/compiledIC.hpp"
#include "gc/shared/collectedHeap.hpp"
#include "memory/resourceArea.hpp"
#include "nativeInst_aarch64.hpp"
#include "oops/oop.inline.hpp"
#include "runtime/handles.hpp"
@@ -189,8 +188,6 @@ void NativeCall::set_destination_mt_safe(address dest, bool assert_lock) {
CompiledICLocker::is_safe(addr_at(0)),
"concurrent code patching");
ResourceMark rm;
int code_size = NativeInstruction::instruction_size;
address addr_call = addr_at(0);
bool reachable = Assembler::reachable_from_branch_at(addr_call, dest);
assert(NativeCall::is_call_at(addr_call), "unexpected code at call site");
@@ -560,18 +557,23 @@ static bool is_movk_to_zr(uint32_t insn) {
}
#endif
void NativePostCallNop::patch(jint diff) {
bool NativePostCallNop::patch(int32_t oopmap_slot, int32_t cb_offset) {
if (((oopmap_slot & 0xff) != oopmap_slot) || ((cb_offset & 0xffffff) != cb_offset)) {
return false; // cannot encode
}
uint32_t data = ((uint32_t)oopmap_slot << 24) | cb_offset;
#ifdef ASSERT
assert(diff != 0, "must be");
assert(data != 0, "must be");
uint32_t insn1 = uint_at(4);
uint32_t insn2 = uint_at(8);
assert (is_movk_to_zr(insn1) && is_movk_to_zr(insn2), "must be");
#endif
uint32_t lo = diff & 0xffff;
uint32_t hi = (uint32_t)diff >> 16;
uint32_t lo = data & 0xffff;
uint32_t hi = data >> 16;
Instruction_aarch64::patch(addr_at(4), 20, 5, lo);
Instruction_aarch64::patch(addr_at(8), 20, 5, hi);
return true; // successfully encoded
}
void NativeDeoptInstruction::verify() {

View File

@@ -691,16 +691,20 @@ public:
return (insns & 0xffe0001fffffffff) == 0xf280001fd503201f;
}
jint displacement() const {
bool decode(int32_t& oopmap_slot, int32_t& cb_offset) const {
uint64_t movk_insns = *(uint64_t*)addr_at(4);
uint32_t lo = (movk_insns >> 5) & 0xffff;
uint32_t hi = (movk_insns >> (5 + 32)) & 0xffff;
uint32_t result = (hi << 16) | lo;
return (jint)result;
uint32_t data = (hi << 16) | lo;
if (data == 0) {
return false; // no information encoded
}
cb_offset = (data & 0xffffff);
oopmap_slot = (data >> 24) & 0xff;
return true; // decoding succeeded
}
void patch(jint diff);
bool patch(int32_t oopmap_slot, int32_t cb_offset);
void make_deopt();
};

View File

@@ -310,7 +310,7 @@ int SharedRuntime::java_calling_convention(const BasicType *sig_bt,
uint int_args = 0;
uint fp_args = 0;
uint stk_args = 0; // inc by 2 each time
uint stk_args = 0;
for (int i = 0; i < total_args_passed; i++) {
switch (sig_bt[i]) {
@@ -322,8 +322,9 @@ int SharedRuntime::java_calling_convention(const BasicType *sig_bt,
if (int_args < Argument::n_int_register_parameters_j) {
regs[i].set1(INT_ArgReg[int_args++]->as_VMReg());
} else {
stk_args = align_up(stk_args, 2);
regs[i].set1(VMRegImpl::stack2reg(stk_args));
stk_args += 2;
stk_args += 1;
}
break;
case T_VOID:
@@ -340,6 +341,7 @@ int SharedRuntime::java_calling_convention(const BasicType *sig_bt,
if (int_args < Argument::n_int_register_parameters_j) {
regs[i].set2(INT_ArgReg[int_args++]->as_VMReg());
} else {
stk_args = align_up(stk_args, 2);
regs[i].set2(VMRegImpl::stack2reg(stk_args));
stk_args += 2;
}
@@ -348,8 +350,9 @@ int SharedRuntime::java_calling_convention(const BasicType *sig_bt,
if (fp_args < Argument::n_float_register_parameters_j) {
regs[i].set1(FP_ArgReg[fp_args++]->as_VMReg());
} else {
stk_args = align_up(stk_args, 2);
regs[i].set1(VMRegImpl::stack2reg(stk_args));
stk_args += 2;
stk_args += 1;
}
break;
case T_DOUBLE:
@@ -357,6 +360,7 @@ int SharedRuntime::java_calling_convention(const BasicType *sig_bt,
if (fp_args < Argument::n_float_register_parameters_j) {
regs[i].set2(FP_ArgReg[fp_args++]->as_VMReg());
} else {
stk_args = align_up(stk_args, 2);
regs[i].set2(VMRegImpl::stack2reg(stk_args));
stk_args += 2;
}
@@ -367,7 +371,7 @@ int SharedRuntime::java_calling_convention(const BasicType *sig_bt,
}
}
return align_up(stk_args, 2);
return stk_args;
}
// Patch the callers callsite with entry to compiled code if it exists.

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2024, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2022, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -5327,19 +5327,6 @@ class StubGenerator: public StubCodeGenerator {
return start;
}
address generate_dlog() {
__ align(CodeEntryAlignment);
StubCodeMark mark(this, "StubRoutines", "dlog");
address entry = __ pc();
FloatRegister vtmp0 = v0, vtmp1 = v1, vtmp2 = v2, vtmp3 = v3, vtmp4 = v4,
vtmp5 = v5, tmpC1 = v16, tmpC2 = v17, tmpC3 = v18, tmpC4 = v19;
Register tmp1 = r0, tmp2 = r1, tmp3 = r2, tmp4 = r3, tmp5 = r4;
__ fast_log(vtmp0, vtmp1, vtmp2, vtmp3, vtmp4, vtmp5, tmpC1, tmpC2, tmpC3,
tmpC4, tmp1, tmp2, tmp3, tmp4, tmp5);
return entry;
}
// code for comparing 16 characters of strings with Latin1 and Utf16 encoding
void compare_string_16_x_LU(Register tmpL, Register tmpU, Label &DIFF1,
Label &DIFF2) {
@@ -5487,6 +5474,32 @@ class StubGenerator: public StubCodeGenerator {
return entry;
}
// r0 = input (float16)
// v0 = result (float)
// v1 = temporary float register
address generate_float16ToFloat() {
__ align(CodeEntryAlignment);
StubCodeMark mark(this, "StubRoutines", "float16ToFloat");
address entry = __ pc();
BLOCK_COMMENT("Entry:");
__ flt16_to_flt(v0, r0, v1);
__ ret(lr);
return entry;
}
// v0 = input (float)
// r0 = result (float16)
// v1 = temporary float register
address generate_floatToFloat16() {
__ align(CodeEntryAlignment);
StubCodeMark mark(this, "StubRoutines", "floatToFloat16");
address entry = __ pc();
BLOCK_COMMENT("Entry:");
__ flt_to_flt16(r0, v0, v1);
__ ret(lr);
return entry;
}
address generate_method_entry_barrier() {
__ align(CodeEntryAlignment);
StubCodeMark mark(this, "StubRoutines", "nmethod_entry_barrier");
@@ -8333,11 +8346,6 @@ class StubGenerator: public StubCodeGenerator {
StubRoutines::_updateBytesCRC32C = generate_updateBytesCRC32C();
}
// Disabled until JDK-8210858 is fixed
// if (vmIntrinsics::is_intrinsic_available(vmIntrinsics::_dlog)) {
// StubRoutines::_dlog = generate_dlog();
// }
if (vmIntrinsics::is_intrinsic_available(vmIntrinsics::_dsin)) {
StubRoutines::_dsin = generate_dsin_dcos(/* isCos = */ false);
}
@@ -8345,6 +8353,12 @@ class StubGenerator: public StubCodeGenerator {
if (vmIntrinsics::is_intrinsic_available(vmIntrinsics::_dcos)) {
StubRoutines::_dcos = generate_dsin_dcos(/* isCos = */ true);
}
if (vmIntrinsics::is_intrinsic_available(vmIntrinsics::_float16ToFloat) &&
vmIntrinsics::is_intrinsic_available(vmIntrinsics::_floatToFloat16)) {
StubRoutines::_hf2f = generate_float16ToFloat();
StubRoutines::_f2hf = generate_floatToFloat16();
}
}
void generate_continuation_stubs() {

View File

@@ -3603,11 +3603,9 @@ void TemplateTable::_new() {
// get InstanceKlass
__ load_resolved_klass_at_offset(r4, r3, r4, rscratch1);
// make sure klass is initialized & doesn't have finalizer
// make sure klass is fully initialized
__ ldrb(rscratch1, Address(r4, InstanceKlass::init_state_offset()));
__ cmp(rscratch1, (u1)InstanceKlass::fully_initialized);
__ br(Assembler::NE, slow_case);
// make sure klass is initialized
assert(VM_Version::supports_fast_class_init_checks(), "Optimization requires support for fast class initialization checks");
__ clinit_barrier(r4, rscratch1, nullptr /*L_fast_path*/, &slow_case);
// get instance_size in InstanceKlass (scaled to a count of bytes)
__ ldrw(r3,

View File

@@ -183,6 +183,9 @@ void VM_Version::initialize() {
if (FLAG_IS_DEFAULT(UseSIMDForMemoryOps)) {
FLAG_SET_DEFAULT(UseSIMDForMemoryOps, true);
}
if (FLAG_IS_DEFAULT(AlwaysMergeDMB)) {
FLAG_SET_DEFAULT(AlwaysMergeDMB, true);
}
}
// Cortex A53

View File

@@ -165,6 +165,7 @@ enum Ampere_CPU_Model {
static int dcache_line_size() { return _dcache_line_size; }
static int get_initial_sve_vector_length() { return _initial_sve_vector_length; };
// Aarch64 supports fast class initialization checks
static bool supports_fast_class_init_checks() { return true; }
constexpr static bool supports_stack_watermark_barrier() { return true; }

View File

@@ -197,7 +197,7 @@ VtableStub* VtableStubs::create_itable_stub(int itable_index) {
temp_reg, temp_reg2, itable_index, L_no_such_interface);
// Reduce "estimate" such that "padding" does not drop below 8.
const ptrdiff_t estimate = 124;
const ptrdiff_t estimate = 144;
const ptrdiff_t codesize = __ pc() - start_pc;
slop_delta = (int)(estimate - codesize);
slop_bytes += slop_delta;

View File

@@ -1,5 +1,5 @@
//
// Copyright (c) 2008, 2023, Oracle and/or its affiliates. All rights reserved.
// Copyright (c) 2008, 2024, 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
@@ -195,7 +195,7 @@ void emit_call_reloc(CodeBuffer &cbuf, const MachCallNode *n, MachOper *m, Reloc
assert(maybe_far_call(n) == !__ reachable_from_cache(target), "sanity");
assert(cache_reachable() == __ cache_fully_reachable(), "sanity");
assert(target != NULL, "need real address");
assert(target != nullptr, "need real address");
int ret_addr_offset = -1;
if (rspec.type() == relocInfo::runtime_call_type) {
@@ -290,7 +290,7 @@ void MachPrologNode::format( PhaseRegAlloc *ra_, outputStream *st ) const {
st->print ("SUB R_SP, R_SP, " SIZE_FORMAT,framesize);
}
if (C->stub_function() == NULL && BarrierSet::barrier_set()->barrier_set_nmethod() != NULL) {
if (C->stub_function() == nullptr && BarrierSet::barrier_set()->barrier_set_nmethod() != nullptr) {
st->print("ldr t0, [guard]\n\t");
st->print("ldr t1, [Rthread, #thread_disarmed_guard_value_offset]\n\t");
st->print("cmp t0, t1\n\t");
@@ -332,7 +332,7 @@ void MachPrologNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
__ sub_slow(SP, SP, framesize);
}
if (C->stub_function() == NULL) {
if (C->stub_function() == nullptr) {
BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
bs->nmethod_entry_barrier(&_masm);
}
@@ -454,7 +454,7 @@ uint MachSpillCopyNode::implementation( CodeBuffer *cbuf,
return size; // Self copy, no move
#ifdef TODO
if (bottom_type()->isa_vect() != NULL) {
if (bottom_type()->isa_vect() != nullptr) {
}
#endif
@@ -804,16 +804,16 @@ uint MachSpillCopyNode::implementation( CodeBuffer *cbuf,
#ifndef PRODUCT
void MachSpillCopyNode::format( PhaseRegAlloc *ra_, outputStream *st ) const {
implementation( NULL, ra_, false, st );
implementation(nullptr, ra_, false, st );
}
#endif
void MachSpillCopyNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
implementation( &cbuf, ra_, false, NULL );
implementation( &cbuf, ra_, false, nullptr );
}
uint MachSpillCopyNode::size(PhaseRegAlloc *ra_) const {
return implementation( NULL, ra_, true, NULL );
return implementation( nullptr, ra_, true, nullptr );
}
//=============================================================================
@@ -903,7 +903,7 @@ int HandlerImpl::emit_exception_handler(CodeBuffer& cbuf) {
C2_MacroAssembler _masm(&cbuf);
address base = __ start_a_stub(size_exception_handler());
if (base == NULL) {
if (base == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return 0; // CodeBuffer::expand failed
}
@@ -926,7 +926,7 @@ int HandlerImpl::emit_deopt_handler(CodeBuffer& cbuf) {
C2_MacroAssembler _masm(&cbuf);
address base = __ start_a_stub(size_deopt_handler());
if (base == NULL) {
if (base == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return 0; // CodeBuffer::expand failed
}
@@ -1002,7 +1002,7 @@ bool Matcher::match_rule_supported(int opcode) {
return true; // Per default match rules are supported.
}
bool Matcher::match_rule_supported_superword(int opcode, int vlen, BasicType bt) {
bool Matcher::match_rule_supported_auto_vectorization(int opcode, int vlen, BasicType bt) {
return match_rule_supported_vector(opcode, vlen, bt);
}
@@ -1026,11 +1026,11 @@ bool Matcher::vector_needs_partial_operations(Node* node, const TypeVect* vt) {
}
const RegMask* Matcher::predicate_reg_mask(void) {
return NULL;
return nullptr;
}
const TypeVectMask* Matcher::predicate_reg_type(const Type* elemTy, int length) {
return NULL;
return nullptr;
}
// Vector calling convention not yet implemented.
@@ -1074,7 +1074,7 @@ int Matcher::min_vector_size(const BasicType bt) {
return 8/type2aelembytes(bt);
}
int Matcher::superword_max_vector_size(const BasicType bt) {
int Matcher::max_vector_size_auto_vectorization(const BasicType bt) {
return Matcher::max_vector_size(bt);
}
@@ -1094,7 +1094,7 @@ bool Matcher::is_short_branch_offset(int rule, int br_size, int offset) {
MachOper* Matcher::pd_specialize_generic_vector_operand(MachOper* original_opnd, uint ideal_reg, bool is_temp) {
ShouldNotReachHere(); // generic vector operands not supported
return NULL;
return nullptr;
}
bool Matcher::is_reg2reg_move(MachNode* m) {
@@ -1242,7 +1242,7 @@ encode %{
// Emit stubs for static call.
address stub = CompiledStaticCall::emit_to_interp_stub(cbuf);
if (stub == NULL) {
if (stub == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return;
}
@@ -1987,7 +1987,7 @@ operand immNKlass()
interface(CONST_INTER);
%}
// NULL Pointer Immediate
// Null Pointer Immediate
operand immN0()
%{
predicate(n->get_narrowcon() == 0);
@@ -9193,7 +9193,7 @@ instruct clear_array(iRegX cnt, iRegP base, iRegI temp, iRegX zero, Universe dum
ins_encode %{
__ mov($zero$$Register, 0);
__ mov($temp$$Register, $cnt$$Register);
Label(loop);
Label loop;
__ bind(loop);
__ subs($temp$$Register, $temp$$Register, 4);
__ str($zero$$Register, Address($base$$Register, $temp$$Register), ge);

View File

@@ -1,5 +1,5 @@
//
// Copyright (c) 2008, 2022, Oracle and/or its affiliates. All rights reserved.
// Copyright (c) 2008, 2024, 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
@@ -431,7 +431,7 @@ OptoRegPair c2::return_value(int ideal_reg) {
// will point.
int MachCallStaticJavaNode::ret_addr_offset() {
bool far = (_method == NULL) ? maybe_far_call(this) : !cache_reachable();
bool far = (_method == nullptr) ? maybe_far_call(this) : !cache_reachable();
return ((far ? 3 : 1) + (_method_handle_invoke ? 1 : 0)) *
NativeInstruction::instruction_size;
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2008, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2008, 2024, 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
@@ -175,7 +175,7 @@ class Address {
if (_index == noreg) {
assert(-256 < _disp && _disp < 256, "encoding constraint");
return _mode | up(_disp) << 23 | 1 << 22 | _base->encoding() << 16 |
(abs(_disp) & 0xf0) << 4 | abs(_disp) & 0x0f;
(abs(_disp) & 0xf0) << 4 | (abs(_disp) & 0x0f);
} else {
assert(_index != PC && (_mode == basic_offset || _index != _base), "unpredictable instruction");
assert(_disp == 0 && _shift == lsl && _shift_imm == 0, "encoding constraint");

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2008, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2008, 2024, 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
@@ -2640,8 +2640,8 @@ void LIR_Assembler::rt_call(LIR_Opr result, address dest, const LIR_OprList* arg
void LIR_Assembler::volatile_move_op(LIR_Opr src, LIR_Opr dest, BasicType type, CodeEmitInfo* info) {
assert(src->is_double_cpu() && dest->is_address() ||
src->is_address() && dest->is_double_cpu(),
assert((src->is_double_cpu() && dest->is_address()) ||
(src->is_address() && dest->is_double_cpu()),
"Simple move_op is called for all other cases");
int null_check_offset;

View File

@@ -28,6 +28,7 @@
#include "code/icBuffer.hpp"
#include "code/nativeInst.hpp"
#include "code/nmethod.hpp"
#include "logging/log.hpp"
#include "memory/resourceArea.hpp"
#include "runtime/mutexLocker.hpp"
#include "runtime/safepoint.hpp"
@@ -105,9 +106,9 @@ void CompiledDirectStaticCall::set_to_interpreted(const methodHandle& callee, ad
address stub = find_stub();
guarantee(stub != nullptr, "stub not found");
if (TraceICs) {
{
ResourceMark rm;
tty->print_cr("CompiledDirectStaticCall@" INTPTR_FORMAT ": set_to_interpreted %s",
log_trace(inlinecache)("CompiledDirectStaticCall@" INTPTR_FORMAT ": set_to_interpreted %s",
p2i(instruction_address()),
callee->name_and_sig_as_C_string());
}

View File

@@ -99,8 +99,6 @@
}
#endif
const ImmutableOopMap* get_oop_map() const;
public:
// Constructors

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2008, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2008, 2024, 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
@@ -93,7 +93,7 @@ inline bool frame::equal(frame other) const {
&& unextended_sp() == other.unextended_sp()
&& fp() == other.fp()
&& pc() == other.pc();
assert(!ret || ret && cb() == other.cb() && _deopt_state == other._deopt_state, "inconsistent construction");
assert(!ret || (cb() == other.cb() && _deopt_state == other._deopt_state), "inconsistent construction");
return ret;
}
@@ -218,20 +218,6 @@ inline int frame::frame_size() const {
return sender_sp() - sp();
}
inline const ImmutableOopMap* frame::get_oop_map() const {
if (_cb == nullptr) return nullptr;
if (_cb->oop_maps() != nullptr) {
NativePostCallNop* nop = nativePostCallNop_at(_pc);
if (nop != nullptr && nop->displacement() != 0) {
int slot = ((nop->displacement() >> 24) & 0xff);
return _cb->oop_map_for_slot(slot, _pc);
}
const ImmutableOopMap* oop_map = OopMapSet::find_map(this);
return oop_map;
}
return nullptr;
}
inline int frame::compiled_frame_stack_argsize() const {
Unimplemented();
return 0;

View File

@@ -49,8 +49,12 @@ const bool HaveVFP = true;
// arm32 is not specified as multi-copy-atomic
// So we must not #define CPU_MULTI_COPY_ATOMIC
// The expected size in bytes of a cache line.
#define DEFAULT_CACHE_LINE_SIZE 64
// The default padding size for data structures to avoid false sharing.
#define DEFAULT_PADDING_SIZE DEFAULT_CACHE_LINE_SIZE
#define STUBROUTINES_MD_HPP "stubRoutines_arm.hpp"
#define INTERP_MASM_MD_HPP "interp_masm_arm.hpp"
#define TEMPLATETABLE_MD_HPP "templateTable_arm.hpp"

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2008, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2008, 2024, 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
@@ -162,7 +162,7 @@ void NativeMovConstReg::set_data(intptr_t x, address pc) {
unsigned int hi = (unsigned int)(x >> 16);
this->set_encoding((this->encoding() & 0xfff0f000) | (lo & 0xf000) << 4 | (lo & 0xfff));
next->set_encoding((next->encoding() & 0xfff0f000) | (hi & 0xf000) << 4 | (hi & 0xfff));
} else if (oop_addr == nullptr & metadata_addr == nullptr) {
} else if (oop_addr == nullptr && metadata_addr == nullptr) {
// A static ldr_literal (without oop or metadata relocation)
assert(is_ldr_literal(), "must be");
int offset = ldr_offset();
@@ -341,10 +341,6 @@ void NativePostCallNop::make_deopt() {
NativeDeoptInstruction::insert(addr_at(0));
}
void NativePostCallNop::patch(jint diff) {
// unsupported for now
}
void NativeDeoptInstruction::verify() {
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2008, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2008, 2024, 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
@@ -396,7 +396,7 @@ class NativeMovConstReg: public NativeInstruction {
inline NativeMovConstReg* nativeMovConstReg_at(address address) {
NativeInstruction* ni = nativeInstruction_at(address);
assert(ni->is_ldr_literal() || ni->is_pc_rel() ||
ni->is_movw() && VM_Version::supports_movw(), "must be");
(ni->is_movw() && VM_Version::supports_movw()), "must be");
return (NativeMovConstReg*)address;
}
@@ -438,8 +438,8 @@ inline NativeCall* nativeCall_before(address return_address) {
class NativePostCallNop: public NativeInstruction {
public:
bool check() const { return is_nop(); }
int displacement() const { return 0; }
void patch(jint diff);
bool decode(int32_t& oopmap_slot, int32_t& cb_offset) const { return false; }
bool patch(int32_t oopmap_slot, int32_t cb_offset) { return false; }
void make_deopt();
};

View File

@@ -441,7 +441,6 @@ int SharedRuntime::java_calling_convention(const BasicType *sig_bt,
}
}
if (slot & 1) slot++;
return slot;
}

View File

@@ -2862,6 +2862,7 @@ void LIR_Assembler::rt_call(LIR_Opr result, address dest,
if (info != nullptr) {
add_call_info_here(info);
}
assert(__ last_calls_return_pc() == __ pc(), "pcn not at return pc");
__ post_call_nop();
}

View File

@@ -167,9 +167,9 @@ void CompiledDirectStaticCall::set_to_interpreted(const methodHandle& callee, ad
address stub = find_stub();
guarantee(stub != nullptr, "stub not found");
if (TraceICs) {
{
ResourceMark rm;
tty->print_cr("CompiledDirectStaticCall@" INTPTR_FORMAT ": set_to_interpreted %s",
log_trace(inlinecache)("CompiledDirectStaticCall@" INTPTR_FORMAT ": set_to_interpreted %s",
p2i(instruction_address()),
callee->name_and_sig_as_C_string());
}

View File

@@ -350,7 +350,7 @@ inline void Thaw<ConfigT>::patch_caller_links(intptr_t* sp, intptr_t* bottom) {
if (is_entry_frame) {
callers_sp = _cont.entryFP();
} else {
CodeBlob* cb = CodeCache::find_blob(pc);
CodeBlob* cb = CodeCache::find_blob_fast(pc);
callers_sp = sp + cb->frame_size();
}
// set the back link

View File

@@ -136,7 +136,7 @@ bool frame::safe_for_sender(JavaThread *thread) {
// It should be safe to construct the sender though it might not be valid.
frame sender(sender_sp, sender_pc);
frame sender(sender_sp, sender_pc, nullptr /* unextended_sp */, nullptr /* fp */, sender_blob);
// Do we have a valid fp?
address sender_fp = (address) sender.fp();
@@ -196,12 +196,12 @@ frame frame::sender_for_entry_frame(RegisterMap *map) const {
assert(map->include_argument_oops(), "should be set by clear");
if (jfa->last_Java_pc() != nullptr) {
frame fr(jfa->last_Java_sp(), jfa->last_Java_pc());
frame fr(jfa->last_Java_sp(), jfa->last_Java_pc(), kind::code_blob);
return fr;
}
// Last_java_pc is not set, if we come here from compiled code. The
// constructor retrieves the PC from the stack.
frame fr(jfa->last_Java_sp());
frame fr(jfa->last_Java_sp(), nullptr, kind::code_blob);
return fr;
}
@@ -229,7 +229,7 @@ frame frame::sender_for_upcall_stub_frame(RegisterMap* map) const {
assert(jfa->last_Java_sp() > sp(), "must be above this frame on stack");
map->clear();
assert(map->include_argument_oops(), "should be set by clear");
frame fr(jfa->last_Java_sp(), jfa->last_Java_pc());
frame fr(jfa->last_Java_sp(), jfa->last_Java_pc(), kind::code_blob);
return fr;
}
@@ -451,7 +451,7 @@ intptr_t *frame::initial_deoptimization_info() {
#ifndef PRODUCT
// This is a generic constructor which is only used by pns() in debug.cpp.
// fp is dropped and gets determined by backlink.
frame::frame(void* sp, void* fp, void* pc) : frame((intptr_t*)sp, (address)pc) {}
frame::frame(void* sp, void* fp, void* pc) : frame((intptr_t*)sp, (address)pc, kind::unknown) {}
#endif
BasicObjectLock* frame::interpreter_frame_monitor_end() const {

View File

@@ -393,18 +393,26 @@
inline common_abi* own_abi() const { return (common_abi*) _sp; }
inline common_abi* callers_abi() const { return (common_abi*) _fp; }
enum class kind {
unknown, // The frame's pc is not necessarily in the CodeCache.
// CodeCache::find_blob_fast(void* pc) can yield wrong results in this case and must not be used.
code_blob, // The frame's pc is known to be in the CodeCache but it is likely not in an nmethod.
// CodeCache::find_blob_fast() will be correct but not faster in this case.
nmethod // This is likely the frame of a nmethod.
// The code cache lookup is optimized based on NativePostCallNops.
};
private:
// Initialize frame members (_pc and _sp must be given)
inline void setup();
inline void setup(kind knd);
public:
const ImmutableOopMap* get_oop_map() const;
// Constructors
inline frame(intptr_t* sp, intptr_t* fp, address pc);
inline frame(intptr_t* sp, address pc, intptr_t* unextended_sp = nullptr, intptr_t* fp = nullptr, CodeBlob* cb = nullptr);
inline frame(intptr_t* sp, address pc, kind knd = kind::nmethod);
inline frame(intptr_t* sp, address pc, intptr_t* unextended_sp, intptr_t* fp = nullptr, CodeBlob* cb = nullptr);
inline frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb, const ImmutableOopMap* oop_map);
inline frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb, const ImmutableOopMap* oop_map, bool on_heap);

View File

@@ -35,14 +35,14 @@
// Inline functions for ppc64 frames:
// Initialize frame members (_sp must be given)
inline void frame::setup() {
inline void frame::setup(kind knd) {
if (_pc == nullptr) {
_pc = (address)own_abi()->lr;
assert(_pc != nullptr, "must have PC");
}
if (_cb == nullptr) {
_cb = CodeCache::find_blob(_pc);
_cb = (knd == kind::nmethod) ? CodeCache::find_blob_fast(_pc) : CodeCache::find_blob(_pc);
}
if (_unextended_sp == nullptr) {
@@ -78,8 +78,8 @@ inline void frame::setup() {
// Continuation frames on the java heap are not aligned.
// When thawing interpreted frames the sp can be unaligned (see new_stack_frame()).
assert(_on_heap ||
(is_aligned(_sp, alignment_in_bytes) || is_interpreted_frame()) &&
(is_aligned(_fp, alignment_in_bytes) || !is_fully_initialized()),
((is_aligned(_sp, alignment_in_bytes) || is_interpreted_frame()) &&
(is_aligned(_fp, alignment_in_bytes) || !is_fully_initialized())),
"invalid alignment sp:" PTR_FORMAT " unextended_sp:" PTR_FORMAT " fp:" PTR_FORMAT, p2i(_sp), p2i(_unextended_sp), p2i(_fp));
}
@@ -89,21 +89,27 @@ inline void frame::setup() {
inline frame::frame() : _sp(nullptr), _pc(nullptr), _cb(nullptr), _oop_map(nullptr), _deopt_state(unknown),
_on_heap(false), DEBUG_ONLY(_frame_index(-1) COMMA) _unextended_sp(nullptr), _fp(nullptr) {}
inline frame::frame(intptr_t* sp) : frame(sp, nullptr) {}
inline frame::frame(intptr_t* sp) : frame(sp, nullptr, kind::nmethod) {}
inline frame::frame(intptr_t* sp, intptr_t* fp, address pc) : frame(sp, pc, nullptr, fp, nullptr) {}
inline frame::frame(intptr_t* sp, address pc, kind knd)
: _sp(sp), _pc(pc), _cb(nullptr), _oop_map(nullptr),
_on_heap(false), DEBUG_ONLY(_frame_index(-1) COMMA) _unextended_sp(sp), _fp(nullptr) {
setup(knd);
}
inline frame::frame(intptr_t* sp, address pc, intptr_t* unextended_sp, intptr_t* fp, CodeBlob* cb)
: _sp(sp), _pc(pc), _cb(cb), _oop_map(nullptr),
_on_heap(false), DEBUG_ONLY(_frame_index(-1) COMMA) _unextended_sp(unextended_sp), _fp(fp) {
setup();
setup(kind::nmethod);
}
inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb, const ImmutableOopMap* oop_map)
: _sp(sp), _pc(pc), _cb(cb), _oop_map(oop_map),
_on_heap(false), DEBUG_ONLY(_frame_index(-1) COMMA) _unextended_sp(unextended_sp), _fp(fp) {
assert(_cb != nullptr, "pc: " INTPTR_FORMAT, p2i(pc));
setup();
setup(kind::nmethod);
}
inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb,
@@ -113,7 +119,7 @@ inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address
// In thaw, non-heap frames use this constructor to pass oop_map. I don't know why.
assert(_on_heap || _cb != nullptr, "these frames are always heap frames");
if (cb != nullptr) {
setup();
setup(kind::nmethod);
}
#ifdef ASSERT
// The following assertion has been disabled because it would sometime trap for Continuation.run,
@@ -300,7 +306,7 @@ inline frame frame::sender_raw(RegisterMap* map) const {
// Must be native-compiled frame, i.e. the marshaling code for native
// methods that exists in the core system.
return frame(sender_sp(), sender_pc());
return frame(sender_sp(), sender_pc(), kind::code_blob);
}
inline frame frame::sender(RegisterMap* map) const {
@@ -361,20 +367,6 @@ inline void frame::set_saved_oop_result(RegisterMap* map, oop obj) {
*result_adr = obj;
}
inline const ImmutableOopMap* frame::get_oop_map() const {
if (_cb == nullptr) return nullptr;
if (_cb->oop_maps() != nullptr) {
NativePostCallNop* nop = nativePostCallNop_at(_pc);
if (nop != nullptr && nop->displacement() != 0) {
int slot = ((nop->displacement() >> 24) & 0xff);
return _cb->oop_map_for_slot(slot, _pc);
}
const ImmutableOopMap* oop_map = OopMapSet::find_map(this);
return oop_map;
}
return nullptr;
}
inline int frame::compiled_frame_stack_argsize() const {
assert(cb()->is_compiled(), "");
return (cb()->as_compiled_method()->method()->num_stack_arg_slots() * VMRegImpl::stack_slot_size) >> LogBytesPerWord;

View File

@@ -23,11 +23,10 @@
*
*/
#include "gc/shared/gcArguments.hpp"
#include "gc/shared/gc_globals.hpp"
#include "macroAssembler_ppc.hpp"
#include "precompiled.hpp"
#include "asm/macroAssembler.inline.hpp"
#include "gc/shared/gcArguments.hpp"
#include "gc/shared/gc_globals.hpp"
#include "gc/shenandoah/shenandoahBarrierSet.hpp"
#include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp"
#include "gc/shenandoah/shenandoahForwarding.hpp"
@@ -38,6 +37,7 @@
#include "gc/shenandoah/shenandoahThreadLocalData.hpp"
#include "gc/shenandoah/heuristics/shenandoahHeuristics.hpp"
#include "interpreter/interpreter.hpp"
#include "macroAssembler_ppc.hpp"
#include "runtime/javaThread.hpp"
#include "runtime/sharedRuntime.hpp"
#include "utilities/globalDefinitions.hpp"

View File

@@ -22,8 +22,8 @@
* questions.
*/
#include "asm/register.hpp"
#include "precompiled.hpp"
#include "asm/register.hpp"
#include "asm/macroAssembler.inline.hpp"
#include "code/codeBlob.hpp"
#include "code/vmreg.inline.hpp"

View File

@@ -48,9 +48,12 @@ const bool CCallingConventionRequiresIntsAsLongs = true;
// PPC64 is not specified as multi-copy-atomic
// So we must not #define CPU_MULTI_COPY_ATOMIC
// The expected size in bytes of a cache line, used to pad data structures.
// The expected size in bytes of a cache line.
#define DEFAULT_CACHE_LINE_SIZE 128
// The default padding size for data structures to avoid false sharing.
#define DEFAULT_PADDING_SIZE DEFAULT_CACHE_LINE_SIZE
#define SUPPORT_RESERVED_STACK_AREA
// If UseSIGTRAP is active, we only use the poll bit and no polling page.

View File

@@ -1187,8 +1187,12 @@ void MacroAssembler::post_call_nop() {
if (!Continuations::enabled()) {
return;
}
// We use CMPI/CMPLI instructions to encode post call nops.
// Refer to NativePostCallNop for details.
relocate(post_call_nop_Relocation::spec());
InlineSkippedInstructionsCounter skipCounter(this);
nop();
Assembler::emit_int32(Assembler::CMPLI_OPCODE | Assembler::opp_u_field(1, 9, 9));
assert(is_post_call_nop(*(int*)(pc() - 4)), "post call not not found");
}
void MacroAssembler::call_VM_base(Register oop_result,

View File

@@ -417,6 +417,12 @@ class MacroAssembler: public Assembler {
inline void call_stub_and_return_to(Register function_entry, Register return_pc);
void post_call_nop();
static bool is_post_call_nop(int instr_bits) {
const uint32_t nineth_bit = opp_u_field(1, 9, 9);
const uint32_t opcode_mask = 0b111110 << OPCODE_SHIFT;
const uint32_t pcn_mask = opcode_mask | nineth_bit;
return (instr_bits & pcn_mask) == (Assembler::CMPLI_OPCODE | nineth_bit);
}
//
// Java utilities

View File

@@ -429,8 +429,29 @@ void NativePostCallNop::make_deopt() {
NativeDeoptInstruction::insert(addr_at(0));
}
void NativePostCallNop::patch(jint diff) {
// unsupported for now
bool NativePostCallNop::patch(int32_t oopmap_slot, int32_t cb_offset) {
int32_t i2, i1;
assert(is_aligned(cb_offset, 4), "cb offset alignment does not match instruction alignment");
assert(!decode(i1, i2), "already patched");
cb_offset = cb_offset >> 2;
if (((oopmap_slot & ppc_oopmap_slot_mask) != oopmap_slot) || ((cb_offset & ppc_cb_offset_mask) != cb_offset)) {
return false; // cannot encode
}
const uint32_t data = oopmap_slot << ppc_cb_offset_bits | cb_offset;
const uint32_t lo_data = data & ppc_data_lo_mask;
const uint32_t hi_data = data >> ppc_data_lo_bits;
const uint32_t nineth_bit = 1 << (31 - 9);
uint32_t instr = Assembler::CMPLI_OPCODE | hi_data << ppc_data_hi_shift | nineth_bit | lo_data;
*(uint32_t*)addr_at(0) = instr;
int32_t oopmap_slot_dec, cb_offset_dec;
assert(is_post_call_nop(), "pcn not recognized");
assert(decode(oopmap_slot_dec, cb_offset_dec), "encoding failed");
assert(oopmap_slot == oopmap_slot_dec, "oopmap slot encoding is wrong");
assert((cb_offset << 2) == cb_offset_dec, "cb offset encoding is wrong");
return true; // encoding succeeded
}
void NativeDeoptInstruction::verify() {

View File

@@ -51,7 +51,7 @@ class NativeInstruction {
friend class Relocation;
public:
bool is_nop() const { return Assembler::is_nop(long_at(0)); }
bool is_post_call_nop() const { return MacroAssembler::is_post_call_nop(long_at(0)); }
bool is_jump() const { return Assembler::is_b(long_at(0)); } // See NativeGeneralJump.
@@ -506,10 +506,50 @@ class NativeMovRegMem: public NativeInstruction {
};
class NativePostCallNop: public NativeInstruction {
// We use CMPI/CMPLI to represent Post Call Nops (PCN)
// Bit |0 5|6 |9 |10|11 |16 31|
// +--------------------------------------------------------------+
// Field |OPCODE |BF |/ |L |RA |SI |
// +--------------------------------------------------------------+
// |0 0 1 0 1|DATA HI| 1| DATA LO |
// | |4 bits | | 22 bits |
//
// Bit 9 is always 1 for PCNs to distinguish them from regular CMPI/CMPLI
//
// Using both, CMPLI (opcode 10 = 0b001010) and CMPI (opcode 11 = 0b001011) for
// PCNs allows using bit 5 from the opcode to encode DATA HI.
enum {
ppc_data_lo_bits = 31 - 9,
ppc_data_lo_mask = right_n_bits(ppc_data_lo_bits),
ppc_data_hi_bits = 9 - 5,
ppc_data_hi_shift = ppc_data_lo_bits + 1,
ppc_data_hi_mask = right_n_bits(ppc_data_hi_bits) << ppc_data_hi_shift,
ppc_data_bits = ppc_data_lo_bits + ppc_data_hi_bits,
ppc_oopmap_slot_bits = 9,
ppc_oopmap_slot_mask = right_n_bits(ppc_oopmap_slot_bits),
ppc_cb_offset_bits = ppc_data_bits - ppc_oopmap_slot_bits,
ppc_cb_offset_mask = right_n_bits(ppc_cb_offset_bits),
};
public:
bool check() const { return is_nop(); }
int displacement() const { return 0; }
void patch(jint diff);
bool check() const { return is_post_call_nop(); }
bool decode(int32_t& oopmap_slot, int32_t& cb_offset) const {
uint32_t instr_bits = long_at(0);
uint32_t data_lo = instr_bits & ppc_data_lo_mask;
uint32_t data_hi = (instr_bits & ppc_data_hi_mask) >> 1;
uint32_t data = data_hi | data_lo;
if (data == 0) {
return false; // no data found
}
cb_offset = (data & ppc_cb_offset_mask) << 2;
oopmap_slot = data >> ppc_cb_offset_bits;
return true; // decoding succeeded
}
bool patch(int32_t oopmap_slot, int32_t cb_offset);
void make_deopt();
};

View File

@@ -1,5 +1,5 @@
//
// Copyright (c) 2011, 2023, Oracle and/or its affiliates. All rights reserved.
// Copyright (c) 2011, 2024, Oracle and/or its affiliates. All rights reserved.
// Copyright (c) 2012, 2023 SAP SE. All rights reserved.
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
//
@@ -1026,7 +1026,7 @@ bool followed_by_acquire(const Node *load) {
assert(load->is_Load(), "So far implemented only for loads.");
// Find MemBarAcquire.
const Node *mba = NULL;
const Node *mba = nullptr;
for (DUIterator_Fast imax, i = load->fast_outs(imax); i < imax; i++) {
const Node *out = load->fast_out(i);
if (out->Opcode() == Op_MemBarAcquire) {
@@ -1043,7 +1043,7 @@ bool followed_by_acquire(const Node *load) {
// edge to assure no other operations are in between the two nodes.
//
// So first get the Proj node, mem_proj, to use it to iterate forward.
Node *mem_proj = NULL;
Node *mem_proj = nullptr;
for (DUIterator_Fast imax, i = mba->fast_outs(imax); i < imax; i++) {
mem_proj = mba->fast_out(i); // Runs out of bounds and asserts if Proj not found.
assert(mem_proj->is_Proj(), "only projections here");
@@ -1270,7 +1270,7 @@ source %{
void CallStubImpl::emit_trampoline_stub(C2_MacroAssembler &_masm, int destination_toc_offset, int insts_call_instruction_offset) {
address stub = __ emit_trampoline_stub(destination_toc_offset, insts_call_instruction_offset);
if (stub == NULL) {
if (stub == nullptr) {
ciEnv::current()->record_out_of_memory_failure();
}
}
@@ -1305,11 +1305,11 @@ EmitCallOffsets emit_call_with_trampoline_stub(C2_MacroAssembler &_masm, address
offsets.insts_call_instruction_offset = __ offset();
// No entry point given, use the current pc.
if (entry_point == NULL) entry_point = __ pc();
if (entry_point == nullptr) entry_point = __ pc();
// Put the entry point as a constant into the constant pool.
const address entry_point_toc_addr = __ address_constant(entry_point, RelocationHolder::none);
if (entry_point_toc_addr == NULL) {
if (entry_point_toc_addr == nullptr) {
ciEnv::current()->record_out_of_memory_failure();
return offsets;
}
@@ -1355,8 +1355,8 @@ void MachConstantBaseNode::postalloc_expand(GrowableArray <Node *> *nodes, Phase
MachNode *m1 = new loadToc_hiNode();
MachNode *m2 = new loadToc_loNode();
m1->add_req(NULL);
m2->add_req(NULL, m1);
m1->add_req(nullptr);
m2->add_req(nullptr, m1);
m1->_opnds[0] = op_dst;
m2->_opnds[0] = op_dst;
m2->_opnds[1] = op_dst;
@@ -1398,7 +1398,7 @@ void MachPrologNode::format(PhaseRegAlloc *ra_, outputStream *st) const {
st->print("push frame %ld\n\t", -framesize);
}
if (C->stub_function() == NULL) {
if (C->stub_function() == nullptr) {
st->print("nmethod entry barrier\n\t");
}
}
@@ -1554,7 +1554,7 @@ void MachPrologNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
__ std(return_pc, _abi0(lr), callers_sp);
}
if (C->stub_function() == NULL) {
if (C->stub_function() == nullptr) {
BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
bs->nmethod_entry_barrier(&_masm, push_frame_temp);
}
@@ -1724,7 +1724,7 @@ uint MachSpillCopyNode::implementation(CodeBuffer *cbuf, PhaseRegAlloc *ra_, boo
if (src_lo == dst_lo && src_hi == dst_hi)
return size; // Self copy, no move.
if (bottom_type()->isa_vect() != NULL && ideal_reg() == Op_VecX) {
if (bottom_type()->isa_vect() != nullptr && ideal_reg() == Op_VecX) {
// Memory->Memory Spill.
if (src_lo_rc == rc_stack && dst_lo_rc == rc_stack) {
int src_offset = ra_->reg2offset(src_lo);
@@ -1910,16 +1910,16 @@ void MachSpillCopyNode::format(PhaseRegAlloc *ra_, outputStream *st) const {
if (!ra_)
st->print("N%d = SpillCopy(N%d)", _idx, in(1)->_idx);
else
implementation(NULL, ra_, false, st);
implementation(nullptr, ra_, false, st);
}
#endif
void MachSpillCopyNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
implementation(&cbuf, ra_, false, NULL);
implementation(&cbuf, ra_, false, nullptr);
}
uint MachSpillCopyNode::size(PhaseRegAlloc *ra_) const {
return implementation(NULL, ra_, true, NULL);
return implementation(nullptr, ra_, true, nullptr);
}
#ifndef PRODUCT
@@ -1985,7 +1985,7 @@ void MachUEPNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
assert_different_registers(ic_klass, receiver_klass, R11_scratch1, R3_ARG1);
assert(R11_scratch1 == R11, "need prologue scratch register");
// Check for NULL argument if we don't have implicit null checks.
// Check for nullptr argument if we don't have implicit null checks.
if (!ImplicitNullChecks || !os::zero_page_read_protected()) {
if (TrapBasedNullChecks) {
__ trap_null_check(R3_ARG1);
@@ -1999,7 +1999,7 @@ void MachUEPNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
__ bind(valid);
}
}
// Assume argument is not NULL, load klass from receiver.
// Assume argument is not nullptr, load klass from receiver.
__ load_klass(receiver_klass, R3_ARG1);
if (TrapBasedICMissChecks) {
@@ -2062,7 +2062,7 @@ int HandlerImpl::emit_exception_handler(CodeBuffer &cbuf) {
C2_MacroAssembler _masm(&cbuf);
address base = __ start_a_stub(size_exception_handler());
if (base == NULL) return 0; // CodeBuffer::expand failed
if (base == nullptr) return 0; // CodeBuffer::expand failed
int offset = __ offset();
__ b64_patchable((address)OptoRuntime::exception_blob()->content_begin(),
@@ -2079,7 +2079,7 @@ int HandlerImpl::emit_deopt_handler(CodeBuffer& cbuf) {
C2_MacroAssembler _masm(&cbuf);
address base = __ start_a_stub(size_deopt_handler());
if (base == NULL) return 0; // CodeBuffer::expand failed
if (base == nullptr) return 0; // CodeBuffer::expand failed
int offset = __ offset();
__ bl64_patchable((address)SharedRuntime::deopt_blob()->unpack(),
@@ -2173,7 +2173,7 @@ bool Matcher::match_rule_supported(int opcode) {
return true; // Per default match rules are supported.
}
bool Matcher::match_rule_supported_superword(int opcode, int vlen, BasicType bt) {
bool Matcher::match_rule_supported_auto_vectorization(int opcode, int vlen, BasicType bt) {
return match_rule_supported_vector(opcode, vlen, bt);
}
@@ -2193,11 +2193,11 @@ bool Matcher::vector_needs_partial_operations(Node* node, const TypeVect* vt) {
}
const RegMask* Matcher::predicate_reg_mask(void) {
return NULL;
return nullptr;
}
const TypeVectMask* Matcher::predicate_reg_type(const Type* elemTy, int length) {
return NULL;
return nullptr;
}
// Vector calling convention not yet implemented.
@@ -2242,7 +2242,7 @@ int Matcher::min_vector_size(const BasicType bt) {
return max_vector_size(bt); // Same as max.
}
int Matcher::superword_max_vector_size(const BasicType bt) {
int Matcher::max_vector_size_auto_vectorization(const BasicType bt) {
return Matcher::max_vector_size(bt);
}
@@ -2275,7 +2275,7 @@ bool Matcher::is_short_branch_offset(int rule, int br_size, int offset) {
/* TODO: PPC port
// Make a new machine dependent decode node (with its operands).
MachTypeNode *Matcher::make_decode_node() {
assert(CompressedOops::base() == NULL && CompressedOops::shift() == 0,
assert(CompressedOops::base() == nullptr && CompressedOops::shift() == 0,
"This method is only implemented for unscaled cOops mode so far");
MachTypeNode *decode = new decodeN_unscaledNode();
decode->set_opnd_array(0, new iRegPdstOper());
@@ -2286,7 +2286,7 @@ MachTypeNode *Matcher::make_decode_node() {
MachOper* Matcher::pd_specialize_generic_vector_operand(MachOper* original_opnd, uint ideal_reg, bool is_temp) {
ShouldNotReachHere(); // generic vector operands not supported
return NULL;
return nullptr;
}
bool Matcher::is_reg2reg_move(MachNode* m) {
@@ -2545,7 +2545,7 @@ encode %{
// Create a non-oop constant, no relocation needed.
// If it is an IC, it has a virtual_call_Relocation.
const_toc_addr = __ long_constant((jlong)$src$$constant);
if (const_toc_addr == NULL) {
if (const_toc_addr == nullptr) {
ciEnv::current()->record_out_of_memory_failure();
return;
}
@@ -2568,7 +2568,7 @@ encode %{
// Create a non-oop constant, no relocation needed.
// If it is an IC, it has a virtual_call_Relocation.
const_toc_addr = __ long_constant((jlong)$src$$constant);
if (const_toc_addr == NULL) {
if (const_toc_addr == nullptr) {
ciEnv::current()->record_out_of_memory_failure();
return;
}
@@ -2607,8 +2607,8 @@ loadConLNodesTuple loadConLNodesTuple_create(PhaseRegAlloc *ra_, Node *toc, immL
loadConL_loNode *m2 = new loadConL_loNode();
// inputs for new nodes
m1->add_req(NULL, toc);
m2->add_req(NULL, m1);
m1->add_req(nullptr, toc);
m2->add_req(nullptr, m1);
// operands for new nodes
m1->_opnds[0] = new iRegLdstOper(); // dst
@@ -2632,14 +2632,14 @@ loadConLNodesTuple loadConLNodesTuple_create(PhaseRegAlloc *ra_, Node *toc, immL
// Create result.
nodes._large_hi = m1;
nodes._large_lo = m2;
nodes._small = NULL;
nodes._small = nullptr;
nodes._last = nodes._large_lo;
assert(m2->bottom_type()->isa_long(), "must be long");
} else {
loadConLNode *m2 = new loadConLNode();
// inputs for new nodes
m2->add_req(NULL, toc);
m2->add_req(nullptr, toc);
// operands for new nodes
m2->_opnds[0] = new iRegLdstOper(); // dst
@@ -2653,8 +2653,8 @@ loadConLNodesTuple loadConLNodesTuple_create(PhaseRegAlloc *ra_, Node *toc, immL
ra_->set_pair(m2->_idx, reg_second, reg_first);
// Create result.
nodes._large_hi = NULL;
nodes._large_lo = NULL;
nodes._large_hi = nullptr;
nodes._large_lo = nullptr;
nodes._small = m2;
nodes._last = nodes._small;
assert(m2->bottom_type()->isa_long(), "must be long");
@@ -2687,10 +2687,10 @@ loadConLReplicatedNodesTuple loadConLReplicatedNodesTuple_create(Compile *C, Pha
xxspltdNode *m4 = new xxspltdNode();
// inputs for new nodes
m1->add_req(NULL, toc);
m2->add_req(NULL, m1);
m3->add_req(NULL, m2);
m4->add_req(NULL, m3);
m1->add_req(nullptr, toc);
m2->add_req(nullptr, m1);
m3->add_req(nullptr, m2);
m4->add_req(nullptr, m3);
// operands for new nodes
m1->_opnds[0] = new iRegLdstOper(); // dst
@@ -2727,7 +2727,7 @@ loadConLReplicatedNodesTuple loadConLReplicatedNodesTuple_create(Compile *C, Pha
nodes._large_lo = m2;
nodes._moved = m3;
nodes._replicated = m4;
nodes._small = NULL;
nodes._small = nullptr;
nodes._last = nodes._replicated;
assert(m2->bottom_type()->isa_long(), "must be long");
} else {
@@ -2736,7 +2736,7 @@ loadConLReplicatedNodesTuple loadConLReplicatedNodesTuple_create(Compile *C, Pha
xxspltdNode *m4 = new xxspltdNode();
// inputs for new nodes
m2->add_req(NULL, toc);
m2->add_req(nullptr, toc);
// operands for new nodes
m2->_opnds[0] = new iRegLdstOper(); // dst
@@ -2760,8 +2760,8 @@ loadConLReplicatedNodesTuple loadConLReplicatedNodesTuple_create(Compile *C, Pha
ra_->set_pair(m2->_idx, reg_second, reg_first);
// Create result.
nodes._large_hi = NULL;
nodes._large_lo = NULL;
nodes._large_hi = nullptr;
nodes._large_lo = nullptr;
nodes._small = m2;
nodes._moved = m3;
nodes._replicated = m4;
@@ -2815,7 +2815,7 @@ encode %{
const_toc_addr = __ long_constant((jlong)$src$$constant);
}
if (const_toc_addr == NULL) {
if (const_toc_addr == nullptr) {
ciEnv::current()->record_out_of_memory_failure();
return;
}
@@ -2846,7 +2846,7 @@ encode %{
const_toc_addr = __ long_constant((jlong)$src$$constant);
}
if (const_toc_addr == NULL) {
if (const_toc_addr == nullptr) {
ciEnv::current()->record_out_of_memory_failure();
return;
}
@@ -2870,8 +2870,8 @@ encode %{
loadConP_loNode *m2 = new loadConP_loNode();
// inputs for new nodes
m1->add_req(NULL, n_toc);
m2->add_req(NULL, m1);
m1->add_req(nullptr, n_toc);
m2->add_req(nullptr, m1);
// operands for new nodes
m1->_opnds[0] = new iRegPdstOper(); // dst
@@ -2896,7 +2896,7 @@ encode %{
loadConPNode *m2 = new loadConPNode();
// inputs for new nodes
m2->add_req(NULL, n_toc);
m2->add_req(nullptr, n_toc);
// operands for new nodes
m2->_opnds[0] = new iRegPdstOper(); // dst
@@ -2923,7 +2923,7 @@ encode %{
m2 = new loadConFNode();
}
// inputs for new nodes
m2->add_req(NULL, n_toc);
m2->add_req(nullptr, n_toc);
// operands for new nodes
m2->_opnds[0] = op_dst;
@@ -2947,7 +2947,7 @@ encode %{
m2 = new loadConDNode();
}
// inputs for new nodes
m2->add_req(NULL, n_toc);
m2->add_req(nullptr, n_toc);
// operands for new nodes
m2->_opnds[0] = op_dst;
@@ -3258,9 +3258,9 @@ encode %{
Label d; // dummy
__ bind(d);
Label* p = ($lbl$$label);
// `p' is `NULL' when this encoding class is used only to
// `p' is `nullptr' when this encoding class is used only to
// determine the size of the encoded instruction.
Label& l = (NULL == p)? d : *(p);
Label& l = (nullptr == p)? d : *(p);
int cc = $cmp$$cmpcode;
int flags_reg = $crx$$reg;
assert((Assembler::bcondCRbiIs1 & ~Assembler::bcondCRbiIs0) == 8, "check encoding");
@@ -3287,9 +3287,9 @@ encode %{
Label d; // dummy
__ bind(d);
Label* p = ($lbl$$label);
// `p' is `NULL' when this encoding class is used only to
// `p' is `nullptr' when this encoding class is used only to
// determine the size of the encoded instruction.
Label& l = (NULL == p)? d : *(p);
Label& l = (nullptr == p)? d : *(p);
int cc = $cmp$$cmpcode;
int flags_reg = $crx$$reg;
int bhint = Assembler::bhintNoHint;
@@ -3431,7 +3431,7 @@ encode %{
// Put the entry point as a constant into the constant pool.
const address entry_point_toc_addr = __ address_constant(entry_point, RelocationHolder::none);
if (entry_point_toc_addr == NULL) {
if (entry_point_toc_addr == nullptr) {
ciEnv::current()->record_out_of_memory_failure();
return;
}
@@ -3453,7 +3453,7 @@ encode %{
// The stub for call to interpreter.
address stub = CompiledStaticCall::emit_to_interp_stub(cbuf);
if (stub == NULL) {
if (stub == nullptr) {
ciEnv::current()->record_failure("CodeCache is full");
return;
}
@@ -3470,7 +3470,7 @@ encode %{
// Create a call trampoline stub for the given method.
const address entry_point = !($meth$$method) ? 0 : (address)$meth$$method;
const address entry_point_const = __ address_constant(entry_point, RelocationHolder::none);
if (entry_point_const == NULL) {
if (entry_point_const == nullptr) {
ciEnv::current()->record_out_of_memory_failure();
return;
}
@@ -3479,13 +3479,13 @@ encode %{
if (ra_->C->env()->failing()) { return; } // Code cache may be full.
// Build relocation at call site with ic position as data.
assert((_load_ic_hi_node != NULL && _load_ic_node == NULL) ||
(_load_ic_hi_node == NULL && _load_ic_node != NULL),
assert((_load_ic_hi_node != nullptr && _load_ic_node == nullptr) ||
(_load_ic_hi_node == nullptr && _load_ic_node != nullptr),
"must have one, but can't have both");
assert((_load_ic_hi_node != NULL && _load_ic_hi_node->_cbuf_insts_offset != -1) ||
(_load_ic_node != NULL && _load_ic_node->_cbuf_insts_offset != -1),
assert((_load_ic_hi_node != nullptr && _load_ic_hi_node->_cbuf_insts_offset != -1) ||
(_load_ic_node != nullptr && _load_ic_node->_cbuf_insts_offset != -1),
"must contain instruction offset");
const int virtual_call_oop_addr_offset = _load_ic_hi_node != NULL
const int virtual_call_oop_addr_offset = _load_ic_hi_node != nullptr
? _load_ic_hi_node->_cbuf_insts_offset
: _load_ic_node->_cbuf_insts_offset;
const address virtual_call_oop_addr = __ addr_at(virtual_call_oop_addr_offset);
@@ -3625,7 +3625,7 @@ encode %{
const address start_pc = __ pc();
#if defined(ABI_ELFv2)
address entry= !($meth$$method) ? NULL : (address)$meth$$method;
address entry= !($meth$$method) ? nullptr : (address)$meth$$method;
__ call_c(entry, relocInfo::runtime_call_type);
__ post_call_nop();
#else
@@ -3682,13 +3682,13 @@ encode %{
// Create nodes and operands for loading the env pointer.
if (fd->env() != NULL) {
if (fd->env() != nullptr) {
loadConLNodes_Env = loadConLNodesTuple_create(ra_, n_toc, new immLOper((jlong) fd->env()),
OptoReg::Name(R11_H_num), OptoReg::Name(R11_num));
} else {
loadConLNodes_Env._large_hi = NULL;
loadConLNodes_Env._large_lo = NULL;
loadConLNodes_Env._small = NULL;
loadConLNodes_Env._large_hi = nullptr;
loadConLNodes_Env._large_lo = nullptr;
loadConLNodes_Env._small = nullptr;
loadConLNodes_Env._last = new loadConL16Node();
loadConLNodes_Env._last->_opnds[0] = new iRegLdstOper();
loadConLNodes_Env._last->_opnds[1] = new immL16Oper(0);
@@ -3702,7 +3702,7 @@ encode %{
// mtctr node
MachNode *mtctr = new CallLeafDirect_mtctrNode();
assert(loadConLNodes_Entry._last != NULL, "entry must exist");
assert(loadConLNodes_Entry._last != nullptr, "entry must exist");
mtctr->add_req(0, loadConLNodes_Entry._last);
mtctr->_opnds[0] = new iRegLdstOper();
@@ -3722,7 +3722,7 @@ encode %{
call->_guaranteed_safepoint = false;
call->_oop_map = _oop_map;
guarantee(!_jvms, "You must clone the jvms and adapt the offsets by fix_jvms().");
call->_jvms = NULL;
call->_jvms = nullptr;
call->_jvmadj = _jvmadj;
call->_in_rms = _in_rms;
call->_nesting = _nesting;
@@ -3826,7 +3826,7 @@ frame %{
// opcodes. This simplifies the register allocator.
c_return_value %{
assert((ideal_reg >= Op_RegI && ideal_reg <= Op_RegL) ||
(ideal_reg == Op_RegN && CompressedOops::base() == NULL && CompressedOops::shift() == 0),
(ideal_reg == Op_RegN && CompressedOops::base() == nullptr && CompressedOops::shift() == 0),
"only return normal values");
// enum names from opcodes.hpp: Op_Node Op_Set Op_RegN Op_RegI Op_RegP Op_RegF Op_RegD Op_RegL
static int typeToRegLo[Op_RegL+1] = { 0, 0, R3_num, R3_num, R3_num, F1_num, F1_num, R3_num };
@@ -3837,7 +3837,7 @@ frame %{
// Location of compiled Java return values. Same as C
return_value %{
assert((ideal_reg >= Op_RegI && ideal_reg <= Op_RegL) ||
(ideal_reg == Op_RegN && CompressedOops::base() == NULL && CompressedOops::shift() == 0),
(ideal_reg == Op_RegN && CompressedOops::base() == nullptr && CompressedOops::shift() == 0),
"only return normal values");
// enum names from opcodes.hpp: Op_Node Op_Set Op_RegN Op_RegI Op_RegP Op_RegF Op_RegD Op_RegL
static int typeToRegLo[Op_RegL+1] = { 0, 0, R3_num, R3_num, R3_num, F1_num, F1_num, R3_num };
@@ -4110,7 +4110,7 @@ operand immN() %{
interface(CONST_INTER);
%}
// NULL Pointer Immediate
// Null Pointer Immediate
operand immN_0() %{
predicate(n->get_narrowcon() == 0);
match(ConN);
@@ -4682,7 +4682,7 @@ operand iRegN2P(iRegNsrc reg) %{
%}
operand iRegN2P_klass(iRegNsrc reg) %{
predicate(CompressedKlassPointers::base() == NULL && CompressedKlassPointers::shift() == 0);
predicate(CompressedKlassPointers::base() == nullptr && CompressedKlassPointers::shift() == 0);
constraint(ALLOC_IN_RC(bits32_reg_ro));
match(DecodeNKlass reg);
format %{ "$reg" %}
@@ -4751,7 +4751,7 @@ operand indirectNarrow(iRegNsrc reg) %{
%}
operand indirectNarrow_klass(iRegNsrc reg) %{
predicate(CompressedKlassPointers::base() == NULL && CompressedKlassPointers::shift() == 0);
predicate(CompressedKlassPointers::base() == nullptr && CompressedKlassPointers::shift() == 0);
constraint(ALLOC_IN_RC(bits64_reg_ro));
match(DecodeNKlass reg);
op_cost(100);
@@ -4780,7 +4780,7 @@ operand indOffset16Narrow(iRegNsrc reg, immL16 offset) %{
%}
operand indOffset16Narrow_klass(iRegNsrc reg, immL16 offset) %{
predicate(CompressedKlassPointers::base() == NULL && CompressedKlassPointers::shift() == 0);
predicate(CompressedKlassPointers::base() == nullptr && CompressedKlassPointers::shift() == 0);
constraint(ALLOC_IN_RC(bits64_reg_ro));
match(AddP (DecodeNKlass reg) offset);
op_cost(100);
@@ -4809,7 +4809,7 @@ operand indOffset16NarrowAlg4(iRegNsrc reg, immL16Alg4 offset) %{
%}
operand indOffset16NarrowAlg4_klass(iRegNsrc reg, immL16Alg4 offset) %{
predicate(CompressedKlassPointers::base() == NULL && CompressedKlassPointers::shift() == 0);
predicate(CompressedKlassPointers::base() == nullptr && CompressedKlassPointers::shift() == 0);
constraint(ALLOC_IN_RC(bits64_reg_ro));
match(AddP (DecodeNKlass reg) offset);
op_cost(100);
@@ -5544,7 +5544,7 @@ instruct loadN2P_unscaled(iRegPdst dst, memory mem) %{
instruct loadN2P_klass_unscaled(iRegPdst dst, memory mem) %{
match(Set dst (DecodeNKlass (LoadNKlass mem)));
predicate(CompressedKlassPointers::base() == NULL && CompressedKlassPointers::shift() == 0 &&
predicate(CompressedKlassPointers::base() == nullptr && CompressedKlassPointers::shift() == 0 &&
_kids[0]->_leaf->as_Load()->is_unordered());
ins_cost(MEMORY_REF_COST);
@@ -5954,7 +5954,7 @@ instruct loadConL_Ex(iRegLdst dst, immL src) %{
postalloc_expand( postalloc_expand_load_long_constant(dst, src, constanttablebase) );
%}
// Load NULL as compressed oop.
// Load nullptr as compressed oop.
instruct loadConN0(iRegNdst dst, immN_0 src) %{
match(Set dst src);
ins_cost(DEFAULT_COST);
@@ -6045,9 +6045,9 @@ instruct loadConN_Ex(iRegNdst dst, immN src) %{
MachNode *m1 = new loadConN_hiNode();
MachNode *m2 = new loadConN_loNode();
MachNode *m3 = new clearMs32bNode();
m1->add_req(NULL);
m2->add_req(NULL, m1);
m3->add_req(NULL, m2);
m1->add_req(nullptr);
m2->add_req(nullptr, m1);
m3->add_req(nullptr, m2);
m1->_opnds[0] = op_dst;
m1->_opnds[1] = op_src;
m2->_opnds[0] = op_dst;
@@ -6123,7 +6123,7 @@ instruct loadConNKlass_Ex(iRegNdst dst, immNKlass src) %{
postalloc_expand %{
// Load high bits into register. Sign extended.
MachNode *m1 = new loadConNKlass_hiNode();
m1->add_req(NULL);
m1->add_req(nullptr);
m1->_opnds[0] = op_dst;
m1->_opnds[1] = op_src;
ra_->set_pair(m1->_idx, ra_->get_reg_second(this), ra_->get_reg_first(this));
@@ -6133,7 +6133,7 @@ instruct loadConNKlass_Ex(iRegNdst dst, immNKlass src) %{
if (!Assembler::is_uimm((jlong)CompressedKlassPointers::encode((Klass *)op_src->constant()), 31)) {
// Value might be 1-extended. Mask out these bits.
m2 = new loadConNKlass_maskNode();
m2->add_req(NULL, m1);
m2->add_req(nullptr, m1);
m2->_opnds[0] = op_dst;
m2->_opnds[1] = op_src;
m2->_opnds[2] = op_dst;
@@ -6142,7 +6142,7 @@ instruct loadConNKlass_Ex(iRegNdst dst, immNKlass src) %{
}
MachNode *m3 = new loadConNKlass_loNode();
m3->add_req(NULL, m2);
m3->add_req(nullptr, m2);
m3->_opnds[0] = op_dst;
m3->_opnds[1] = op_src;
m3->_opnds[2] = op_dst;
@@ -6243,7 +6243,7 @@ instruct loadConF(regF dst, immF src, iRegLdst toc) %{
size(4);
ins_encode %{
address float_address = __ float_constant($src$$constant);
if (float_address == NULL) {
if (float_address == nullptr) {
ciEnv::current()->record_out_of_memory_failure();
return;
}
@@ -6267,7 +6267,7 @@ instruct loadConFComp(regF dst, immF src, iRegLdst toc) %{
FloatRegister Rdst = $dst$$FloatRegister;
Register Rtoc = $toc$$Register;
address float_address = __ float_constant($src$$constant);
if (float_address == NULL) {
if (float_address == nullptr) {
ciEnv::current()->record_out_of_memory_failure();
return;
}
@@ -6305,7 +6305,7 @@ instruct loadConD(regD dst, immD src, iRegLdst toc) %{
size(4);
ins_encode %{
address float_address = __ double_constant($src$$constant);
if (float_address == NULL) {
if (float_address == nullptr) {
ciEnv::current()->record_out_of_memory_failure();
return;
}
@@ -6330,7 +6330,7 @@ instruct loadConDComp(regD dst, immD src, iRegLdst toc) %{
FloatRegister Rdst = $dst$$FloatRegister;
Register Rtoc = $toc$$Register;
address float_address = __ double_constant($src$$constant);
if (float_address == NULL) {
if (float_address == nullptr) {
ciEnv::current()->record_out_of_memory_failure();
return;
}
@@ -6632,7 +6632,7 @@ instruct cond_sub_base(iRegNdst dst, flagsRegSrc crx, iRegPsrc src1) %{
predicate(false);
format %{ "BEQ $crx, done\n\t"
"SUB $dst, $src1, heapbase \t// encode: subtract base if != NULL\n"
"SUB $dst, $src1, heapbase \t// encode: subtract base if != nullptr\n"
"done:" %}
ins_encode %{
Label done;
@@ -6701,7 +6701,7 @@ instruct encodeP_not_null_base_null(iRegNdst dst, iRegPsrc src) %{
predicate(CompressedOops::shift() != 0 &&
CompressedOops::base() ==0);
format %{ "SRDI $dst, $src, #3 \t// encodeP, $src != NULL" %}
format %{ "SRDI $dst, $src, #3 \t// encodeP, $src != nullptr" %}
size(4);
ins_encode %{
__ srdi($dst$$Register, $src$$Register, CompressedOops::shift() & 0x3f);
@@ -6762,7 +6762,7 @@ instruct cond_add_base(iRegPdst dst, flagsRegSrc crx, iRegPsrc src) %{
predicate(false);
format %{ "BEQ $crx, done\n\t"
"ADD $dst, $src, heapbase \t// DecodeN: add oop base if $src != NULL\n"
"ADD $dst, $src, heapbase \t// DecodeN: add oop base if $src != nullptr\n"
"done:" %}
ins_encode %{
Label done;
@@ -6850,7 +6850,7 @@ instruct decodeN_Disjoint_notNull_Ex(iRegPdst dst, iRegNsrc src) %{
"RLDIMI $dst, $src, shift, 32-shift \t// decode with disjoint base" %}
postalloc_expand %{
loadBaseNode *n1 = new loadBaseNode();
n1->add_req(NULL);
n1->add_req(nullptr);
n1->_opnds[0] = op_dst;
decodeN_mergeDisjointNode *n2 = new decodeN_mergeDisjointNode();
@@ -6882,7 +6882,7 @@ instruct decodeN_Disjoint_isel_Ex(iRegPdst dst, iRegNsrc src, flagsReg crx) %{
format %{ "DecodeN $dst, $src \t// decode with disjoint base using isel" %}
postalloc_expand %{
loadBaseNode *n1 = new loadBaseNode();
n1->add_req(NULL);
n1->add_req(nullptr);
n1->_opnds[0] = op_dst;
cmpN_reg_imm0Node *n_compare = new cmpN_reg_imm0Node();
@@ -6929,7 +6929,7 @@ instruct decodeN_notNull_addBase_Ex(iRegPdst dst, iRegNsrc src) %{
CompressedOops::base() != 0);
ins_cost(2 * DEFAULT_COST);
format %{ "DecodeN $dst, $src \t// $src != NULL, postalloc expanded" %}
format %{ "DecodeN $dst, $src \t// $src != nullptr, postalloc expanded" %}
postalloc_expand( postalloc_expand_decode_oop_not_null(dst, src));
%}
@@ -7086,7 +7086,7 @@ instruct decodeNKlass_notNull_addBase_Ex(iRegPdst dst, iRegLsrc base, iRegNsrc s
//effect(kill src); // We need a register for the immediate result after shifting.
predicate(false);
format %{ "DecodeNKlass $dst = $base + ($src << 3) \t// $src != NULL, postalloc expanded" %}
format %{ "DecodeNKlass $dst = $base + ($src << 3) \t// $src != nullptr, postalloc expanded" %}
postalloc_expand %{
decodeNKlass_add_baseNode *n1 = new decodeNKlass_add_baseNode();
n1->add_req(n_region, n_base, n_src);
@@ -7115,7 +7115,7 @@ instruct decodeNKlass_notNull_addBase_ExEx(iRegPdst dst, iRegNsrc src) %{
// predicate(CompressedKlassPointers::shift() != 0 &&
// CompressedKlassPointers::base() != 0);
//format %{ "DecodeNKlass $dst, $src \t// $src != NULL, expanded" %}
//format %{ "DecodeNKlass $dst, $src \t// $src != nullptr, expanded" %}
ins_cost(DEFAULT_COST*2); // Don't count constant.
expand %{
@@ -7602,7 +7602,7 @@ instruct compareAndSwapL_regP_regL_regL(iRegIdst res, iRegPdst mem_ptr, iRegLsrc
// CmpxchgX sets CCR0 to cmpX(src1, src2) and Rres to 'true'/'false'.
__ cmpxchgd(CCR0, R0, $src1$$Register, $src2$$Register, $mem_ptr$$Register,
MacroAssembler::MemBarNone, MacroAssembler::cmpxchgx_hint_atomic_update(),
$res$$Register, NULL, true);
$res$$Register, nullptr, true);
if (support_IRIW_for_not_multiple_copy_atomic_cpu) {
__ isync();
} else {
@@ -7621,7 +7621,7 @@ instruct compareAndSwapP_regP_regP_regP(iRegIdst res, iRegPdst mem_ptr, iRegPsrc
// CmpxchgX sets CCR0 to cmpX(src1, src2) and Rres to 'true'/'false'.
__ cmpxchgd(CCR0, R0, $src1$$Register, $src2$$Register, $mem_ptr$$Register,
MacroAssembler::MemBarNone, MacroAssembler::cmpxchgx_hint_atomic_update(),
$res$$Register, NULL, true);
$res$$Register, nullptr, true);
if (support_IRIW_for_not_multiple_copy_atomic_cpu) {
__ isync();
} else {
@@ -7815,7 +7815,7 @@ instruct weakCompareAndSwapL_regP_regL_regL(iRegIdst res, iRegPdst mem_ptr, iReg
// value is never passed to caller.
__ cmpxchgd(CCR0, R0, $src1$$Register, $src2$$Register, $mem_ptr$$Register,
MacroAssembler::MemBarNone,
MacroAssembler::cmpxchgx_hint_atomic_update(), $res$$Register, NULL, true, /*weak*/ true);
MacroAssembler::cmpxchgx_hint_atomic_update(), $res$$Register, nullptr, true, /*weak*/ true);
%}
ins_pipe(pipe_class_default);
%}
@@ -7831,7 +7831,7 @@ instruct weakCompareAndSwapL_acq_regP_regL_regL(iRegIdst res, iRegPdst mem_ptr,
// value is never passed to caller.
__ cmpxchgd(CCR0, R0, $src1$$Register, $src2$$Register, $mem_ptr$$Register,
support_IRIW_for_not_multiple_copy_atomic_cpu ? MacroAssembler::MemBarAcq : MacroAssembler::MemBarFenceAfter,
MacroAssembler::cmpxchgx_hint_atomic_update(), $res$$Register, NULL, true, /*weak*/ true);
MacroAssembler::cmpxchgx_hint_atomic_update(), $res$$Register, nullptr, true, /*weak*/ true);
%}
ins_pipe(pipe_class_default);
%}
@@ -7845,7 +7845,7 @@ instruct weakCompareAndSwapP_regP_regP_regP(iRegIdst res, iRegPdst mem_ptr, iReg
// CmpxchgX sets CCR0 to cmpX(src1, src2) and Rres to 'true'/'false'.
__ cmpxchgd(CCR0, R0, $src1$$Register, $src2$$Register, $mem_ptr$$Register,
MacroAssembler::MemBarNone,
MacroAssembler::cmpxchgx_hint_atomic_update(), $res$$Register, NULL, true, /*weak*/ true);
MacroAssembler::cmpxchgx_hint_atomic_update(), $res$$Register, nullptr, true, /*weak*/ true);
%}
ins_pipe(pipe_class_default);
%}
@@ -7861,7 +7861,7 @@ instruct weakCompareAndSwapP_acq_regP_regP_regP(iRegIdst res, iRegPdst mem_ptr,
// value is never passed to caller.
__ cmpxchgd(CCR0, R0, $src1$$Register, $src2$$Register, $mem_ptr$$Register,
support_IRIW_for_not_multiple_copy_atomic_cpu ? MacroAssembler::MemBarAcq : MacroAssembler::MemBarFenceAfter,
MacroAssembler::cmpxchgx_hint_atomic_update(), $res$$Register, NULL, true, /*weak*/ true);
MacroAssembler::cmpxchgx_hint_atomic_update(), $res$$Register, nullptr, true, /*weak*/ true);
%}
ins_pipe(pipe_class_default);
%}
@@ -8081,7 +8081,7 @@ instruct compareAndExchangeL_regP_regL_regL(iRegLdst res, iRegPdst mem_ptr, iReg
// CmpxchgX sets CCR0 to cmpX(src1, src2) and Rres to 'true'/'false'.
__ cmpxchgd(CCR0, $res$$Register, $src1$$Register, $src2$$Register, $mem_ptr$$Register,
MacroAssembler::MemBarNone, MacroAssembler::cmpxchgx_hint_atomic_update(),
noreg, NULL, true);
noreg, nullptr, true);
%}
ins_pipe(pipe_class_default);
%}
@@ -8095,7 +8095,7 @@ instruct compareAndExchangeL_acq_regP_regL_regL(iRegLdst res, iRegPdst mem_ptr,
// CmpxchgX sets CCR0 to cmpX(src1, src2) and Rres to 'true'/'false'.
__ cmpxchgd(CCR0, $res$$Register, $src1$$Register, $src2$$Register, $mem_ptr$$Register,
MacroAssembler::MemBarNone, MacroAssembler::cmpxchgx_hint_atomic_update(),
noreg, NULL, true);
noreg, nullptr, true);
if (support_IRIW_for_not_multiple_copy_atomic_cpu) {
__ isync();
} else {
@@ -8116,7 +8116,7 @@ instruct compareAndExchangeP_regP_regP_regP(iRegPdst res, iRegPdst mem_ptr, iReg
// CmpxchgX sets CCR0 to cmpX(src1, src2) and Rres to 'true'/'false'.
__ cmpxchgd(CCR0, $res$$Register, $src1$$Register, $src2$$Register, $mem_ptr$$Register,
MacroAssembler::MemBarNone, MacroAssembler::cmpxchgx_hint_atomic_update(),
noreg, NULL, true);
noreg, nullptr, true);
%}
ins_pipe(pipe_class_default);
%}
@@ -8131,7 +8131,7 @@ instruct compareAndExchangeP_acq_regP_regP_regP(iRegPdst res, iRegPdst mem_ptr,
// CmpxchgX sets CCR0 to cmpX(src1, src2) and Rres to 'true'/'false'.
__ cmpxchgd(CCR0, $res$$Register, $src1$$Register, $src2$$Register, $mem_ptr$$Register,
MacroAssembler::MemBarNone, MacroAssembler::cmpxchgx_hint_atomic_update(),
noreg, NULL, true);
noreg, nullptr, true);
if (support_IRIW_for_not_multiple_copy_atomic_cpu) {
__ isync();
} else {
@@ -12043,9 +12043,9 @@ instruct branch(label labl) %{
Label d; // dummy
__ bind(d);
Label* p = $labl$$label;
// `p' is `NULL' when this encoding class is used only to
// `p' is `nullptr' when this encoding class is used only to
// determine the size of the encoded instruction.
Label& l = (NULL == p)? d : *(p);
Label& l = (nullptr == p)? d : *(p);
__ b(l);
%}
ins_pipe(pipe_class_default);
@@ -12139,7 +12139,7 @@ instruct partialSubtypeCheck(iRegPdst result, iRegP_N2P subklass, iRegP_N2P supe
format %{ "PartialSubtypeCheck $result = ($subklass instanceOf $superklass) tmp: $tmp_klass, $tmp_arrayptr" %}
ins_encode %{
__ check_klass_subtype_slow_path($subklass$$Register, $superklass$$Register, $tmp_arrayptr$$Register,
$tmp_klass$$Register, NULL, $result$$Register);
$tmp_klass$$Register, nullptr, $result$$Register);
%}
ins_pipe(pipe_class_default);
%}
@@ -12318,21 +12318,6 @@ instruct string_equalsL(rarg1RegP str1, rarg2RegP str2, rarg3RegI cnt, iRegIdst
ins_pipe(pipe_class_default);
%}
instruct string_equalsU(rarg1RegP str1, rarg2RegP str2, rarg3RegI cnt, iRegIdst result,
iRegIdst tmp, regCTR ctr, flagsRegCR0 cr0) %{
predicate(((StrEqualsNode*)n)->encoding() == StrIntrinsicNode::UU);
match(Set result (StrEquals (Binary str1 str2) cnt));
effect(TEMP_DEF result, USE_KILL str1, USE_KILL str2, USE_KILL cnt, TEMP tmp, KILL ctr, KILL cr0);
ins_cost(300);
format %{ "String Equals char[] $str1,$str2,$cnt -> $result \t// KILL $tmp" %}
ins_encode %{
__ array_equals(false, $str1$$Register, $str2$$Register,
$cnt$$Register, $tmp$$Register,
$result$$Register, false /* byte */);
%}
ins_pipe(pipe_class_default);
%}
instruct array_equalsB(rarg1RegP ary1, rarg2RegP ary2, iRegIdst result,
iRegIdst tmp1, iRegIdst tmp2, regCTR ctr, flagsRegCR0 cr0, flagsRegCR0 cr1) %{
predicate(((AryEqNode*)n)->encoding() == StrIntrinsicNode::LL);
@@ -12670,7 +12655,7 @@ instruct indexOf_U(iRegIdst result, iRegPsrc haystack, rscratch1RegI haycnt, iRe
ins_encode %{
__ string_indexof($result$$Register,
$haystack$$Register, $haycnt$$Register,
$needle$$Register, NULL, $needlecnt$$Register, 0, // needlecnt not constant.
$needle$$Register, nullptr, $needlecnt$$Register, 0, // needlecnt not constant.
$tmp1$$Register, $tmp2$$Register, $tmp3$$Register, $tmp4$$Register, StrIntrinsicNode::UU);
%}
ins_pipe(pipe_class_compare);
@@ -12691,7 +12676,7 @@ instruct indexOf_L(iRegIdst result, iRegPsrc haystack, rscratch1RegI haycnt, iRe
ins_encode %{
__ string_indexof($result$$Register,
$haystack$$Register, $haycnt$$Register,
$needle$$Register, NULL, $needlecnt$$Register, 0, // needlecnt not constant.
$needle$$Register, nullptr, $needlecnt$$Register, 0, // needlecnt not constant.
$tmp1$$Register, $tmp2$$Register, $tmp3$$Register, $tmp4$$Register, StrIntrinsicNode::LL);
%}
ins_pipe(pipe_class_compare);
@@ -12712,7 +12697,7 @@ instruct indexOf_UL(iRegIdst result, iRegPsrc haystack, rscratch1RegI haycnt, iR
ins_encode %{
__ string_indexof($result$$Register,
$haystack$$Register, $haycnt$$Register,
$needle$$Register, NULL, $needlecnt$$Register, 0, // needlecnt not constant.
$needle$$Register, nullptr, $needlecnt$$Register, 0, // needlecnt not constant.
$tmp1$$Register, $tmp2$$Register, $tmp3$$Register, $tmp4$$Register, StrIntrinsicNode::UL);
%}
ins_pipe(pipe_class_compare);

View File

@@ -734,7 +734,7 @@ int SharedRuntime::java_calling_convention(const BasicType *sig_bt,
ShouldNotReachHere();
}
}
return align_up(stk, 2);
return stk;
}
#if defined(COMPILER1) || defined(COMPILER2)

View File

@@ -3643,8 +3643,6 @@ class StubGenerator: public StubCodeGenerator {
#define VALID_B64 0x80
#define VB64(x) (VALID_B64 | x)
#define VEC_ALIGN __attribute__ ((aligned(16)))
#define BLK_OFFSETOF(x) (offsetof(constant_block, x))
// In little-endian mode, the lxv instruction loads the element at EA into
@@ -3681,7 +3679,7 @@ class StubGenerator: public StubCodeGenerator {
unsigned char pack_permute_val[16];
} constant_block;
static const constant_block VEC_ALIGN const_block = {
alignas(16) static const constant_block const_block = {
.offsetLUT_val = {
ARRAY_TO_LXV_ORDER(
@@ -4263,7 +4261,7 @@ class StubGenerator: public StubCodeGenerator {
unsigned char base64_48_63_URL_val[16];
} constant_block;
static const constant_block VEC_ALIGN const_block = {
alignas(16) static const constant_block const_block = {
.expand_permute_val = {
ARRAY_TO_LXV_ORDER(
0, 4, 5, 6,

View File

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2014, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013, 2023 SAP SE. All rights reserved.
* Copyright (c) 2014, 2024, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013, 2024 SAP SE. 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
@@ -3803,16 +3803,15 @@ void TemplateTable::_new() {
__ sldi(Roffset, Rindex, LogBytesPerWord);
__ load_resolved_klass_at_offset(Rcpool, Roffset, RinstanceKlass);
// Make sure klass is fully initialized and get instance_size.
__ lbz(Rscratch, in_bytes(InstanceKlass::init_state_offset()), RinstanceKlass);
// Make sure klass is initialized.
assert(VM_Version::supports_fast_class_init_checks(), "Optimization requires support for fast class initialization checks");
__ clinit_barrier(RinstanceKlass, R16_thread, nullptr /*L_fast_path*/, &Lslow_case);
__ lwz(Rinstance_size, in_bytes(Klass::layout_helper_offset()), RinstanceKlass);
__ cmpdi(CCR1, Rscratch, InstanceKlass::fully_initialized);
// Make sure klass does not have has_finalizer, or is abstract, or interface or java/lang/Class.
__ andi_(R0, Rinstance_size, Klass::_lh_instance_slow_path_bit); // slow path bit equals 0?
__ crnand(CCR0, Assembler::equal, CCR1, Assembler::equal); // slow path bit set or not fully initialized?
__ beq(CCR0, Lslow_case);
__ bne(CCR0, Lslow_case);
// --------------------------------------------------------------------------
// Fast case:

View File

@@ -91,7 +91,7 @@ public:
// Override Abstract_VM_Version implementation
static void print_platform_virtualization_info(outputStream*);
// PPC64 supports fast class initialization checks for static methods.
// PPC64 supports fast class initialization checks
static bool supports_fast_class_init_checks() { return true; }
constexpr static bool supports_stack_watermark_barrier() { return true; }

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved.
* Copyright (c) 2020, 2023, Huawei Technologies Co., Ltd. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -506,7 +506,7 @@ public:
INSN(sllw, 0b0111011, 0b001, 0b0000000);
INSN(sraw, 0b0111011, 0b101, 0b0100000);
INSN(srlw, 0b0111011, 0b101, 0b0000000);
INSN(mul, 0b0110011, 0b000, 0b0000001);
INSN(_mul, 0b0110011, 0b000, 0b0000001);
INSN(mulh, 0b0110011, 0b001, 0b0000001);
INSN(mulhsu,0b0110011, 0b010, 0b0000001);
INSN(mulhu, 0b0110011, 0b011, 0b0000001);
@@ -537,9 +537,9 @@ public:
}
INSN(lb, 0b0000011, 0b000);
INSN(lbu, 0b0000011, 0b100);
INSN(lh, 0b0000011, 0b001);
INSN(lhu, 0b0000011, 0b101);
INSN(_lbu, 0b0000011, 0b100);
INSN(_lh, 0b0000011, 0b001);
INSN(_lhu, 0b0000011, 0b101);
INSN(_lw, 0b0000011, 0b010);
INSN(lwu, 0b0000011, 0b110);
INSN(_ld, 0b0000011, 0b011);
@@ -609,8 +609,8 @@ public:
emit(insn); \
} \
INSN(sb, Register, 0b0100011, 0b000);
INSN(sh, Register, 0b0100011, 0b001);
INSN(_sb, Register, 0b0100011, 0b000);
INSN(_sh, Register, 0b0100011, 0b001);
INSN(_sw, Register, 0b0100011, 0b010);
INSN(_sd, Register, 0b0100011, 0b011);
INSN(fsw, FloatRegister, 0b0100111, 0b010);
@@ -758,6 +758,8 @@ enum Aqrl {relaxed = 0b00, rl = 0b01, aq = 0b10, aqrl = 0b11};
INSN(amomax_d , 0b0101111, 0b011, 0b10100);
INSN(amominu_d, 0b0101111, 0b011, 0b11000);
INSN(amomaxu_d, 0b0101111, 0b011, 0b11100);
INSN(amocas_w, 0b0101111, 0b010, 0b00101);
INSN(amocas_d, 0b0101111, 0b011, 0b00101);
#undef INSN
enum operand_size { int8, int16, int32, uint32, int64 };
@@ -813,6 +815,8 @@ enum operand_size { int8, int16, int32, uint32, int64 };
INSN(fsqrt_s, 0b1010011, 0b00000, 0b0101100);
INSN(fsqrt_d, 0b1010011, 0b00000, 0b0101101);
INSN(fcvt_s_h, 0b1010011, 0b00010, 0b0100000);
INSN(fcvt_h_s, 0b1010011, 0b00000, 0b0100010);
INSN(fcvt_s_d, 0b1010011, 0b00001, 0b0100000);
INSN(fcvt_d_s, 0b1010011, 0b00000, 0b0100001);
#undef INSN
@@ -1069,6 +1073,7 @@ enum operand_size { int8, int16, int32, uint32, int64 };
emit(insn); \
}
INSN(fmv_h_x, 0b1010011, 0b000, 0b00000, 0b1111010);
INSN(fmv_w_x, 0b1010011, 0b000, 0b00000, 0b1111000);
INSN(fmv_d_x, 0b1010011, 0b000, 0b00000, 0b1111001);
@@ -1106,8 +1111,10 @@ enum fclass_mask {
emit(insn); \
}
INSN(fclass_h, 0b1010011, 0b001, 0b00000, 0b1110010);
INSN(fclass_s, 0b1010011, 0b001, 0b00000, 0b1110000);
INSN(fclass_d, 0b1010011, 0b001, 0b00000, 0b1110001);
INSN(fmv_x_h, 0b1010011, 0b000, 0b00000, 0b1110010);
INSN(fmv_x_w, 0b1010011, 0b000, 0b00000, 0b1110000);
INSN(fmv_x_d, 0b1010011, 0b000, 0b00000, 0b1110001);
@@ -1154,10 +1161,8 @@ static Assembler::SEW elemtype_to_sew(BasicType etype) {
}
#define patch_vtype(hsb, lsb, vlmul, vsew, vta, vma, vill) \
if (vill == 1) { \
guarantee((vlmul | vsew | vta | vma == 0), \
"the other bits in vtype shall be zero"); \
} \
/* If vill then other bits of vtype must be zero. */ \
guarantee(!vill, "vill not supported"); \
patch((address)&insn, lsb + 2, lsb, vlmul); \
patch((address)&insn, lsb + 5, lsb + 3, vsew); \
patch((address)&insn, lsb + 6, vta); \
@@ -1332,6 +1337,7 @@ enum VectorMask {
INSN(vsll_vi, 0b1010111, 0b011, 0b100101);
// Vector Slide Instructions
INSN(vslideup_vi, 0b1010111, 0b011, 0b001110);
INSN(vslidedown_vi, 0b1010111, 0b011, 0b001111);
#undef INSN
@@ -1687,7 +1693,6 @@ enum VectorMask {
INSN(vmv_v_x, 0b1010111, 0b100, v0, 0b1, 0b010111);
#undef INSN
#undef patch_VArith
#define INSN(NAME, op, funct13, funct6) \
void NAME(VectorRegister Vd, VectorMask vm = unmasked) { \
@@ -1729,14 +1734,29 @@ enum Nf {
patch_reg((address)&insn, 15, Rs1); \
emit(insn)
#define INSN(NAME, op, lumop, vm, mop, nf) \
void NAME(VectorRegister Vd, Register Rs1, uint32_t width = 0, bool mew = false) { \
#define INSN(NAME, op, width, lumop, vm, mop, mew, nf) \
void NAME(VectorRegister Vd, Register Rs1) { \
guarantee(is_uimm3(width), "width is invalid"); \
patch_VLdSt(op, Vd, width, Rs1, lumop, vm, mop, mew, nf); \
}
// Vector Load/Store Instructions
INSN(vl1re8_v, 0b0000111, 0b01000, 0b1, 0b00, g1);
INSN(vl1re8_v, 0b0000111, 0b000, 0b01000, 0b1, 0b00, 0b0, g1);
INSN(vl1re16_v, 0b0000111, 0b101, 0b01000, 0b1, 0b00, 0b0, g1);
INSN(vl1re32_v, 0b0000111, 0b110, 0b01000, 0b1, 0b00, 0b0, g1);
INSN(vl1re64_v, 0b0000111, 0b111, 0b01000, 0b1, 0b00, 0b0, g1);
INSN(vl2re8_v, 0b0000111, 0b000, 0b01000, 0b1, 0b00, 0b0, g2);
INSN(vl2re16_v, 0b0000111, 0b101, 0b01000, 0b1, 0b00, 0b0, g2);
INSN(vl2re32_v, 0b0000111, 0b110, 0b01000, 0b1, 0b00, 0b0, g2);
INSN(vl2re64_v, 0b0000111, 0b111, 0b01000, 0b1, 0b00, 0b0, g2);
INSN(vl4re8_v, 0b0000111, 0b000, 0b01000, 0b1, 0b00, 0b0, g4);
INSN(vl4re16_v, 0b0000111, 0b101, 0b01000, 0b1, 0b00, 0b0, g4);
INSN(vl4re32_v, 0b0000111, 0b110, 0b01000, 0b1, 0b00, 0b0, g4);
INSN(vl4re64_v, 0b0000111, 0b111, 0b01000, 0b1, 0b00, 0b0, g4);
INSN(vl8re8_v, 0b0000111, 0b000, 0b01000, 0b1, 0b00, 0b0, g8);
INSN(vl8re16_v, 0b0000111, 0b101, 0b01000, 0b1, 0b00, 0b0, g8);
INSN(vl8re32_v, 0b0000111, 0b110, 0b01000, 0b1, 0b00, 0b0, g8);
INSN(vl8re64_v, 0b0000111, 0b111, 0b01000, 0b1, 0b00, 0b0, g8);
#undef INSN
@@ -1747,6 +1767,9 @@ enum Nf {
// Vector Load/Store Instructions
INSN(vs1r_v, 0b0100111, 0b000, 0b01000, 0b1, 0b00, 0b0, g1);
INSN(vs2r_v, 0b0100111, 0b000, 0b01000, 0b1, 0b00, 0b0, g2);
INSN(vs4r_v, 0b0100111, 0b000, 0b01000, 0b1, 0b00, 0b0, g4);
INSN(vs8r_v, 0b0100111, 0b000, 0b01000, 0b1, 0b00, 0b0, g8);
#undef INSN
@@ -1792,9 +1815,11 @@ enum Nf {
}
// Vector unordered indexed load instructions
INSN( vluxei8_v, 0b0000111, 0b000, 0b01, 0b0);
INSN(vluxei32_v, 0b0000111, 0b110, 0b01, 0b0);
// Vector unordered indexed store instructions
INSN( vsuxei8_v, 0b0100111, 0b000, 0b01, 0b0);
INSN(vsuxei32_v, 0b0100111, 0b110, 0b01, 0b0);
#undef INSN
@@ -1818,6 +1843,55 @@ enum Nf {
#undef INSN
#undef patch_VLdSt
// ====================================
// RISC-V Vector Crypto Extension
// ====================================
#define INSN(NAME, op, funct3, funct6) \
void NAME(VectorRegister Vd, VectorRegister Vs2, VectorRegister Vs1, VectorMask vm = unmasked) { \
patch_VArith(op, Vd, funct3, Vs1->raw_encoding(), Vs2, vm, funct6); \
}
// Vector Bit-manipulation used in Cryptography (Zvkb) Extension
INSN(vandn_vv, 0b1010111, 0b000, 0b000001);
INSN(vandn_vx, 0b1010111, 0b100, 0b000001);
INSN(vandn_vi, 0b1010111, 0b011, 0b000001);
INSN(vclmul_vv, 0b1010111, 0b010, 0b001100);
INSN(vclmul_vx, 0b1010111, 0b110, 0b001100);
INSN(vclmulh_vv, 0b1010111, 0b010, 0b001101);
INSN(vclmulh_vx, 0b1010111, 0b110, 0b001101);
INSN(vror_vv, 0b1010111, 0b000, 0b010100);
INSN(vror_vx, 0b1010111, 0b100, 0b010100);
INSN(vrol_vv, 0b1010111, 0b000, 0b010101);
INSN(vrol_vx, 0b1010111, 0b100, 0b010101);
#undef INSN
#define INSN(NAME, op, funct3, Vs1, funct6) \
void NAME(VectorRegister Vd, VectorRegister Vs2, VectorMask vm = unmasked) { \
patch_VArith(op, Vd, funct3, Vs1, Vs2, vm, funct6); \
}
// Vector Bit-manipulation used in Cryptography (Zvkb) Extension
INSN(vbrev8_v, 0b1010111, 0b010, 0b01000, 0b010010);
INSN(vrev8_v, 0b1010111, 0b010, 0b01001, 0b010010);
#undef INSN
#define INSN(NAME, op, funct3, vm, funct6) \
void NAME(VectorRegister Vd, VectorRegister Vs2, VectorRegister Vs1) { \
patch_VArith(op, Vd, funct3, Vs1->raw_encoding(), Vs2, vm, funct6); \
}
// Vector SHA-2 Secure Hash (Zvknh[ab]) Extension
INSN(vsha2ms_vv, 0b1110111, 0b010, 0b1, 0b101101);
INSN(vsha2ch_vv, 0b1110111, 0b010, 0b1, 0b101110);
INSN(vsha2cl_vv, 0b1110111, 0b010, 0b1, 0b101111);
#undef INSN
#undef patch_VArith
// ====================================
// RISC-V Bit-Manipulation Extension
// Currently only support Zba, Zbb and Zbs bitmanip extensions.
@@ -1867,9 +1941,9 @@ enum Nf {
}
INSN(rev8, 0b0010011, 0b101, 0b011010111000);
INSN(sext_b, 0b0010011, 0b001, 0b011000000100);
INSN(sext_h, 0b0010011, 0b001, 0b011000000101);
INSN(zext_h, 0b0111011, 0b100, 0b000010000000);
INSN(_sext_b, 0b0010011, 0b001, 0b011000000100);
INSN(_sext_h, 0b0010011, 0b001, 0b011000000101);
INSN(_zext_h, 0b0111011, 0b100, 0b000010000000);
INSN(clz, 0b0010011, 0b001, 0b011000000000);
INSN(clzw, 0b0011011, 0b001, 0b011000000000);
INSN(ctz, 0b0010011, 0b001, 0b011000000001);
@@ -2581,6 +2655,15 @@ public:
return UseRVC && in_compressible_region();
}
bool do_compress_zcb(Register reg1 = noreg, Register reg2 = noreg) const {
return do_compress() && VM_Version::ext_Zcb.enabled() &&
(reg1 == noreg || reg1->is_compressed_valid()) && (reg2 == noreg || reg2->is_compressed_valid());
}
bool do_compress_zcb_zbb(Register reg1 = noreg, Register reg2 = noreg) const {
return do_compress_zcb(reg1, reg2) && UseZbb;
}
// --------------------------
// Load/store register
// --------------------------
@@ -2915,6 +2998,238 @@ public:
#undef INSN
// -------------- ZCB Instruction Definitions --------------
// Zcb additional C instructions
private:
// Format CLH, c.lh/c.lhu
template <bool Unsigned>
void c_lh_if(Register Rd_Rs2, Register Rs1, uint32_t uimm) {
assert_cond(uimm == 0 || uimm == 2);
assert_cond(do_compress_zcb(Rd_Rs2, Rs1));
uint16_t insn = 0;
c_patch((address)&insn, 1, 0, 0b00);
c_patch_compressed_reg((address)&insn, 2, Rd_Rs2);
c_patch((address)&insn, 5, 5, (uimm & nth_bit(1)) >> 1);
c_patch((address)&insn, 6, 6, Unsigned ? 0 : 1);
c_patch_compressed_reg((address)&insn, 7, Rs1);
c_patch((address)&insn, 12, 10, 0b001);
c_patch((address)&insn, 15, 13, 0b100);
emit_int16(insn);
}
template <bool Unsigned>
void lh_c_mux(Register Rd_Rs2, Register Rs1, const int32_t uimm) {
if (do_compress_zcb(Rd_Rs2, Rs1) &&
(uimm == 0 || uimm == 2)) {
c_lh_if<Unsigned>(Rd_Rs2, Rs1, uimm);
} else {
if (Unsigned) {
_lhu(Rd_Rs2, Rs1, uimm);
} else {
_lh(Rd_Rs2, Rs1, uimm);
}
}
}
// Format CU, c.[sz]ext.*, c.not
template <uint8_t InstructionType>
void c_u_if(Register Rs1) {
assert_cond(do_compress_zcb(Rs1));
uint16_t insn = 0;
c_patch((address)&insn, 1, 0, 0b01);
c_patch((address)&insn, 4, 2, InstructionType);
c_patch((address)&insn, 6, 5, 0b11);
c_patch_compressed_reg((address)&insn, 7, Rs1);
c_patch((address)&insn, 12, 10, 0b111);
c_patch((address)&insn, 15, 13, 0b100);
emit_int16(insn);
}
public:
// Prerequisites: Zcb
void c_lh(Register Rd_Rs2, Register Rs1, const int32_t uimm) { c_lh_if<false>(Rd_Rs2, Rs1, uimm); }
void lh(Register Rd_Rs2, Register Rs1, const int32_t uimm) { lh_c_mux<false>(Rd_Rs2, Rs1, uimm); }
// Prerequisites: Zcb
void c_lhu(Register Rd_Rs2, Register Rs1, const int32_t uimm) { c_lh_if<true>(Rd_Rs2, Rs1, uimm); }
void lhu(Register Rd_Rs2, Register Rs1, const int32_t uimm) { lh_c_mux<true>(Rd_Rs2, Rs1, uimm); }
// Prerequisites: Zcb
// Format CLB, single instruction
void c_lbu(Register Rd_Rs2, Register Rs1, uint32_t uimm) {
assert_cond(uimm <= 3);
assert_cond(do_compress_zcb(Rd_Rs2, Rs1));
uint16_t insn = 0;
c_patch((address)&insn, 1, 0, 0b00);
c_patch_compressed_reg((address)&insn, 2, Rd_Rs2);
c_patch((address)&insn, 5, 5, (uimm & nth_bit(1)) >> 1);
c_patch((address)&insn, 6, 6, (uimm & nth_bit(0)) >> 0);
c_patch_compressed_reg((address)&insn, 7, Rs1);
c_patch((address)&insn, 12, 10, 0b000);
c_patch((address)&insn, 15, 13, 0b100);
emit_int16(insn);
}
void lbu(Register Rd_Rs2, Register Rs1, const int32_t uimm) {
if (do_compress_zcb(Rd_Rs2, Rs1) &&
uimm >= 0 && uimm <= 3) {
c_lbu(Rd_Rs2, Rs1, uimm);
} else {
_lbu(Rd_Rs2, Rs1, uimm);
}
}
// Prerequisites: Zcb
// Format CSB, single instruction
void c_sb(Register Rd_Rs2, Register Rs1, uint32_t uimm) {
assert_cond(uimm <= 3);
assert_cond(do_compress_zcb(Rd_Rs2, Rs1));
uint16_t insn = 0;
c_patch((address)&insn, 1, 0, 0b00);
c_patch_compressed_reg((address)&insn, 2, Rd_Rs2);
c_patch((address)&insn, 5, 5, (uimm & nth_bit(1)) >> 1);
c_patch((address)&insn, 6, 6, (uimm & nth_bit(0)) >> 0);
c_patch_compressed_reg((address)&insn, 7, Rs1);
c_patch((address)&insn, 12, 10, 0b010);
c_patch((address)&insn, 15, 13, 0b100);
emit_int16(insn);
}
void sb(Register Rd_Rs2, Register Rs1, const int32_t uimm) {
if (do_compress_zcb(Rd_Rs2, Rs1) &&
uimm >= 0 && uimm <= 3) {
c_sb(Rd_Rs2, Rs1, uimm);
} else {
_sb(Rd_Rs2, Rs1, uimm);
}
}
// Prerequisites: Zcb
// Format CSH, single instruction
void c_sh(Register Rd_Rs2, Register Rs1, uint32_t uimm) {
assert_cond(uimm == 0 || uimm == 2);
assert_cond(do_compress_zcb(Rd_Rs2, Rs1));
uint16_t insn = 0;
c_patch((address)&insn, 1, 0, 0b00);
c_patch_compressed_reg((address)&insn, 2, Rd_Rs2);
c_patch((address)&insn, 5, 5, (uimm & nth_bit(1)) >> 1);
c_patch((address)&insn, 6, 6, 0);
c_patch_compressed_reg((address)&insn, 7, Rs1);
c_patch((address)&insn, 12, 10, 0b011);
c_patch((address)&insn, 15, 13, 0b100);
emit_int16(insn);
}
void sh(Register Rd_Rs2, Register Rs1, const int32_t uimm) {
if (do_compress_zcb(Rd_Rs2, Rs1) &&
(uimm == 0 || uimm == 2)) {
c_sh(Rd_Rs2, Rs1, uimm);
} else {
_sh(Rd_Rs2, Rs1, uimm);
}
}
// Prerequisites: Zcb
// Format CS
void c_zext_b(Register Rs1) {
assert_cond(do_compress_zcb(Rs1));
c_u_if<0b000>(Rs1);
}
// Prerequisites: Zbb
void sext_b(Register Rd_Rs2, Register Rs1) {
assert_cond(UseZbb);
if (do_compress_zcb_zbb(Rd_Rs2, Rs1) && (Rd_Rs2 == Rs1)) {
c_sext_b(Rd_Rs2);
} else {
_sext_b(Rd_Rs2, Rs1);
}
}
// Prerequisites: Zcb, Zbb
// Format CS
void c_sext_b(Register Rs1) {
c_u_if<0b001>(Rs1);
}
// Prerequisites: Zbb
void zext_h(Register Rd_Rs2, Register Rs1) {
assert_cond(UseZbb);
if (do_compress_zcb_zbb(Rd_Rs2, Rs1) && (Rd_Rs2 == Rs1)) {
c_zext_h(Rd_Rs2);
} else {
_zext_h(Rd_Rs2, Rs1);
}
}
// Prerequisites: Zcb, Zbb
// Format CS
void c_zext_h(Register Rs1) {
c_u_if<0b010>(Rs1);
}
// Prerequisites: Zbb
void sext_h(Register Rd_Rs2, Register Rs1) {
assert_cond(UseZbb);
if (do_compress_zcb_zbb(Rd_Rs2, Rs1) && (Rd_Rs2 == Rs1)) {
c_sext_h(Rd_Rs2);
} else {
_sext_h(Rd_Rs2, Rs1);
}
}
// Prerequisites: Zcb, Zbb
// Format CS
void c_sext_h(Register Rs1) {
c_u_if<0b011>(Rs1);
}
// Prerequisites: Zcb, Zba
// Format CS
void c_zext_w(Register Rs1) {
c_u_if<0b100>(Rs1);
}
// Prerequisites: Zcb
// Format CS
void c_not(Register Rs1) {
c_u_if<0b101>(Rs1);
}
// Prerequisites: Zcb (M or Zmmul)
// Format CA, c.mul
void c_mul(Register Rd_Rs1, Register Rs2) {
uint16_t insn = 0;
c_patch((address)&insn, 1, 0, 0b01);
c_patch_compressed_reg((address)&insn, 2, Rs2);
c_patch((address)&insn, 6, 5, 0b10);
c_patch_compressed_reg((address)&insn, 7, Rd_Rs1);
c_patch((address)&insn, 12, 10, 0b111);
c_patch((address)&insn, 15, 13, 0b100);
emit_int16(insn);
}
void mul(Register Rd, Register Rs1, Register Rs2) {
if (Rd != Rs1 && Rd != Rs2) {
// Three registers needed without a mv, emit uncompressed
_mul(Rd, Rs1, Rs2);
return;
}
// Rd is either Rs1 or Rs2
if (!do_compress_zcb(Rs2, Rs1)) {
_mul(Rd, Rs1, Rs2);
} else {
if (Rd == Rs2) {
Rs2 = Rs1;
} else {
assert(Rd == Rs1, "must be");
}
c_mul(Rd, Rs2);
}
}
// Stack overflow checking
virtual void bang_stack_with_offset(int offset) { Unimplemented(); }
@@ -2940,6 +3255,17 @@ public:
return uabs(target - branch) < branch_range;
}
// Decode the given instruction, checking if it's a 16-bit compressed
// instruction and return the address of the next instruction.
static address locate_next_instruction(address inst) {
// Instruction wider than 16 bits has the two least-significant bits set.
if ((0x3 & *inst) == 0x3) {
return inst + instruction_size;
} else {
return inst + compressed_instruction_size;
}
}
Assembler(CodeBuffer* code) : AbstractAssembler(code), _in_compressible_region(true) {}
};

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2020, 2022, Huawei Technologies Co., Ltd. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -121,10 +121,10 @@ void C2_MacroAssembler::fast_lock(Register objectReg, Register boxReg,
// Handle existing monitor.
bind(object_has_monitor);
// The object's monitor m is unlocked iff m->owner == NULL,
// The object's monitor m is unlocked iff m->owner == nullptr,
// otherwise m->owner may contain a thread or a stack address.
//
// Try to CAS m->owner from NULL to current thread.
// Try to CAS m->owner from null to current thread.
add(tmp, disp_hdr, (in_bytes(ObjectMonitor::owner_offset()) - markWord::monitor_value));
cmpxchg(/*memory address*/tmp, /*expected value*/zr, /*new value*/xthread, Assembler::int64, Assembler::aq,
Assembler::rl, /*result*/flag); // cas succeeds if flag == zr(expected)
@@ -1358,7 +1358,6 @@ void C2_MacroAssembler::arrays_equals(Register a1, Register a2, Register tmp3,
// For Strings we're passed the address of the first characters in a1
// and a2 and the length in cnt1.
// elem_size is the element size in bytes: either 1 or 2.
// There are two implementations. For arrays >= 8 bytes, all
// comparisons (for hw supporting unaligned access: including the final one,
// which may overlap) are performed 8 bytes at a time.
@@ -1367,13 +1366,12 @@ void C2_MacroAssembler::arrays_equals(Register a1, Register a2, Register tmp3,
// halfword, then a short, and then a byte.
void C2_MacroAssembler::string_equals(Register a1, Register a2,
Register result, Register cnt1, int elem_size)
Register result, Register cnt1)
{
Label SAME, DONE, SHORT, NEXT_WORD;
Register tmp1 = t0;
Register tmp2 = t1;
assert(elem_size == 1 || elem_size == 2, "must be 2 or 1 byte");
assert_different_registers(a1, a2, result, cnt1, tmp1, tmp2);
BLOCK_COMMENT("string_equals {");
@@ -1439,15 +1437,13 @@ void C2_MacroAssembler::string_equals(Register a1, Register a2,
}
bind(TAIL01);
if (elem_size == 1) { // Only needed when comparing 1-byte elements
// 0-1 bytes left.
test_bit(tmp1, cnt1, 0);
beqz(tmp1, SAME);
{
lbu(tmp1, Address(a1, 0));
lbu(tmp2, Address(a2, 0));
bne(tmp1, tmp2, DONE);
}
// 0-1 bytes left.
test_bit(tmp1, cnt1, 0);
beqz(tmp1, SAME);
{
lbu(tmp1, Address(a1, 0));
lbu(tmp2, Address(a2, 0));
bne(tmp1, tmp2, DONE);
}
// Arrays are equal.
@@ -1783,6 +1779,95 @@ void C2_MacroAssembler::signum_fp(FloatRegister dst, FloatRegister one, bool is_
bind(done);
}
static void float16_to_float_slow_path(C2_MacroAssembler& masm, C2GeneralStub<FloatRegister, Register, Register>& stub) {
#define __ masm.
FloatRegister dst = stub.data<0>();
Register src = stub.data<1>();
Register tmp = stub.data<2>();
__ bind(stub.entry());
// following instructions mainly focus on NaN, as riscv does not handle
// NaN well with fcvt, but the code also works for Inf at the same time.
// construct a NaN in 32 bits from the NaN in 16 bits,
// we need the payloads of non-canonical NaNs to be preserved.
__ mv(tmp, 0x7f800000);
// sign-bit was already set via sign-extension if necessary.
__ slli(t0, src, 13);
__ orr(tmp, t0, tmp);
__ fmv_w_x(dst, tmp);
__ j(stub.continuation());
#undef __
}
// j.l.Float.float16ToFloat
void C2_MacroAssembler::float16_to_float(FloatRegister dst, Register src, Register tmp) {
auto stub = C2CodeStub::make<FloatRegister, Register, Register>(dst, src, tmp, 20, float16_to_float_slow_path);
// in riscv, NaN needs a special process as fcvt does not work in that case.
// in riscv, Inf does not need a special process as fcvt can handle it correctly.
// but we consider to get the slow path to process NaN and Inf at the same time,
// as both of them are rare cases, and if we try to get the slow path to handle
// only NaN case it would sacrifise the performance for normal cases,
// i.e. non-NaN and non-Inf cases.
// check whether it's a NaN or +/- Inf.
mv(t0, 0x7c00);
andr(tmp, src, t0);
// jump to stub processing NaN and Inf cases.
beq(t0, tmp, stub->entry());
// non-NaN or non-Inf cases, just use built-in instructions.
fmv_h_x(dst, src);
fcvt_s_h(dst, dst);
bind(stub->continuation());
}
static void float_to_float16_slow_path(C2_MacroAssembler& masm, C2GeneralStub<Register, FloatRegister, Register>& stub) {
#define __ masm.
Register dst = stub.data<0>();
FloatRegister src = stub.data<1>();
Register tmp = stub.data<2>();
__ bind(stub.entry());
__ fmv_x_w(dst, src);
// preserve the payloads of non-canonical NaNs.
__ srai(dst, dst, 13);
// preserve the sign bit.
__ srai(tmp, dst, 13);
__ slli(tmp, tmp, 10);
__ mv(t0, 0x3ff);
__ orr(tmp, tmp, t0);
// get the result by merging sign bit and payloads of preserved non-canonical NaNs.
__ andr(dst, dst, tmp);
__ j(stub.continuation());
#undef __
}
// j.l.Float.floatToFloat16
void C2_MacroAssembler::float_to_float16(Register dst, FloatRegister src, FloatRegister ftmp, Register xtmp) {
auto stub = C2CodeStub::make<Register, FloatRegister, Register>(dst, src, xtmp, 130, float_to_float16_slow_path);
// in riscv, NaN needs a special process as fcvt does not work in that case.
// check whether it's a NaN.
// replace fclass with feq as performance optimization.
feq_s(t0, src, src);
// jump to stub processing NaN cases.
beqz(t0, stub->entry());
// non-NaN cases, just use built-in instructions.
fcvt_h_s(ftmp, src);
fmv_x_h(dst, ftmp);
bind(stub->continuation());
}
void C2_MacroAssembler::signum_fp_v(VectorRegister dst, VectorRegister one, BasicType bt, int vlen) {
vsetvli_helper(bt, vlen);
@@ -1896,7 +1981,7 @@ void C2_MacroAssembler::element_compare(Register a1, Register a2, Register resul
mv(result, true);
}
void C2_MacroAssembler::string_equals_v(Register a1, Register a2, Register result, Register cnt, int elem_size) {
void C2_MacroAssembler::string_equals_v(Register a1, Register a2, Register result, Register cnt) {
Label DONE;
Register tmp1 = t0;
Register tmp2 = t1;
@@ -1905,11 +1990,7 @@ void C2_MacroAssembler::string_equals_v(Register a1, Register a2, Register resul
mv(result, false);
if (elem_size == 2) {
srli(cnt, cnt, 1);
}
element_compare(a1, a2, result, cnt, tmp1, tmp2, v2, v4, v2, elem_size == 1, DONE);
element_compare(a1, a2, result, cnt, tmp1, tmp2, v2, v4, v2, true, DONE);
bind(DONE);
BLOCK_COMMENT("} string_equals_v");

View File

@@ -92,8 +92,7 @@
void arrays_hashcode_elload(Register dst, Address src, BasicType eltype);
void string_equals(Register r1, Register r2,
Register result, Register cnt1,
int elem_size);
Register result, Register cnt1);
// refer to conditional_branches and float_conditional_branches
static const int bool_test_bits = 3;
@@ -172,8 +171,12 @@
void signum_fp(FloatRegister dst, FloatRegister one, bool is_double);
void float16_to_float(FloatRegister dst, Register src, Register tmp);
void float_to_float16(Register dst, FloatRegister src, FloatRegister ftmp, Register xtmp);
void signum_fp_v(VectorRegister dst, VectorRegister one, BasicType bt, int vlen);
// intrinsic methods implemented by rvv instructions
// compress bits, i.e. j.l.Integer/Long::compress.
@@ -184,8 +187,7 @@
void expand_bits_l_v(Register dst, Register src, Register mask);
void string_equals_v(Register r1, Register r2,
Register result, Register cnt1,
int elem_size);
Register result, Register cnt1);
void arrays_equals_v(Register r1, Register r2,
Register result, Register cnt1,

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