* src/vm/jit/x86_64/asmpart.S (asm_abstractmethoderror): Keep stack aligned.
[cacao.git] / src / vm / jit / cfg.c
index ab74f93191916df27626a28c60fec8cb74cd87c4..63e3821c4b07f2cfd01c600f38b79f2564ce3f60 100644 (file)
 #include <assert.h>
 #include <stdint.h>
 
-#include "mm/memory.h"
+#include "mm/memory.hpp"
 
 #include "vm/global.h"
 
-#include "vm/jit/jit.h"
+#include "vm/jit/jit.hpp"
 #include "vm/jit/stack.h"
 
 
@@ -483,6 +483,7 @@ void cfg_add_root(jitdata *jd) {
        root->next = zero;
        root->nr = 0;
        root->type = BBTYPE_STD;
+       root->method = jd->m;
 
        if (zero->predecessorcount == 0) {
                zero->predecessors = DNEW(basicblock *);
@@ -500,6 +501,21 @@ void cfg_add_root(jitdata *jd) {
        }
 }
 
+void cfg_remove_root(jitdata *jd) {
+       basicblock *root, *zero, *it;
+
+       root = jd->basicblocks;
+       zero = root->next;
+
+       zero->predecessorcount -= 1;
+
+       jd->basicblocks = zero;
+
+       for (it = zero; it; it = it->next) {
+               it->nr -= 1;
+       }
+}
+
 #if defined(ENABLE_SSA)
 
 static void cfg_eliminate_edges_to_unreachable(jitdata *jd);