RFR(L): 8220051: Remove global safepoint code
Daniel D. Daugherty
daniel.daugherty at oracle.com
Thu Mar 19 20:39:46 UTC 2020
Hi Robbin!
On 3/19/20 8:45 AM, Robbin Ehn wrote:
> On 2020-03-19 13:44, Robbin Ehn wrote:
>> Hi all, please build, test and review.
>>
>> We removed (obsoleted) the flag ThreadLocalHandshakes in JDK 14.
>> Any platform defining THREAD_LOCAL_POLL can only use per thread poll.
>> Since all platforms now define THREAD_LOCAL_POLL the global poll code
>> is dead.
>> Let's remove it!
>>
>> Issue: https://bugs.openjdk.java.net/browse/JDK-8220051
>> Changeset: http://cr.openjdk.java.net/~rehn/8220051/v1/webrev/index.html
Lots of files in this one. I'm gonna try to review these files
in groups that make sense my warped mind... :-)
Thumbs up on the code review.
I did my usual crawl thru review, but this is a lot of files so
that boring detail is below...
I'm not entirely sure of the roll played by
SafepointMechanism::_polling_page,
but that's probably because that didn't change except for the location of
the _polling_page field itself.
With this kind of a change, I think you also want to get some Tier[6-8]
test cycles in since that's where the stress tests really go to town...
Dan
src/hotspot/share/runtime/safepointMechanism.hpp
No comments.
src/hotspot/share/runtime/safepointMechanism.inline.hpp
No comments.
src/hotspot/share/runtime/safepointMechanism.cpp
old L73-81: Of course, now I'm wondering where the polling_page is
setup...
Since it appears that we still have a global polling page for
non-JavaThreads,
but I gotta read on...
I went to the bug to see if it would help my confusion, but the
bug has no description. That should be fixed.
Update: The _polling_page is setup here:
L54: char* bad_page = polling_page;
L57: os::protect_memory(bad_page, page_size, os::MEM_PROT_NONE);
L61: _polling_page = (address)(bad_page);
And for some reason, os/aix/safepointMechanism_aix.cpp has its own
copy of this logic...
src/hotspot/share/runtime/safepoint.cpp
No comments.
src/hotspot/share/runtime/os.hpp
Okay... no more OS interface to the polling page... gotta read on...
src/hotspot/share/runtime/biasedLocking.cpp
No comments.
src/hotspot/share/runtime/handshake.cpp
No comments.
src/hotspot/share/runtime/sweeper.cpp
No comments.
src/hotspot/share/runtime/thread.cpp
No comments.
src/hotspot/share/utilities/vmError.cpp
No comments.
src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp
No comments.
src/hotspot/share/gc/z/zMark.cpp
No comments.
src/hotspot/share/opto/callnode.cpp
No comments.
src/hotspot/share/opto/machnode.hpp
No comments.
src/hotspot/share/opto/machnode.cpp
No comments.
src/hotspot/share/opto/parse1.cpp
No comments.
src/hotspot/share/aot/aotCodeHeap.cpp
No comments.
src/jdk.aot/share/classes/jdk.tools.jaotc.binformat/src/jdk/tools/jaotc/binformat/BinaryContainer.java
No comments.
src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/MarkProcessor.java
No comments.
src/hotspot/os/bsd/os_bsd.cpp
No comments.
src/hotspot/os/linux/os_linux.cpp
No comments.
src/hotspot/os/solaris/os_solaris.cpp
No comments.
src/hotspot/os/windows/os_windows.cpp
No comments.
src/hotspot/os_cpu/bsd_x86/os_bsd_x86.cpp
No comments.
src/hotspot/os_cpu/linux_sparc/os_linux_sparc.cpp
No comments.
src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp
No comments.
src/hotspot/os_cpu/solaris_sparc/os_solaris_sparc.cpp
No comments.
src/hotspot/os_cpu/solaris_x86/os_solaris_x86.cpp
No comments.
src/hotspot/cpu/sparc/c1_LIRAssembler_sparc.cpp
No comments.
src/hotspot/cpu/sparc/globalDefinitions_sparc.hpp
No comments.
src/hotspot/cpu/sparc/interp_masm_sparc.cpp
No comments.
src/hotspot/cpu/sparc/macroAssembler_sparc.cpp
No comments.
src/hotspot/cpu/sparc/sharedRuntime_sparc.cpp
No comments.
src/hotspot/cpu/sparc/sparc.ad
No comments.
src/hotspot/cpu/sparc/templateTable_sparc.cpp
No comments.
src/hotspot/cpu/x86/assembler_x86.cpp
No comments.
src/hotspot/cpu/x86/assembler_x86.hpp
No comments.
src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp
No comments.
src/hotspot/cpu/x86/c1_LIRGenerator_x86.cpp
No comments.
src/hotspot/cpu/x86/globalDefinitions_x86.hpp
No comments.
src/hotspot/cpu/x86/interp_masm_x86.cpp
No comments.
src/hotspot/cpu/x86/jvmciCodeInstaller_x86.cpp
No comments.
src/hotspot/cpu/x86/macroAssembler_x86.cpp
No comments.
src/hotspot/cpu/x86/nativeInst_x86.hpp
No comments.
src/hotspot/cpu/x86/relocInfo_x86.cpp
No comments.
src/hotspot/cpu/x86/sharedRuntime_x86_32.cpp
No comments.
src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp
No comments.
src/hotspot/cpu/x86/templateTable_x86.cpp
No comments.
src/hotspot/cpu/x86/x86_32.ad
No comments.
src/hotspot/cpu/x86/x86_64.ad
No comments.
src/hotspot/os/aix/os_aix.cpp
No comments.
src/hotspot/os/aix/safepointMechanism_aix.cpp
No comments.
src/hotspot/os_cpu/aix_ppc/os_aix_ppc.cpp
No comments.
src/hotspot/os_cpu/linux_aarch64/os_linux_aarch64.cpp
No comments.
src/hotspot/os_cpu/linux_arm/os_linux_arm.cpp
No comments.
src/hotspot/os_cpu/linux_ppc/os_linux_ppc.cpp
No comments.
src/hotspot/os_cpu/linux_s390/os_linux_s390.cpp
No comments.
src/hotspot/cpu/aarch64/aarch64.ad
No comments.
src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp
No comments.
src/hotspot/cpu/aarch64/globalDefinitions_aarch64.hpp
No comments.
src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp
No comments.
src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
No comments.
src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp
No comments.
src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp
No comments.
src/hotspot/cpu/arm/arm.ad
No comments.
src/hotspot/cpu/arm/globalDefinitions_arm.hpp
No comments.
src/hotspot/cpu/arm/interp_masm_arm.cpp
No comments.
src/hotspot/cpu/arm/macroAssembler_arm.cpp
No comments.
src/hotspot/cpu/arm/sharedRuntime_arm.cpp
No comments.
src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp
No comments.
src/hotspot/cpu/ppc/globalDefinitions_ppc.hpp
No comments.
src/hotspot/cpu/ppc/interp_masm_ppc_64.cpp
No comments.
src/hotspot/cpu/ppc/macroAssembler_ppc.cpp
No comments.
src/hotspot/cpu/ppc/macroAssembler_ppc.inline.hpp
No comments.
src/hotspot/cpu/ppc/nativeInst_ppc.hpp
No comments.
src/hotspot/cpu/ppc/ppc.ad
No comments.
src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp
No comments.
src/hotspot/cpu/ppc/templateTable_ppc_64.cpp
No comments.
src/hotspot/cpu/s390/c1_LIRAssembler_s390.cpp
No comments.
src/hotspot/cpu/s390/globalDefinitions_s390.hpp
No comments.
src/hotspot/cpu/s390/interp_masm_s390.cpp
No comments.
src/hotspot/cpu/s390/macroAssembler_s390.cpp
No comments.
src/hotspot/cpu/s390/s390.ad
No comments.
src/hotspot/cpu/s390/sharedRuntime_s390.cpp
No comments.
src/hotspot/cpu/s390/templateTable_s390.cpp
No comments.
src/hotspot/cpu/zero/globalDefinitions_zero.hpp
No comments.
>>
>> I have built fastdebug:
>> linux-aarch64
>> linux-arm32
>> linux-ppc64le
>> linux-s390x
>> linux-x86_64-zero
>> linux-x86_64 (no PCH)
>> linux-x86_64 (slowdebug) (no PCH)
>> linux-x86
>> osx-x86_64
>> windows-x86_64
>> solaris-sparcv9
>>
>> Tested t1-5:
>> linux-x86_64
>> osx-x86_64
>> windows-x86_64
>> solaris-sparcv9
>>
>> Manually:
>> linux-aarch64
>> linux-x86_64-zero
>>
>> Any extra help building and testing is appreciated, especially on
>> arm32, ppc64le, s390x.
>>
>> Thanks, Robbin
More information about the hotspot-dev
mailing list