< prev index next >

src/hotspot/share/ci/ciMethod.hpp

Print this page




  70   ciSignature*     _signature;
  71   ciMethodData*    _method_data;
  72   ciMethodBlocks*   _method_blocks;
  73 
  74   // Code attributes.
  75   int _code_size;
  76   int _max_stack;
  77   int _max_locals;
  78   vmIntrinsics::ID _intrinsic_id;
  79   int _handler_count;
  80   int _nmethod_age;
  81   int _interpreter_invocation_count;
  82   int _interpreter_throwout_count;
  83   int _instructions_size;
  84   int _size_of_parameters;
  85 
  86   bool _uses_monitors;
  87   bool _balanced_monitors;
  88   bool _is_c1_compilable;
  89   bool _is_c2_compilable;

  90   bool _can_be_statically_bound;
  91   bool _has_reserved_stack_access;
  92 
  93   // Lazy fields, filled in on demand
  94   address              _code;
  95   ciExceptionHandler** _exception_handlers;
  96 
  97   // Optional liveness analyzer.
  98   MethodLiveness* _liveness;
  99 #if defined(COMPILER2)
 100   ciTypeFlow*         _flow;
 101   BCEscapeAnalyzer*   _bcea;
 102 #endif
 103 
 104   ciMethod(const methodHandle& h_m, ciInstanceKlass* holder);
 105   ciMethod(ciInstanceKlass* holder, ciSymbol* name, ciSymbol* signature, ciInstanceKlass* accessor);
 106 
 107   oop loader() const                             { return _holder->loader(); }
 108 
 109   const char* type_string()                      { return "ciMethod"; }


 274   }
 275 
 276   // Given a certain calling environment, find the monomorphic target
 277   // for the call.  Return NULL if the call is not monomorphic in
 278   // its calling environment.
 279   ciMethod* find_monomorphic_target(ciInstanceKlass* caller,
 280                                     ciInstanceKlass* callee_holder,
 281                                     ciInstanceKlass* actual_receiver,
 282                                     bool check_access = true);
 283 
 284   // Given a known receiver klass, find the target for the call.
 285   // Return NULL if the call has no target or is abstract.
 286   ciMethod* resolve_invoke(ciKlass* caller, ciKlass* exact_receiver, bool check_access = true);
 287 
 288   // Find the proper vtable index to invoke this method.
 289   int resolve_vtable_index(ciKlass* caller, ciKlass* receiver);
 290 
 291   bool has_option(const char *option);
 292   bool has_option_value(const char* option, double& value);
 293   bool can_be_compiled();

 294   bool can_be_osr_compiled(int entry_bci);
 295   void set_not_compilable(const char* reason = NULL);
 296   bool has_compiled_code();
 297   void log_nmethod_identity(xmlStream* log);
 298   bool is_not_reached(int bci);
 299   bool was_executed_more_than(int times);
 300   bool has_unloaded_classes_in_signature();
 301   bool is_klass_loaded(int refinfo_index, bool must_be_resolved) const;
 302   bool check_call(int refinfo_index, bool is_static) const;
 303   bool ensure_method_data();  // make sure it exists in the VM also
 304   MethodCounters* ensure_method_counters();
 305   int instructions_size();
 306   int scale_count(int count, float prof_factor = 1.);  // make MDO count commensurate with IIC
 307 
 308   // Stack walking support
 309   bool is_ignored_by_security_stack_walk() const;
 310 
 311   // JSR 292 support
 312   bool is_method_handle_intrinsic()  const;
 313   bool is_compiled_lambda_form() const;




  70   ciSignature*     _signature;
  71   ciMethodData*    _method_data;
  72   ciMethodBlocks*   _method_blocks;
  73 
  74   // Code attributes.
  75   int _code_size;
  76   int _max_stack;
  77   int _max_locals;
  78   vmIntrinsics::ID _intrinsic_id;
  79   int _handler_count;
  80   int _nmethod_age;
  81   int _interpreter_invocation_count;
  82   int _interpreter_throwout_count;
  83   int _instructions_size;
  84   int _size_of_parameters;
  85 
  86   bool _uses_monitors;
  87   bool _balanced_monitors;
  88   bool _is_c1_compilable;
  89   bool _is_c2_compilable;
  90   bool _can_be_parsed;
  91   bool _can_be_statically_bound;
  92   bool _has_reserved_stack_access;
  93 
  94   // Lazy fields, filled in on demand
  95   address              _code;
  96   ciExceptionHandler** _exception_handlers;
  97 
  98   // Optional liveness analyzer.
  99   MethodLiveness* _liveness;
 100 #if defined(COMPILER2)
 101   ciTypeFlow*         _flow;
 102   BCEscapeAnalyzer*   _bcea;
 103 #endif
 104 
 105   ciMethod(const methodHandle& h_m, ciInstanceKlass* holder);
 106   ciMethod(ciInstanceKlass* holder, ciSymbol* name, ciSymbol* signature, ciInstanceKlass* accessor);
 107 
 108   oop loader() const                             { return _holder->loader(); }
 109 
 110   const char* type_string()                      { return "ciMethod"; }


 275   }
 276 
 277   // Given a certain calling environment, find the monomorphic target
 278   // for the call.  Return NULL if the call is not monomorphic in
 279   // its calling environment.
 280   ciMethod* find_monomorphic_target(ciInstanceKlass* caller,
 281                                     ciInstanceKlass* callee_holder,
 282                                     ciInstanceKlass* actual_receiver,
 283                                     bool check_access = true);
 284 
 285   // Given a known receiver klass, find the target for the call.
 286   // Return NULL if the call has no target or is abstract.
 287   ciMethod* resolve_invoke(ciKlass* caller, ciKlass* exact_receiver, bool check_access = true);
 288 
 289   // Find the proper vtable index to invoke this method.
 290   int resolve_vtable_index(ciKlass* caller, ciKlass* receiver);
 291 
 292   bool has_option(const char *option);
 293   bool has_option_value(const char* option, double& value);
 294   bool can_be_compiled();
 295   bool can_be_parsed() const { return _can_be_parsed; }
 296   bool can_be_osr_compiled(int entry_bci);
 297   void set_not_compilable(const char* reason = NULL);
 298   bool has_compiled_code();
 299   void log_nmethod_identity(xmlStream* log);
 300   bool is_not_reached(int bci);
 301   bool was_executed_more_than(int times);
 302   bool has_unloaded_classes_in_signature();
 303   bool is_klass_loaded(int refinfo_index, bool must_be_resolved) const;
 304   bool check_call(int refinfo_index, bool is_static) const;
 305   bool ensure_method_data();  // make sure it exists in the VM also
 306   MethodCounters* ensure_method_counters();
 307   int instructions_size();
 308   int scale_count(int count, float prof_factor = 1.);  // make MDO count commensurate with IIC
 309 
 310   // Stack walking support
 311   bool is_ignored_by_security_stack_walk() const;
 312 
 313   // JSR 292 support
 314   bool is_method_handle_intrinsic()  const;
 315   bool is_compiled_lambda_form() const;


< prev index next >