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