changeset 3057:8e9046edb790

fixes on exception profiling
author Lukas Stadler <lukas.stadler@jku.at>
date Tue, 21 Jun 2011 12:01:28 +0200
parents 2e20c39e472f
children 750bec011943
files graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/VMExitsNative.java
diffstat 4 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java	Tue Jun 21 11:16:21 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java	Tue Jun 21 12:01:28 2011 +0200
@@ -113,6 +113,8 @@
     public static boolean GenLIR                             = true;
     public static boolean GenCode                            = true;
     public static boolean UseBranchPrediction                = true;
+    public static boolean UseExceptionProbability            = true;
+    public static int     MatureInvocationCount              = 100;
 
     public static boolean UseConstDirectCall                 = ____;
 
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java	Tue Jun 21 11:16:21 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java	Tue Jun 21 12:01:28 2011 +0200
@@ -377,8 +377,10 @@
     private FixedNode handleException(Value exceptionObject, int bci) {
         assert bci == Instruction.SYNCHRONIZATION_ENTRY_BCI || bci == bci() : "invalid bci";
 
-        if (exceptionObject == null && method.exceptionProbability(bci) == 0) {
-            return null;
+        if (GraalOptions.UseExceptionProbability && method.invocationCount() > GraalOptions.MatureInvocationCount) {
+            if (exceptionObject == null && method.exceptionProbability(bci) == 0) {
+                return null;
+            }
         }
 
         RiExceptionHandler firstHandler = null;
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java	Tue Jun 21 11:16:21 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java	Tue Jun 21 12:01:28 2011 +0200
@@ -411,7 +411,7 @@
         } else {
             if (unwindNode != null) {
                 Unwind unwindDuplicate = (Unwind) duplicates.get(unwindNode);
-                unwindDuplicate.replace(new Deoptimize(DeoptAction.InvalidateRecompile, graph));
+                unwindDuplicate.replace(new Deoptimize(DeoptAction.InvalidateRecompile, compilation.graph));
             }
         }
 
--- a/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/VMExitsNative.java	Tue Jun 21 11:16:21 2011 +0200
+++ b/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/VMExitsNative.java	Tue Jun 21 12:01:28 2011 +0200
@@ -140,7 +140,6 @@
         if (!compileMethods) {
             return;
         }
-        ((HotSpotMethodResolvedImpl) method).dumpProfile();
 
         new Sandbox() {
             @Override