X-Git-Url: http://deadsoftware.ru/gitweb?p=dsw-obn.git;a=blobdiff_plain;f=src%2Fbackends%2Fjvm%2Fgenerator-jvm-abi.c;h=2889ae3c718437b3220ae308ba0e446a9fec55bc;hp=1d634a5ea0ddfcbaad19f707f4521202389ebec6;hb=023ef0d8349acdfe751bba1b50749361682f72ff;hpb=9531d399c60190a8daf625dd99f9c141753bba5e diff --git a/src/backends/jvm/generator-jvm-abi.c b/src/backends/jvm/generator-jvm-abi.c index 1d634a5..2889ae3 100644 --- a/src/backends/jvm/generator-jvm-abi.c +++ b/src/backends/jvm/generator-jvm-abi.c @@ -261,27 +261,27 @@ jvm_generate_var(gen_var_t * v) case JVM_STORAGE_FRAME_VAR: case JVM_STORAGE_FRAME_PARAM: case JVM_STORAGE_FRAME_PARAM_VAR: - jvm_generate(p, 0, 0, ".var %i is %s %s from start to end", reg, name, desc); + jvm_generate(p, 0, 0, ".var %i is '%s' %s from start to end", reg, name, desc); break; case JVM_STORAGE_REGISTER_VAR: - jvm_generate(p, 0, 0, ".var %i is %s [%s from start to end", reg, name, desc); + jvm_generate(p, 0, 0, ".var %i is '%s' [%s from start to end", reg, name, desc); break; case JVM_STORAGE_PARAM_VARPTR: case JVM_STORAGE_FRAME_PARAM_VARPTR: - jvm_generate(p, 0, 0, ".var %i is %s [%s from start to end", reg, name, desc); - jvm_generate(p, 0, 0, ".var %i is %s$offset I from start to end", reg + 1, name); + jvm_generate(p, 0, 0, ".var %i is '%s' [%s from start to end", reg, name, desc); + jvm_generate(p, 0, 0, ".var %i is '%s$offset' I from start to end", reg + 1, name); break; case JVM_STORAGE_STATIC: - fprintf(v -> class -> fp, ".field public static %s %s\n\n", name, desc); + fprintf(v -> class -> fp, ".field public static '%s' %s\n\n", name, desc); break; case JVM_STORAGE_STATIC_VAR: - fprintf(v -> class -> fp, ".field public static %s [%s\n\n", name, desc); + fprintf(v -> class -> fp, ".field public static '%s' [%s\n\n", name, desc); break; case JVM_STORAGE_FIELD: - fprintf(v -> class -> fp, ".field public %s %s\n\n", name, desc); + fprintf(v -> class -> fp, ".field public '%s' %s\n\n", name, desc); break; case JVM_STORAGE_FIELD_VAR: - fprintf(v -> class -> fp, ".field public %s [%s\n\n", name, desc); + fprintf(v -> class -> fp, ".field public '%s' [%s\n\n", name, desc); break; default: gen_error("jvm_generate_var: invalid storage %i", storage); @@ -417,19 +417,19 @@ jvm_generate_frame_class(oberon_object_t * proc) || v -> storage == JVM_STORAGE_FRAME_PARAM) { fprintf(fp, "; LEVEL %i\n", v -> level); - fprintf(fp, ".field public %s %s\n\n", v -> name, v -> type -> desc); + fprintf(fp, ".field public '%s' %s\n\n", v -> name, v -> type -> desc); } else if(v -> storage == JVM_STORAGE_FRAME_VAR || v -> storage == JVM_STORAGE_FRAME_PARAM_VAR) { fprintf(fp, "; LEVEL %i\n", v -> level); - fprintf(fp, ".field public %s [%s\n\n", v -> name, v -> type -> desc); + fprintf(fp, ".field public '%s' [%s\n\n", v -> name, v -> type -> desc); } else if(v -> storage == JVM_STORAGE_FRAME_PARAM_VARPTR) { fprintf(fp, "; LEVEL %i\n", v -> level); - fprintf(fp, ".field public %s [%s\n", v -> name, v -> type -> desc); - fprintf(fp, ".field public %s$offset I\n\n", v -> name); + fprintf(fp, ".field public '%s' [%s\n", v -> name, v -> type -> desc); + fprintf(fp, ".field public '%s$offset' I\n\n", v -> name); } } var = var -> next; @@ -493,7 +493,6 @@ jvm_generate_procedure_frame(oberon_object_t * proc) v = jvm_create_function_var(p, JVM_STORAGE_REGISTER, "$FP$", t); p -> frame_v = v; - printf("jvm_generate_procedure_frame: %p level %i\n", p -> reg_frame, p -> level); p -> reg_frame[p -> level] = v -> reg; } @@ -653,9 +652,10 @@ jvm_create_static_links(oberon_object_t * proc) prc = prc -> parent; } + size_t sz = sizeof(*p -> reg_frame) * max_frames; p -> max_frames = max_frames; - p -> reg_frame = GC_MALLOC(sizeof *p -> reg_frame); - memset(p -> reg_frame, 0, max_frames * sizeof *p -> reg_frame); + p -> reg_frame = GC_MALLOC(sz); + memset(p -> reg_frame, 0, sz); p -> level = max_frames - 1; jvm_create_staticlinks_recursive(p, proc -> parent, p -> level);