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

src/share/vm/oops/method.hpp

Print this page
rev 7652 : 8063137: Never-taken branches should be pruned when GWT LambdaForms are shared
Reviewed-by: ?
rev 7653 : [mq]: branch.freq.1


  64  private:
  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     _running_emcp     = 1 << 5

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


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







 814   ConstMethod::MethodType method_type() const {
 815       return _constMethod->method_type();
 816   }
 817   bool is_overpass() const { return method_type() == ConstMethod::OVERPASS; }
 818 
 819   // On-stack replacement support
 820   bool has_osr_nmethod(int level, bool match_level) {
 821    return method_holder()->lookup_osr_nmethod(this, InvocationEntryBci, level, match_level) != NULL;
 822   }
 823 
 824   int mark_osr_nmethods() {
 825     return method_holder()->mark_osr_nmethods(this);
 826   }
 827 
 828   nmethod* lookup_osr_nmethod_for(int bci, int level, bool match_level) {
 829     return method_holder()->lookup_osr_nmethod(this, bci, level, match_level);
 830   }
 831 
 832   // Inline cache support
 833   void cleanup_inline_caches();




  64  private:
  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     _running_emcp     = 1 << 5,
  85     _shared           = 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


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


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