src/share/vm/oops/method.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8076112 Sdiff src/share/vm/oops

src/share/vm/oops/method.hpp

Print this page




  65   ConstMethod*      _constMethod;                // Method read-only data.
  66   MethodData*       _method_data;
  67   MethodCounters*   _method_counters;
  68   AccessFlags       _access_flags;               // Access flags
  69   int               _vtable_index;               // vtable index of this method (see VtableIndexFlag)
  70                                                  // note: can have vtables with >2**16 elements (because of inheritance)
  71 #ifdef CC_INTERP
  72   int               _result_index;               // C++ interpreter needs for converting results to/from stack
  73 #endif
  74   u2                _method_size;                // size of this object
  75   u1                _intrinsic_id;               // vmSymbols::intrinsic_id (0 == _none)
  76 
  77   // Flags
  78   enum Flags {
  79     _jfr_towrite          = 1 << 0,
  80     _caller_sensitive     = 1 << 1,
  81     _force_inline         = 1 << 2,
  82     _dont_inline          = 1 << 3,
  83     _hidden               = 1 << 4,
  84     _has_injected_profile = 1 << 5,
  85     _running_emcp         = 1 << 6

  86   };
  87   u1 _flags;
  88 
  89 #ifndef PRODUCT
  90   int               _compiled_invocation_count;  // Number of nmethod invocations so far (for perf. debugging)
  91 #endif
  92   // Entry point for calling both from and to the interpreter.
  93   address _i2i_entry;           // All-args-on-stack calling convention
  94   // Adapter blob (i2c/c2i) for this Method*. Set once when method is linked.
  95   AdapterHandlerEntry* _adapter;
  96   // Entry point for calling from compiled code, to compiled code if it exists
  97   // or else the interpreter.
  98   volatile address _from_compiled_entry;        // Cache of: _code ? _code->entry_point() : _adapter->c2i_entry()
  99   // The entry point for calling both from and to compiled code is
 100   // "_code->entry_point()".  Because of tiered compilation and de-opt, this
 101   // field can come and go.  It can transition from NULL to not-null at any
 102   // time (whenever a compile completes).  It can transition from not-null to
 103   // NULL only at safepoints (because of a de-opt).
 104   nmethod* volatile _code;                       // Points to the corresponding piece of native code
 105   volatile address           _from_interpreted_entry; // Cache of _code ? _adapter->i2c_entry() : _i2i_entry


 796 
 797   bool force_inline() {
 798     return (_flags & _force_inline) != 0;
 799   }
 800   void set_force_inline(bool x) {
 801     _flags = x ? (_flags | _force_inline) : (_flags & ~_force_inline);
 802   }
 803 
 804   bool dont_inline() {
 805     return (_flags & _dont_inline) != 0;
 806   }
 807   void set_dont_inline(bool x) {
 808     _flags = x ? (_flags | _dont_inline) : (_flags & ~_dont_inline);
 809   }
 810 
 811   bool is_hidden() {
 812     return (_flags & _hidden) != 0;
 813   }
 814   void set_hidden(bool x) {
 815     _flags = x ? (_flags | _hidden) : (_flags & ~_hidden);







 816   }
 817 
 818   bool has_injected_profile() {
 819     return (_flags & _has_injected_profile) != 0;
 820   }
 821   void set_has_injected_profile(bool x) {
 822     _flags = x ? (_flags | _has_injected_profile) : (_flags & ~_has_injected_profile);
 823   }
 824 
 825   ConstMethod::MethodType method_type() const {
 826       return _constMethod->method_type();
 827   }
 828   bool is_overpass() const { return method_type() == ConstMethod::OVERPASS; }
 829 
 830   // On-stack replacement support
 831   bool has_osr_nmethod(int level, bool match_level) {
 832    return method_holder()->lookup_osr_nmethod(this, InvocationEntryBci, level, match_level) != NULL;
 833   }
 834 
 835   int mark_osr_nmethods() {




  65   ConstMethod*      _constMethod;                // Method read-only data.
  66   MethodData*       _method_data;
  67   MethodCounters*   _method_counters;
  68   AccessFlags       _access_flags;               // Access flags
  69   int               _vtable_index;               // vtable index of this method (see VtableIndexFlag)
  70                                                  // note: can have vtables with >2**16 elements (because of inheritance)
  71 #ifdef CC_INTERP
  72   int               _result_index;               // C++ interpreter needs for converting results to/from stack
  73 #endif
  74   u2                _method_size;                // size of this object
  75   u1                _intrinsic_id;               // vmSymbols::intrinsic_id (0 == _none)
  76 
  77   // Flags
  78   enum Flags {
  79     _jfr_towrite          = 1 << 0,
  80     _caller_sensitive     = 1 << 1,
  81     _force_inline         = 1 << 2,
  82     _dont_inline          = 1 << 3,
  83     _hidden               = 1 << 4,
  84     _has_injected_profile = 1 << 5,
  85     _running_emcp         = 1 << 6,
  86     _intrinsic_candidate  = 1 << 7
  87   };
  88   u1 _flags;
  89 
  90 #ifndef PRODUCT
  91   int               _compiled_invocation_count;  // Number of nmethod invocations so far (for perf. debugging)
  92 #endif
  93   // Entry point for calling both from and to the interpreter.
  94   address _i2i_entry;           // All-args-on-stack calling convention
  95   // Adapter blob (i2c/c2i) for this Method*. Set once when method is linked.
  96   AdapterHandlerEntry* _adapter;
  97   // Entry point for calling from compiled code, to compiled code if it exists
  98   // or else the interpreter.
  99   volatile address _from_compiled_entry;        // Cache of: _code ? _code->entry_point() : _adapter->c2i_entry()
 100   // The entry point for calling both from and to compiled code is
 101   // "_code->entry_point()".  Because of tiered compilation and de-opt, this
 102   // field can come and go.  It can transition from NULL to not-null at any
 103   // time (whenever a compile completes).  It can transition from not-null to
 104   // NULL only at safepoints (because of a de-opt).
 105   nmethod* volatile _code;                       // Points to the corresponding piece of native code
 106   volatile address           _from_interpreted_entry; // Cache of _code ? _adapter->i2c_entry() : _i2i_entry


 797 
 798   bool force_inline() {
 799     return (_flags & _force_inline) != 0;
 800   }
 801   void set_force_inline(bool x) {
 802     _flags = x ? (_flags | _force_inline) : (_flags & ~_force_inline);
 803   }
 804 
 805   bool dont_inline() {
 806     return (_flags & _dont_inline) != 0;
 807   }
 808   void set_dont_inline(bool x) {
 809     _flags = x ? (_flags | _dont_inline) : (_flags & ~_dont_inline);
 810   }
 811 
 812   bool is_hidden() {
 813     return (_flags & _hidden) != 0;
 814   }
 815   void set_hidden(bool x) {
 816     _flags = x ? (_flags | _hidden) : (_flags & ~_hidden);
 817   }
 818 
 819   bool intrinsic_candidate() {
 820     return (_flags & _intrinsic_candidate) != 0;
 821   }
 822   void set_intrinsic_candidate(bool x) {
 823     _flags = x ? (_flags | _intrinsic_candidate) : (_flags & ~_intrinsic_candidate);
 824   }
 825 
 826   bool has_injected_profile() {
 827     return (_flags & _has_injected_profile) != 0;
 828   }
 829   void set_has_injected_profile(bool x) {
 830     _flags = x ? (_flags | _has_injected_profile) : (_flags & ~_has_injected_profile);
 831   }
 832 
 833   ConstMethod::MethodType method_type() const {
 834       return _constMethod->method_type();
 835   }
 836   bool is_overpass() const { return method_type() == ConstMethod::OVERPASS; }
 837 
 838   // On-stack replacement support
 839   bool has_osr_nmethod(int level, bool match_level) {
 840    return method_holder()->lookup_osr_nmethod(this, InvocationEntryBci, level, match_level) != NULL;
 841   }
 842 
 843   int mark_osr_nmethods() {


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