summaryrefslogtreecommitdiff
path: root/sources/scalac/backend
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2003-03-28 16:08:26 +0000
committerpaltherr <paltherr@epfl.ch>2003-03-28 16:08:26 +0000
commit277c7242d07959aeb607dfcb19f615bfd2da123b (patch)
treec148e52ab07165f8abcfb2251104ed8815342808 /sources/scalac/backend
parent5ee5a01aadb13ce19eb2aa96354bf1fb13340808 (diff)
downloadscala-277c7242d07959aeb607dfcb19f615bfd2da123b.tar.gz
scala-277c7242d07959aeb607dfcb19f615bfd2da123b.tar.bz2
scala-277c7242d07959aeb607dfcb19f615bfd2da123b.zip
- Fixed erasure to replace length calls on unbo...
- Fixed erasure to replace length calls on unboxed array by primitive - calls Fixed GenJVM to optimize length primitives
Diffstat (limited to 'sources/scalac/backend')
-rw-r--r--sources/scalac/backend/jvm/GenJVM.java16
1 files changed, 10 insertions, 6 deletions
diff --git a/sources/scalac/backend/jvm/GenJVM.java b/sources/scalac/backend/jvm/GenJVM.java
index 5779cbb80c..2bd62a05ea 100644
--- a/sources/scalac/backend/jvm/GenJVM.java
+++ b/sources/scalac/backend/jvm/GenJVM.java
@@ -632,7 +632,9 @@ class GenJVM {
case ZARRAY_SET : case BARRAY_SET : case SARRAY_SET :
case CARRAY_SET : case IARRAY_SET : case LARRAY_SET :
case FARRAY_SET : case DARRAY_SET : case OARRAY_SET :
- case LENGTH :
+ case ZARRAY_LENGTH : case BARRAY_LENGTH : case SARRAY_LENGTH :
+ case CARRAY_LENGTH : case IARRAY_LENGTH : case LARRAY_LENGTH :
+ case FARRAY_LENGTH : case DARRAY_LENGTH : case OARRAY_LENGTH :
case IS : case AS :
case CONCAT :
case THROW :
@@ -650,7 +652,7 @@ class GenJVM {
case HASHCODE :
case TOSTRING :
case BOX :
- case APPLY : case UPDATE :
+ case APPLY : case UPDATE : case LENGTH :
return false;
default:
throw Debug.abort("unknown primitive", sym);
@@ -695,11 +697,13 @@ class GenJVM {
case ZARRAY_GET : case BARRAY_GET : case SARRAY_GET :
case CARRAY_GET : case IARRAY_GET : case LARRAY_GET :
case FARRAY_GET : case DARRAY_GET : case OARRAY_GET :
- assert args.length == 3;
+ assert args.length == 3 : "get - " + args.length;
return genArrayAccess(args[1], args[2]);
- case LENGTH:
- assert args.length == 1;
- return genArrayLength(args[0]);
+ case ZARRAY_LENGTH : case BARRAY_LENGTH : case SARRAY_LENGTH :
+ case CARRAY_LENGTH : case IARRAY_LENGTH : case LARRAY_LENGTH :
+ case FARRAY_LENGTH : case DARRAY_LENGTH : case OARRAY_LENGTH :
+ assert args.length == 2 : args.length;
+ return genArrayLength(args[1]);
case AS_UVALUE :
assert args.length == 1;
gen(args[0], cst.T_VOID);