index d986a8e4cbc9af35a1fcf9361c531238c1de3fa8..d609ed8de96c216a30ac4ec9bceda90ec230583e 100644 (file)
fprintf(fp, ".method <init>()V\n");
fprintf(fp, " aload_0\n");
fprintf(fp, " invokespecial %s/<init>()V\n", abscname);
- fprintf(fp, " aload_0\n");
+ fprintf(fp, " return\n");
+ fprintf(fp, ".end method\n\n");
+
+ fprintf(fp, ".method static <clinit>()V\n");
+ fprintf(fp, " .limit stack 2\n");
+ fprintf(fp, " new %s\n", cname);
+ fprintf(fp, " dup\n");
+ fprintf(fp, " invokespecial %s/<init>()V\n", cname);
fprintf(fp, " putstatic %s/pointer %s\n", cname, absdesc);
fprintf(fp, " return\n");
fprintf(fp, ".end method\n\n");
case OBERON_TYPE_BOOLEAN:
case OBERON_TYPE_ARRAY:
case OBERON_TYPE_REAL:
+ case OBERON_TYPE_CHAR:
break;
case OBERON_TYPE_RECORD:
;
jvm_generate_store(p, x -> type, x -> gen_var);
}
}
- else if(x -> class == OBERON_CLASS_PROC)
- {
- char * cname = jvm_get_field_full_name_safe(x);
- jvm_generate(p, 0, 1, "new %s", cname);
- jvm_generate(p, 1, 0, "invokespecial %s/<init>()V", cname);
- }
x = x -> next;
}
}
break;
case MODE_INTEGER:
+ case MODE_CHAR:
jvm_generate_push_int_size(p, item -> integer, item -> result -> size);
break;
case MODE_BOOLEAN: