changeset 5039:f3d2447db2d9

added detection for endless recompilation separated C1 and Graal specific globals fixed jump branch probability
author Christian Haeubl <christian.haeubl@oracle.com>
date Tue, 06 Mar 2012 11:11:27 -0800
parents 1b907994bf2d
children 4d6e5ddf70e5
files graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/ri/HotSpotMethodData.java graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/ri/HotSpotMethodResolvedImpl.java graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/java/NewInstanceNode.java src/cpu/x86/vm/c1_globals_x86.hpp src/cpu/x86/vm/templateInterpreter_x86_64.cpp src/share/vm/oops/methodDataOop.cpp
diffstat 6 files changed, 27 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/ri/HotSpotMethodData.java	Mon Mar 05 12:40:54 2012 -0800
+++ b/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/ri/HotSpotMethodData.java	Tue Mar 06 11:11:27 2012 -0800
@@ -302,7 +302,7 @@
 
         @Override
         public double getBranchTakenProbability(HotSpotMethodData data, int position) {
-            return 1;
+            return getExecutionCount(data, position) != 0 ? 1 : 0;
         }
 
         @Override
--- a/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/ri/HotSpotMethodResolvedImpl.java	Mon Mar 05 12:40:54 2012 -0800
+++ b/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/ri/HotSpotMethodResolvedImpl.java	Tue Mar 06 11:11:27 2012 -0800
@@ -238,6 +238,7 @@
         return ((HotSpotTypeResolvedImpl) holder()).constantPool();
     }
 
+    @Override
     public void dumpProfile() {
         TTY.println("profile info for %s", this);
         TTY.println("canBeStaticallyBound: " + canBeStaticallyBound());
--- a/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/java/NewInstanceNode.java	Mon Mar 05 12:40:54 2012 -0800
+++ b/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/java/NewInstanceNode.java	Tue Mar 06 11:11:27 2012 -0800
@@ -25,7 +25,6 @@
 import java.util.*;
 
 import com.oracle.max.cri.ri.*;
-import com.oracle.max.graal.debug.*;
 import com.oracle.max.graal.graph.*;
 import com.oracle.max.graal.nodes.*;
 import com.oracle.max.graal.nodes.spi.*;
--- a/src/cpu/x86/vm/c1_globals_x86.hpp	Mon Mar 05 12:40:54 2012 -0800
+++ b/src/cpu/x86/vm/c1_globals_x86.hpp	Tue Mar 06 11:11:27 2012 -0800
@@ -37,27 +37,41 @@
 define_pd_global(bool, ResizeTLAB,                   true );
 define_pd_global(bool, InlineIntrinsics,             true );
 define_pd_global(bool, PreferInterpreterNativeStubs, false);
-define_pd_global(bool, ProfileTraps,                 true );   // changed for GRAAL
-define_pd_global(bool, UseOnStackReplacement,        true );
 define_pd_global(bool, TieredCompilation,            false);
-define_pd_global(intx, CompileThreshold,             4500 );   // changed for GRAAL
 define_pd_global(intx, BackEdgeThreshold,            100000);
 
 define_pd_global(intx, OnStackReplacePercentage,     933  );
 define_pd_global(intx, FreqInlineSize,               325  );
 define_pd_global(intx, NewSizeThreadIncrease,        4*K  );
-define_pd_global(intx, InitialCodeCacheSize,         4*M);      // changed for GRAAL
-define_pd_global(intx, ReservedCodeCacheSize,        48*M );    // changed for GRAAL
-define_pd_global(bool, ProfileInterpreter,           true );    // changed for GRAAL
-define_pd_global(intx, CodeCacheExpansionSize,       64*K );    // changed for GRAAL
-define_pd_global(uintx,CodeCacheMinBlockLength,      4);        // changed for GRAAL
 define_pd_global(uintx,PermSize,                     12*M );
 define_pd_global(uintx,MaxPermSize,                  64*M );
 define_pd_global(bool, NeverActAsServerClassMachine, true );
 define_pd_global(uint64_t,MaxRAM,                    1ULL*G);
 define_pd_global(bool, CICompileOSR,                 true );
-define_pd_global(intx, TypeProfileWidth,             8    );    // changed for GRAAL
+
+#ifdef GRAAL
+define_pd_global(bool, ProfileTraps,                 true );
+define_pd_global(bool, UseOnStackReplacement,        false);
+define_pd_global(intx, CompileThreshold,             4500 );
+define_pd_global(intx, InitialCodeCacheSize,         4*M  );
+define_pd_global(intx, ReservedCodeCacheSize,        48*M );
+define_pd_global(bool, ProfileInterpreter,           true );
+define_pd_global(intx, CodeCacheExpansionSize,       64*K );
+define_pd_global(uintx,CodeCacheMinBlockLength,      4);
+define_pd_global(intx, TypeProfileWidth,             8);
+#else
+define_pd_global(bool, ProfileTraps,                 false);
+define_pd_global(bool, UseOnStackReplacement,        true );
+define_pd_global(intx, CompileThreshold,             1500 );
+define_pd_global(intx, InitialCodeCacheSize,         160*K);
+define_pd_global(intx, ReservedCodeCacheSize,        32*M );
+define_pd_global(bool, ProfileInterpreter,           false);
+define_pd_global(intx, CodeCacheExpansionSize,       32*K );
+define_pd_global(uintx,CodeCacheMinBlockLength,      1);
+define_pd_global(intx, TypeProfileWidth,             0);
+#endif // GRAAL
 #endif // !TIERED
+
 define_pd_global(bool, RoundFPResults,               true );
 
 define_pd_global(bool, LIRFillDelaySlots,            false);
--- a/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Mon Mar 05 12:40:54 2012 -0800
+++ b/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Tue Mar 06 11:11:27 2012 -0800
@@ -346,7 +346,7 @@
       // Test to see if we should create a method data oop
       __ cmp32(rcx, ExternalAddress((address)&InvocationCounter::InterpreterProfileLimit));
       __ jcc(Assembler::less, *profile_method_continue);
-
+      
       // if no method data exists, go to profile_method
       __ test_method_data_pointer(rax, *profile_method);
     }
--- a/src/share/vm/oops/methodDataOop.cpp	Mon Mar 05 12:40:54 2012 -0800
+++ b/src/share/vm/oops/methodDataOop.cpp	Tue Mar 06 11:11:27 2012 -0800
@@ -868,7 +868,7 @@
     // TODO (ch) enable this in the fastdebug build only once we are more stable
     ResourceMark m;
     tty->print_cr("WARN: endless recompilation of %s. Method was set to not compilable.", method()->name_and_sig_as_C_string());
-    vm_exit(1);
+    ShouldNotReachHere();
 #endif
     method()->set_not_compilable(CompLevel_full_optimization);
   }