mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 22:34:27 +02:00
8041468: Field nmethod::_lock_count should be declared volatile
The jint field nmethod::_lock_count which is used in nmethodLocker::lock_nmethod and nmethodLocker::unlock_nmethod should be declared volatile (see also signature of Atomic::inc) Reviewed-by: kvn, roland
This commit is contained in:
parent
26de6296e0
commit
d16c89c108
3 changed files with 4 additions and 4 deletions
|
@ -2284,13 +2284,13 @@ nmethodLocker::nmethodLocker(address pc) {
|
|||
void nmethodLocker::lock_nmethod(nmethod* nm, bool zombie_ok) {
|
||||
if (nm == NULL) return;
|
||||
Atomic::inc(&nm->_lock_count);
|
||||
guarantee(zombie_ok || !nm->is_zombie(), "cannot lock a zombie method");
|
||||
assert(zombie_ok || !nm->is_zombie(), "cannot lock a zombie method");
|
||||
}
|
||||
|
||||
void nmethodLocker::unlock_nmethod(nmethod* nm) {
|
||||
if (nm == NULL) return;
|
||||
Atomic::dec(&nm->_lock_count);
|
||||
guarantee(nm->_lock_count >= 0, "unmatched nmethod lock/unlock");
|
||||
assert(nm->_lock_count >= 0, "unmatched nmethod lock/unlock");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -203,7 +203,7 @@ class nmethod : public CodeBlob {
|
|||
// and is not made into a zombie. However, once the nmethod is made into
|
||||
// a zombie, it will be locked one final time if CompiledMethodUnload
|
||||
// event processing needs to be done.
|
||||
jint _lock_count;
|
||||
volatile jint _lock_count;
|
||||
|
||||
// not_entrant method removal. Each mark_sweep pass will update
|
||||
// this mark to current sweep invocation count if it is seen on the
|
||||
|
|
|
@ -878,7 +878,7 @@ typedef TwoOopHashtable<Symbol*, mtClass> SymbolTwoOopHashtable;
|
|||
nonstatic_field(nmethod, _entry_point, address) \
|
||||
nonstatic_field(nmethod, _verified_entry_point, address) \
|
||||
nonstatic_field(nmethod, _osr_entry_point, address) \
|
||||
nonstatic_field(nmethod, _lock_count, jint) \
|
||||
volatile_nonstatic_field(nmethod, _lock_count, jint) \
|
||||
nonstatic_field(nmethod, _stack_traversal_mark, long) \
|
||||
nonstatic_field(nmethod, _compile_id, int) \
|
||||
nonstatic_field(nmethod, _comp_level, int) \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue