src/share/vm/opto/doCall.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/doCall.cpp	Tue Apr 30 19:32:12 2013
--- new/src/share/vm/opto/doCall.cpp	Tue Apr 30 19:32:12 2013

*** 174,186 **** --- 174,189 ---- if (require_inline && cg != NULL) { // Delay the inlining of this method to give us the // opportunity to perform some high level optimizations // first. ! if (should_delay_inlining(callee, jvms)) { ! if (should_delay_string_inlining(callee, jvms)) { assert(!delayed_forbidden, "strange"); return CallGenerator::for_string_late_inline(callee, cg); + } else if (should_delay_boxing_inlining(callee, jvms)) { + assert(!delayed_forbidden, "strange"); + return CallGenerator::for_boxing_late_inline(callee, cg); } else if ((should_delay || AlwaysIncrementalInline) && !delayed_forbidden) { return CallGenerator::for_late_inline(callee, cg); } } if (cg == NULL || should_delay) {
*** 274,284 **** --- 277,287 ---- } } // Return true for methods that shouldn't be inlined early so that // they are easier to analyze and optimize as intrinsics. ! bool Compile::should_delay_inlining(ciMethod* call_method, JVMState* jvms) { ! bool Compile::should_delay_string_inlining(ciMethod* call_method, JVMState* jvms) { if (has_stringbuilder()) { if ((call_method->holder() == C->env()->StringBuilder_klass() || call_method->holder() == C->env()->StringBuffer_klass()) && (jvms->method()->holder() == C->env()->StringBuilder_klass() ||
*** 325,334 **** --- 328,344 ---- } } return false; } + bool Compile::should_delay_boxing_inlining(ciMethod* call_method, JVMState* jvms) { + if (eliminate_autobox() && call_method->is_boxing_method()) { + set_has_boxed_value(true); + return true; + } + return false; + } // uncommon-trap call-sites where callee is unloaded, uninitialized or will not link bool Parse::can_not_compile_call_site(ciMethod *dest_method, ciInstanceKlass* klass) { // Additional inputs to consider... // bc = bc()

src/share/vm/opto/doCall.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File