Code Review for 6961690

Prepared by:twisti on Thu Nov 18 08:15:28 PST 2010
Workspace:/home/twisti/hotspot-comp/6961690
Compare against: /home/twisti/hotspot-comp/hotspot
Compare against version:1838
Summary of changes: 2186 lines changed: 1350 ins; 434 del; 402 mod; 87033 unchg
Patch of changes: 6961690.patch
Printable review: 6961690.pdf
Author comments:
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
Bug id: 6961690 load oops from constant table on SPARC
Legend: Modified file
Deleted file
New file

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/sparc/vm/assembler_sparc.cpp

rev 1839 : 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:
39 lines changed: 39 ins; 0 del; 0 mod; 4832 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/sparc/vm/assembler_sparc.hpp

rev 1839 : 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:
7 lines changed: 7 ins; 0 del; 0 mod; 2502 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/sparc/vm/assembler_sparc.inline.hpp

rev 1839 : 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:
5 lines changed: 5 ins; 0 del; 0 mod; 824 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/sparc/vm/c2_globals_sparc.hpp

rev 1839 : 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:
3 lines changed: 3 ins; 0 del; 0 mod; 90 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/sparc/vm/sparc.ad

rev 1839 : 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:
317 lines changed: 153 ins; 98 del; 66 mod; 9749 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/x86/vm/assembler_x86.cpp

rev 1839 : 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:
45 lines changed: 31 ins; 14 del; 0 mod; 8994 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/x86/vm/assembler_x86.hpp

rev 1839 : 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:
54 lines changed: 50 ins; 0 del; 4 mod; 2271 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/x86/vm/c2_globals_x86.hpp

rev 1839 : 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:
3 lines changed: 3 ins; 0 del; 0 mod; 89 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/x86/vm/x86_32.ad

rev 1839 : 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:
333 lines changed: 121 ins; 105 del; 107 mod; 13853 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/x86/vm/x86_64.ad

rev 1839 : 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:
338 lines changed: 87 ins; 145 del; 106 mod; 12570 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/os/linux/vm/vmError_linux.cpp

rev 1839 : 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:
3 lines changed: 0 ins; 0 del; 3 mod; 109 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/adlc/adlparse.cpp

rev 1839 : 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:
226 lines changed: 184 ins; 3 del; 39 mod; 4826 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/adlc/adlparse.hpp

rev 1839 : 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:
8 lines changed: 5 ins; 0 del; 3 mod; 276 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/adlc/archDesc.hpp

rev 1839 : 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:
11 lines changed: 5 ins; 1 del; 5 mod; 383 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/adlc/formssel.cpp

rev 1839 : 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:
27 lines changed: 25 ins; 0 del; 2 mod; 4062 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/adlc/formssel.hpp

rev 1839 : 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:
9 lines changed: 5 ins; 0 del; 4 mod; 1060 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/adlc/output_c.cpp

rev 1839 : 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:
136 lines changed: 109 ins; 1 del; 26 mod; 4124 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/adlc/output_h.cpp

rev 1839 : 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:
26 lines changed: 6 ins; 18 del; 2 mod; 2174 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/asm/assembler.hpp

rev 1839 : 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:
22 lines changed: 18 ins; 2 del; 2 mod; 347 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/asm/assembler.inline.hpp

rev 1839 : 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:
29 lines changed: 0 ins; 28 del; 1 mod; 106 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/compiler/disassembler.cpp

rev 1839 : 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:
13 lines changed: 13 ins; 0 del; 0 mod; 450 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/c2_globals.hpp

rev 1839 : 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:
7 lines changed: 6 ins; 0 del; 1 mod; 439 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/compile.cpp

rev 1839 : 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:
245 lines changed: 238 ins; 0 del; 7 mod; 2807 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/compile.hpp

rev 1839 : 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:
96 lines changed: 94 ins; 0 del; 2 mod; 777 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/gcm.cpp

rev 1839 : 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:
2 lines changed: 0 ins; 0 del; 2 mod; 1985 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/machnode.cpp

rev 1839 : 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:
15 lines changed: 14 ins; 0 del; 1 mod; 742 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/machnode.hpp

rev 1839 : 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:
63 lines changed: 60 ins; 3 del; 0 mod; 827 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/node.hpp

rev 1839 : 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:
11 lines changed: 6 ins; 0 del; 5 mod; 1551 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/output.cpp

rev 1839 : 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:
72 lines changed: 44 ins; 16 del; 12 mod; 2777 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/postaloc.cpp

rev 1839 : 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:
13 lines changed: 13 ins; 0 del; 0 mod; 606 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/utilities/debug.cpp

rev 1839 : 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:
8 lines changed: 6 ins; 0 del; 2 mod; 831 unchg

This code review page was prepared using /home/twisti/bin/webrev (vers 23.18-hg-never).