105 // then we return it as the inlined version of the call. |
105 // then we return it as the inlined version of the call. |
106 // We do this before the strict f.p. check below because the |
106 // We do this before the strict f.p. check below because the |
107 // intrinsics handle strict f.p. correctly. |
107 // intrinsics handle strict f.p. correctly. |
108 if (allow_inline && allow_intrinsics) { |
108 if (allow_inline && allow_intrinsics) { |
109 CallGenerator* cg = find_intrinsic(callee, call_is_virtual); |
109 CallGenerator* cg = find_intrinsic(callee, call_is_virtual); |
110 if (cg != NULL) return cg; |
110 if (cg != NULL) { |
|
111 if (cg->is_predicted()) { |
|
112 // Code without intrinsic but, hopefully, inlined. |
|
113 CallGenerator* inline_cg = this->call_generator(callee, |
|
114 vtable_index, call_is_virtual, jvms, allow_inline, prof_factor, false); |
|
115 if (inline_cg != NULL) { |
|
116 cg = CallGenerator::for_predicted_intrinsic(cg, inline_cg); |
|
117 } |
|
118 } |
|
119 return cg; |
|
120 } |
111 } |
121 } |
112 |
122 |
113 // Do method handle calls. |
123 // Do method handle calls. |
114 // NOTE: This must happen before normal inlining logic below since |
124 // NOTE: This must happen before normal inlining logic below since |
115 // MethodHandle.invoke* are native methods which obviously don't |
125 // MethodHandle.invoke* are native methods which obviously don't |