X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fbackends%2Fjvm%2Fgenerator-jvm.c;h=9408eca32328248fd37b8454c30b99d663ad7ebd;hb=13d2ebdd52d42ab2e9d5f3764a9296a25fe16464;hp=af45a637eaca1fbbf4655e659cd3ec68f9eaaf18;hpb=9a82efe08fea56335f331158344b17e6d5280a85;p=dsw-obn.git diff --git a/src/backends/jvm/generator-jvm.c b/src/backends/jvm/generator-jvm.c index af45a63..9408eca 100644 --- a/src/backends/jvm/generator-jvm.c +++ b/src/backends/jvm/generator-jvm.c @@ -650,6 +650,22 @@ oberon_generate_begin_module(oberon_context_t * ctx) jvm_alloc_register_untyped(p -> rf, false); jvm_generate(p, 0, 1, "aload_0"); jvm_generate(p, 1, 0, "invokespecial java/lang/Object/()V"); + + /* Инициализация переменных объявленных в модуле */ + oberon_object_t * x = ctx -> mod -> decl -> list -> next; + while(x != NULL) + { + if(x -> class == OBERON_CLASS_VAR) + { + if(x -> type -> class == OBERON_TYPE_ARRAY + || x -> type -> class == OBERON_TYPE_RECORD) + { + jvm_generate_new_static(p, x -> type); + jvm_generate_store(p, x -> type, x -> gen_var); + } + } + x = x -> next; + } } void