Mercurial > hg > graal-compiler
comparison src/share/vm/ci/ciMethodHandle.cpp @ 3905:c26de9aef2ed
7071307: MethodHandle bimorphic inlining should consider the frequency
Reviewed-by: twisti, roland, kvn, iveresov
author | never |
---|---|
date | Fri, 02 Sep 2011 20:58:21 -0700 |
parents | ddd894528dbc |
children | e0658a9b3f87 |
comparison
equal
deleted
inserted
replaced
3902:11a4af030e4b | 3905:c26de9aef2ed |
---|---|
35 | 35 |
36 // ------------------------------------------------------------------ | 36 // ------------------------------------------------------------------ |
37 // ciMethodHandle::get_adapter | 37 // ciMethodHandle::get_adapter |
38 // | 38 // |
39 // Return an adapter for this MethodHandle. | 39 // Return an adapter for this MethodHandle. |
40 ciMethod* ciMethodHandle::get_adapter_impl(bool is_invokedynamic) const { | 40 ciMethod* ciMethodHandle::get_adapter_impl(bool is_invokedynamic) { |
41 VM_ENTRY_MARK; | 41 VM_ENTRY_MARK; |
42 Handle h(get_oop()); | 42 Handle h(get_oop()); |
43 methodHandle callee(_callee->get_methodOop()); | 43 methodHandle callee(_callee->get_methodOop()); |
44 assert(callee->is_method_handle_invoke(), ""); | 44 assert(callee->is_method_handle_invoke(), ""); |
45 oop mt1 = callee->method_handle_type(); | 45 oop mt1 = callee->method_handle_type(); |
71 | 71 |
72 // ------------------------------------------------------------------ | 72 // ------------------------------------------------------------------ |
73 // ciMethodHandle::get_adapter | 73 // ciMethodHandle::get_adapter |
74 // | 74 // |
75 // Return an adapter for this MethodHandle. | 75 // Return an adapter for this MethodHandle. |
76 ciMethod* ciMethodHandle::get_adapter(bool is_invokedynamic) const { | 76 ciMethod* ciMethodHandle::get_adapter(bool is_invokedynamic) { |
77 ciMethod* result = get_adapter_impl(is_invokedynamic); | 77 ciMethod* result = get_adapter_impl(is_invokedynamic); |
78 if (result) { | 78 if (result) { |
79 // Fake up the MDO maturity. | 79 // Fake up the MDO maturity. |
80 ciMethodData* mdo = result->method_data(); | 80 ciMethodData* mdo = result->method_data(); |
81 if (mdo != NULL && _caller->method_data() != NULL && _caller->method_data()->is_mature()) { | 81 if (mdo != NULL && _caller->method_data() != NULL && _caller->method_data()->is_mature()) { |
84 } | 84 } |
85 return result; | 85 return result; |
86 } | 86 } |
87 | 87 |
88 | 88 |
89 #ifndef PRODUCT | |
89 // ------------------------------------------------------------------ | 90 // ------------------------------------------------------------------ |
90 // ciMethodHandle::print_impl | 91 // ciMethodHandle::print_chain_impl |
91 // | 92 // |
92 // Implementation of the print method. | 93 // Implementation of the print method. |
93 void ciMethodHandle::print_impl(outputStream* st) { | 94 void ciMethodHandle::print_chain_impl(outputStream* st) { |
94 st->print(" type="); | 95 ASSERT_IN_VM; |
95 get_oop()->print(); | 96 MethodHandleChain::print(get_oop()); |
96 } | 97 } |
98 | |
99 | |
100 // ------------------------------------------------------------------ | |
101 // ciMethodHandle::print_chain | |
102 // | |
103 // Implementation of the print_chain method. | |
104 void ciMethodHandle::print_chain(outputStream* st) { | |
105 GUARDED_VM_ENTRY(print_chain_impl(st);); | |
106 } | |
107 #endif |