Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/bytecodeInfo.cpp @ 6988:2cb439954abf
Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Mon, 19 Nov 2012 15:36:13 +0100 |
parents | e522a00b91aa bd7a7ce2e264 |
children | 989155e2d07a |
comparison
equal
deleted
inserted
replaced
6963:dd0dd0321e2a | 6988:2cb439954abf |
---|---|
21 * questions. | 21 * questions. |
22 * | 22 * |
23 */ | 23 */ |
24 | 24 |
25 #include "precompiled.hpp" | 25 #include "precompiled.hpp" |
26 #include "ci/ciReplay.hpp" | |
26 #include "classfile/systemDictionary.hpp" | 27 #include "classfile/systemDictionary.hpp" |
27 #include "classfile/vmSymbols.hpp" | 28 #include "classfile/vmSymbols.hpp" |
28 #include "compiler/compileBroker.hpp" | 29 #include "compiler/compileBroker.hpp" |
29 #include "compiler/compileLog.hpp" | 30 #include "compiler/compileLog.hpp" |
30 #include "interpreter/linkResolver.hpp" | 31 #include "interpreter/linkResolver.hpp" |
148 tty->cr(); | 149 tty->cr(); |
149 } | 150 } |
150 } else { | 151 } else { |
151 // Not hot. Check for medium-sized pre-existing nmethod at cold sites. | 152 // Not hot. Check for medium-sized pre-existing nmethod at cold sites. |
152 if (callee_method->has_compiled_code() && | 153 if (callee_method->has_compiled_code() && |
153 callee_method->instructions_size(CompLevel_full_optimization) > inline_small_code_size) | 154 callee_method->instructions_size() > inline_small_code_size) |
154 return "already compiled into a medium method"; | 155 return "already compiled into a medium method"; |
155 } | 156 } |
156 if (size > max_inline_size) { | 157 if (size > max_inline_size) { |
157 if (max_inline_size > default_max_inline_size) | 158 if (max_inline_size > default_max_inline_size) |
158 return "hot method too big"; | 159 return "hot method too big"; |
190 wci_result->set_profit(wci_result->profit() * 0.1); | 191 wci_result->set_profit(wci_result->profit() * 0.1); |
191 } | 192 } |
192 } | 193 } |
193 | 194 |
194 if (callee_method->has_compiled_code() && | 195 if (callee_method->has_compiled_code() && |
195 callee_method->instructions_size(CompLevel_full_optimization) > InlineSmallCode) { | 196 callee_method->instructions_size() > InlineSmallCode) { |
196 wci_result->set_profit(wci_result->profit() * 0.1); | 197 wci_result->set_profit(wci_result->profit() * 0.1); |
197 // %%% adjust wci_result->size()? | 198 // %%% adjust wci_result->size()? |
198 } | 199 } |
199 | 200 |
200 return NULL; | 201 return NULL; |
217 } | 218 } |
218 | 219 |
219 // Now perform checks which are heuristic | 220 // Now perform checks which are heuristic |
220 | 221 |
221 if (callee_method->has_compiled_code() && | 222 if (callee_method->has_compiled_code() && |
222 callee_method->instructions_size(CompLevel_full_optimization) > InlineSmallCode) { | 223 callee_method->instructions_size() > InlineSmallCode) { |
223 return "already compiled into a big method"; | 224 return "already compiled into a big method"; |
224 } | 225 } |
225 | 226 |
226 // don't inline exception code unless the top method belongs to an | 227 // don't inline exception code unless the top method belongs to an |
227 // exception class | 228 // exception class |
235 } | 236 } |
236 | 237 |
237 if (callee_method->should_not_inline()) { | 238 if (callee_method->should_not_inline()) { |
238 return "disallowed by CompilerOracle"; | 239 return "disallowed by CompilerOracle"; |
239 } | 240 } |
241 | |
242 #ifndef PRODUCT | |
243 if (ciReplay::should_not_inline(callee_method)) { | |
244 return "disallowed by ciReplay"; | |
245 } | |
246 #endif | |
240 | 247 |
241 if (UseStringCache) { | 248 if (UseStringCache) { |
242 // Do not inline StringCache::profile() method used only at the beginning. | 249 // Do not inline StringCache::profile() method used only at the beginning. |
243 if (callee_method->name() == ciSymbol::profile_name() && | 250 if (callee_method->name() == ciSymbol::profile_name() && |
244 callee_method->holder()->name() == ciSymbol::java_lang_StringCache()) { | 251 callee_method->holder()->name() == ciSymbol::java_lang_StringCache()) { |