src/share/vm/ci/ciMethod.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/ci

src/share/vm/ci/ciMethod.hpp

Print this page
rev 6132 : 8031755: Type speculation should be used to optimize explicit null checks
Summary: feed profiling data about reference nullness to type speculation.
Reviewed-by:


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




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


src/share/vm/ci/ciMethod.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File