# HG changeset patch # User Thomas Wuerthinger # Date 1363284820 -3600 # Node ID a8aab1ca133ced24fbc71ee1fd827c5e249f7cef # Parent 1756b12d2246d112b2e9a6059f59a88b6d4cd96a Enable exception probabilities for operations by default. diff -r 1756b12d2246 -r a8aab1ca133c graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java --- 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) { diff -r 1756b12d2246 -r a8aab1ca133c graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java --- 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; diff -r 1756b12d2246 -r a8aab1ca133c graal/com.oracle.graal.phases/src/com/oracle/graal/phases/OptimisticOptimizations.java --- 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 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 newOptimizations = new HashSet<>(enabledOpts); + Set newOptimizations = EnumSet.copyOf(enabledOpts); for (Optimization o : optimizations) { newOptimizations.remove(o); } @@ -69,7 +70,7 @@ } public OptimisticOptimizations add(Optimization... optimizations) { - Set newOptimizations = new HashSet<>(enabledOpts); + Set 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)) {