summaryrefslogtreecommitdiff
path: root/examples/scala-js/tools/jvm/src/main/scala/scala/scalajs/tools/optimizer/ConcurrencyUtils.scala
diff options
context:
space:
mode:
Diffstat (limited to 'examples/scala-js/tools/jvm/src/main/scala/scala/scalajs/tools/optimizer/ConcurrencyUtils.scala')
-rw-r--r--examples/scala-js/tools/jvm/src/main/scala/scala/scalajs/tools/optimizer/ConcurrencyUtils.scala74
1 files changed, 0 insertions, 74 deletions
diff --git a/examples/scala-js/tools/jvm/src/main/scala/scala/scalajs/tools/optimizer/ConcurrencyUtils.scala b/examples/scala-js/tools/jvm/src/main/scala/scala/scalajs/tools/optimizer/ConcurrencyUtils.scala
deleted file mode 100644
index 471ed65..0000000
--- a/examples/scala-js/tools/jvm/src/main/scala/scala/scalajs/tools/optimizer/ConcurrencyUtils.scala
+++ /dev/null
@@ -1,74 +0,0 @@
-/* __ *\
-** ________ ___ / / ___ __ ____ Scala.js tools **
-** / __/ __// _ | / / / _ | __ / // __/ (c) 2013-2014, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ **
-** /____/\___/_/ |_/____/_/ | |__/ /____/ **
-** |/____/ **
-\* */
-
-
-package scala.scalajs.tools.optimizer
-
-import scala.annotation.tailrec
-
-import scala.collection.concurrent.TrieMap
-
-import java.util.concurrent.atomic._
-
-private[optimizer] object ConcurrencyUtils {
-
- /** An atomic accumulator supports adding single elements and retrieving and
- * deleting all contained elements */
- type AtomicAcc[T] = AtomicReference[List[T]]
-
- object AtomicAcc {
- @inline final def empty[T]: AtomicAcc[T] =
- new AtomicReference[List[T]](Nil)
- @inline final def apply[T](l: List[T]): AtomicAcc[T] =
- new AtomicReference(l)
- }
-
- implicit class AtomicAccOps[T](val acc: AtomicAcc[T]) extends AnyVal {
- @inline final def size: Int = acc.get.size
-
- @inline
- final def +=(x: T): Unit = AtomicAccOps.append(acc, x)
-
- @inline
- final def removeAll(): List[T] = AtomicAccOps.removeAll(acc)
- }
-
- object AtomicAccOps {
- @inline
- @tailrec
- private final def append[T](acc: AtomicAcc[T], x: T): Boolean = {
- val oldV = acc.get
- val newV = x :: oldV
- acc.compareAndSet(oldV, newV) || append(acc, x)
- }
-
- @inline
- private final def removeAll[T](acc: AtomicAcc[T]): List[T] =
- acc.getAndSet(Nil)
- }
-
- type TrieSet[T] = TrieMap[T, Null]
-
- implicit class TrieSetOps[T](val set: TrieSet[T]) extends AnyVal {
- @inline final def +=(x: T): Unit = set.put(x, null)
- }
-
- object TrieSet {
- @inline final def empty[T]: TrieSet[T] = TrieMap.empty
- }
-
- implicit class TrieMapOps[K,V](val map: TrieMap[K,V]) extends AnyVal {
- @inline final def getOrPut(k: K, default: => V): V = {
- map.get(k).getOrElse {
- val v = default
- map.putIfAbsent(k, v).getOrElse(v)
- }
- }
- }
-
-}