JDK-8029015 : PPC64 (part 216): opto: trap based null and range checks
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: port-stage-ppc-aix
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • CPU: ppc
  • Submitted: 2013-11-22
  • Updated: 2014-07-29
  • Resolved: 2013-11-28
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8 JDK 9 Other
8u20Fixed 9Fixed port-stage-ppc-aixFixed
Description
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.

---------------------------------

This is preparation for PPC64 integration: http://openjdk.java.net/jeps/175
This and following ppc64 changes will go into staging repository first and tested there: http://hg.openjdk.java.net/ppc-aix-port/stage/ 

http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/file/338e318f1e12/ppc_patches/0216_opto-trap_based_null_and_range_checks.patch