comparison 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
comparison
equal deleted inserted replaced
20650:f84125b6f69a 20651:600c44255e5f
52 } 52 }
53 53
54 // Simple methods are as good being compiled with C1 as C2. 54 // Simple methods are as good being compiled with C1 as C2.
55 // Determine if a given method is such a case. 55 // Determine if a given method is such a case.
56 bool SimpleThresholdPolicy::is_trivial(Method* method) { 56 bool SimpleThresholdPolicy::is_trivial(Method* method) {
57 if (method->is_accessor()) return true; 57 if (method->is_accessor() ||
58 if (method->code() != NULL) { 58 method->is_constant_getter()) {
59 MethodData* mdo = method->method_data(); 59 return true;
60 if (mdo != NULL && mdo->num_loops() == 0 && 60 }
61 (method->code_size() < 5 || (mdo->num_blocks() < 4) && (method->code_size() < 15))) { 61 if (method->has_loops() || method->code_size() >= 15) {
62 return !mdo->would_profile(); 62 return false;
63 } 63 }
64 MethodData* mdo = method->method_data();
65 if (mdo != NULL && !mdo->would_profile() &&
66 (method->code_size() < 5 || (mdo->num_blocks() < 4))) {
67 return true;
64 } 68 }
65 return false; 69 return false;
66 } 70 }
67 71
68 #endif // SHARE_VM_RUNTIME_SIMPLETHRESHOLDPOLICY_INLINE_HPP 72 #endif // SHARE_VM_RUNTIME_SIMPLETHRESHOLDPOLICY_INLINE_HPP