127 static CallGenerator* for_method_handle_call( JVMState* jvms, ciMethod* caller, ciMethod* callee, bool delayed_forbidden); 128 static CallGenerator* for_method_handle_inline(JVMState* jvms, ciMethod* caller, ciMethod* callee, bool& input_not_const); 129 130 // How to generate a replace a direct call with an inline version 131 static CallGenerator* for_late_inline(ciMethod* m, CallGenerator* inline_cg); 132 static CallGenerator* for_mh_late_inline(ciMethod* caller, ciMethod* callee, bool input_not_const); 133 static CallGenerator* for_string_late_inline(ciMethod* m, CallGenerator* inline_cg); 134 static CallGenerator* for_boxing_late_inline(ciMethod* m, CallGenerator* inline_cg); 135 136 // How to make a call but defer the decision whether to inline or not. 137 static CallGenerator* for_warm_call(WarmCallInfo* ci, 138 CallGenerator* if_cold, 139 CallGenerator* if_hot); 140 141 // How to make a call that optimistically assumes a receiver type: 142 static CallGenerator* for_predicted_call(ciKlass* predicted_receiver, 143 CallGenerator* if_missed, 144 CallGenerator* if_hit, 145 float hit_prob); 146 147 // How to make a call that optimistically assumes a MethodHandle target: 148 static CallGenerator* for_predicted_dynamic_call(ciMethodHandle* predicted_method_handle, 149 CallGenerator* if_missed, 150 CallGenerator* if_hit, 151 float hit_prob); 152 153 // How to make a call that gives up and goes back to the interpreter: 154 static CallGenerator* for_uncommon_trap(ciMethod* m, 155 Deoptimization::DeoptReason reason, 156 Deoptimization::DeoptAction action); 157 158 // Registry for intrinsics: 159 static CallGenerator* for_intrinsic(ciMethod* m); 160 static void register_intrinsic(ciMethod* m, CallGenerator* cg); 161 static CallGenerator* for_predicated_intrinsic(CallGenerator* intrinsic, 162 CallGenerator* cg); 163 virtual Node* generate_predicate(JVMState* jvms, int predicate) { return NULL; }; 164 165 virtual void print_inlining_late(const char* msg) { ShouldNotReachHere(); } 166 | 127 static CallGenerator* for_method_handle_call( JVMState* jvms, ciMethod* caller, ciMethod* callee, bool delayed_forbidden); 128 static CallGenerator* for_method_handle_inline(JVMState* jvms, ciMethod* caller, ciMethod* callee, bool& input_not_const); 129 130 // How to generate a replace a direct call with an inline version 131 static CallGenerator* for_late_inline(ciMethod* m, CallGenerator* inline_cg); 132 static CallGenerator* for_mh_late_inline(ciMethod* caller, ciMethod* callee, bool input_not_const); 133 static CallGenerator* for_string_late_inline(ciMethod* m, CallGenerator* inline_cg); 134 static CallGenerator* for_boxing_late_inline(ciMethod* m, CallGenerator* inline_cg); 135 136 // How to make a call but defer the decision whether to inline or not. 137 static CallGenerator* for_warm_call(WarmCallInfo* ci, 138 CallGenerator* if_cold, 139 CallGenerator* if_hot); 140 141 // How to make a call that optimistically assumes a receiver type: 142 static CallGenerator* for_predicted_call(ciKlass* predicted_receiver, 143 CallGenerator* if_missed, 144 CallGenerator* if_hit, 145 float hit_prob); 146 147 static CallGenerator* for_guarded_call(ciKlass* predicted_receiver, 148 CallGenerator* if_missed, 149 CallGenerator* if_hit); 150 151 // How to make a call that optimistically assumes a MethodHandle target: 152 static CallGenerator* for_predicted_dynamic_call(ciMethodHandle* predicted_method_handle, 153 CallGenerator* if_missed, 154 CallGenerator* if_hit, 155 float hit_prob); 156 157 // How to make a call that gives up and goes back to the interpreter: 158 static CallGenerator* for_uncommon_trap(ciMethod* m, 159 Deoptimization::DeoptReason reason, 160 Deoptimization::DeoptAction action); 161 162 // Registry for intrinsics: 163 static CallGenerator* for_intrinsic(ciMethod* m); 164 static void register_intrinsic(ciMethod* m, CallGenerator* cg); 165 static CallGenerator* for_predicated_intrinsic(CallGenerator* intrinsic, 166 CallGenerator* cg); 167 virtual Node* generate_predicate(JVMState* jvms, int predicate) { return NULL; }; 168 169 virtual void print_inlining_late(const char* msg) { ShouldNotReachHere(); } 170 |