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

src/share/vm/oops/methodData.hpp

Print this page
rev 6132 : 8031755: Type speculation should be used to optimize explicit null checks
Summary: feed profiling data about reference nullness to type speculation.
Reviewed-by:


2035   // Back pointer to the Method*
2036   Method* _method;
2037 
2038   // Size of this oop in bytes
2039   int _size;
2040 
2041   // Cached hint for bci_to_dp and bci_to_data
2042   int _hint_di;
2043 
2044   Mutex _extra_data_lock;
2045 
2046   MethodData(methodHandle method, int size, TRAPS);
2047 public:
2048   static MethodData* allocate(ClassLoaderData* loader_data, methodHandle method, TRAPS);
2049   MethodData() : _extra_data_lock(Monitor::leaf, "MDO extra data lock") {}; // For ciMethodData
2050 
2051   bool is_methodData() const volatile { return true; }
2052 
2053   // Whole-method sticky bits and flags
2054   enum {
2055     _trap_hist_limit    = 18,   // decoupled from Deoptimization::Reason_LIMIT
2056     _trap_hist_mask     = max_jubyte,
2057     _extra_data_count   = 4     // extra DataLayout headers, for trap history
2058   }; // Public flag values
2059 private:
2060   uint _nof_decompiles;             // count of all nmethod removals
2061   uint _nof_overflow_recompiles;    // recompile count, excluding recomp. bits
2062   uint _nof_overflow_traps;         // trap count, excluding _trap_hist
2063   union {
2064     intptr_t _align;
2065     u1 _array[_trap_hist_limit];
2066   } _trap_hist;
2067 
2068   // Support for interprocedural escape analysis, from Thomas Kotzmann.
2069   intx              _eflags;          // flags on escape information
2070   intx              _arg_local;       // bit set of non-escaping arguments
2071   intx              _arg_stack;       // bit set of stack-allocatable arguments
2072   intx              _arg_returned;    // bit set of returned arguments
2073 
2074   int _creation_mileage;              // method mileage at MDO creation
2075 




2035   // Back pointer to the Method*
2036   Method* _method;
2037 
2038   // Size of this oop in bytes
2039   int _size;
2040 
2041   // Cached hint for bci_to_dp and bci_to_data
2042   int _hint_di;
2043 
2044   Mutex _extra_data_lock;
2045 
2046   MethodData(methodHandle method, int size, TRAPS);
2047 public:
2048   static MethodData* allocate(ClassLoaderData* loader_data, methodHandle method, TRAPS);
2049   MethodData() : _extra_data_lock(Monitor::leaf, "MDO extra data lock") {}; // For ciMethodData
2050 
2051   bool is_methodData() const volatile { return true; }
2052 
2053   // Whole-method sticky bits and flags
2054   enum {
2055     _trap_hist_limit    = 19,   // decoupled from Deoptimization::Reason_LIMIT
2056     _trap_hist_mask     = max_jubyte,
2057     _extra_data_count   = 4     // extra DataLayout headers, for trap history
2058   }; // Public flag values
2059 private:
2060   uint _nof_decompiles;             // count of all nmethod removals
2061   uint _nof_overflow_recompiles;    // recompile count, excluding recomp. bits
2062   uint _nof_overflow_traps;         // trap count, excluding _trap_hist
2063   union {
2064     intptr_t _align;
2065     u1 _array[_trap_hist_limit];
2066   } _trap_hist;
2067 
2068   // Support for interprocedural escape analysis, from Thomas Kotzmann.
2069   intx              _eflags;          // flags on escape information
2070   intx              _arg_local;       // bit set of non-escaping arguments
2071   intx              _arg_stack;       // bit set of stack-allocatable arguments
2072   intx              _arg_returned;    // bit set of returned arguments
2073 
2074   int _creation_mileage;              // method mileage at MDO creation
2075 


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