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 }
|