src/share/vm/runtime/atomic.cpp

changeset 2964
2a241e764894
parent 2314
f95d63e2154a
child 2993
7d9e451f5416
     1.1 --- a/src/share/vm/runtime/atomic.cpp	Wed Jun 08 21:48:38 2011 -0400
     1.2 +++ b/src/share/vm/runtime/atomic.cpp	Fri Jun 10 15:08:36 2011 -0700
     1.3 @@ -83,3 +83,13 @@
     1.4    return (unsigned int)Atomic::cmpxchg((jint)exchange_value, (volatile jint*)dest,
     1.5                                         (jint)compare_value);
     1.6  }
     1.7 +
     1.8 +jlong Atomic::add(jlong    add_value, volatile jlong*    dest) {
     1.9 +  jlong old = load(dest);
    1.10 +  jlong new_value = old + add_value;
    1.11 +  while (old != cmpxchg(new_value, dest, old)) {
    1.12 +    old = load(dest);
    1.13 +    new_value = old + add_value;
    1.14 +  }
    1.15 +  return old;
    1.16 +}

mercurial