summaryrefslogtreecommitdiff
path: root/sources/scalac/backend
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2003-12-04 13:08:56 +0000
committerpaltherr <paltherr@epfl.ch>2003-12-04 13:08:56 +0000
commit4840576349b0403f1c4dcd524861063a5f1b6a7f (patch)
tree5ee886e6e44bfa3aea5db1465696ef8143e0d25f /sources/scalac/backend
parent7a4b5c10726f1bcc1851252b03d7c362ee51a210 (diff)
downloadscala-4840576349b0403f1c4dcd524861063a5f1b6a7f.tar.gz
scala-4840576349b0403f1c4dcd524861063a5f1b6a7f.tar.bz2
scala-4840576349b0403f1c4dcd524861063a5f1b6a7f.zip
- Changed name of box primitives
Diffstat (limited to 'sources/scalac/backend')
-rw-r--r--sources/scalac/backend/Primitive.java4
-rw-r--r--sources/scalac/backend/Primitives.java88
2 files changed, 41 insertions, 51 deletions
diff --git a/sources/scalac/backend/Primitive.java b/sources/scalac/backend/Primitive.java
index 68debab73d..3f8a658b3e 100644
--- a/sources/scalac/backend/Primitive.java
+++ b/sources/scalac/backend/Primitive.java
@@ -102,8 +102,8 @@ public class Primitive {
public case THROW { tag = 51; } // throw x
// RunTime operations
- public case BOX { tag = 52; } // RunTime.box(x)
- public case UNBOX { tag = 53; } // RunTime.<X>_unbox(x)
+ public case BOX { tag = 52; } // RunTime.box_<X>(x)
+ public case UNBOX { tag = 53; } // RunTime.unbox_<X>(x)
public case NEW_ZARRAY { tag = 54; } // RunTime.zarray(x)
public case NEW_BARRAY { tag = 55; } // RunTime.barray(x)
public case NEW_SARRAY { tag = 56; } // RunTime.sarray(x)
diff --git a/sources/scalac/backend/Primitives.java b/sources/scalac/backend/Primitives.java
index 77224d4ffa..c21304de22 100644
--- a/sources/scalac/backend/Primitives.java
+++ b/sources/scalac/backend/Primitives.java
@@ -75,7 +75,26 @@ public class Primitives {
private static final Name DARRAY_SET_N = Name.fromString("darray_set");
private static final Name OARRAY_SET_N = Name.fromString("oarray_set");
- private static final Name BOX_N = Name.fromString("box");
+ private static final Name BOX_UVALUE_N = Name.fromString("box_uvalue");
+ private static final Name BOX_ZVALUE_N = Name.fromString("box_zvalue");
+ private static final Name BOX_BVALUE_N = Name.fromString("box_bvalue");
+ private static final Name BOX_SVALUE_N = Name.fromString("box_svalue");
+ private static final Name BOX_CVALUE_N = Name.fromString("box_cvalue");
+ private static final Name BOX_IVALUE_N = Name.fromString("box_ivalue");
+ private static final Name BOX_LVALUE_N = Name.fromString("box_lvalue");
+ private static final Name BOX_FVALUE_N = Name.fromString("box_fvalue");
+ private static final Name BOX_DVALUE_N = Name.fromString("box_dvalue");
+
+ private static final Name BOX_ZARRAY_N = Name.fromString("box_zarray");
+ private static final Name BOX_BARRAY_N = Name.fromString("box_barray");
+ private static final Name BOX_SARRAY_N = Name.fromString("box_sarray");
+ private static final Name BOX_CARRAY_N = Name.fromString("box_carray");
+ private static final Name BOX_IARRAY_N = Name.fromString("box_iarray");
+ private static final Name BOX_LARRAY_N = Name.fromString("box_larray");
+ private static final Name BOX_FARRAY_N = Name.fromString("box_farray");
+ private static final Name BOX_DARRAY_N = Name.fromString("box_darray");
+ private static final Name BOX_OARRAY_N = Name.fromString("box_oarray");
+ private static final Name BOX__ARRAY_N = Name.fromString("box__array");
private static final Name UNBOX_UVALUE_N = Name.fromString("unbox_uvalue");
private static final Name UNBOX_ZVALUE_N = Name.fromString("unbox_zvalue");
@@ -375,26 +394,25 @@ public class Primitives {
this.FARRAY_SET = getUniqueTerm(RUNTIME, FARRAY_SET_N);
this.DARRAY_SET = getUniqueTerm(RUNTIME, DARRAY_SET_N);
this.OARRAY_SET = getUniqueTerm(RUNTIME, OARRAY_SET_N);
- Symbol[] boxes = getTerm(RUNTIME, BOX_N).alternativeSymbols();
- this.BOX_UVALUE = getBoxUnit(boxes);
- this.BOX_ZVALUE = getBoxValue(boxes, definitions.BOOLEAN_TYPE());
- this.BOX_BVALUE = getBoxValue(boxes, definitions.BYTE_TYPE());
- this.BOX_SVALUE = getBoxValue(boxes, definitions.SHORT_TYPE());
- this.BOX_CVALUE = getBoxValue(boxes, definitions.CHAR_TYPE());
- this.BOX_IVALUE = getBoxValue(boxes, definitions.INT_TYPE());
- this.BOX_LVALUE = getBoxValue(boxes, definitions.LONG_TYPE());
- this.BOX_FVALUE = getBoxValue(boxes, definitions.FLOAT_TYPE());
- this.BOX_DVALUE = getBoxValue(boxes, definitions.DOUBLE_TYPE());
- this.BOX_ZARRAY = getBoxArray(boxes, definitions.BOOLEAN_TYPE());
- this.BOX_BARRAY = getBoxArray(boxes, definitions.BYTE_TYPE());
- this.BOX_SARRAY = getBoxArray(boxes, definitions.SHORT_TYPE());
- this.BOX_CARRAY = getBoxArray(boxes, definitions.CHAR_TYPE());
- this.BOX_IARRAY = getBoxArray(boxes, definitions.INT_TYPE());
- this.BOX_LARRAY = getBoxArray(boxes, definitions.LONG_TYPE());
- this.BOX_FARRAY = getBoxArray(boxes, definitions.FLOAT_TYPE());
- this.BOX_DARRAY = getBoxArray(boxes, definitions.DOUBLE_TYPE());
- this.BOX_OARRAY = getBoxArray(boxes, definitions.JAVA_OBJECT_TYPE());
- this.BOX__ARRAY = getBoxArray(boxes, definitions.ANY_TYPE());
+ this.BOX_UVALUE = getUniqueTerm(RUNTIME, BOX_UVALUE_N);
+ this.BOX_ZVALUE = getUniqueTerm(RUNTIME, BOX_ZVALUE_N);
+ this.BOX_BVALUE = getUniqueTerm(RUNTIME, BOX_BVALUE_N);
+ this.BOX_SVALUE = getUniqueTerm(RUNTIME, BOX_SVALUE_N);
+ this.BOX_CVALUE = getUniqueTerm(RUNTIME, BOX_CVALUE_N);
+ this.BOX_IVALUE = getUniqueTerm(RUNTIME, BOX_IVALUE_N);
+ this.BOX_LVALUE = getUniqueTerm(RUNTIME, BOX_LVALUE_N);
+ this.BOX_FVALUE = getUniqueTerm(RUNTIME, BOX_FVALUE_N);
+ this.BOX_DVALUE = getUniqueTerm(RUNTIME, BOX_DVALUE_N);
+ this.BOX_ZARRAY = getUniqueTerm(RUNTIME, BOX_ZARRAY_N);
+ this.BOX_BARRAY = getUniqueTerm(RUNTIME, BOX_BARRAY_N);
+ this.BOX_SARRAY = getUniqueTerm(RUNTIME, BOX_SARRAY_N);
+ this.BOX_CARRAY = getUniqueTerm(RUNTIME, BOX_CARRAY_N);
+ this.BOX_IARRAY = getUniqueTerm(RUNTIME, BOX_IARRAY_N);
+ this.BOX_LARRAY = getUniqueTerm(RUNTIME, BOX_LARRAY_N);
+ this.BOX_FARRAY = getUniqueTerm(RUNTIME, BOX_FARRAY_N);
+ this.BOX_DARRAY = getUniqueTerm(RUNTIME, BOX_DARRAY_N);
+ this.BOX_OARRAY = getUniqueTerm(RUNTIME, BOX_OARRAY_N);
+ this.BOX__ARRAY = getUniqueTerm(RUNTIME, BOX__ARRAY_N);
this.UNBOX_UVALUE = getUniqueTerm(RUNTIME, UNBOX_UVALUE_N);
this.UNBOX_ZVALUE = getUniqueTerm(RUNTIME, UNBOX_ZVALUE_N);
this.UNBOX_BVALUE = getUniqueTerm(RUNTIME, UNBOX_BVALUE_N);
@@ -488,34 +506,6 @@ public class Primitives {
//########################################################################
// Private interface
- private Symbol getBoxUnit(Symbol[] alts) {
- for (int i = 0; i < alts.length; i++) {
- switch (alts[i].type()) {
- case MethodType(Symbol[] vparams, _):
- if (vparams.length == 0)
- return alts[i];
- }
- }
- throw Debug.abort("not found:" + BOX_N + "()");
- }
-
- private Symbol getBoxValue(Symbol[] alts, Type type) {
- for (int i = 0; i < alts.length; i++) {
- Type result = alts[i].type().resultType();
- switch (alts[i].type()) {
- case PolyType(Symbol[] tparams, _):
- result = result.subst(tparams, Symbol.info(tparams));
- }
- if (result.equals(type)) return alts[i];
- }
- throw Debug.abort("not found: def " +BOX_N+ "(" +type+ "): " +type);
- }
-
- private Symbol getBoxArray(Symbol[] alts, Type type) {
- Type array = definitions.ARRAY_CLASS.type();
- return getBoxValue(alts, Type.appliedType(array, new Type[]{type}));
- }
-
private Symbol getUniqueTerm(Symbol owner, Name name) {
Symbol symbol = getTerm(owner, name);
assert !symbol.isOverloaded() :