< prev index next >

src/share/vm/opto/callGenerator.cpp

Print this page

        

*** 186,196 **** // by attempting to call through it. The compile will proceed // correctly, but may bail out in final_graph_reshaping, because // the call instruction will have a seemingly deficient out-count. // (The bailout says something misleading about an "infinite loop".) if (kit.gvn().type(receiver)->higher_equal(TypePtr::NULL_PTR)) { ! kit.inc_sp(method()->arg_size()); // restore arguments kit.uncommon_trap(Deoptimization::Reason_null_check, Deoptimization::Action_none, NULL, "null receiver"); return kit.transfer_exceptions_into_jvms(); } --- 186,199 ---- // by attempting to call through it. The compile will proceed // correctly, but may bail out in final_graph_reshaping, because // the call instruction will have a seemingly deficient out-count. // (The bailout says something misleading about an "infinite loop".) if (kit.gvn().type(receiver)->higher_equal(TypePtr::NULL_PTR)) { ! assert(Bytecodes::is_invoke(kit.java_bc()), err_msg("%d: %s", kit.java_bc(), Bytecodes::name(kit.java_bc()))); ! ciMethod* declared_method = kit.method()->get_method_at_bci(kit.bci()); ! int arg_size = declared_method->signature()->arg_size_for_bc(kit.java_bc()); ! kit.inc_sp(arg_size); // restore arguments kit.uncommon_trap(Deoptimization::Reason_null_check, Deoptimization::Action_none, NULL, "null receiver"); return kit.transfer_exceptions_into_jvms(); }
*** 1117,1127 **** JVMState* UncommonTrapCallGenerator::generate(JVMState* jvms) { GraphKit kit(jvms); // Take the trap with arguments pushed on the stack. (Cf. null_check_receiver). ! int nargs = method()->arg_size(); kit.inc_sp(nargs); assert(nargs <= kit.sp() && kit.sp() <= jvms->stk_size(), "sane sp w/ args pushed"); if (_reason == Deoptimization::Reason_class_check && _action == Deoptimization::Action_maybe_recompile) { // Temp fix for 6529811 --- 1120,1133 ---- JVMState* UncommonTrapCallGenerator::generate(JVMState* jvms) { GraphKit kit(jvms); // Take the trap with arguments pushed on the stack. (Cf. null_check_receiver). ! // Callsite signature can be different from actual method being called (i.e _linkTo* sites). ! // Use callsite signature always. ! ciMethod* declared_method = kit.method()->get_method_at_bci(kit.bci()); ! int nargs = declared_method->arg_size(); kit.inc_sp(nargs); assert(nargs <= kit.sp() && kit.sp() <= jvms->stk_size(), "sane sp w/ args pushed"); if (_reason == Deoptimization::Reason_class_check && _action == Deoptimization::Action_maybe_recompile) { // Temp fix for 6529811
< prev index next >