United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6782232 assert("CreateEx must be first instruction in block" )
JDK-6782232 : assert("CreateEx must be first instruction in block" )

Details
Type:
Bug
Submit Date:
2008-12-08
Status:
Resolved
Updated Date:
2010-04-03
Project Name:
JDK
Resolved Date:
2009-02-27
Component:
hotspot
OS:
solaris_10
Sub-Component:
compiler
CPU:
sparc
Priority:
P4
Resolution:
Fixed
Affected Versions:
hs14
Fixed Versions:
hs15 (b02)

Related Reports
Backport:
Backport:
Relates:

Sub Tasks

Description
Tom Rodriguez wrote:
> CreateEx certainly must be at the beginning of the block during register 
> allocation, otherwise I don't think the interference graph will be 
> handled correctly.  The CreateEx represents the incoming exception in a 
> fixed register and it needs to interfere with every value coming into 
> the exception handler.  If a MachSpillCopy is before it then a value 
> could be live into the exception point in the exception oop register, 
> where it would be blown away.

[t@8 l@8]: print b->dump()
B23: #    B35 B24 B34 <- N269  Freq: 5.49441e-06
 286    Region    ===  286  117  [[ 286  114  119 ]]
 399    MachSpillCopy    === _  91  [[ 114 ]]   Oop:java/lang/String:NotNull:exact *
 398    MachSpillCopy    === _  95  [[ 114  443 ]]
 397    MachSpillCopy    === _  353  [[ 114  442 ]]
 396    MachSpillCopy    === _  352  [[ 114  441 ]]   Oop:java/util/Locale:exact *
 395    MachSpillCopy    === _  380  [[ 114  440 ]]   Oop:java/util/ResourceBundle$Control *
 119    CreateException    ===  286  100  [[ 393 ]] java/lang/Throwable:NotNull * Oop:java/lang/Throwable:NotNull * !jvms: ResourceBundle::loadBundle @ bci:83

                                    

Comments
EVALUATION

The check for CreateEx is missing in the code which adds
MachSpillCopy nodes to a block.
                                     
2009-01-06
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/96964ebdb154
                                     
2009-01-07
PUBLIC COMMENTS

Problem:
The check for CreateEx is missing in the code which adds
MachSpillCopy nodes to a block.

Solution:
- Add the missing check for CreateEx.
- Add new notproduct flag VerifyRegisterAllocator to check
graph integrity during RA. It helped to find this bug.
VerifyOpto has a lot of false positive asserts during
IGVN optimizations which currently prevents its usage
during RA.
- Fix verification code in method verify_base_ptrs()
to check all Phi's paths and type of derived and base
pointers.
                                     
2009-01-07



Hardware and Software, Engineered to Work Together