DEADSOFTWARE

JVM: Добавлены фреймы (без передачи их локальным функциям)
[dsw-obn.git] / src / backends / jvm / generator-jvm.h
index 242aa70b10f8f2b17b21926b06de0e9192b7021c..6786cf44dc05d467128d15ff2c8efb018bcc9e0d 100644 (file)
@@ -28,17 +28,32 @@ struct gen_class
 enum gen_storage
 {
        JVM_STORAGE_UNKNOWN,
+       /* Обыкновенные Java-переменные */
        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
 {
+       char * full_name;
        int label_id;
+       gen_var_t * frame_v;
+       gen_type_t * frame_t;
        struct gen_register_file * rf;
        struct gen_stack * stack;
        struct gen_class * class;
@@ -61,7 +76,11 @@ struct gen_var_t
        enum gen_storage storage;
        gen_type_t * type;
        int reg;
+
+       char * name;
        char * full_name;
+       gen_proc_t * p;
+       struct gen_class * class;
 };
 
 struct gen_context_t