comparison src/share/vm/oops/constantPoolOop.hpp @ 518:0af8b0718fc9

6692899: CMS: many vm.parallel_class_loading tests fail with assert "missing Printezis mark" Summary: The CMS concurrent precleaning and concurrent marking phases should work around classes that are undergoing redefinition. Reviewed-by: ysr, dcubed
author jmasa
date Sun, 11 Jan 2009 16:58:24 -0800
parents a45484ea312d
children 0fbdb4381b99
comparison
equal deleted inserted replaced
517:e9be0e04635a 518:0af8b0718fc9
41 typeArrayOop _tags; // the tag array describing the constant pool's contents 41 typeArrayOop _tags; // the tag array describing the constant pool's contents
42 constantPoolCacheOop _cache; // the cache holding interpreter runtime information 42 constantPoolCacheOop _cache; // the cache holding interpreter runtime information
43 klassOop _pool_holder; // the corresponding class 43 klassOop _pool_holder; // the corresponding class
44 int _flags; // a few header bits to describe contents for GC 44 int _flags; // a few header bits to describe contents for GC
45 int _length; // number of elements in the array 45 int _length; // number of elements in the array
46 volatile bool _is_conc_safe; // if true, safe for concurrent
47 // GC processing
46 // only set to non-zero if constant pool is merged by RedefineClasses 48 // only set to non-zero if constant pool is merged by RedefineClasses
47 int _orig_length; 49 int _orig_length;
48 50
49 void set_tags(typeArrayOop tags) { oop_store_without_check((oop*)&_tags, tags); } 51 void set_tags(typeArrayOop tags) { oop_store_without_check((oop*)&_tags, tags); }
50 void tag_at_put(int which, jbyte t) { tags()->byte_at_put(which, t); } 52 void tag_at_put(int which, jbyte t) { tags()->byte_at_put(which, t); }
376 } 378 }
377 379
378 static int header_size() { return sizeof(constantPoolOopDesc)/HeapWordSize; } 380 static int header_size() { return sizeof(constantPoolOopDesc)/HeapWordSize; }
379 static int object_size(int length) { return align_object_size(header_size() + length); } 381 static int object_size(int length) { return align_object_size(header_size() + length); }
380 int object_size() { return object_size(length()); } 382 int object_size() { return object_size(length()); }
383
384 bool is_conc_safe() { return _is_conc_safe; }
385 void set_is_conc_safe(bool v) { _is_conc_safe = v; }
381 386
382 friend class constantPoolKlass; 387 friend class constantPoolKlass;
383 friend class ClassFileParser; 388 friend class ClassFileParser;
384 friend class SystemDictionary; 389 friend class SystemDictionary;
385 390