X-Git-Url: https://deadsoftware.ru/gitweb?p=dsw-obn.git;a=blobdiff_plain;f=src%2Fbackends%2Fjvm%2Fgenerator-jvm.c;h=1ba25c9afe28ee69e957cb10b6c9572814f06176;hp=24268e178a7474cf893ec5836b437fedc6197bcf;hb=1233fb1d5d8f67a8f5e970386c1c4cbb6691ec04;hpb=7b989fe6cfb3cf6e529b888bb6827714c45c62c6 diff --git a/src/backends/jvm/generator-jvm.c b/src/backends/jvm/generator-jvm.c index 24268e1..1ba25c9 100644 --- a/src/backends/jvm/generator-jvm.c +++ b/src/backends/jvm/generator-jvm.c @@ -492,6 +492,7 @@ oberon_generator_init_type(oberon_context_t * ctx, oberon_type_t * type) case OBERON_TYPE_STRING: case OBERON_TYPE_SET: case OBERON_TYPE_NIL: + case OBERON_TYPE_SYSTEM_BYTE: break; case OBERON_TYPE_RECORD: m = type -> module -> gen_mod; @@ -750,7 +751,10 @@ oberon_generate_begin_module(oberon_context_t * ctx) { if(x -> class == OBERON_CLASS_MODULE) { - jvm_generate(p, 0, 0, "invokestatic %s/BEGIN()V", x -> module -> gen_mod -> class -> full_name); + if(!x -> module -> intrinsic) + { + jvm_generate(p, 0, 0, "invokestatic %s/BEGIN()V", x -> module -> gen_mod -> class -> full_name); + } } else if(x -> class == OBERON_CLASS_VAR) { @@ -1044,13 +1048,16 @@ push_varptr(gen_proc_t * p, oberon_expr_t * expr) jvm_generate_ldst_prepare(p, expr -> item.var -> gen_var); break; case MODE_INDEX: - push_item(p, (oberon_item_t *) expr -> item.parent); + push_item(p, expr -> item.parent); push_expr(p, expr -> item.args); break; case MODE_FIELD: - push_item(p, (oberon_item_t *) expr -> item.parent); + push_item(p, expr -> item.parent); jvm_generate_ldst_prepare(p, expr -> item.var -> gen_var); break; + case MODE_DEREF: + push_varptr(p, (oberon_expr_t *) expr -> item.parent); + break; default: gen_error("push_varptr: wat %i", expr -> item.mode); break;