United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6930398 fix for return address locals in OSR entries uses wrong test
JDK-6930398 : fix for return address locals in OSR entries uses wrong test

Details
Type:
Bug
Submit Date:
2010-02-26
Status:
Resolved
Updated Date:
2010-09-24
Project Name:
JDK
Resolved Date:
2010-03-10
Component:
hotspot
OS:
solaris_9
Sub-Component:
compiler
CPU:
sparc
Priority:
P3
Resolution:
Fixed
Affected Versions:
hs17
Fixed Versions:
hs17 (b11)

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

Sub Tasks

Description
The fix for 6915557 is attempting to handle locals containing return address specially but the test it's using is wrong.  C2's type system smears together T_ADDRESS with raw pointer types, so TypePtr::NULL_PTr->basic_type() == T_ADDRESS so the logic will trigger for locals which are provably null resulting in asserts later.  The correct fix is to test the ciType or local which correctly distinguishes these cases.

                                    

Comments
EVALUATION

ChangeSet=http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/7d236a9688c5,ChangeRequest=6930398
                                     
2010-03-01
EVALUATION

6930398: fix for return address locals in OSR entries uses wrong test
Reviewed-by: kvn

The fix for 6915557 is attempting to handle locals containing return
address specially but the test it's using is wrong.  C2's type system
smears together T_ADDRESS with raw pointer types, so
TypePtr::NULL_PTr->basic_type() == T_ADDRESS so the logic will trigger
for locals which are provably null resulting in asserts later.  The
correct fix is to test the ciType of the local which correctly
distinguishes these cases.  Tested with failing tests from nightly.r 

src/share/vm/opto/parse1.cpp
                                     
2010-03-02



Hardware and Software, Engineered to Work Together