Skip to content

Instantly share code, notes, and snippets.

@xuwei-k
Last active August 29, 2015 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xuwei-k/828be054f293239147a4 to your computer and use it in GitHub Desktop.
Save xuwei-k/828be054f293239147a4 to your computer and use it in GitHub Desktop.
java/akka/actor/AbstractActorRef.java: cellOffset = Unsafe.instance.objectFieldOffset(RepointableActorRef.class.getDeclaredField("_cellDoNotCallMeDirectly"));
java/akka/actor/AbstractActorRef.java: lookupOffset = Unsafe.instance.objectFieldOffset(RepointableActorRef.class.getDeclaredField("_lookupDoNotCallMeDirectly"));
java/akka/actor/dungeon/AbstractActorCell.java: mailboxOffset = Unsafe.instance.objectFieldOffset(ActorCell.class.getDeclaredField("akka$actor$dungeon$Dispatch$$_mailboxDoNotCallMeDirectly"));
java/akka/actor/dungeon/AbstractActorCell.java: childrenOffset = Unsafe.instance.objectFieldOffset(ActorCell.class.getDeclaredField("akka$actor$dungeon$Children$$_childrenRefsDoNotCallMeDirectly"));
java/akka/actor/dungeon/AbstractActorCell.java: nextNameOffset = Unsafe.instance.objectFieldOffset(ActorCell.class.getDeclaredField("akka$actor$dungeon$Children$$_nextNameDoNotCallMeDirectly"));
java/akka/dispatch/AbstractMailbox.java: mailboxStatusOffset = Unsafe.instance.objectFieldOffset(Mailbox.class.getDeclaredField("_statusDoNotCallMeDirectly"));
java/akka/dispatch/AbstractMailbox.java: systemMessageOffset = Unsafe.instance.objectFieldOffset(Mailbox.class.getDeclaredField("_systemQueueDoNotCallMeDirectly"));
java/akka/dispatch/AbstractMessageDispatcher.java: shutdownScheduleOffset = Unsafe.instance.objectFieldOffset(MessageDispatcher.class.getDeclaredField("_shutdownScheduleDoNotCallMeDirectly"));
java/akka/dispatch/AbstractMessageDispatcher.java: inhabitantsOffset = Unsafe.instance.objectFieldOffset(MessageDispatcher.class.getDeclaredField("_inhabitantsDoNotCallMeDirectly"));
java/akka/dispatch/AbstractNodeQueue.java: final Node<T> tail = ((Node<T>)Unsafe.instance.getObjectVolatile(this, tailOffset));
java/akka/dispatch/AbstractNodeQueue.java: Unsafe.instance.putOrderedObject(this, tailOffset, next);
java/akka/dispatch/AbstractNodeQueue.java: tail = ((Node<T>)Unsafe.instance.getObjectVolatile(this, tailOffset));
java/akka/dispatch/AbstractNodeQueue.java: Unsafe.instance.putOrderedObject(this, tailOffset, next);
java/akka/dispatch/AbstractNodeQueue.java: tailOffset = Unsafe.instance.objectFieldOffset(AbstractNodeQueue.class.getDeclaredField("_tailDoNotCallMeDirectly"));
java/akka/dispatch/AbstractNodeQueue.java: return (Node<T>)Unsafe.instance.getObjectVolatile(this, nextOffset);
java/akka/dispatch/AbstractNodeQueue.java: Unsafe.instance.putOrderedObject(this, nextOffset, newNext);
java/akka/dispatch/AbstractNodeQueue.java: nextOffset = Unsafe.instance.objectFieldOffset(Node.class.getDeclaredField("_nextDoNotCallMeDirectly"));
java/akka/pattern/AbstractCircuitBreaker.java: stateOffset = Unsafe.instance.objectFieldOffset(CircuitBreaker.class.getDeclaredField("_currentStateDoNotCallMeDirectly"));
java/akka/pattern/AbstractPromiseActorRef.java: stateOffset = Unsafe.instance.objectFieldOffset(PromiseActorRef.class.getDeclaredField("_stateDoNotCallMeDirectly"));
java/akka/pattern/AbstractPromiseActorRef.java: watchedByOffset = Unsafe.instance.objectFieldOffset(PromiseActorRef.class.getDeclaredField("_watchedByDoNotCallMeDirectly"));
scala/akka/actor/RepointableActorRef.scala: def underlying: Cell = Unsafe.instance.getObjectVolatile(this, cellOffset).asInstanceOf[Cell]
scala/akka/actor/RepointableActorRef.scala: def lookup = Unsafe.instance.getObjectVolatile(this, lookupOffset).asInstanceOf[Cell]
scala/akka/actor/RepointableActorRef.scala: if (Unsafe.instance.compareAndSwapObject(this, cellOffset, old, next)) old else swapCell(next)
scala/akka/actor/RepointableActorRef.scala: if (Unsafe.instance.compareAndSwapObject(this, lookupOffset, old, next)) old else swapLookup(next)
scala/akka/actor/Scheduler.scala: private[this] val taskOffset = unsafe.objectFieldOffset(classOf[TaskHolder].getDeclaredField("task"))
scala/akka/actor/Scheduler.scala: case x ⇒ if (unsafe.compareAndSwapObject(this, taskOffset, x, replaceWith)) x else extractTask(replaceWith)
scala/akka/actor/dungeon/Children.scala: Unsafe.instance.getObjectVolatile(this, AbstractActorCell.childrenOffset).asInstanceOf[ChildrenContainer]
scala/akka/actor/dungeon/Children.scala: val current = Unsafe.instance.getLongVolatile(this, AbstractActorCell.nextNameOffset)
scala/akka/actor/dungeon/Children.scala: if (Unsafe.instance.compareAndSwapLong(this, AbstractActorCell.nextNameOffset, current, current + 1)) current
scala/akka/actor/dungeon/Children.scala: Unsafe.instance.compareAndSwapObject(this, AbstractActorCell.childrenOffset, oldChildren, newChildren)
scala/akka/actor/dungeon/Children.scala: final protected def setTerminated(): Unit = Unsafe.instance.putObjectVolatile(this, AbstractActorCell.childrenOffset, TerminatedChildrenContainer)
scala/akka/actor/dungeon/Dispatch.scala: @inline final def mailbox: Mailbox = Unsafe.instance.getObjectVolatile(this, AbstractActorCell.mailboxOffset).asInstanceOf[Mailbox]
scala/akka/actor/dungeon/Dispatch.scala: if (!Unsafe.instance.compareAndSwapObject(this, AbstractActorCell.mailboxOffset, oldMailbox, newMailbox)) swapMailbox(newMailbox)
scala/akka/dispatch/AbstractDispatcher.scala: if (Unsafe.instance.compareAndSwapLong(this, inhabitantsOffset, c, r)) r else addInhabitants(add)
scala/akka/dispatch/AbstractDispatcher.scala: final def inhabitants: Long = Unsafe.instance.getLongVolatile(this, inhabitantsOffset)
scala/akka/dispatch/AbstractDispatcher.scala: private final def shutdownSchedule: Int = Unsafe.instance.getIntVolatile(this, shutdownScheduleOffset)
scala/akka/dispatch/AbstractDispatcher.scala: private final def updateShutdownSchedule(expect: Int, update: Int): Boolean = Unsafe.instance.compareAndSwapInt(this, shutdownScheduleOffset, expect, update)
scala/akka/dispatch/Mailbox.scala: final def status: Mailbox.Status = Unsafe.instance.getIntVolatile(this, AbstractMailbox.mailboxStatusOffset)
scala/akka/dispatch/Mailbox.scala: Unsafe.instance.compareAndSwapInt(this, AbstractMailbox.mailboxStatusOffset, oldStatus, newStatus)
scala/akka/dispatch/Mailbox.scala: Unsafe.instance.putIntVolatile(this, AbstractMailbox.mailboxStatusOffset, newStatus)
scala/akka/dispatch/Mailbox.scala: new LatestFirstSystemMessageList(Unsafe.instance.getObjectVolatile(this, AbstractMailbox.systemMessageOffset).asInstanceOf[SystemMessage])
scala/akka/dispatch/Mailbox.scala: Unsafe.instance.compareAndSwapObject(this, AbstractMailbox.systemMessageOffset, _old.head, _new.head)
scala/akka/pattern/AskSupport.scala: private[this] def watchedBy: Set[ActorRef] = Unsafe.instance.getObjectVolatile(this, watchedByOffset).asInstanceOf[Set[ActorRef]]
scala/akka/pattern/AskSupport.scala: Unsafe.instance.compareAndSwapObject(this, watchedByOffset, oldWatchedBy, newWatchedBy)
scala/akka/pattern/AskSupport.scala: private[this] def state: AnyRef = Unsafe.instance.getObjectVolatile(this, stateOffset)
scala/akka/pattern/AskSupport.scala: Unsafe.instance.compareAndSwapObject(this, stateOffset, oldState, newState)
scala/akka/pattern/AskSupport.scala: private[this] def setState(newState: AnyRef): Unit = Unsafe.instance.putObjectVolatile(this, stateOffset, newState)
scala/akka/pattern/CircuitBreaker.scala: Unsafe.instance.compareAndSwapObject(this, AbstractCircuitBreaker.stateOffset, oldState, newState)
scala/akka/pattern/CircuitBreaker.scala: Unsafe.instance.getObjectVolatile(this, AbstractCircuitBreaker.stateOffset).asInstanceOf[State]
  • objectFieldOffset 15
  • getObjectVolatile 11
  • putOrderedObject 3
  • compareAndSwapObject 9
  • putObjectVolatile 2
  • compareAndSwapInt 2
  • compareAndSwapLong 2
  • getIntVolatile 2
  • getLongVolatile 2
  • putIntVolatile 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment