< prev index next >

src/share/vm/opto/callGenerator.cpp

Print this page




 878                                             target, receiver_type, is_virtual,
 879                                             call_does_dispatch, vtable_index, // out-parameters
 880                                             /*check_access=*/false);
 881           // We lack profiling at this call but type speculation may
 882           // provide us with a type
 883           speculative_receiver_type = (receiver_type != NULL) ? receiver_type->speculative_type() : NULL;
 884         }
 885         CallGenerator* cg = C->call_generator(target, vtable_index, call_does_dispatch, jvms, true, PROB_ALWAYS, speculative_receiver_type, true, true);
 886         assert(cg == NULL || !cg->is_late_inline() || cg->is_mh_late_inline(), "no late inline here");
 887         if (cg != NULL && cg->is_inline())
 888           return cg;
 889       } else {
 890         const char* msg = "member_name not constant";
 891         if (PrintInlining)  C->print_inlining(callee, jvms->depth() - 1, jvms->bci(), msg);
 892         C->log_inline_failure(msg);
 893       }
 894     }
 895     break;
 896 
 897   default:
 898     fatal(err_msg_res("unexpected intrinsic %d: %s", iid, vmIntrinsics::name_at(iid)));
 899     break;
 900   }
 901   return NULL;
 902 }
 903 
 904 
 905 //------------------------PredicatedIntrinsicGenerator------------------------------
 906 // Internal class which handles all predicated Intrinsic calls.
 907 class PredicatedIntrinsicGenerator : public CallGenerator {
 908   CallGenerator* _intrinsic;
 909   CallGenerator* _cg;
 910 
 911 public:
 912   PredicatedIntrinsicGenerator(CallGenerator* intrinsic,
 913                                CallGenerator* cg)
 914     : CallGenerator(cg->method())
 915   {
 916     _intrinsic = intrinsic;
 917     _cg        = cg;
 918   }




 878                                             target, receiver_type, is_virtual,
 879                                             call_does_dispatch, vtable_index, // out-parameters
 880                                             /*check_access=*/false);
 881           // We lack profiling at this call but type speculation may
 882           // provide us with a type
 883           speculative_receiver_type = (receiver_type != NULL) ? receiver_type->speculative_type() : NULL;
 884         }
 885         CallGenerator* cg = C->call_generator(target, vtable_index, call_does_dispatch, jvms, true, PROB_ALWAYS, speculative_receiver_type, true, true);
 886         assert(cg == NULL || !cg->is_late_inline() || cg->is_mh_late_inline(), "no late inline here");
 887         if (cg != NULL && cg->is_inline())
 888           return cg;
 889       } else {
 890         const char* msg = "member_name not constant";
 891         if (PrintInlining)  C->print_inlining(callee, jvms->depth() - 1, jvms->bci(), msg);
 892         C->log_inline_failure(msg);
 893       }
 894     }
 895     break;
 896 
 897   default:
 898     fatal("unexpected intrinsic %d: %s", iid, vmIntrinsics::name_at(iid));
 899     break;
 900   }
 901   return NULL;
 902 }
 903 
 904 
 905 //------------------------PredicatedIntrinsicGenerator------------------------------
 906 // Internal class which handles all predicated Intrinsic calls.
 907 class PredicatedIntrinsicGenerator : public CallGenerator {
 908   CallGenerator* _intrinsic;
 909   CallGenerator* _cg;
 910 
 911 public:
 912   PredicatedIntrinsicGenerator(CallGenerator* intrinsic,
 913                                CallGenerator* cg)
 914     : CallGenerator(cg->method())
 915   {
 916     _intrinsic = intrinsic;
 917     _cg        = cg;
 918   }


< prev index next >