# HG changeset patch # User Christian Haeubl # Date 1332285327 25200 # Node ID 43d5ae1051f75dac76c5bad02da3d679dad86a20 # Parent 4a1894e1cfc798553070059ccc086f4cfc5d7364 added better debug output when an optimistic deoptimization is disabled fixed inconsistent newline characters in C++ file diff -r 4a1894e1cfc7 -r 43d5ae1051f7 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalOptions.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalOptions.java Tue Mar 20 12:16:14 2012 -0700 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalOptions.java Tue Mar 20 16:15:27 2012 -0700 @@ -81,7 +81,7 @@ public static int LoopFrequencyPropagationPolicy = -2; // profiling information - public static int DeoptsToDisableOptimisticOptimization = 25; + public static int DeoptsToDisableOptimisticOptimization = 40; public static boolean PrintDisabledOptimisticOptimizations = true; public static int MatureExecutionsBranch = 1; public static int MatureExecutionsPerSwitchCase = 1; diff -r 4a1894e1cfc7 -r 43d5ae1051f7 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/OptimisticOptimizations.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/OptimisticOptimizations.java Tue Mar 20 12:16:14 2012 -0700 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/OptimisticOptimizations.java Tue Mar 20 16:15:27 2012 -0700 @@ -23,6 +23,7 @@ package com.oracle.graal.compiler; import com.oracle.graal.debug.*; +import com.oracle.max.cri.ci.*; import com.oracle.max.cri.ri.*; import com.oracle.max.criutils.*; @@ -40,17 +41,17 @@ public OptimisticOptimizations(RiResolvedMethod method) { RiProfilingInfo profilingInfo = method.profilingInfo(); - removeNeverExecutedCode = checkDeoptimization(profilingInfo, RiDeoptReason.UnreachedCode); - useTypeCheckedInlining = checkDeoptimization(profilingInfo, RiDeoptReason.TypeCheckedInliningViolated); - useTypeCheckHints = checkDeoptimization(profilingInfo, RiDeoptReason.OptimizedTypeCheckViolated); - useExceptionProbability = checkDeoptimization(profilingInfo, RiDeoptReason.NotCompiledExceptionHandler); + removeNeverExecutedCode = checkDeoptimization(method, profilingInfo, RiDeoptReason.UnreachedCode); + useTypeCheckedInlining = checkDeoptimization(method, profilingInfo, RiDeoptReason.TypeCheckedInliningViolated); + useTypeCheckHints = checkDeoptimization(method, profilingInfo, RiDeoptReason.OptimizedTypeCheckViolated); + useExceptionProbability = checkDeoptimization(method, profilingInfo, RiDeoptReason.NotCompiledExceptionHandler); } - private static boolean checkDeoptimization(RiProfilingInfo profilingInfo, RiDeoptReason reason) { + private static boolean checkDeoptimization(RiResolvedMethod method, RiProfilingInfo profilingInfo, RiDeoptReason reason) { boolean result = profilingInfo.getDeoptimizationCount(reason) < GraalOptions.DeoptsToDisableOptimisticOptimization; if (!result) { if (GraalOptions.PrintDisabledOptimisticOptimizations) { - TTY.println("WARN: deactivated optimistic optimization because of %s", reason.name()); + TTY.println("WARN: deactivated optimistic optimizations for %s because of %s", CiUtil.format("%H.%n(%p)", method), reason.name()); } disabledOptimisticOptsMetric.increment(); } diff -r 4a1894e1cfc7 -r 43d5ae1051f7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/VMToCompilerImpl.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/VMToCompilerImpl.java Tue Mar 20 12:16:14 2012 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/VMToCompilerImpl.java Tue Mar 20 16:15:27 2012 -0700 @@ -299,6 +299,9 @@ public void run() { try { + if (method.name().contains("accept") && method.holder().name().contains("ClassReader")) { + throw new AssertionError("Stop compiling"); + } final OptimisticOptimizations optimisticOpts = new OptimisticOptimizations(method); final PhasePlan plan = createHotSpotSpecificPhasePlan(optimisticOpts); long startTime = System.nanoTime(); diff -r 4a1894e1cfc7 -r 43d5ae1051f7 src/share/vm/graal/graalCodeInstaller.cpp --- a/src/share/vm/graal/graalCodeInstaller.cpp Tue Mar 20 12:16:14 2012 -0700 +++ b/src/share/vm/graal/graalCodeInstaller.cpp Tue Mar 20 16:15:27 2012 -0700 @@ -199,15 +199,15 @@ ScopeValue* cur_second = NULL; ScopeValue* value = get_hotspot_value(((oop*) values->base(T_OBJECT))[i], total_frame_size, objects, cur_second); - if (isLongArray && cur_second == NULL) { - // we're trying to put ints into a long array... this isn't really valid, but it's used for some optimizations. - // add an int 0 constant -#ifdef BIG_ENDIAN - cur_second = value; - value = new ConstantIntValue(0); -#else - cur_second = new ConstantIntValue(0); -#endif + if (isLongArray && cur_second == NULL) { + // we're trying to put ints into a long array... this isn't really valid, but it's used for some optimizations. + // add an int 0 constant +#ifdef BIG_ENDIAN + cur_second = value; + value = new ConstantIntValue(0); +#else + cur_second = new ConstantIntValue(0); +#endif } if (cur_second != NULL) { diff -r 4a1894e1cfc7 -r 43d5ae1051f7 src/share/vm/runtime/compilationPolicy.hpp --- a/src/share/vm/runtime/compilationPolicy.hpp Tue Mar 20 12:16:14 2012 -0700 +++ b/src/share/vm/runtime/compilationPolicy.hpp Tue Mar 20 16:15:27 2012 -0700 @@ -118,7 +118,7 @@ // StackWalkCompPolicy - existing C2 policy -//#ifdef COMPILER2 +#if defined(COMPILER2) || defined(GRAAL) class StackWalkCompPolicy : public NonTieredCompPolicy { public: virtual void method_invocation_event(methodHandle m, JavaThread* thread); @@ -138,6 +138,6 @@ // negative filter: should send NOT be inlined? returns NULL (--> inline) or rejection msg }; -//#endif +#endif #endif // SHARE_VM_RUNTIME_COMPILATIONPOLICY_HPP