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