summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/collection/mutable/StringBuilder.scala11
-rwxr-xr-xsrc/library/scala/reflect/generic/Flags.scala39
2 files changed, 36 insertions, 14 deletions
diff --git a/src/library/scala/collection/mutable/StringBuilder.scala b/src/library/scala/collection/mutable/StringBuilder.scala
index edd59a8221..8d7ed8bcd2 100644
--- a/src/library/scala/collection/mutable/StringBuilder.scala
+++ b/src/library/scala/collection/mutable/StringBuilder.scala
@@ -171,6 +171,17 @@ final class StringBuilder(private val underlying: JavaStringBuilder)
*/
def +=(x: Char): this.type = { append(x); this }
+ /** Optimization.
+ */
+ def ++=(s: String): this.type = {
+ underlying append s
+ this
+ }
+ def appendAll(xs: String): StringBuilder = {
+ underlying append xs
+ this
+ }
+
/** !!! This should create a new sequence.
*/
def +(x: Char): this.type = { +=(x); this }
diff --git a/src/library/scala/reflect/generic/Flags.scala b/src/library/scala/reflect/generic/Flags.scala
index d7c8ff9296..3291047831 100755
--- a/src/library/scala/reflect/generic/Flags.scala
+++ b/src/library/scala/reflect/generic/Flags.scala
@@ -102,7 +102,7 @@ class Flags extends ModifierFlags {
final val PickledFlags: Long = 0xFFFFFFFFL
- private val rawPickledCorrespondence = List(
+ private def rawPickledCorrespondence = Array(
(IMPLICIT, IMPLICIT_PKL),
(FINAL, FINAL_PKL),
(PRIVATE, PRIVATE_PKL),
@@ -116,20 +116,31 @@ class Flags extends ModifierFlags {
(MODULE, MODULE_PKL),
(INTERFACE, INTERFACE_PKL)
)
- private def mkCorrespondenceArray(correspondence: List[(Int, Int)]) = {
- def f(flags: Int): Int = {
- correspondence.foldLeft(0) {
- case (result, (oldFlag, newFlag)) =>
- if ((flags & oldFlag) != 0) result | newFlag
- else result
- }
+ private val rawFlags: Array[Int] = rawPickledCorrespondence map (_._1)
+ private val pickledFlags: Array[Int] = rawPickledCorrespondence map (_._2)
+
+ private def r2p(flags: Int): Int = {
+ var result = 0
+ var i = 0
+ while (i < rawFlags.length) {
+ if ((flags & rawFlags(i)) != 0)
+ result |= pickledFlags(i)
+
+ i += 1
+ }
+ result
+ }
+ private def p2r(flags: Int): Int = {
+ var result = 0
+ var i = 0
+ while (i < rawFlags.length) {
+ if ((flags & pickledFlags(i)) != 0)
+ result |= rawFlags(i)
+
+ i += 1
}
- 0 to PKL_MASK map f toArray
+ result
}
- /** A map from the raw to pickled flags, and vice versa.
- */
- private val r2p = mkCorrespondenceArray(rawPickledCorrespondence)
- private val p2r = mkCorrespondenceArray(rawPickledCorrespondence map (_.swap))
// Generated by mkFlagToStringMethod() at Mon Oct 11 10:07:29 PDT 2010
@annotation.switch override def flagToString(flag: Long): String = flag match {
@@ -232,7 +243,7 @@ class Flags extends ModifierFlags {
// List of the raw flags, in pickled order
protected val pickledListOrder: List[Long] = {
val all = 0 to 62 map (1L << _)
- val front = rawPickledCorrespondence map (_._1.toLong)
+ val front = rawFlags map (_.toLong)
front.toList ++ (all filterNot (front contains _))
}