DEADSOFTWARE

JVM: Реализованы VAR-параметры
[dsw-obn.git] / src / backends / jvm / generator-jvm.h
index 93575198278151531a4ac860f23c4ddb746df43b..242aa70b10f8f2b17b21926b06de0e9192b7021c 100644 (file)
@@ -1,41 +1,81 @@
 #define MAX_REGISTERS 256
 
-struct gen_register_file {
+struct gen_register_file
+{
        struct
        {
                bool used;
+               bool wide;
        } reg[MAX_REGISTERS];
+       int num_used;
        int max_used;
 };
 
-struct gen_proc_t
+struct gen_stack
 {
-
+       int pointer;
+       int max_pointer;
 };
 
-struct gen_type_t
+struct gen_class
 {
-       int rec_id;
+       char * full_name;
        FILE * fp;
+       gen_proc_t * p;
+       struct gen_class * base;
 };
 
-struct gen_var_t
+enum gen_storage
 {
-       int reg;
+       JVM_STORAGE_UNKNOWN,
+       JVM_STORAGE_REGISTER,
+       JVM_STORAGE_STATIC,
+       JVM_STORAGE_FIELD,
+       JVM_STORAGE_LOCAL,
+       JVM_STORAGE_VARPTR
 };
 
-struct gen_block_t
+
+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;
+       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;
+       char * full_name;
 };
 
 struct gen_context_t
 {
-       gen_module_t * m;
+       gen_module_t * current_m;
 };
 
 struct gen_module_t
 {
+       struct gen_class * class;
        int rec_id;
-       FILE * fp;
+};
+
+struct gen_label_t
+{
+       int id;
 };