213
214 // Get the interpreters viewpoint on oop liveness. MethodLiveness is
215 // conservative in the sense that it may consider locals to be live which
216 // cannot be live, like in the case where a local could contain an oop or
217 // a primitive along different paths. In that case the local must be
218 // dead when those paths merge. Since the interpreter's viewpoint is
219 // used when gc'ing an interpreter frame we need to use its viewpoint
220 // during OSR when loading the locals.
221
222 BitMap live_local_oops_at_bci(int bci);
223
224 #ifdef COMPILER1
225 const BitMap bci_block_start();
226 #endif
227
228 ciTypeFlow* get_flow_analysis();
229 ciTypeFlow* get_osr_flow_analysis(int osr_bci); // alternate entry point
230 ciCallProfile call_profile_at_bci(int bci);
231 int interpreter_call_site_count(int bci);
232
233 ciField* get_field_at_bci( int bci, bool &will_link);
234 ciMethod* get_method_at_bci(int bci, bool &will_link, ciSignature* *declared_signature);
235
236 // Given a certain calling environment, find the monomorphic target
237 // for the call. Return NULL if the call is not monomorphic in
238 // its calling environment.
239 ciMethod* find_monomorphic_target(ciInstanceKlass* caller,
240 ciInstanceKlass* callee_holder,
241 ciInstanceKlass* actual_receiver);
242
243 // Given a known receiver klass, find the target for the call.
244 // Return NULL if the call has no target or is abstract.
245 ciMethod* resolve_invoke(ciKlass* caller, ciKlass* exact_receiver);
246
247 // Find the proper vtable index to invoke this method.
248 int resolve_vtable_index(ciKlass* caller, ciKlass* receiver);
249
250 // Compilation directives
251 bool should_exclude();
252 bool should_inline();
|
213
214 // Get the interpreters viewpoint on oop liveness. MethodLiveness is
215 // conservative in the sense that it may consider locals to be live which
216 // cannot be live, like in the case where a local could contain an oop or
217 // a primitive along different paths. In that case the local must be
218 // dead when those paths merge. Since the interpreter's viewpoint is
219 // used when gc'ing an interpreter frame we need to use its viewpoint
220 // during OSR when loading the locals.
221
222 BitMap live_local_oops_at_bci(int bci);
223
224 #ifdef COMPILER1
225 const BitMap bci_block_start();
226 #endif
227
228 ciTypeFlow* get_flow_analysis();
229 ciTypeFlow* get_osr_flow_analysis(int osr_bci); // alternate entry point
230 ciCallProfile call_profile_at_bci(int bci);
231 int interpreter_call_site_count(int bci);
232
233 // Return true if profiling provides a type for the argument nb to
234 // the call at bci. type is the profiled type.
235 bool argument_profiled_type(int bci, int nb, ciKlass*& type);
236 // Return true if profiling provides a type for the parameter nb to
237 // this method. type is the profiled type.
238 bool parameter_profiled_type(int nb, ciKlass*& type);
239 // Return true if profiling provides a type for the return value
240 // from the call at bci. type is the profiled type.
241 bool return_profiled_type(int bci, ciKlass*& type);
242
243 ciField* get_field_at_bci( int bci, bool &will_link);
244 ciMethod* get_method_at_bci(int bci, bool &will_link, ciSignature* *declared_signature);
245
246 // Given a certain calling environment, find the monomorphic target
247 // for the call. Return NULL if the call is not monomorphic in
248 // its calling environment.
249 ciMethod* find_monomorphic_target(ciInstanceKlass* caller,
250 ciInstanceKlass* callee_holder,
251 ciInstanceKlass* actual_receiver);
252
253 // Given a known receiver klass, find the target for the call.
254 // Return NULL if the call has no target or is abstract.
255 ciMethod* resolve_invoke(ciKlass* caller, ciKlass* exact_receiver);
256
257 // Find the proper vtable index to invoke this method.
258 int resolve_vtable_index(ciKlass* caller, ciKlass* receiver);
259
260 // Compilation directives
261 bool should_exclude();
262 bool should_inline();
|