Code Review for trch-stage-hotspot

Prepared by:goetz on Fri Nov 22 15:30:57 CET 2013
Workspace:/net/usr.work/d045726/oJ/trch-stage-hotspot
Compare against: http://hg.openjdk.java.net/ppc-aix-port/stage/hotspot
Compare against version:5725
Summary of changes: 207 lines changed: 178 ins; 10 del; 19 mod; 19479 unchg
Changeset: trch-stage-hotspot.changeset
Author comments:

PPC has the tdi instruction that does a compare and raises SIGTRAP if the compare is successful.

With this instruction conditional branches leading to uncommon traps can be implemented very efficiently.

This is especially needed on AIX, where there are almost no possibilities for ImplicitNullChecks as the zero page is not protected.

On linux, this accounts for about 2% jvm2008 performance.

Possibilities for trap based range checks and trap based null checks are recognized during matching. To support this, we added a method branches_to_uncommon_trap() to be used in the predicate during matching.

The computation of the final block layout must know about this, as it must place the fallthrough properly and adapt the condition in the tdi instruction.

We added a method is_TrapBasedCheckNode so these nodes can be recogized in a platform independent way.

Legend: Modified file
Deleted file
New file

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New ----- Raw src/cpu/sparc/vm/globals_sparc.hpp

rev 5726 : 8029015: PPC64 (part 216): opto: trap based null and range checks
5 lines changed: 5 ins; 0 del; 0 mod; 116 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New ----- Raw src/cpu/x86/vm/globals_x86.hpp

rev 5726 : 8029015: PPC64 (part 216): opto: trap based null and range checks
6 lines changed: 5 ins; 0 del; 1 mod; 137 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New ----- Raw src/cpu/zero/vm/globals_zero.hpp

rev 5726 : 8029015: PPC64 (part 216): opto: trap based null and range checks
8 lines changed: 7 ins; 0 del; 1 mod; 64 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New ----- Raw src/share/vm/adlc/main.cpp

rev 5726 : 8029015: PPC64 (part 216): opto: trap based null and range checks
1 line changed: 1 ins; 0 del; 0 mod; 496 unchg

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

rev 5726 : 8029015: PPC64 (part 216): opto: trap based null and range checks
5 lines changed: 5 ins; 0 del; 0 mod; 2270 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New ----- Raw src/share/vm/opto/block.cpp

rev 5726 : 8029015: PPC64 (part 216): opto: trap based null and range checks
79 lines changed: 62 ins; 1 del; 16 mod; 1673 unchg

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

rev 5726 : 8029015: PPC64 (part 216): opto: trap based null and range checks
9 lines changed: 9 ins; 0 del; 0 mod; 3964 unchg

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

rev 5726 : 8029015: PPC64 (part 216): opto: trap based null and range checks
4 lines changed: 4 ins; 0 del; 0 mod; 1186 unchg

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

rev 5726 : 8029015: PPC64 (part 216): opto: trap based null and range checks
10 lines changed: 0 ins; 9 del; 1 mod; 2049 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New ----- Raw src/share/vm/opto/matcher.cpp

rev 5726 : 8029015: PPC64 (part 216): opto: trap based null and range checks
63 lines changed: 63 ins; 0 del; 0 mod; 2450 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New ----- Raw src/share/vm/opto/matcher.hpp

rev 5726 : 8029015: PPC64 (part 216): opto: trap based null and range checks
2 lines changed: 2 ins; 0 del; 0 mod; 498 unchg

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

rev 5726 : 8029015: PPC64 (part 216): opto: trap based null and range checks
3 lines changed: 3 ins; 0 del; 0 mod; 1602 unchg

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

rev 5726 : 8029015: PPC64 (part 216): opto: trap based null and range checks
12 lines changed: 12 ins; 0 del; 0 mod; 2974 unchg

This code review page was prepared using /sapmnt/home1/d045726/bin/webrev.ksh (vers 24.0-hg+jbs).