changeset 8285:a8aab1ca133c

Enable exception probabilities for operations by default.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Thu, 14 Mar 2013 19:13:40 +0100
parents 1756b12d2246
children b2f88686f68b
files graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java graal/com.oracle.graal.phases/src/com/oracle/graal/phases/OptimisticOptimizations.java
diffstat 3 files changed, 12 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java	Thu Mar 14 19:00:42 2013 +0100
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java	Thu Mar 14 19:13:40 2013 +0100
@@ -827,7 +827,7 @@
     /**
      * Gets the kind of array elements for the array type code that appears in a
      * {@link Bytecodes#NEWARRAY} bytecode.
-     *
+     * 
      * @param code the array type code
      * @return the kind from the array type code
      */
@@ -964,7 +964,7 @@
 
     private void emitExplicitExceptions(ValueNode receiver, ValueNode outOfBoundsIndex) {
         assert receiver != null;
-        if (!GraalOptions.AllowExplicitExceptionChecks || (optimisticOpts.useExceptionProbability() && profilingInfo.getExceptionSeen(bci()) == ExceptionSeen.FALSE)) {
+        if (optimisticOpts.useExceptionProbabilityForOperations() && profilingInfo.getExceptionSeen(bci()) == ExceptionSeen.FALSE) {
             return;
         }
 
@@ -1224,7 +1224,7 @@
 
     /**
      * Helper function that sums up the probabilities of all keys that lead to a specific successor.
-     *
+     * 
      * @return an array of size successorCount with the accumulated probability for each successor.
      */
     private static double[] successorProbabilites(int successorCount, int[] keySuccessors, double[] keyProbabilities) {
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java	Thu Mar 14 19:00:42 2013 +0100
+++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java	Thu Mar 14 19:13:40 2013 +0100
@@ -157,7 +157,7 @@
     public static boolean UseProfilingInformation            = true;
            static boolean RemoveNeverExecutedCode            = true;
            static boolean UseExceptionProbability            = true;
-    public static boolean AllowExplicitExceptionChecks       = true;
+           static boolean UseExceptionProbabilityForOperations = true;
     public static boolean OmitHotExceptionStacktrace         = ____;
     public static boolean GenSafepoints                      = true;
     public static boolean GenLoopSafepoints                  = true;
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/OptimisticOptimizations.java	Thu Mar 14 19:00:42 2013 +0100
+++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/OptimisticOptimizations.java	Thu Mar 14 19:13:40 2013 +0100
@@ -34,7 +34,7 @@
     private static final DebugMetric disabledOptimisticOptsMetric = Debug.metric("DisabledOptimisticOpts");
 
     private static enum Optimization {
-        RemoveNeverExecutedCode, UseTypeCheckedInlining, UseTypeCheckHints, UseExceptionProbability
+        RemoveNeverExecutedCode, UseTypeCheckedInlining, UseTypeCheckHints, UseExceptionProbabilityForOperations, UseExceptionProbability
     }
 
     private final Set<Optimization> enabledOpts;
@@ -42,6 +42,7 @@
     public OptimisticOptimizations(ResolvedJavaMethod method) {
         this.enabledOpts = EnumSet.noneOf(Optimization.class);
 
+        enabledOpts.add(Optimization.UseExceptionProbabilityForOperations);
         addOptimization(method, DeoptimizationReason.UnreachedCode, Optimization.RemoveNeverExecutedCode);
         addOptimization(method, DeoptimizationReason.TypeCheckedInliningViolated, Optimization.UseTypeCheckedInlining);
         addOptimization(method, DeoptimizationReason.OptimizedTypeCheckViolated, Optimization.UseTypeCheckHints);
@@ -61,7 +62,7 @@
     }
 
     public OptimisticOptimizations remove(Optimization... optimizations) {
-        Set<Optimization> newOptimizations = new HashSet<>(enabledOpts);
+        Set<Optimization> newOptimizations = EnumSet.copyOf(enabledOpts);
         for (Optimization o : optimizations) {
             newOptimizations.remove(o);
         }
@@ -69,7 +70,7 @@
     }
 
     public OptimisticOptimizations add(Optimization... optimizations) {
-        Set<Optimization> newOptimizations = new HashSet<>(enabledOpts);
+        Set<Optimization> newOptimizations = EnumSet.copyOf(enabledOpts);
         for (Optimization o : optimizations) {
             newOptimizations.add(o);
         }
@@ -108,6 +109,10 @@
         return GraalOptions.UseExceptionProbability && enabledOpts.contains(Optimization.UseExceptionProbability);
     }
 
+    public boolean useExceptionProbabilityForOperations() {
+        return GraalOptions.UseExceptionProbabilityForOperations && enabledOpts.contains(Optimization.UseExceptionProbabilityForOperations);
+    }
+
     public boolean lessOptimisticThan(OptimisticOptimizations other) {
         for (Optimization opt : Optimization.values()) {
             if (!enabledOpts.contains(opt) && other.enabledOpts.contains(opt)) {