diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-11-27 15:40:20 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-12-16 13:15:00 +0100 |
commit | feff44746b68946871616c577f53250a778b5928 (patch) | |
tree | 87fe80fbcc046df1308e15faff790952bb1cac87 /src/dotty/tools/backend/jvm/scalaPrimitives.scala | |
parent | 7bc36d8186d395d1656c24ab86a0c4dfa0010ae7 (diff) | |
download | dotty-feff44746b68946871616c577f53250a778b5928.tar.gz dotty-feff44746b68946871616c577f53250a778b5928.tar.bz2 dotty-feff44746b68946871616c577f53250a778b5928.zip |
remove dependency on Btypes from DottyPrimitives. Rely on symbols instead.
Diffstat (limited to 'src/dotty/tools/backend/jvm/scalaPrimitives.scala')
-rwxr-xr-x | src/dotty/tools/backend/jvm/scalaPrimitives.scala | 76 |
1 files changed, 37 insertions, 39 deletions
diff --git a/src/dotty/tools/backend/jvm/scalaPrimitives.scala b/src/dotty/tools/backend/jvm/scalaPrimitives.scala index ef8318d0b..150e672c7 100755 --- a/src/dotty/tools/backend/jvm/scalaPrimitives.scala +++ b/src/dotty/tools/backend/jvm/scalaPrimitives.scala @@ -6,7 +6,7 @@ package dotty.tools.dotc package backend.jvm -import dotty.tools.backend.jvm.GenBCode +import dotty.tools.backend.jvm.GenBCodePipeline import dotty.tools.dotc.core.Names.TermName import dotty.tools.dotc.core.Types.{ErrorType, Type} @@ -32,7 +32,7 @@ import core.Symbols.{Symbol, NoSymbol} * * Inspired from the `scalac` compiler. */ -class DottyPrimitives(ctx: Context, genBcode: GenBCode) { +class DottyPrimitives(ctx: Context) { import scala.tools.nsc.backend.ScalaPrimitives._ private lazy val primitives: immutable.Map[Symbol, Int] = init @@ -55,9 +55,8 @@ class DottyPrimitives(ctx: Context, genBcode: GenBCode) { def getPrimitive(fun: Symbol, tpe: Type)(implicit ctx: Context): Int = { val defn = ctx.definitions val code = getPrimitive(fun) - import genBcode.bTypes._ - def elementType = tpe.widenDealias match { + def elementType: Type = tpe.widenDealias match { case defn.ArrayType(el) => el case _ => ctx.error(s"expected Array $tpe") @@ -67,43 +66,42 @@ class DottyPrimitives(ctx: Context, genBcode: GenBCode) { code match { case APPLY => - genBcode.toTypeKind(elementType) match { - case BOOL => ZARRAY_GET - case BYTE => BARRAY_GET - case SHORT => SARRAY_GET - case CHAR => CARRAY_GET - case INT => IARRAY_GET - case LONG => LARRAY_GET - case FLOAT => FARRAY_GET - case DOUBLE => DARRAY_GET - case _ => OARRAY_GET + elementType.classSymbol match { + case defn.BooleanClass => ZARRAY_GET + case defn.ByteClass => BARRAY_GET + case defn.ShortClass => SARRAY_GET + case defn.CharClass => CARRAY_GET + case defn.IntClass => IARRAY_GET + case defn.LongClass => LARRAY_GET + case defn.FloatClass => FARRAY_GET + case defn.DoubleClass => DARRAY_GET + case _ => OARRAY_GET } case UPDATE => - genBcode.toTypeKind(elementType) match { - case BOOL => ZARRAY_SET - case BYTE => BARRAY_SET - case SHORT => SARRAY_SET - case CHAR => CARRAY_SET - case INT => IARRAY_SET - case LONG => LARRAY_SET - case FLOAT => FARRAY_SET - case DOUBLE => DARRAY_SET - case _ => OARRAY_SET - + elementType.classSymbol match { + case defn.BooleanClass => ZARRAY_SET + case defn.ByteClass => BARRAY_SET + case defn.ShortClass => SARRAY_SET + case defn.CharClass => CARRAY_SET + case defn.IntClass => IARRAY_SET + case defn.LongClass => LARRAY_SET + case defn.FloatClass => FARRAY_SET + case defn.DoubleClass => DARRAY_SET + case _ => OARRAY_SET } case LENGTH => - genBcode.toTypeKind(elementType) match { - case BOOL => ZARRAY_LENGTH - case BYTE => BARRAY_LENGTH - case SHORT => SARRAY_LENGTH - case CHAR => CARRAY_LENGTH - case INT => IARRAY_LENGTH - case LONG => LARRAY_LENGTH - case FLOAT => FARRAY_LENGTH - case DOUBLE => DARRAY_LENGTH - case _ => OARRAY_LENGTH + elementType.classSymbol match { + case defn.BooleanClass => ZARRAY_LENGTH + case defn.ByteClass => BARRAY_LENGTH + case defn.ShortClass => SARRAY_LENGTH + case defn.CharClass => CARRAY_LENGTH + case defn.IntClass => IARRAY_LENGTH + case defn.LongClass => LARRAY_LENGTH + case defn.FloatClass => FARRAY_LENGTH + case defn.DoubleClass => DARRAY_LENGTH + case _ => OARRAY_LENGTH } case _ => @@ -149,11 +147,11 @@ class DottyPrimitives(ctx: Context, genBcode: GenBCode) { // java.lang.Object addPrimitive(defn.Object_eq, ID) addPrimitive(defn.Object_ne, NI) - addPrimitive(defn.Any_==, EQ) - addPrimitive(defn.Any_!=, NE) + /* addPrimitive(defn.Any_==, EQ) + addPrimitive(defn.Any_!=, NE)*/ addPrimitive(defn.Object_synchronized, SYNCHRONIZED) - addPrimitive(defn.Any_isInstanceOf, IS) - addPrimitive(defn.Any_asInstanceOf, AS) + /*addPrimitive(defn.Any_isInstanceOf, IS) + addPrimitive(defn.Any_asInstanceOf, AS)*/ // java.lang.String addPrimitive(defn.String_+, CONCAT) |