diff options
author | Martin Odersky <odersky@gmail.com> | 2015-11-07 19:09:07 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2015-11-09 15:45:39 +0100 |
commit | 5398c5a723b0f8b0d35e6c3ad230c5046169e837 (patch) | |
tree | 832f93128ce25194d9418b682f4e248adba51dd4 /src/dotty/tools/dotc/core/SymDenotations.scala | |
parent | 5db52d25256568cf7d8c2335ee733a38b059b5ad (diff) | |
download | dotty-5398c5a723b0f8b0d35e6c3ad230c5046169e837.tar.gz dotty-5398c5a723b0f8b0d35e6c3ad230c5046169e837.tar.bz2 dotty-5398c5a723b0f8b0d35e6c3ad230c5046169e837.zip |
Avoid overhead of generating symbol sets on each access
1) Have symbol sets cached per run
2) Use methods Denotation#isPrimitiveValueClass, Denotation#isNumericValueClass
instead of calling contains directly on symbol sets.
Diffstat (limited to 'src/dotty/tools/dotc/core/SymDenotations.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/SymDenotations.scala | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/core/SymDenotations.scala b/src/dotty/tools/dotc/core/SymDenotations.scala index 20d674b86..a74cf0000 100644 --- a/src/dotty/tools/dotc/core/SymDenotations.scala +++ b/src/dotty/tools/dotc/core/SymDenotations.scala @@ -417,10 +417,12 @@ object SymDenotations { name.toTermName == nme.EVT2U /** Is symbol a primitive value class? */ - def isPrimitiveValueClass(implicit ctx: Context) = defn.ScalaValueClasses contains symbol + def isPrimitiveValueClass(implicit ctx: Context) = + maybeOwner == defn.ScalaPackageClass && defn.ScalaValueClasses().contains(symbol) /** Is symbol a primitive numeric value class? */ - def isNumericValueClass(implicit ctx: Context) = defn.ScalaNumericValueClasses contains symbol + def isNumericValueClass(implicit ctx: Context) = + maybeOwner == defn.ScalaPackageClass && defn.ScalaNumericValueClasses().contains(symbol) /** Is symbol a phantom class for which no runtime representation exists? */ def isPhantomClass(implicit ctx: Context) = defn.PhantomClasses contains symbol |