diff -r 588d5bf7a560 -r aa70afac4eca rt/emul/compact/src/main/java/java/util/concurrent/atomic/AtomicInteger.java --- a/rt/emul/compact/src/main/java/java/util/concurrent/atomic/AtomicInteger.java Thu Oct 03 15:40:35 2013 +0200 +++ b/rt/emul/compact/src/main/java/java/util/concurrent/atomic/AtomicInteger.java Fri Oct 04 10:52:01 2013 +0200 @@ -34,7 +34,6 @@ */ package java.util.concurrent.atomic; -import sun.misc.Unsafe; /** * An {@code int} value that may be updated atomically. See the @@ -52,17 +51,6 @@ public class AtomicInteger extends Number implements java.io.Serializable { private static final long serialVersionUID = 6214790243416807050L; - // setup to use Unsafe.compareAndSwapInt for updates - private static final Unsafe unsafe = Unsafe.getUnsafe(); - private static final long valueOffset; - - static { - try { - valueOffset = unsafe.objectFieldOffset - (AtomicInteger.class.getDeclaredField("value")); - } catch (Exception ex) { throw new Error(ex); } - } - private volatile int value; /** @@ -105,7 +93,7 @@ * @since 1.6 */ public final void lazySet(int newValue) { - unsafe.putOrderedInt(this, valueOffset, newValue); + value = newValue; } /** @@ -132,7 +120,12 @@ * the actual value was not equal to the expected value. */ public final boolean compareAndSet(int expect, int update) { - return unsafe.compareAndSwapInt(this, valueOffset, expect, update); + if (value == expect) { + value = update; + return true; + } else { + return false; + } } /** @@ -148,7 +141,7 @@ * @return true if successful. */ public final boolean weakCompareAndSet(int expect, int update) { - return unsafe.compareAndSwapInt(this, valueOffset, expect, update); + return compareAndSet(expect, update); } /**