case JVM_STORAGE_REGISTER:
case JVM_STORAGE_PARAM:
case JVM_STORAGE_PARAM_VAR:
+ case JVM_STORAGE_FRAME:
+ 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);
break;
case JVM_STORAGE_REGISTER_VAR:
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);
break;
case JVM_STORAGE_FIELD_VAR:
fprintf(v -> class -> fp, ".field public %s [%s\n\n", name, desc);
break;
- case JVM_STORAGE_FRAME:
- case JVM_STORAGE_FRAME_VAR:
- case JVM_STORAGE_FRAME_PARAM:
- case JVM_STORAGE_FRAME_PARAM_VAR:
- case JVM_STORAGE_FRAME_PARAM_VARPTR:
- /* См. ниже jvm_generate_frame_class() */
- break;
default:
gen_error("jvm_generate_var: invalid storage %i", storage);
break;
case OBERON_CLASS_VAR_PARAM:
case OBERON_CLASS_PARAM:
case OBERON_CLASS_VAR:
+ jvm_generate_var(v);
jvm_generate_var_initialization(p, v);
break;
case OBERON_CLASS_PROC:
jvm_generate_procedure_frame(proc);
- /* Создание парамеров и переменных */
+ /* Создание паÑ\80амеÑ\82Ñ\80ов и пеÑ\80еменнÑ\8bÑ\85 */
var = proc -> scope -> list -> next;
while(var)
{
oberon_object_t * field = type -> decl;
for(int i = 0; i < num_fields; i++)
{
- oberon_initialize_object(ctx, field);
+ //oberon_initialize_object(ctx, field);
+ oberon_initialize_type(ctx, field -> type);
field = field -> next;
- }
+ }
oberon_generator_init_type(ctx, type);
}