summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2010-01-12 16:55:26 +0000
committerIulian Dragos <jaguarul@gmail.com>2010-01-12 16:55:26 +0000
commitd75264a14a560e1655c59dcfa1152882f2bad807 (patch)
tree17789181cc31132e3cfae178577c498c3f41a118 /src
parent335f62ba638b462976cef74e43276c71b5f0fbc8 (diff)
downloadscala-d75264a14a560e1655c59dcfa1152882f2bad807.tar.gz
scala-d75264a14a560e1655c59dcfa1152882f2bad807.tar.bz2
scala-d75264a14a560e1655c59dcfa1152882f2bad807.zip
Updated attempt at removing @inline warnings:
- fixed a bug in closure elimination causing VerifyErrors - fixed a broken assert in GenICode that fired when -Ydebug was used - added final modifiers
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/GenICode.scala2
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/analysis/CopyPropagation.scala6
-rw-r--r--src/compiler/scala/tools/nsc/backend/opt/Inliners.scala2
-rw-r--r--src/library/scala/Predef.scala4
-rw-r--r--src/library/scala/collection/immutable/StringOps.scala2
-rw-r--r--src/library/scala/collection/mutable/PriorityQueue.scala2
6 files changed, 10 insertions, 8 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
index cd690097e8..23b75e1142 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
@@ -362,7 +362,7 @@ abstract class GenICode extends SubComponent {
thenCtx = genLoad(thenp, thenCtx, resKind)
elseCtx = genLoad(elsep, elseCtx, resKind)
- assert(!settings.debug.value || expectedType == UNIT,
+ assert(!settings.debug.value || !(hasUnitBranch && expectedType != UNIT),
"I produce UNIT in a context where " + expectedType + " is expected!")
thenCtx.bb.emitOnly(JUMP(contCtx.bb))
diff --git a/src/compiler/scala/tools/nsc/backend/icode/analysis/CopyPropagation.scala b/src/compiler/scala/tools/nsc/backend/icode/analysis/CopyPropagation.scala
index 4f0da17bb3..8a65875fbf 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/analysis/CopyPropagation.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/analysis/CopyPropagation.scala
@@ -146,10 +146,12 @@ abstract class CopyPropagation {
target match {
case Deref(LocalVar(l)) =>
val alias = getAlias(l)
+ val derefAlias = Deref(LocalVar(alias))
getBinding(alias) match {
- case Record(_, _) => Some(Deref(LocalVar(alias)))
+ case Record(_, _) => Some(derefAlias)
case Deref(Field(r1, f1)) =>
- getFieldNonRecordValue(r1, f1) orElse Some(Deref(LocalVar(alias)))
+ getFieldNonRecordValue(r1, f1) orElse Some(derefAlias)
+ case Boxed(_) => Some(derefAlias)
case v => Some(v)
}
case Deref(Field(r1, f1)) =>
diff --git a/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala b/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
index 4c9a996cec..016e70a968 100644
--- a/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
+++ b/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
@@ -315,7 +315,7 @@ abstract class Inliners extends SubComponent {
i match {
case CALL_METHOD(msym, Dynamic) =>
def warnNoInline(reason: String) = {
- if (msym.hasAnnotation(ScalaInlineAttr))
+ if (msym.hasAnnotation(ScalaInlineAttr) && !m.symbol.hasFlag(Flags.BRIDGE))
currentIClazz.cunit.warning(i.pos,
"Could not inline required method %s because %s.".format(msym.originalName.decode, reason))
}
diff --git a/src/library/scala/Predef.scala b/src/library/scala/Predef.scala
index 1b9f4b75ba..5684c91aaa 100644
--- a/src/library/scala/Predef.scala
+++ b/src/library/scala/Predef.scala
@@ -117,7 +117,7 @@ object Predef extends LowPriorityImplicits {
throw new IllegalArgumentException("requirement failed: "+ message)
}
- class Ensuring[A](x: A) {
+ final class Ensuring[A](val x: A) {
def ensuring(cond: Boolean): A = { assert(cond); x }
def ensuring(cond: Boolean, msg: Any): A = { assert(cond, msg); x }
def ensuring(cond: A => Boolean): A = { assert(cond(x)); x }
@@ -139,7 +139,7 @@ object Predef extends LowPriorityImplicits {
def unapply[A, B, C](x: Tuple3[A, B, C]): Option[Tuple3[A, B, C]] = Some(x)
}
- class ArrowAssoc[A](x: A) {
+ final class ArrowAssoc[A](val x: A) {
@inline def -> [B](y: B): Tuple2[A, B] = Tuple2(x, y)
def →[B](y: B): Tuple2[A, B] = ->(y)
}
diff --git a/src/library/scala/collection/immutable/StringOps.scala b/src/library/scala/collection/immutable/StringOps.scala
index 9138c2bbac..db6479742b 100644
--- a/src/library/scala/collection/immutable/StringOps.scala
+++ b/src/library/scala/collection/immutable/StringOps.scala
@@ -17,7 +17,7 @@ import mutable.StringBuilder
/**
* @since 2.8
*/
-class StringOps(override val repr: String) extends StringLike[String] {
+final class StringOps(override val repr: String) extends StringLike[String] {
override protected[this] def thisCollection: WrappedString = new WrappedString(repr)
override protected[this] def toCollection(repr: String): WrappedString = new WrappedString(repr)
diff --git a/src/library/scala/collection/mutable/PriorityQueue.scala b/src/library/scala/collection/mutable/PriorityQueue.scala
index 203f1eee15..c4dac9effb 100644
--- a/src/library/scala/collection/mutable/PriorityQueue.scala
+++ b/src/library/scala/collection/mutable/PriorityQueue.scala
@@ -35,7 +35,7 @@ class PriorityQueue[A](implicit ord: Ordering[A])
{
import ord._
- private class ResizableArrayAccess[A] extends ResizableArray[A] {
+ private final class ResizableArrayAccess[A] extends ResizableArray[A] {
@inline def p_size0 = size0
@inline def p_size0_=(s: Int) = size0 = s
@inline def p_array = array