Mercurial > hg > truffle
comparison src/share/vm/opto/doCall.cpp @ 10278:6f3fd5150b67
6934604: enable parts of EliminateAutoBox by default
Summary: Resurrected autobox elimination code and enabled part of it by default.
Reviewed-by: roland, twisti
author | kvn |
---|---|
date | Wed, 08 May 2013 15:08:01 -0700 |
parents | f1de9dbc914e |
children | 1b64d46620a3 |
comparison
equal
deleted
inserted
replaced
10277:aabf54ccedb1 | 10278:6f3fd5150b67 |
---|---|
174 | 174 |
175 if (require_inline && cg != NULL) { | 175 if (require_inline && cg != NULL) { |
176 // Delay the inlining of this method to give us the | 176 // Delay the inlining of this method to give us the |
177 // opportunity to perform some high level optimizations | 177 // opportunity to perform some high level optimizations |
178 // first. | 178 // first. |
179 if (should_delay_inlining(callee, jvms)) { | 179 if (should_delay_string_inlining(callee, jvms)) { |
180 assert(!delayed_forbidden, "strange"); | 180 assert(!delayed_forbidden, "strange"); |
181 return CallGenerator::for_string_late_inline(callee, cg); | 181 return CallGenerator::for_string_late_inline(callee, cg); |
182 } else if (should_delay_boxing_inlining(callee, jvms)) { | |
183 assert(!delayed_forbidden, "strange"); | |
184 return CallGenerator::for_boxing_late_inline(callee, cg); | |
182 } else if ((should_delay || AlwaysIncrementalInline) && !delayed_forbidden) { | 185 } else if ((should_delay || AlwaysIncrementalInline) && !delayed_forbidden) { |
183 return CallGenerator::for_late_inline(callee, cg); | 186 return CallGenerator::for_late_inline(callee, cg); |
184 } | 187 } |
185 } | 188 } |
186 if (cg == NULL || should_delay) { | 189 if (cg == NULL || should_delay) { |
274 } | 277 } |
275 } | 278 } |
276 | 279 |
277 // Return true for methods that shouldn't be inlined early so that | 280 // Return true for methods that shouldn't be inlined early so that |
278 // they are easier to analyze and optimize as intrinsics. | 281 // they are easier to analyze and optimize as intrinsics. |
279 bool Compile::should_delay_inlining(ciMethod* call_method, JVMState* jvms) { | 282 bool Compile::should_delay_string_inlining(ciMethod* call_method, JVMState* jvms) { |
280 if (has_stringbuilder()) { | 283 if (has_stringbuilder()) { |
281 | 284 |
282 if ((call_method->holder() == C->env()->StringBuilder_klass() || | 285 if ((call_method->holder() == C->env()->StringBuilder_klass() || |
283 call_method->holder() == C->env()->StringBuffer_klass()) && | 286 call_method->holder() == C->env()->StringBuffer_klass()) && |
284 (jvms->method()->holder() == C->env()->StringBuilder_klass() || | 287 (jvms->method()->holder() == C->env()->StringBuilder_klass() || |
325 } | 328 } |
326 } | 329 } |
327 return false; | 330 return false; |
328 } | 331 } |
329 | 332 |
333 bool Compile::should_delay_boxing_inlining(ciMethod* call_method, JVMState* jvms) { | |
334 if (eliminate_boxing() && call_method->is_boxing_method()) { | |
335 set_has_boxed_value(true); | |
336 return true; | |
337 } | |
338 return false; | |
339 } | |
330 | 340 |
331 // uncommon-trap call-sites where callee is unloaded, uninitialized or will not link | 341 // uncommon-trap call-sites where callee is unloaded, uninitialized or will not link |
332 bool Parse::can_not_compile_call_site(ciMethod *dest_method, ciInstanceKlass* klass) { | 342 bool Parse::can_not_compile_call_site(ciMethod *dest_method, ciInstanceKlass* klass) { |
333 // Additional inputs to consider... | 343 // Additional inputs to consider... |
334 // bc = bc() | 344 // bc = bc() |