United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6809798 SafePointScalarObject node placed into incorrect block during GCM
JDK-6809798 : SafePointScalarObject node placed into incorrect block during GCM

Details
Type:
Bug
Submit Date:
2009-02-25
Status:
Resolved
Updated Date:
2010-04-03
Project Name:
JDK
Resolved Date:
2009-03-18
Component:
hotspot
OS:
generic
Sub-Component:
compiler
CPU:
generic
Priority:
P4
Resolution:
Fixed
Affected Versions:
hs14
Fixed Versions:
hs15 (b03)

Related Reports
Backport:
Backport:

Sub Tasks

Description
Running server VM fastdebug build with -XX:+DoEscapeAnalysis could lead to:

# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=\sched.cpp:2293
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (c:\...\sources\hotspot\src\share\vm\opto\sched.cpp:2293), pid=4076, tid=2156
#  Error: assert(prev_selected_node != chosen_node,"Trace_Sched::select_node is in an infinite loop")
#

The code inspection has shown that the bug is in common code.
This assert happened in the new port sources.

Also it is not a big problem - the only condition to generate correct code
is to have SafePointScalarObject node referencing only one Safepoint node
for which it was created. And this is why there was the fix to make it pinned.

                                    

Comments
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/523ded093c31
                                     
2009-02-27
PUBLIC COMMENTS

Problem:
The main problem is that the control edge of a pinned node
could be replaced during schedule_early after the pinned
node scheduled into a block if the control node is a block
projection.
Also there were few places where the control edge of
a SafePointScalarObject node was not adjusted correctly.

Solution:
Replace the control edge of a pinned node before scheduling.
Adjust the control edge of a SafePointScalarObject when needed.
Added few asserts to verify scheduling correctness for
pinned nodes and SafePointScalarObject node.
                                     
2009-02-27



Hardware and Software, Engineered to Work Together