src/os/solaris/vm/osThread_solaris.cpp

changeset 709
f7e6d42d9323
parent 435
a61af66fc99e
child 772
9ee9cf798b59
     1.1 --- a/src/os/solaris/vm/osThread_solaris.cpp	Fri Aug 01 15:12:34 2008 -0700
     1.2 +++ b/src/os/solaris/vm/osThread_solaris.cpp	Fri Aug 01 15:18:14 2008 -0700
     1.3 @@ -69,15 +69,15 @@
     1.4  static intptr_t compare_and_exchange_current_callback (
     1.5         intptr_t callback, intptr_t *addr, intptr_t compare_value, Mutex *sync) {
     1.6    if (VM_Version::supports_compare_and_exchange()) {
     1.7 -     return Atomic::cmpxchg_ptr(callback, addr, compare_value);
     1.8 +    return Atomic::cmpxchg_ptr(callback, addr, compare_value);
     1.9    } else {
    1.10 -     MutexLockerEx(sync, Mutex::_no_safepoint_check_flag);
    1.11 -     if (*addr == compare_value) {
    1.12 -       *addr = callback;
    1.13 -       return compare_value;
    1.14 -     } else {
    1.15 -       return callback;
    1.16 -     }
    1.17 +    MutexLockerEx ml(sync, Mutex::_no_safepoint_check_flag);
    1.18 +    if (*addr == compare_value) {
    1.19 +      *addr = callback;
    1.20 +      return compare_value;
    1.21 +    } else {
    1.22 +      return callback;
    1.23 +    }
    1.24    }
    1.25  }
    1.26  
    1.27 @@ -86,7 +86,7 @@
    1.28    if (VM_Version::supports_compare_and_exchange()) {
    1.29      return Atomic::xchg_ptr(callback, addr);
    1.30    } else {
    1.31 -    MutexLockerEx(sync, Mutex::_no_safepoint_check_flag);
    1.32 +    MutexLockerEx ml(sync, Mutex::_no_safepoint_check_flag);
    1.33      intptr_t cb = *addr;
    1.34      *addr = callback;
    1.35      return cb;

mercurial