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
|