diff src/share/vm/runtime/simpleThresholdPolicy.inline.hpp @ 20651:600c44255e5f

8056071: compiler/whitebox/IsMethodCompilableTest.java fails with 'method() is not compilable after 3 iterations' Summary: Always use MDO if valid and always compile trivial methods with C1 if available. Reviewed-by: kvn, iveresov
author thartmann
date Tue, 11 Nov 2014 11:05:41 +0100
parents da91efe96a93
children 7848fc12602b
line wrap: on
line diff
--- a/src/share/vm/runtime/simpleThresholdPolicy.inline.hpp	Tue Nov 18 00:56:42 2014 +0000
+++ b/src/share/vm/runtime/simpleThresholdPolicy.inline.hpp	Tue Nov 11 11:05:41 2014 +0100
@@ -54,13 +54,17 @@
 // Simple methods are as good being compiled with C1 as C2.
 // Determine if a given method is such a case.
 bool SimpleThresholdPolicy::is_trivial(Method* method) {
-  if (method->is_accessor()) return true;
-  if (method->code() != NULL) {
-    MethodData* mdo = method->method_data();
-    if (mdo != NULL && mdo->num_loops() == 0 &&
-        (method->code_size() < 5  || (mdo->num_blocks() < 4) && (method->code_size() < 15))) {
-      return !mdo->would_profile();
-    }
+  if (method->is_accessor() ||
+      method->is_constant_getter()) {
+    return true;
+  }
+  if (method->has_loops() || method->code_size() >= 15) {
+    return false;
+  }
+  MethodData* mdo = method->method_data();
+  if (mdo != NULL && !mdo->would_profile() &&
+      (method->code_size() < 5  || (mdo->num_blocks() < 4))) {
+    return true;
   }
   return false;
 }