Packages

trait MemoryLocation[A] extends AnyRef

Extension point for MCAS: an MCAS operation can be executed on any number of objects which conform to this interface.

However, the methods of this interface should only ever be called by the MCAS implementation. An MCAS operation is only safe and atomic if ALL reads and writes go through the MCAS implementation.

These are the low-level, primitive operations required by the MCAS implementation. They are easily implemented by, e.g., having an AtomicReference or similar. (For implementations of this interface, see SimpleMemoryLocation or the various Refs in the choam-core module.)

Some method names are prefixed by unsafe because these are necessarily side-effecting methods, and they're also very low-level. Other methods are not "unsafe", since they're mostly harmless.

Generally, this interface should not be used directly. Instead, use MCAS, or an even higher level abstraction.

Source
MemoryLocation.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. MemoryLocation
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Abstract Value Members

  1. abstract def id: Long
  2. abstract def unsafeCasMarkerV(ov: WeakReference[AnyRef], nv: WeakReference[AnyRef]): Boolean

    Used by EMCAS; volatile

  3. abstract def unsafeCasV(ov: A, nv: A): Boolean

    volatile

  4. abstract def unsafeCmpxchgMarkerR(ov: WeakReference[AnyRef], nv: WeakReference[AnyRef]): WeakReference[AnyRef]

    Used by EMCAS; release

  5. abstract def unsafeCmpxchgR(ov: A, nv: A): A

    release

  6. abstract def unsafeCmpxchgV(ov: A, nv: A): A

    volatile

  7. abstract def unsafeCmpxchgVersionV(ov: Long, nv: Long): Long

    volatile

  8. abstract def unsafeGetMarkerV(): WeakReference[AnyRef]

    Used by EMCAS; volatile

  9. abstract def unsafeGetP(): A

    plain

  10. abstract def unsafeGetV(): A

    volatile

  11. abstract def unsafeGetVersionV(): Long

    volatile

  12. abstract def unsafeSetP(nv: A): Unit

    plain

  13. abstract def unsafeSetV(nv: A): Unit

    volatile

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  8. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  9. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  10. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  11. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  12. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  13. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  14. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  15. def toString(): String
    Definition Classes
    AnyRef → Any
  16. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  17. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  18. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

    (Since version 9)

Inherited from AnyRef

Inherited from Any

Ungrouped