Mercurial > hg > truffle
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; |