JDK-6782232 : assert("CreateEx must be first instruction in block" )
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs14
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: solaris_10
  • CPU: sparc
  • Submitted: 2008-12-08
  • Updated: 2010-04-03
  • Resolved: 2009-02-27
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7 Other
6u18Fixed 7Fixed hs15Fixed
Related Reports
Relates :  
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
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.
07-01-2009

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

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