Mercurial > hg > graal-compiler
comparison src/share/vm/oops/cpCacheOop.hpp @ 542:9a25e0c45327
6792421: assert(_bitMap->isMarked(addr+size-1),inconsistent Printezis mark)
Summary: The CMS concurrent precleaning and concurrent marking phases should work around classes that are undergoing redefinition.
Reviewed-by: ysr, tonyp
author | jmasa |
---|---|
date | Sat, 31 Jan 2009 00:15:00 -0800 |
parents | d1605aabd0a1 |
children | 0fbdb4381b99 |
comparison
equal
deleted
inserted
replaced
541:23673011938d | 542:9a25e0c45327 |
---|---|
289 class constantPoolCacheOopDesc: public oopDesc { | 289 class constantPoolCacheOopDesc: public oopDesc { |
290 friend class VMStructs; | 290 friend class VMStructs; |
291 private: | 291 private: |
292 int _length; | 292 int _length; |
293 constantPoolOop _constant_pool; // the corresponding constant pool | 293 constantPoolOop _constant_pool; // the corresponding constant pool |
294 // If true, safe for concurrent GC processing, | |
295 // Set unconditionally in constantPoolCacheKlass::allocate() | |
296 volatile bool _is_conc_safe; | |
294 | 297 |
295 // Sizing | 298 // Sizing |
296 debug_only(friend class ClassVerifier;) | 299 debug_only(friend class ClassVerifier;) |
297 int length() const { return _length; } | 300 int length() const { return _length; } |
298 void set_length(int length) { _length = length; } | 301 void set_length(int length) { _length = length; } |
313 | 316 |
314 // Accessors | 317 // Accessors |
315 void set_constant_pool(constantPoolOop pool) { oop_store_without_check((oop*)&_constant_pool, (oop)pool); } | 318 void set_constant_pool(constantPoolOop pool) { oop_store_without_check((oop*)&_constant_pool, (oop)pool); } |
316 constantPoolOop constant_pool() const { return _constant_pool; } | 319 constantPoolOop constant_pool() const { return _constant_pool; } |
317 ConstantPoolCacheEntry* entry_at(int i) const { assert(0 <= i && i < length(), "index out of bounds"); return base() + i; } | 320 ConstantPoolCacheEntry* entry_at(int i) const { assert(0 <= i && i < length(), "index out of bounds"); return base() + i; } |
321 | |
322 // GC support | |
323 // If the _length field has not been set, the size of the | |
324 // constantPoolCache cannot be correctly calculated. | |
325 bool is_conc_safe() { return _is_conc_safe; } | |
326 void set_is_conc_safe(bool v) { _is_conc_safe = v; } | |
318 | 327 |
319 // Code generation | 328 // Code generation |
320 static ByteSize base_offset() { return in_ByteSize(sizeof(constantPoolCacheOopDesc)); } | 329 static ByteSize base_offset() { return in_ByteSize(sizeof(constantPoolCacheOopDesc)); } |
321 | 330 |
322 // RedefineClasses() API support: | 331 // RedefineClasses() API support: |