comparison src/share/vm/opto/callGenerator.cpp @ 13081:e74074c34312

8028159: C2: compiler stack overflow during inlining of @ForceInline methods Reviewed-by: roland, kvn
author vlivanov
date Thu, 14 Nov 2013 09:14:39 -0800
parents b2ee5dc63353
children de6a9e811145 b0133e4187d3
comparison
equal deleted inserted replaced
13080:6e1826d5c23e 13081:e74074c34312
774 const TypeOopPtr* oop_ptr = receiver->bottom_type()->is_oopptr(); 774 const TypeOopPtr* oop_ptr = receiver->bottom_type()->is_oopptr();
775 ciMethod* target = oop_ptr->const_oop()->as_method_handle()->get_vmtarget(); 775 ciMethod* target = oop_ptr->const_oop()->as_method_handle()->get_vmtarget();
776 guarantee(!target->is_method_handle_intrinsic(), "should not happen"); // XXX remove 776 guarantee(!target->is_method_handle_intrinsic(), "should not happen"); // XXX remove
777 const int vtable_index = Method::invalid_vtable_index; 777 const int vtable_index = Method::invalid_vtable_index;
778 CallGenerator* cg = C->call_generator(target, vtable_index, false, jvms, true, PROB_ALWAYS, NULL, true, true); 778 CallGenerator* cg = C->call_generator(target, vtable_index, false, jvms, true, PROB_ALWAYS, NULL, true, true);
779 assert(!cg->is_late_inline() || cg->is_mh_late_inline(), "no late inline here"); 779 assert(cg == NULL || !cg->is_late_inline() || cg->is_mh_late_inline(), "no late inline here");
780 if (cg != NULL && cg->is_inline()) 780 if (cg != NULL && cg->is_inline())
781 return cg; 781 return cg;
782 } 782 }
783 } 783 }
784 break; 784 break;
844 // provide us with a type 844 // provide us with a type
845 speculative_receiver_type = receiver_type->speculative_type(); 845 speculative_receiver_type = receiver_type->speculative_type();
846 } 846 }
847 847
848 CallGenerator* cg = C->call_generator(target, vtable_index, call_does_dispatch, jvms, true, PROB_ALWAYS, speculative_receiver_type, true, true); 848 CallGenerator* cg = C->call_generator(target, vtable_index, call_does_dispatch, jvms, true, PROB_ALWAYS, speculative_receiver_type, true, true);
849 assert(!cg->is_late_inline() || cg->is_mh_late_inline(), "no late inline here"); 849 assert(cg == NULL || !cg->is_late_inline() || cg->is_mh_late_inline(), "no late inline here");
850 if (cg != NULL && cg->is_inline()) 850 if (cg != NULL && cg->is_inline())
851 return cg; 851 return cg;
852 } 852 }
853 } 853 }
854 break; 854 break;