DEADSOFTWARE

Добавлен тип SYSTEM.PTR
[dsw-obn.git] / src / backends / jvm / generator-jvm-basic.c
index 27f1c56390802b409621ef18779d6781c6f10595..2baed6556849dc01aa1d61d9fda6836cccf7642c 100644 (file)
@@ -77,6 +77,9 @@ jvm_get_descriptor(oberon_type_t * type)
                                        break;
                        }
                        break;
+               case OBERON_TYPE_SYSTEM_BYTE:
+                       return new_string("B");
+                       break;
                case OBERON_TYPE_REAL:
                        switch(type -> size)
                        {
@@ -146,6 +149,9 @@ jvm_get_descriptor(oberon_type_t * type)
                                        break;
                        }
                        break;
+               case OBERON_TYPE_SYSTEM_PTR:
+                       return new_string("Ljava/lang/Object;");
+                       break;
                default:
                        gen_error("jvm_get_descriptor: unsupported type class %i", type -> class);
                        break;
@@ -169,6 +175,9 @@ jvm_get_descriptor_safe(oberon_type_t * type)
                case OBERON_TYPE_ARRAY:
                        return new_string("A%s", jvm_get_descriptor_safe(type -> base));
                        break;
+               case OBERON_TYPE_SYSTEM_PTR:
+                       return new_string("SYSPTR");
+                       break;
                default:
                        return jvm_get_descriptor(type);
                        break;
@@ -187,6 +196,7 @@ jvm_get_prefix(oberon_type_t * type)
                case OBERON_TYPE_INTEGER:
                case OBERON_TYPE_CHAR:
                case OBERON_TYPE_SET:
+               case OBERON_TYPE_SYSTEM_BYTE:
                        return (size <= 4) ? ('i') : ('l');
                        break;
                case OBERON_TYPE_PROCEDURE:
@@ -195,6 +205,7 @@ jvm_get_prefix(oberon_type_t * type)
                case OBERON_TYPE_POINTER:
                case OBERON_TYPE_STRING:
                case OBERON_TYPE_NIL:
+               case OBERON_TYPE_SYSTEM_PTR:
                        return 'a';
                        break;
                case OBERON_TYPE_REAL:
@@ -237,6 +248,9 @@ jvm_get_postfix(oberon_type_t * type)
                                        break;
                        }
                        break;
+               case OBERON_TYPE_SYSTEM_BYTE:
+                       return 'b';
+                       break;
                case OBERON_TYPE_CHAR:
                        switch(size)
                        {
@@ -263,6 +277,7 @@ jvm_get_postfix(oberon_type_t * type)
                case OBERON_TYPE_POINTER:
                case OBERON_TYPE_STRING:
                case OBERON_TYPE_NIL:
+               case OBERON_TYPE_SYSTEM_PTR:
                        return 'a';
                        break;
                case OBERON_TYPE_REAL:
@@ -379,6 +394,9 @@ jvm_get_class_full_name(oberon_type_t * type)
                        rec_id = type -> gen_type -> rec_id;
                        name = new_string("%s$RECORD%i", type -> module -> name, rec_id);
                        break;
+               case OBERON_TYPE_SYSTEM_PTR:
+                       name = new_string("java/lang/Object");
+                       break;
                default:
                        gen_error("jvm_get_class_full_name: unk type class %i", type -> class);
                        break;