comparison src/share/vm/oops/constMethodOop.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 a61af66fc99e
children 0fbdb4381b99
comparison
equal deleted inserted replaced
517:e9be0e04635a 518:0af8b0718fc9
102 // -1=too many args to fix, must parse the slow way. 102 // -1=too many args to fix, must parse the slow way.
103 // The real initial value is special to account for nonatomicity of 64 bit 103 // The real initial value is special to account for nonatomicity of 64 bit
104 // loads and stores. This value may updated and read without a lock by 104 // loads and stores. This value may updated and read without a lock by
105 // multiple threads, so is volatile. 105 // multiple threads, so is volatile.
106 volatile uint64_t _fingerprint; 106 volatile uint64_t _fingerprint;
107 volatile bool _is_conc_safe; // if true, safe for concurrent GC processing
107 108
108 public: 109 public:
109 oop* oop_block_beg() const { return adr_method(); } 110 oop* oop_block_beg() const { return adr_method(); }
110 oop* oop_block_end() const { return adr_exception_table() + 1; } 111 oop* oop_block_end() const { return adr_exception_table() + 1; }
111 112
271 272
272 // Garbage collection support 273 // Garbage collection support
273 oop* adr_method() const { return (oop*)&_method; } 274 oop* adr_method() const { return (oop*)&_method; }
274 oop* adr_stackmap_data() const { return (oop*)&_stackmap_data; } 275 oop* adr_stackmap_data() const { return (oop*)&_stackmap_data; }
275 oop* adr_exception_table() const { return (oop*)&_exception_table; } 276 oop* adr_exception_table() const { return (oop*)&_exception_table; }
277 bool is_conc_safe() { return _is_conc_safe; }
278 void set_is_conc_safe(bool v) { _is_conc_safe = v; }
276 279
277 // Unique id for the method 280 // Unique id for the method
278 static const u2 MAX_IDNUM; 281 static const u2 MAX_IDNUM;
279 static const u2 UNSET_IDNUM; 282 static const u2 UNSET_IDNUM;
280 u2 method_idnum() const { return _method_idnum; } 283 u2 method_idnum() const { return _method_idnum; }