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: