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

*** 123,135 **** --- 123,136 ---- initialize(); } bool subsume_loads = SubsumeLoads; bool do_escape_analysis = DoEscapeAnalysis && !env->jvmti_can_access_local_variables(); + bool eliminate_boxing = EliminateAutoBox; while (!env->failing()) { // Attempt to compile while subsuming loads into machine instructions. ! Compile C(env, this, target, entry_bci, subsume_loads, do_escape_analysis, eliminate_boxing); // Check result and retry if appropriate. if (C.failure_reason() != NULL) { if (C.failure_reason_is(retry_no_subsuming_loads())) {
*** 140,149 **** --- 141,156 ---- if (C.failure_reason_is(retry_no_escape_analysis())) { assert(do_escape_analysis, "must make progress"); do_escape_analysis = false; continue; // retry } + if (C.has_boxed_value()) { + // Recompile without boxing elimination regardless failure reason. + assert(eliminate_boxing, "must make progress"); + eliminate_boxing = false; + continue; // retry + } // Pass any other failure reason up to the ciEnv. // Note that serious, irreversible failures are already logged // on the ciEnv via env->record_method_not_compilable(). env->record_failure(C.failure_reason()); }

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