comparison src/share/vm/oops/methodData.hpp @ 14704:b51e29501f30

Merged with jdk9/dev/hotspot changeset 9486a41de3b7
author twisti
date Tue, 18 Mar 2014 20:19:10 -0700
parents 12eaf1a47a90 53ed0f89f44e
children 92aa6797d639
comparison
equal deleted inserted replaced
14647:8f483e200405 14704:b51e29501f30
187 return _header._struct._bci; 187 return _header._struct._bci;
188 } 188 }
189 189
190 void set_header(intptr_t value) { 190 void set_header(intptr_t value) {
191 _header._bits = value; 191 _header._bits = value;
192 }
193 bool atomic_set_header(intptr_t value) {
194 if (Atomic::cmpxchg_ptr(value, (volatile intptr_t*)&_header._bits, 0) == 0) {
195 return true;
196 }
197 return false;
198 } 192 }
199 intptr_t header() { 193 intptr_t header() {
200 return _header._bits; 194 return _header._bits;
201 } 195 }
202 void set_cell_at(int index, intptr_t value) { 196 void set_cell_at(int index, intptr_t value) {
2141 int _size; 2135 int _size;
2142 2136
2143 // Cached hint for bci_to_dp and bci_to_data 2137 // Cached hint for bci_to_dp and bci_to_data
2144 int _hint_di; 2138 int _hint_di;
2145 2139
2140 Mutex _extra_data_lock;
2141
2146 MethodData(methodHandle method, int size, TRAPS); 2142 MethodData(methodHandle method, int size, TRAPS);
2147 public: 2143 public:
2148 static MethodData* allocate(ClassLoaderData* loader_data, methodHandle method, TRAPS); 2144 static MethodData* allocate(ClassLoaderData* loader_data, methodHandle method, TRAPS);
2149 MethodData() {}; // For ciMethodData 2145 MethodData() : _extra_data_lock(Monitor::leaf, "MDO extra data lock") {}; // For ciMethodData
2150 2146
2151 bool is_methodData() const volatile { return true; } 2147 bool is_methodData() const volatile { return true; }
2152 void initialize(bool for_reprofile = false); 2148 void initialize(bool for_reprofile = false);
2153 2149
2154 // Whole-method sticky bits and flags 2150 // Whole-method sticky bits and flags
2263 } 2259 }
2264 2260
2265 // What is the index of the first data entry? 2261 // What is the index of the first data entry?
2266 int first_di() const { return 0; } 2262 int first_di() const { return 0; }
2267 2263
2268 ProfileData* bci_to_extra_data_helper(int bci, Method* m, DataLayout*& dp); 2264 ProfileData* bci_to_extra_data_helper(int bci, Method* m, DataLayout*& dp, bool concurrent);
2269 // Find or create an extra ProfileData: 2265 // Find or create an extra ProfileData:
2270 ProfileData* bci_to_extra_data(int bci, Method* m, bool create_if_missing); 2266 ProfileData* bci_to_extra_data(int bci, Method* m, bool create_if_missing);
2271 2267
2272 // return the argument info cell 2268 // return the argument info cell
2273 ArgInfoData *arg_info(); 2269 ArgInfoData *arg_info();