* src/vm/jit/jit.c: Moved to .cpp.
[cacao.git] / src / vm / jit / optimizing / ssa.c
index e7dcbe02ed1a92a94df13ccb17d842e2cf6dec88..d3c9b82864ecbdc6612672eb9fbd03bf0821f310 100644 (file)
@@ -35,7 +35,7 @@
 
 #include "vm/builtin.h"
 
-#include "vm/jit/jit.h" /* icmd_table */
+#include "vm/jit/jit.hpp" /* icmd_table */
 
 #include "vm/jit/ir/bytecode.h"
 
 #include "vm/jit/optimizing/ssa_rename.h"
 #include "vm/jit/optimizing/ssa_phi.h"
 
+#include "vm/jit/python.h"
+
 #if defined(SSA_DEBUG_VERBOSE)
-#include "vmcore/options.h"   /* compileverbose */
+#include "vm/options.h"   /* compileverbose */
 #endif
 
 /* function prototypes */
@@ -99,6 +101,8 @@ page 441 Algorithm 19.6. Inserting phi-functions:
            W <- W join {Y}
 
 ******************************************************************************/
+void xssa(jitdata *jd);
+void yssa(jitdata *jd);
 void ssa(jitdata *jd) {
        struct dominatordata *dd;
        lsradata *ls;
@@ -113,6 +117,25 @@ void ssa(jitdata *jd) {
        }
 #endif
 
+       cfg_add_root(jd);
+       cfg_add_exceptional_edges(jd);
+       /*pythonpass_run(jd, "foo", "cfg_print");*/
+       /*dominator_tree_validate(jd, dd);*/
+       /*pythonpass_run(jd, "ssa2", "main");*/
+       /*pythonpass_run(jd, "alt_ssa", "main");*/
+       /*pythonpass_run(jd, "foo", "before");*/
+       
+       /*if (getenv("XSSA")) {
+               dominator_tree_build(jd);
+               dominance_frontier_build(jd);
+               xssa(jd);
+       } else */{
+               yssa(jd);
+       }
+       /*pythonpass_run(jd, "foo", "after");*/
+       cfg_remove_root(jd);
+       return;
+
        ls = jd->ls;
 
     ssa_init(jd);
@@ -200,7 +223,7 @@ void ssa(jitdata *jd) {
                                                        if ((in[in_d] != out[out_d]) || 
                                                        (VAR(in[in_d])->flags != VAR(out[out_d])->flags)) {
                                                                printf("Method: %s %s\n",
-                                                                          m->class->name->text, m->name->text);
+                                                                          m->clazz->name->text, m->name->text);
                                                                        printf("Error: Stack Varnum Mismatch BBin %3i BBout %3i Stackdepth %3i\n", i, pred, in_d);
                                                                if (compileverbose)
                                                                        printf("Error: Stack Varnum Mismatch BBin %3i BBout %3i Stackdepth %3i\n", i, pred, in_d);
@@ -271,13 +294,13 @@ void ssa_init(jitdata *jd) {
 #if defined(SSA_DEBUG_CHECK) || defined(SSA_DEBUG_VERBOSE)
 # if defined(SSA_DEBUG_VERBOSE)
        if (compileverbose) {
-               printf("%s %s ",m->class->name->text, m->name->text);
+               printf("%s %s ",m->clazz->name->text, m->name->text);
                if (code_is_leafmethod(jd->code))
                        printf("**Leafmethod**");
                printf("\n");
        }
 # endif
-       if (strcmp(m->class->name->text,"spec/benchmarks/_213_javac/Parser")==0)
+       if (strcmp(m->clazz->name->text,"spec/benchmarks/_213_javac/Parser")==0)
                if (strcmp(m->name->text,"parseTerm")==0)
 # if defined(SSA_DEBUG_VERBOSE)
                        if (compileverbose) 
@@ -822,7 +845,7 @@ void dead_code_elimination(jitdata *jd, graphdata *gd) {
 #ifdef SSA_DEBUG_VERBOSE
                                                if (compileverbose)
                                                        printf("dce: %s %s:at BB %3i II %3i NOP-<%s\n",
-                                                                  m->class->name->text, m->name->text, 
+                                                                  m->clazz->name->text, m->name->text, 
                                                                   lt->def->b_index, lt->def->iindex, 
                                                                   icmd_table[iptr->opc].name);
 #endif