SUGGESTED FIX
PRT webrev:
http://prt-web.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2007/20070910113317.rasbold.6592707/workspace/webrevs/webrev-2007.09.10/index.html
|
|
|
EVALUATION
Postaloc transformations treat CastX2P nodes as ideal copies and therefore are considered interchangeable with a MachSpillCopy. Under the right conditions, postaloc will eliminate copies so that a safepoint node has a CastX2P as input. A CastX2P node should not appear as input to JVMState information, as FillLocArray can not properly deal with native pointers.
|
|
|
SUGGESTED FIX
Change formssel.cpp to no longer mark CastX2P and CastP2X nodes as ideal_copies.
Postaloc will then no longer treat them as interchangeable with plain
MachSpillCopies, and the CastX2P node will not appear as an input to JVM state
information.
*** (#1 of 1): [ UNSAVED ] ###@###.###
|
|
|
EVALUATION
The problme stems from C2 confusing two different uses of RawPtr types. Both
a jsr return bci and an unsafe native pointer are represented as RawPtrs. In 64
bit VMs, the stack representation differs.
|
|
|
EVALUATION
In compiling sun/awt/X11/XAtom.getAtomListProperty, C2 is misaligning a pointer
(cast from a long in an unsafe native) in the debug info at a deoptimization point.
The debug info has the two entries as a value/deaddeaf pair, when it should be
a deaddeaf/value pair.
*** (#1 of 1): [ UNSAVED ] ###@###.###
|
|
|
WORK AROUND
Use this VM option:
-XX:CompileCommand=exclude,sun/awt/X11/XAtom,getAtomListProperty
|
|
|