X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fbackends%2Fjvm%2Fgenerator-jvm-abi.c;h=48b3951ac5ea30d296263ee7f14338ee23561b9a;hb=d4878eaf0861679d6af935c2078ab43cf59dcf67;hp=f277188bb6c54f48bff60ae3a1cbae8ca0b2bc81;hpb=9cc08bacbf56ebf49e17c8745ac6418fa4be1d0c;p=dsw-obn.git diff --git a/src/backends/jvm/generator-jvm-abi.c b/src/backends/jvm/generator-jvm-abi.c index f277188..48b3951 100644 --- a/src/backends/jvm/generator-jvm-abi.c +++ b/src/backends/jvm/generator-jvm-abi.c @@ -105,6 +105,11 @@ jvm_generate_load(gen_proc_t * p, gen_var_t * src) gen_error("jvm_generate_load: unknow storage type %i", src -> storage); break; } + + if(src -> typecheck) + { + jvm_generate(p, 1, 1, "checkcast %s", src -> forcetype -> full_name); + } } void @@ -623,7 +628,7 @@ jvm_generate_staticlinks(oberon_object_t * proc) p = proc -> gen_proc; - jvm_generate_staticlinks_recursive(p, proc -> parent, p -> level); + jvm_generate_staticlinks_recursive(p, proc -> parent, p -> level - 1); } static void @@ -655,10 +660,11 @@ jvm_create_static_links(oberon_object_t * proc) size_t sz = sizeof(*p -> reg_frame) * max_frames; p -> max_frames = max_frames; p -> reg_frame = GC_MALLOC(sz); - memset(p -> reg_frame, 0, sz); + memset(p -> reg_frame, 255, sz); p -> level = max_frames - 1; - jvm_create_staticlinks_recursive(p, proc -> parent, p -> level); + + jvm_create_staticlinks_recursive(p, proc -> parent, p -> level - 1); } static void