RFR(s): 8222640: Remove deopt suspend
Daniel D. Daugherty
daniel.daugherty at oracle.com
Wed Apr 17 13:46:52 UTC 2019
On 4/17/19 4:35 AM, Robbin Ehn wrote:
> Hi all, please consider this change.
>
> The code for deopt suspend is no longer needed since today the
> register window
> is always flushed when this code executes. Exactly when this code was
> needed is not clear, entered via duke changeset 1. I did not dig since
> we no longer have such use case.
>
> Webrev:
> http://cr.openjdk.java.net/~rehn/8222640/webrev/
> Issue:
> https://bugs.openjdk.java.net/browse/JDK-8222640
>
> Passes t1-5.
>
> Thanks, Robbin
Since this code was added by the Compiler team, I think you're going
to want at least one Compiler team member to chime in on this review...
I was going to add a historical comment to your bug, but JBS appears to
be down at the moment... This code was added by this delta:
$ sp -r1.795.1.1 src/share/vm/runtime/thread.cpp
src/share/vm/runtime/SCCS/s.thread.cpp:
D 1.795.1.1 06/12/07 10:06:52 sgoldman 2086 2084 00031/00010/04023
MRs:
COMMENTS:
6463133 - patchless deopt. Support specialized deopt suspend for
register window
based machines. Pass registerMap to revoke_bias to prevent redundant stack
walks. frames now cache the codeBlob.
Looks like 6463133 was not a bug that I was tracking way back then
so I don't have an email folder for it. I did find Steve Goldman's
push message for it, but the fix for 6463133 is included with four
other bug fixes:
---------------------------------------------------------
Job ID: 20061207101238.sgoldman.6463133_deopt-M
Original workspace: gretch:/disk2/ws/6463133_deopt-M
Submitter: sgoldman
Archived data:
/net/prt-data.east/archives/main/c2_baseline/2006/20061207101238.sgoldman.6463133_deopt-M/
Webrev:
http://analemma.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2006/20061207101238.sgoldman.6463133_deopt-M/workspace/webrevs/webrev-2006.12.07/index.html
Fixed 6463133: Deoptimization should not use code patching
Fixed 6490483: Java support for pstack broken
Fixed 6490489: java pstack support for server on x86 corrupts stack
frame info
Fixed 6490492: java support for pstack rarely gets server compiled
frames correct.
Fixed 6500866: jvm crash running forte stress kit.
This converts deoptimization to no longer do patching of code
and now only patches return address. This made a rather large
change to the frame object so that now a frame always carries
along the codeBlob it refers to if it in fact does refer to
a codeBlob. This removes lots of redundant CodeCache::find_blob
calls. The testing of this fix which obviously changes the way
frames look on the stack discovered that both SA and pstack support
have been broken. pstack support has been been broken for years.
As part of the SA changes I found that the fix for:
6252656: Putative invariant for TLABS
_start+_size==_end+alignment_reserve() not being maintained
didn't properly update SA and I've added that fix.
There is a discussion of patchless deopt here
http://j2se.sfbay/web/bin/view/HotspotCompilers/PatchlessDeopt
which is currently (Dec. 7, 2006) out of date but which I will clean up.
One other notable change with this putback is that there is no longer a
separate
exception handler for each codeblob. Now the exception handler (and the new
deopt handler) are stored in the stub (read uncommon code) area.
Reviewed by: Tom
Fix verified (y/n): yes
Verification testing:
PRT with various stress options. NSK and JDI tests with and without
stress
options. Dan's forte stress tests on sparc/x86/amd64. Lots of
various hand
testing of SA (in addition to sasanity) pstack, and dtrace.
[end sgoldman Thu Dec 7 13:56:55 2006 EDT]
sgoldman Mon Dec 11 15:28:48 2006 PDT
-------------------------------------
Since this is an integration push from c2_baseline -> main/baseline, I do
not have the list of files modified. I would have to find the c2_baseline
TeamWare workspace if it still exists. However, I'm not sure it would help
much since 6463133 is combined with 4 other fixes...
I did a search for all of the files that mention 6463133 in their SCCS
history and that list is 83 files long. Ouch. I've attached that list to
this email.
Dan
-------------- next part --------------
src/closed/cpu/ia64/vm/frame_ia64.hpp
src/closed/cpu/ia64/vm/globals_ia64.hpp
src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
src/cpu/sparc/vm/c1_LIRAssembler_sparc.hpp
src/cpu/sparc/vm/frame_sparc.cpp
src/cpu/sparc/vm/frame_sparc.hpp
src/cpu/sparc/vm/frame_sparc.inline.hpp
src/cpu/sparc/vm/globals_sparc.hpp
src/cpu/sparc/vm/interpreter_sparc.cpp
src/cpu/sparc/vm/nativeInst_sparc.cpp
src/cpu/sparc/vm/sharedRuntime_sparc.cpp
src/cpu/sparc/vm/sparc.ad
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
src/cpu/x86/vm/c1_LIRAssembler_x86.hpp
src/cpu/x86/vm/frame_x86.cpp
src/cpu/x86/vm/frame_x86.hpp
src/cpu/x86/vm/frame_x86.inline.hpp
src/cpu/x86/vm/globals_x86.hpp
src/cpu/x86/vm/interpreter_x86_32.cpp
src/cpu/x86/vm/interpreter_x86_64.cpp
src/cpu/x86/vm/sharedRuntime_x86_32.cpp
src/cpu/x86/vm/sharedRuntime_x86_64.cpp
src/cpu/x86/vm/x86_32.ad
src/cpu/x86/vm/x86_64.ad
src/os/solaris/dtrace/generateJvmOffsets.cpp
src/os/solaris/dtrace/libjvm_db.c
src/share/vm/asm/assembler.cpp
src/share/vm/asm/assembler.hpp
src/share/vm/asm/codeBuffer.cpp
src/share/vm/asm/codeBuffer.hpp
src/share/vm/c1/c1_Compilation.cpp
src/share/vm/c1/c1_Compilation.hpp
src/share/vm/c1/c1_FrameMap.cpp
src/share/vm/c1/c1_FrameMap.hpp
src/share/vm/c1/c1_LIRAssembler.cpp
src/share/vm/c1/c1_LIRAssembler.hpp
src/share/vm/c1/c1_Runtime1.cpp
src/share/vm/c1/c1_Runtime1.hpp
src/share/vm/ci/ciEnv.cpp
src/share/vm/ci/ciEnv.hpp
src/share/vm/classfile/javaClasses.cpp
src/share/vm/code/codeBlob.cpp
src/share/vm/code/codeBlob.hpp
src/share/vm/code/codeCache.cpp
src/share/vm/code/compiledIC.cpp
src/share/vm/code/icBuffer.cpp
src/share/vm/code/nmethod.cpp
src/share/vm/code/nmethod.hpp
src/share/vm/code/relocInfo.cpp
src/share/vm/code/relocInfo.hpp
src/share/vm/compiler/oopMap.cpp
src/share/vm/compiler/oopMap.hpp
src/share/vm/includeDB_compiler1
src/share/vm/includeDB_compiler2
src/share/vm/includeDB_core
src/share/vm/opto/chaitin.cpp
src/share/vm/opto/compile.cpp
src/share/vm/opto/compile.hpp
src/share/vm/opto/graphKit.cpp
src/share/vm/opto/locknode.cpp
src/share/vm/opto/locknode.hpp
src/share/vm/opto/matcher.cpp
src/share/vm/opto/output.cpp
src/share/vm/opto/runtime.cpp
src/share/vm/prims/forte.cpp
src/share/vm/runtime/deoptimization.cpp
src/share/vm/runtime/deoptimization.hpp
src/share/vm/runtime/fprofiler.cpp
src/share/vm/runtime/frame.cpp
src/share/vm/runtime/frame.hpp
src/share/vm/runtime/globals.hpp
src/share/vm/runtime/interfaceSupport.cpp
src/share/vm/runtime/rframe.cpp
src/share/vm/runtime/safepoint.cpp
src/share/vm/runtime/sharedRuntime.cpp
src/share/vm/runtime/thread.cpp
src/share/vm/runtime/thread.hpp
src/share/vm/runtime/vframe_hp.cpp
src/share/vm/runtime/vframe_hp.hpp
src/share/vm/runtime/vframe.cpp
src/share/vm/runtime/vframe.hpp
src/share/vm/runtime/vm_operations.cpp
src/share/vm/runtime/vmStructs.cpp
More information about the hotspot-runtime-dev
mailing list