src/share/vm/ci/ciMethod.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hs-comp-code-aging Sdiff src/share/vm/ci

src/share/vm/ci/ciMethod.hpp

Print this page




  51   friend class ciExceptionHandlerStream;
  52   friend class ciBytecodeStream;
  53   friend class ciMethodHandle;
  54   friend class ciReplay;
  55 
  56  private:
  57   // General method information.
  58   ciFlags          _flags;
  59   ciSymbol*        _name;
  60   ciInstanceKlass* _holder;
  61   ciSignature*     _signature;
  62   ciMethodData*    _method_data;
  63   ciMethodBlocks*   _method_blocks;
  64 
  65   // Code attributes.
  66   int _code_size;
  67   int _max_stack;
  68   int _max_locals;
  69   vmIntrinsics::ID _intrinsic_id;
  70   int _handler_count;

  71   int _interpreter_invocation_count;
  72   int _interpreter_throwout_count;
  73   int _instructions_size;
  74   int _size_of_parameters;
  75 
  76   bool _uses_monitors;
  77   bool _balanced_monitors;
  78   bool _is_c1_compilable;
  79   bool _is_c2_compilable;
  80   bool _can_be_statically_bound;
  81 
  82   // Lazy fields, filled in on demand
  83   address              _code;
  84   ciExceptionHandler** _exception_handlers;
  85 
  86   // Optional liveness analyzer.
  87   MethodLiveness* _liveness;
  88 #if defined(COMPILER2) || defined(SHARK)
  89   ciTypeFlow*         _flow;
  90   BCEscapeAnalyzer*   _bcea;


 151       if (code != Bytecodes::_invokestatic &&
 152           code != Bytecodes::_invokedynamic) {
 153         arg_size++;
 154       }
 155       return arg_size;
 156     }
 157   }
 158 
 159 
 160   // Method code and related information.
 161   address code()                                 { if (_code == NULL) load_code(); return _code; }
 162   int code_size() const                          { check_is_loaded(); return _code_size; }
 163   int max_stack() const                          { check_is_loaded(); return _max_stack; }
 164   int max_locals() const                         { check_is_loaded(); return _max_locals; }
 165   vmIntrinsics::ID intrinsic_id() const          { check_is_loaded(); return _intrinsic_id; }
 166   bool has_exception_handlers() const            { check_is_loaded(); return _handler_count > 0; }
 167   int exception_table_length() const             { check_is_loaded(); return _handler_count; }
 168   int interpreter_invocation_count() const       { check_is_loaded(); return _interpreter_invocation_count; }
 169   int interpreter_throwout_count() const         { check_is_loaded(); return _interpreter_throwout_count; }
 170   int size_of_parameters() const                 { check_is_loaded(); return _size_of_parameters; }




 171 
 172   // Code size for inlining decisions.
 173   int code_size_for_inlining();
 174 
 175   bool caller_sensitive() { return get_Method()->caller_sensitive(); }
 176   bool force_inline()     { return get_Method()->force_inline();     }
 177   bool dont_inline()      { return get_Method()->dont_inline();      }
 178 
 179   int comp_level();
 180   int highest_osr_comp_level();
 181 
 182   Bytecodes::Code java_code_at_bci(int bci) {
 183     address bcp = code() + bci;
 184     return Bytecodes::java_code_at(NULL, bcp);
 185   }
 186   Bytecodes::Code raw_code_at_bci(int bci) {
 187     address bcp = code() + bci;
 188     return Bytecodes::code_at(NULL, bcp);
 189   }
 190   BCEscapeAnalyzer  *get_bcea();




  51   friend class ciExceptionHandlerStream;
  52   friend class ciBytecodeStream;
  53   friend class ciMethodHandle;
  54   friend class ciReplay;
  55 
  56  private:
  57   // General method information.
  58   ciFlags          _flags;
  59   ciSymbol*        _name;
  60   ciInstanceKlass* _holder;
  61   ciSignature*     _signature;
  62   ciMethodData*    _method_data;
  63   ciMethodBlocks*   _method_blocks;
  64 
  65   // Code attributes.
  66   int _code_size;
  67   int _max_stack;
  68   int _max_locals;
  69   vmIntrinsics::ID _intrinsic_id;
  70   int _handler_count;
  71   int _nmethod_age;
  72   int _interpreter_invocation_count;
  73   int _interpreter_throwout_count;
  74   int _instructions_size;
  75   int _size_of_parameters;
  76 
  77   bool _uses_monitors;
  78   bool _balanced_monitors;
  79   bool _is_c1_compilable;
  80   bool _is_c2_compilable;
  81   bool _can_be_statically_bound;
  82 
  83   // Lazy fields, filled in on demand
  84   address              _code;
  85   ciExceptionHandler** _exception_handlers;
  86 
  87   // Optional liveness analyzer.
  88   MethodLiveness* _liveness;
  89 #if defined(COMPILER2) || defined(SHARK)
  90   ciTypeFlow*         _flow;
  91   BCEscapeAnalyzer*   _bcea;


 152       if (code != Bytecodes::_invokestatic &&
 153           code != Bytecodes::_invokedynamic) {
 154         arg_size++;
 155       }
 156       return arg_size;
 157     }
 158   }
 159 
 160 
 161   // Method code and related information.
 162   address code()                                 { if (_code == NULL) load_code(); return _code; }
 163   int code_size() const                          { check_is_loaded(); return _code_size; }
 164   int max_stack() const                          { check_is_loaded(); return _max_stack; }
 165   int max_locals() const                         { check_is_loaded(); return _max_locals; }
 166   vmIntrinsics::ID intrinsic_id() const          { check_is_loaded(); return _intrinsic_id; }
 167   bool has_exception_handlers() const            { check_is_loaded(); return _handler_count > 0; }
 168   int exception_table_length() const             { check_is_loaded(); return _handler_count; }
 169   int interpreter_invocation_count() const       { check_is_loaded(); return _interpreter_invocation_count; }
 170   int interpreter_throwout_count() const         { check_is_loaded(); return _interpreter_throwout_count; }
 171   int size_of_parameters() const                 { check_is_loaded(); return _size_of_parameters; }
 172   int nmethod_age() const                        { check_is_loaded(); return _nmethod_age; }
 173 
 174   // Should the method be compiled with an age counter?
 175   bool profile_aging() const;
 176 
 177   // Code size for inlining decisions.
 178   int code_size_for_inlining();
 179 
 180   bool caller_sensitive() { return get_Method()->caller_sensitive(); }
 181   bool force_inline()     { return get_Method()->force_inline();     }
 182   bool dont_inline()      { return get_Method()->dont_inline();      }
 183 
 184   int comp_level();
 185   int highest_osr_comp_level();
 186 
 187   Bytecodes::Code java_code_at_bci(int bci) {
 188     address bcp = code() + bci;
 189     return Bytecodes::java_code_at(NULL, bcp);
 190   }
 191   Bytecodes::Code raw_code_at_bci(int bci) {
 192     address bcp = code() + bci;
 193     return Bytecodes::code_at(NULL, bcp);
 194   }
 195   BCEscapeAnalyzer  *get_bcea();


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