index 242aa70b10f8f2b17b21926b06de0e9192b7021c..52d59fa0e76eda02d804dffbcf797746dc492239 100644 (file)
FILE * fp;
gen_proc_t * p;
struct gen_class * base;
FILE * fp;
gen_proc_t * p;
struct gen_class * base;
+ const char * dir;
};
enum gen_storage
{
JVM_STORAGE_UNKNOWN,
};
enum gen_storage
{
JVM_STORAGE_UNKNOWN,
+ /* Обыкновенные Java-переменные */
JVM_STORAGE_REGISTER,
JVM_STORAGE_STATIC,
JVM_STORAGE_FIELD,
JVM_STORAGE_REGISTER,
JVM_STORAGE_STATIC,
JVM_STORAGE_FIELD,
- JVM_STORAGE_LOCAL,
- JVM_STORAGE_VARPTR
+ JVM_STORAGE_PARAM,
+ /* Переменные на которые можно делать указатели без кеширования */
+ JVM_STORAGE_REGISTER_VAR,
+ JVM_STORAGE_STATIC_VAR,
+ JVM_STORAGE_FIELD_VAR,
+ JVM_STORAGE_PARAM_VAR,
+ JVM_STORAGE_PARAM_VARPTR,
+ /* Локальные переменные доступные локальным функциям */
+ JVM_STORAGE_FRAME,
+ JVM_STORAGE_FRAME_VAR,
+ JVM_STORAGE_FRAME_PARAM,
+ JVM_STORAGE_FRAME_PARAM_VAR,
+ JVM_STORAGE_FRAME_PARAM_VARPTR
};
struct gen_proc_t
{
};
struct gen_proc_t
{
+ char * full_name;
int label_id;
struct gen_register_file * rf;
struct gen_stack * stack;
struct gen_class * class;
int label_id;
struct gen_register_file * rf;
struct gen_stack * stack;
struct gen_class * class;
+
+ char ret_prefix;
+
+ int level;
+ int max_frames;
+ int * reg_frame;
+ gen_var_t * frame_v;
};
struct gen_type_t
};
struct gen_type_t
bool wide;
char prefix;
char postfix;
bool wide;
char prefix;
char postfix;
+ char * full_name;
char * desc;
int cell_size;
};
char * desc;
int cell_size;
};
enum gen_storage storage;
gen_type_t * type;
int reg;
enum gen_storage storage;
gen_type_t * type;
int reg;
+ int level;
+
+ bool typecheck;
+ gen_type_t * forcetype;
+
+ char * name;
char * full_name;
char * full_name;
+ gen_proc_t * p;
+ struct gen_class * class;
};
struct gen_context_t
{
gen_module_t * current_m;
};
struct gen_context_t
{
gen_module_t * current_m;
+ const char * dir;
};
struct gen_module_t
{
struct gen_class * class;
int rec_id;
};
struct gen_module_t
{
struct gen_class * class;
int rec_id;
+ int line;
};
struct gen_label_t
};
struct gen_label_t