United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6939930 exception unwind changes in 6919934 hurts compilation speed
JDK-6939930 : exception unwind changes in 6919934 hurts compilation speed

Details
Type:
Bug
Submit Date:
2010-03-31
Status:
Resolved
Updated Date:
2010-09-24
Project Name:
JDK
Resolved Date:
2010-05-05
Component:
hotspot
OS:
solaris_9
Sub-Component:
compiler
CPU:
sparc
Priority:
P3
Resolution:
Fixed
Affected Versions:
hs18
Fixed Versions:
hs18 (b04)

Related Reports
Backport:
Backport:
Backport:
Backport:
Relates:

Sub Tasks

Description
The changes to allow the frame to unwind itself as part of 6919934 caused every compile to have at least one exception handler.  This resulted in roughly a 10% compile speed hit because of the extra work and allocation required by that.  We should fix this either by backing it out or by finding a way to do the same thing without the extra overhead.

                                    

Comments
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/9f5b60a14736
                                     
2010-04-16
EVALUATION

6939930: exception unwind changes in 6919934 hurts compilation speed
Reviewed-by: twisti

The fix 6919934 created a synthetic handler that was used to unwind
the frame during exception dispatch but the addition of this handler
slowed down compilation significantly.  Additionally it increased the
size of the nmethod by about 15% because of the extra exception
handler entries.  This change moves all the unwind logic down into the
assembler and adds a field in the nmethod which points at the unwind
handler.  This removes both the speed and space penalty.  The new
assembly unwind code is slightly tighter than what we used to emit.  I
also simplified the unwind LIR op slightly and separated it out.  It
also dispatches directly to the new unwind handler instead of
performing the unwind itself.
                                     
2010-04-19



Hardware and Software, Engineered to Work Together