summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2014-07-04 09:28:19 +0200
committerAdriaan Moors <adriaan.moors@typesafe.com>2014-07-04 09:28:19 +0200
commitd74da160b0583eed00b0b5f809d304e72d37f040 (patch)
tree052bd2138b9403f7b19f3d383b4593b5e80a35c9
parent300db2a1e3eefc2a6ed379c870bc7da42a26e69a (diff)
parent099a426dd6a176e704f47ed665669bf093a6d3f6 (diff)
downloadscala-d74da160b0583eed00b0b5f809d304e72d37f040.tar.gz
scala-d74da160b0583eed00b0b5f809d304e72d37f040.tar.bz2
scala-d74da160b0583eed00b0b5f809d304e72d37f040.zip
Merge pull request #3752 from jeroentervoorde/SI_8589
SI-8589 Performance improvement for ArrayCharSequence.toString
-rw-r--r--src/library/scala/runtime/SeqCharSequence.scala7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/library/scala/runtime/SeqCharSequence.scala b/src/library/scala/runtime/SeqCharSequence.scala
index d2084a6598..a7765994ec 100644
--- a/src/library/scala/runtime/SeqCharSequence.scala
+++ b/src/library/scala/runtime/SeqCharSequence.scala
@@ -41,5 +41,10 @@ final class ArrayCharSequence(val xs: Array[Char], start: Int, end: Int) extends
new ArrayCharSequence(xs, start1, start1 + newlen)
}
}
- override def toString = xs drop start take length mkString ""
+ override def toString = {
+ val start = math.max(this.start, 0)
+ val end = math.min(xs.length, start + length)
+
+ if (start >= end) "" else new String(xs, start, end - start)
+ }
}