--- old/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java 2015-11-23 18:24:18.908830534 +0100 +++ new/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java 2015-11-23 18:24:18.562795743 +0100 @@ -39,6 +39,7 @@ import java.util.Collection; import java.util.Date; import java.util.concurrent.TimeUnit; +import jdk.internal.vm.annotation.ReservedStackAccess; /** * Provides a framework for implementing blocking locks and related @@ -886,6 +887,7 @@ * @param arg the acquire argument * @return {@code true} if interrupted while waiting */ + @ReservedStackAccess final boolean acquireQueued(final Node node, int arg) { try { boolean interrupted = false; @@ -1218,6 +1220,7 @@ * {@link #tryAcquire} but is otherwise uninterpreted and * can represent anything you like. */ + @ReservedStackAccess public final void acquire(int arg) { if (!tryAcquire(arg) && acquireQueued(addWaiter(Node.EXCLUSIVE), arg)) @@ -1281,6 +1284,7 @@ * can represent anything you like. * @return the value returned from {@link #tryRelease} */ + @ReservedStackAccess public final boolean release(int arg) { if (tryRelease(arg)) { Node h = head; @@ -1361,6 +1365,7 @@ * and can represent anything you like. * @return the value returned from {@link #tryReleaseShared} */ + @ReservedStackAccess public final boolean releaseShared(int arg) { if (tryReleaseShared(arg)) { doReleaseShared();