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 +}