From 0a5d5f7060e2329108f094cd3919c21f04d3a8a6 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Thu, 26 Apr 2012 10:55:51 +0200 Subject: [PATCH] Optimizing AbstractPromise to avoid initial CAS --- .../src/main/java/akka/dispatch/AbstractPromise.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/akka-actor/src/main/java/akka/dispatch/AbstractPromise.java b/akka-actor/src/main/java/akka/dispatch/AbstractPromise.java index 7e534cb7e0..db11e84483 100644 --- a/akka-actor/src/main/java/akka/dispatch/AbstractPromise.java +++ b/akka-actor/src/main/java/akka/dispatch/AbstractPromise.java @@ -7,14 +7,9 @@ package akka.dispatch; import akka.util.Unsafe; abstract class AbstractPromise { - private volatile Object _ref; + private volatile Object _ref = DefaultPromise.EmptyPending(); - { - if (!updateState(null, DefaultPromise.EmptyPending())) - throw new ExceptionInInitializerError(new IllegalStateException("AbstractPromise initial value not null!")); - } - - final static long _refOffset; + final static long _refOffset; // Memory offset to _ref field static { try { @@ -29,6 +24,6 @@ abstract class AbstractPromise { } protected final Object getState() { - return Unsafe.instance.getObjectVolatile(this, _refOffset); + return _ref; } }