Request for reviews (XXL): 6961690: load oops from constant table on SPARC

Christian Thalinger christian.thalinger at oracle.com
Fri Nov 12 06:04:13 PST 2010


http://cr.openjdk.java.net/~twisti/6961690/webrev.01/

6961690: load oops from constant table on SPARC
Summary: oops should be loaded from the constant table of an nmethod  
instead of materializing them with a long code sequence.
Reviewed-by:

oops should be loaded from the constant table of an nmethod instead of
materializing them with a long code sequence.

This fix introduces two new ideal nodes MachConstantBaseNode and
MachConstantNode.  MachConstantBaseNode represents the base address of
the constant table, MachConstantNode a constant that should be read
from the constant table.

ADLC was changed to support three new keywords: constantaddress,
constanttablebase, and constantoffset.  constantaddress represents the
absolute address of a constant and is used on x86.  constanttablebase
represents the register that holds the constant table base address and
constantoffset is the relative offset to constanttablebase.  The
latter two are used on SPARC.

For SPARC a new command line option was added:
UseRDPCForConstantTableBase.  If that option is true the RDPC
instruction is used to get the constant table base address instead of
materializing the address.  This option is currently off by default
and may be switched on for future SPARC implementations.

The patch also includes a change from Tom that fixes a bug that was
uncovered by this work:

http://cr.openjdk.java.net/~twisti/6961690/webrev.01/src/share/vm/opto/postaloc.cpp.udiff.html

src/cpu/sparc/vm/assembler_sparc.cpp
src/cpu/sparc/vm/assembler_sparc.hpp
src/cpu/sparc/vm/assembler_sparc.inline.hpp
src/cpu/sparc/vm/sparc.ad
src/cpu/x86/vm/assembler_x86.cpp
src/cpu/x86/vm/assembler_x86.hpp
src/cpu/x86/vm/x86_32.ad
src/cpu/x86/vm/x86_64.ad
src/os/linux/vm/vmError_linux.cpp
src/share/vm/adlc/adlparse.cpp
src/share/vm/adlc/adlparse.hpp
src/share/vm/adlc/archDesc.hpp
src/share/vm/adlc/formssel.cpp
src/share/vm/adlc/formssel.hpp
src/share/vm/adlc/output_c.cpp
src/share/vm/adlc/output_h.cpp
src/share/vm/asm/assembler.hpp
src/share/vm/asm/assembler.inline.hpp
src/share/vm/compiler/disassembler.cpp
src/share/vm/opto/c2_globals.hpp
src/share/vm/opto/compile.cpp
src/share/vm/opto/compile.hpp
src/share/vm/opto/gcm.cpp
src/share/vm/opto/machnode.cpp
src/share/vm/opto/machnode.hpp
src/share/vm/opto/node.hpp
src/share/vm/opto/output.cpp
src/share/vm/opto/postaloc.cpp
src/share/vm/utilities/debug.cpp



More information about the hotspot-compiler-dev mailing list