Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/doCall.cpp @ 20312:922c87c9aed4
8035605: Expand functionality of PredictedIntrinsicGenerator
Summary: Allow several predicates and separate intrinsic methods per one intrinsified (virtual) method.
Reviewed-by: roland
author | kvn |
---|---|
date | Tue, 10 Jun 2014 12:28:06 -0700 |
parents | dda2ae6f9557 |
children | 411e30e5fbb8 |
comparison
equal
deleted
inserted
replaced
20311:b1bc1af04c6e | 20312:922c87c9aed4 |
---|---|
113 // intrinsics handle strict f.p. correctly. | 113 // intrinsics handle strict f.p. correctly. |
114 CallGenerator* cg_intrinsic = NULL; | 114 CallGenerator* cg_intrinsic = NULL; |
115 if (allow_inline && allow_intrinsics) { | 115 if (allow_inline && allow_intrinsics) { |
116 CallGenerator* cg = find_intrinsic(callee, call_does_dispatch); | 116 CallGenerator* cg = find_intrinsic(callee, call_does_dispatch); |
117 if (cg != NULL) { | 117 if (cg != NULL) { |
118 if (cg->is_predicted()) { | 118 if (cg->is_predicated()) { |
119 // Code without intrinsic but, hopefully, inlined. | 119 // Code without intrinsic but, hopefully, inlined. |
120 CallGenerator* inline_cg = this->call_generator(callee, | 120 CallGenerator* inline_cg = this->call_generator(callee, |
121 vtable_index, call_does_dispatch, jvms, allow_inline, prof_factor, speculative_receiver_type, false); | 121 vtable_index, call_does_dispatch, jvms, allow_inline, prof_factor, speculative_receiver_type, false); |
122 if (inline_cg != NULL) { | 122 if (inline_cg != NULL) { |
123 cg = CallGenerator::for_predicted_intrinsic(cg, inline_cg); | 123 cg = CallGenerator::for_predicated_intrinsic(cg, inline_cg); |
124 } | 124 } |
125 } | 125 } |
126 | 126 |
127 // If intrinsic does the virtual dispatch, we try to use the type profile | 127 // If intrinsic does the virtual dispatch, we try to use the type profile |
128 // first, and hopefully inline it as the regular virtual call below. | 128 // first, and hopefully inline it as the regular virtual call below. |