X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fbackends%2Fjvm%2Fgenerator-jvm-basic.c;h=478a92c6f38cb91acb3c03c3f939c3158023d5f3;hb=1233fb1d5d8f67a8f5e970386c1c4cbb6691ec04;hp=fac9e0bc0def269786de76b60734d24cceb2fc6e;hpb=8b545fd0349be12160b9f50c1f4b6f072eac436f;p=dsw-obn.git diff --git a/src/backends/jvm/generator-jvm-basic.c b/src/backends/jvm/generator-jvm-basic.c index fac9e0b..478a92c 100644 --- a/src/backends/jvm/generator-jvm-basic.c +++ b/src/backends/jvm/generator-jvm-basic.c @@ -53,7 +53,7 @@ jvm_get_descriptor(oberon_type_t * type) switch(type -> class) { - case OBERON_TYPE_VOID: + case OBERON_TYPE_NOTYPE: return new_string("V"); break; case OBERON_TYPE_INTEGER: @@ -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) { @@ -187,6 +190,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: @@ -194,6 +198,7 @@ jvm_get_prefix(oberon_type_t * type) case OBERON_TYPE_RECORD: case OBERON_TYPE_POINTER: case OBERON_TYPE_STRING: + case OBERON_TYPE_NIL: return 'a'; break; case OBERON_TYPE_REAL: @@ -236,6 +241,9 @@ jvm_get_postfix(oberon_type_t * type) break; } break; + case OBERON_TYPE_SYSTEM_BYTE: + return 'b'; + break; case OBERON_TYPE_CHAR: switch(size) { @@ -261,6 +269,7 @@ jvm_get_postfix(oberon_type_t * type) case OBERON_TYPE_RECORD: case OBERON_TYPE_POINTER: case OBERON_TYPE_STRING: + case OBERON_TYPE_NIL: return 'a'; break; case OBERON_TYPE_REAL: @@ -364,6 +373,7 @@ jvm_get_class_full_name(oberon_type_t * type) int num = type -> num_decl; oberon_object_t * arg = type -> decl; + for(int i = 0; i < num; i++) { desc = jvm_get_descriptor_safe(arg -> type); @@ -397,7 +407,7 @@ jvm_cell_size_for_type(oberon_type_t * type) return 2; } } - else if(type -> class == OBERON_TYPE_VOID) + else if(type -> class == OBERON_TYPE_NOTYPE) { return 0; }