130 float hit_prob);
131
132 // How to make a call that optimistically assumes a MethodHandle target:
133 static CallGenerator* for_predicted_dynamic_call(ciMethodHandle* predicted_method_handle,
134 CallGenerator* if_missed,
135 CallGenerator* if_hit,
136 float hit_prob);
137
138 // How to make a call that gives up and goes back to the interpreter:
139 static CallGenerator* for_uncommon_trap(ciMethod* m,
140 Deoptimization::DeoptReason reason,
141 Deoptimization::DeoptAction action);
142
143 // Registry for intrinsics:
144 static CallGenerator* for_intrinsic(ciMethod* m);
145 static void register_intrinsic(ciMethod* m, CallGenerator* cg);
146 static CallGenerator* for_predicted_intrinsic(CallGenerator* intrinsic,
147 CallGenerator* cg);
148 virtual Node* generate_predicate(JVMState* jvms) { return NULL; };
149
150 static void print_inlining(ciMethod* callee, int inline_level, int bci, const char* msg) {
151 if (PrintInlining)
152 CompileTask::print_inlining(callee, inline_level, bci, msg);
153 }
154 };
155
156
157 //------------------------InlineCallGenerator----------------------------------
158 class InlineCallGenerator : public CallGenerator {
159 protected:
160 InlineCallGenerator(ciMethod* method) : CallGenerator(method) {}
161
162 public:
163 virtual bool is_inline() const { return true; }
164 };
165
166
167 //---------------------------WarmCallInfo--------------------------------------
168 // A struct to collect information about a given call site.
169 // Helps sort call sites into "hot", "medium", and "cold".
170 // Participates in the queueing of "medium" call sites for possible inlining.
171 class WarmCallInfo : public ResourceObj {
172 private:
|
130 float hit_prob);
131
132 // How to make a call that optimistically assumes a MethodHandle target:
133 static CallGenerator* for_predicted_dynamic_call(ciMethodHandle* predicted_method_handle,
134 CallGenerator* if_missed,
135 CallGenerator* if_hit,
136 float hit_prob);
137
138 // How to make a call that gives up and goes back to the interpreter:
139 static CallGenerator* for_uncommon_trap(ciMethod* m,
140 Deoptimization::DeoptReason reason,
141 Deoptimization::DeoptAction action);
142
143 // Registry for intrinsics:
144 static CallGenerator* for_intrinsic(ciMethod* m);
145 static void register_intrinsic(ciMethod* m, CallGenerator* cg);
146 static CallGenerator* for_predicted_intrinsic(CallGenerator* intrinsic,
147 CallGenerator* cg);
148 virtual Node* generate_predicate(JVMState* jvms) { return NULL; };
149
150 static void print_inlining(Compile* C, ciMethod* callee, int inline_level, int bci, const char* msg) {
151 if (PrintInlining)
152 C->print_inlining(callee, inline_level, bci, msg);
153 }
154 };
155
156
157 //------------------------InlineCallGenerator----------------------------------
158 class InlineCallGenerator : public CallGenerator {
159 protected:
160 InlineCallGenerator(ciMethod* method) : CallGenerator(method) {}
161
162 public:
163 virtual bool is_inline() const { return true; }
164 };
165
166
167 //---------------------------WarmCallInfo--------------------------------------
168 // A struct to collect information about a given call site.
169 // Helps sort call sites into "hot", "medium", and "cold".
170 // Participates in the queueing of "medium" call sites for possible inlining.
171 class WarmCallInfo : public ResourceObj {
172 private:
|