summaryrefslogtreecommitdiff
path: root/src/reflect/scala
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2016-01-22 22:33:29 +0100
committerLukas Rytz <lukas.rytz@gmail.com>2016-01-23 07:26:13 +0100
commit8d3be4dc79cb4679fc4994c32b21e10847e5518f (patch)
tree526242bc68fd901933a961dc14e55633129fb65d /src/reflect/scala
parent7443037a6d1376709b3d83f10e66c9155f76dbaa (diff)
downloadscala-8d3be4dc79cb4679fc4994c32b21e10847e5518f.tar.gz
scala-8d3be4dc79cb4679fc4994c32b21e10847e5518f.tar.bz2
scala-8d3be4dc79cb4679fc4994c32b21e10847e5518f.zip
Harden methods to recognize method invocations to optimize
The previous methods to identify method invocations that can be optimized, such as `isPredefAutoBox`, were String-based. Now we obtain class and method signatures from symbols through the BTypes infrastructure. We also piggy-back on specialization's type transformer to create all specialized subclasses of Tuple1/Tuple2. We'll do the same in the future for FunctionN, but the current JFunctionN are written in Java and specialized artisanally.
Diffstat (limited to 'src/reflect/scala')
-rw-r--r--src/reflect/scala/reflect/internal/Definitions.scala4
-rw-r--r--src/reflect/scala/reflect/runtime/JavaUniverseForce.scala1
2 files changed, 5 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/internal/Definitions.scala b/src/reflect/scala/reflect/internal/Definitions.scala
index 5ce5c39145..f2da7614a3 100644
--- a/src/reflect/scala/reflect/internal/Definitions.scala
+++ b/src/reflect/scala/reflect/internal/Definitions.scala
@@ -93,6 +93,10 @@ trait Definitions extends api.StandardDefinitions {
lazy val refClass = classesMap(x => getRequiredClass("scala.runtime." + x + "Ref"))
lazy val volatileRefClass = classesMap(x => getRequiredClass("scala.runtime.Volatile" + x + "Ref"))
+ lazy val allRefClasses: Set[Symbol] = {
+ refClass.values.toSet ++ volatileRefClass.values.toSet ++ Set(VolatileObjectRefClass, ObjectRefClass)
+ }
+
def isNumericSubClass(sub: Symbol, sup: Symbol) = (
(numericWeight contains sub)
&& (numericWeight contains sup)
diff --git a/src/reflect/scala/reflect/runtime/JavaUniverseForce.scala b/src/reflect/scala/reflect/runtime/JavaUniverseForce.scala
index 0132fff17c..46e4371cfa 100644
--- a/src/reflect/scala/reflect/runtime/JavaUniverseForce.scala
+++ b/src/reflect/scala/reflect/runtime/JavaUniverseForce.scala
@@ -424,6 +424,7 @@ trait JavaUniverseForce { self: runtime.JavaUniverse =>
definitions.boxedClass
definitions.refClass
definitions.volatileRefClass
+ definitions.allRefClasses
definitions.UnitClass
definitions.ByteClass
definitions.ShortClass