@@ -31,8 +31,6 @@ abstract class ScalaPrimitives {
31
31
32
32
import global ._
33
33
import definitions ._
34
- import global .icodes .{TypeKind , toTypeKind }
35
- import global .icodes .{BOOL , BYTE , CHAR , DOUBLE , FLOAT , INT , LONG , SHORT , REFERENCE , ARRAY }
36
34
37
35
// Arithmetic unary operations
38
36
final val POS = 1 // +x
@@ -458,18 +456,6 @@ abstract class ScalaPrimitives {
458
456
459
457
def isCoercion (code : Int ): Boolean = (code >= B2B ) && (code <= D2D )
460
458
461
- final val typeOfArrayOp : Map [Int , TypeKind ] = Map (
462
- (List (ZARRAY_LENGTH , ZARRAY_GET , ZARRAY_SET ) map (_ -> BOOL )) ++
463
- (List (BARRAY_LENGTH , BARRAY_GET , BARRAY_SET ) map (_ -> BYTE )) ++
464
- (List (SARRAY_LENGTH , SARRAY_GET , SARRAY_SET ) map (_ -> SHORT )) ++
465
- (List (CARRAY_LENGTH , CARRAY_GET , CARRAY_SET ) map (_ -> CHAR )) ++
466
- (List (IARRAY_LENGTH , IARRAY_GET , IARRAY_SET ) map (_ -> INT )) ++
467
- (List (LARRAY_LENGTH , LARRAY_GET , LARRAY_SET ) map (_ -> LONG )) ++
468
- (List (FARRAY_LENGTH , FARRAY_GET , FARRAY_SET ) map (_ -> FLOAT )) ++
469
- (List (DARRAY_LENGTH , DARRAY_GET , DARRAY_SET ) map (_ -> DOUBLE )) ++
470
- (List (OARRAY_LENGTH , OARRAY_GET , OARRAY_SET ) map (_ -> REFERENCE (AnyRefClass ))) : _*
471
- )
472
-
473
459
/** Check whether the given operation code is an array operation. */
474
460
def isArrayOp (code : Int ): Boolean =
475
461
isArrayNew(code) | isArrayLength(code) | isArrayGet(code) | isArraySet(code)
@@ -536,17 +522,6 @@ abstract class ScalaPrimitives {
536
522
case _ => false
537
523
}
538
524
539
- /** If code is a coercion primitive, the result type */
540
- def generatedKind (code : Int ): TypeKind = code match {
541
- case B2B | C2B | S2B | I2B | L2B | F2B | D2B => BYTE
542
- case B2C | C2C | S2C | I2C | L2C | F2C | D2C => CHAR
543
- case B2S | C2S | S2S | I2S | L2S | F2S | D2S => SHORT
544
- case B2I | C2I | S2I | I2I | L2I | F2I | D2I => INT
545
- case B2L | C2L | S2L | I2L | L2L | F2L | D2L => LONG
546
- case B2F | C2F | S2F | I2F | L2F | F2F | D2F => FLOAT
547
- case B2D | C2D | S2D | I2D | L2D | F2D | D2D => DOUBLE
548
- }
549
-
550
525
def isPrimitive (sym : Symbol ): Boolean = primitives contains sym
551
526
552
527
/** Return the code for the given symbol. */
@@ -564,6 +539,7 @@ abstract class ScalaPrimitives {
564
539
*/
565
540
def getPrimitive (fun : Symbol , tpe : Type ): Int = {
566
541
import definitions ._
542
+ import genBCode .bTypes ._
567
543
val code = getPrimitive(fun)
568
544
569
545
def elementType = enteringTyper {
@@ -576,7 +552,7 @@ abstract class ScalaPrimitives {
576
552
code match {
577
553
578
554
case APPLY =>
579
- toTypeKind (elementType) match {
555
+ typeToBType (elementType) match {
580
556
case BOOL => ZARRAY_GET
581
557
case BYTE => BARRAY_GET
582
558
case SHORT => SARRAY_GET
@@ -585,13 +561,13 @@ abstract class ScalaPrimitives {
585
561
case LONG => LARRAY_GET
586
562
case FLOAT => FARRAY_GET
587
563
case DOUBLE => DARRAY_GET
588
- case REFERENCE (_) | ARRAY (_) => OARRAY_GET
564
+ case _ : ClassBType | _ : ArrayBType => OARRAY_GET
589
565
case _ =>
590
566
abort(" Unexpected array element type: " + elementType)
591
567
}
592
568
593
569
case UPDATE =>
594
- toTypeKind (elementType) match {
570
+ typeToBType (elementType) match {
595
571
case BOOL => ZARRAY_SET
596
572
case BYTE => BARRAY_SET
597
573
case SHORT => SARRAY_SET
@@ -600,13 +576,13 @@ abstract class ScalaPrimitives {
600
576
case LONG => LARRAY_SET
601
577
case FLOAT => FARRAY_SET
602
578
case DOUBLE => DARRAY_SET
603
- case REFERENCE (_) | ARRAY (_) => OARRAY_SET
579
+ case _ : ClassBType | _ : ArrayBType => OARRAY_SET
604
580
case _ =>
605
581
abort(" Unexpected array element type: " + elementType)
606
582
}
607
583
608
584
case LENGTH =>
609
- toTypeKind (elementType) match {
585
+ typeToBType (elementType) match {
610
586
case BOOL => ZARRAY_LENGTH
611
587
case BYTE => BARRAY_LENGTH
612
588
case SHORT => SARRAY_LENGTH
@@ -615,7 +591,7 @@ abstract class ScalaPrimitives {
615
591
case LONG => LARRAY_LENGTH
616
592
case FLOAT => FARRAY_LENGTH
617
593
case DOUBLE => DARRAY_LENGTH
618
- case REFERENCE (_) | ARRAY (_) => OARRAY_LENGTH
594
+ case _ : ClassBType | _ : ArrayBType => OARRAY_LENGTH
619
595
case _ =>
620
596
abort(" Unexpected array element type: " + elementType)
621
597
}
0 commit comments