Mercurial > hg > graal-compiler
changeset 8291:950cc0d8bc7c
Merge.
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Fri, 15 Mar 2013 15:38:55 +0100 |
parents | 9882af5c8504 (current diff) fa64b845d7f1 (diff) |
children | a1558c08d990 b246434a3e4a |
files | |
diffstat | 3 files changed, 28 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Fri Mar 15 15:38:27 2013 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Fri Mar 15 15:38:55 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 Fri Mar 15 15:38:27 2013 +0100 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java Fri Mar 15 15:38:55 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; @@ -185,7 +185,7 @@ public static boolean SupportJsrBytecodes = true; public static boolean OptAssumptions = true; - public static boolean OptConvertDeoptsToGuards = true; + public static boolean OptConvertDeoptsToGuards = ____; public static boolean OptReadElimination = true; public static boolean OptCanonicalizer = true; public static boolean OptScheduleOutOfLoops = true;
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/OptimisticOptimizations.java Fri Mar 15 15:38:27 2013 +0100 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/OptimisticOptimizations.java Fri Mar 15 15:38:55 2013 +0100 @@ -33,8 +33,8 @@ public static final OptimisticOptimizations NONE = new OptimisticOptimizations(EnumSet.noneOf(Optimization.class)); private static final DebugMetric disabledOptimisticOptsMetric = Debug.metric("DisabledOptimisticOpts"); - private static enum Optimization { - RemoveNeverExecutedCode, UseTypeCheckedInlining, UseTypeCheckHints, UseExceptionProbability + public static enum Optimization { + 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); @@ -60,6 +61,22 @@ } } + public OptimisticOptimizations remove(Optimization... optimizations) { + Set<Optimization> newOptimizations = EnumSet.copyOf(enabledOpts); + for (Optimization o : optimizations) { + newOptimizations.remove(o); + } + return new OptimisticOptimizations(newOptimizations); + } + + public OptimisticOptimizations add(Optimization... optimizations) { + Set<Optimization> newOptimizations = EnumSet.copyOf(enabledOpts); + for (Optimization o : optimizations) { + newOptimizations.add(o); + } + return new OptimisticOptimizations(newOptimizations); + } + private OptimisticOptimizations(Set<Optimization> enabledOpts) { this.enabledOpts = enabledOpts; } @@ -92,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)) {