X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fbackends%2Fjvm%2Fgenerator-jvm.h;h=242aa70b10f8f2b17b21926b06de0e9192b7021c;hb=55d9ee92b95dd306ac80fb643ed21d3b733395d7;hp=01c29ee481785830c6e0e0999be79b179f63f44c;hpb=33dd153448f426558fede7a951be657622163e76;p=dsw-obn.git diff --git a/src/backends/jvm/generator-jvm.h b/src/backends/jvm/generator-jvm.h index 01c29ee..242aa70 100644 --- a/src/backends/jvm/generator-jvm.h +++ b/src/backends/jvm/generator-jvm.h @@ -1,6 +1,7 @@ #define MAX_REGISTERS 256 -struct gen_register_file { +struct gen_register_file +{ struct { bool used; @@ -8,38 +9,73 @@ struct gen_register_file { } reg[MAX_REGISTERS]; int num_used; int max_used; - struct gen_register_file * up; }; +struct gen_stack +{ + int pointer; + int max_pointer; +}; + +struct gen_class +{ + char * full_name; + FILE * fp; + gen_proc_t * p; + struct gen_class * base; +}; + +enum gen_storage +{ + JVM_STORAGE_UNKNOWN, + JVM_STORAGE_REGISTER, + JVM_STORAGE_STATIC, + JVM_STORAGE_FIELD, + JVM_STORAGE_LOCAL, + JVM_STORAGE_VARPTR +}; + + struct gen_proc_t { + int label_id; struct gen_register_file * rf; + struct gen_stack * stack; + struct gen_class * class; }; struct gen_type_t { int rec_id; - FILE * fp; + struct gen_class * class; + + bool wide; + char prefix; + char postfix; + char * desc; + int cell_size; }; struct gen_var_t { + enum gen_storage storage; + gen_type_t * type; int reg; -}; - -struct gen_block_t -{ - + char * full_name; }; struct gen_context_t { - gen_module_t * m; - struct gen_register_file * rf; + gen_module_t * current_m; }; struct gen_module_t { + struct gen_class * class; int rec_id; - FILE * fp; +}; + +struct gen_label_t +{ + int id; };