< prev index next >

src/share/vm/ci/ciMethod.hpp

Print this page




  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) || defined(SHARK)
 100   ciTypeFlow*         _flow;
 101   BCEscapeAnalyzer*   _bcea;
 102 #endif
 103 
 104   ciMethod(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"; }
 110 
 111   void print_impl(outputStream* st);
 112 
 113   void load_code();
 114 
 115   bool ensure_method_data(methodHandle h_m);
 116 
 117   void code_at_put(int bci, Bytecodes::Code code) {
 118     Bytecodes::check(code);
 119     assert(0 <= bci && bci < code_size(), "valid bci");
 120     address bcp = _code + bci;
 121     *bcp = code;
 122   }
 123 
 124   // Check bytecode and profile data collected are compatible
 125   void assert_virtual_call_type_ok(int bci);
 126   void assert_call_type_ok(int bci);
 127 
 128  public:
 129   void check_is_loaded() const                   { assert(is_loaded(), "not loaded"); }
 130 
 131   // Basic method information.
 132   ciFlags flags() const                          { check_is_loaded(); return _flags; }
 133   ciSymbol* name() const                         { return _name; }
 134   ciInstanceKlass* holder() const                { return _holder; }
 135   ciMethodData* method_data();




  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) || defined(SHARK)
 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"; }
 110 
 111   void print_impl(outputStream* st);
 112 
 113   void load_code();
 114 
 115   bool ensure_method_data(const methodHandle& h_m);
 116 
 117   void code_at_put(int bci, Bytecodes::Code code) {
 118     Bytecodes::check(code);
 119     assert(0 <= bci && bci < code_size(), "valid bci");
 120     address bcp = _code + bci;
 121     *bcp = code;
 122   }
 123 
 124   // Check bytecode and profile data collected are compatible
 125   void assert_virtual_call_type_ok(int bci);
 126   void assert_call_type_ok(int bci);
 127 
 128  public:
 129   void check_is_loaded() const                   { assert(is_loaded(), "not loaded"); }
 130 
 131   // Basic method information.
 132   ciFlags flags() const                          { check_is_loaded(); return _flags; }
 133   ciSymbol* name() const                         { return _name; }
 134   ciInstanceKlass* holder() const                { return _holder; }
 135   ciMethodData* method_data();


< prev index next >