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 |