use nitg to bootstrap; drop bootstrap of nitc
[nit.git] / c_src / analysis___allocate_iregister_slots._sep.c
diff --git a/c_src/analysis___allocate_iregister_slots._sep.c b/c_src/analysis___allocate_iregister_slots._sep.c
deleted file mode 100644 (file)
index b16b028..0000000
+++ /dev/null
@@ -1,1404 +0,0 @@
-/* This C file is generated by NIT to compile module analysis___allocate_iregister_slots. */
-#include "analysis___allocate_iregister_slots._sep.h"
-static const char LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality[] = "allocate_iregister_slots::IRegisterSlotAllocationVisitor::mark_locality";
-void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 36;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* analysis/allocate_iregister_slots.nit:39 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegister____is_local(fra.me.REG[1])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_is_local", LOCATE_analysis___allocate_iregister_slots, 39);
-  }
-  REGB0 = ATTR_analysis___allocate_iregister_slots___IRegister____is_local(fra.me.REG[1]);
-  if (UNTAG_Bool(REGB0)) {
-    fra.me.REG[2] = ATTR_analysis___allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[1]);
-    REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_current_ir", LOCATE_analysis___allocate_iregister_slots, 39);
-    }
-    fra.me.REG[3] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0]);
-    REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[2]));
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        REGB0 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-        REGB0 = REGB1;
-      }
-    }
-    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  } else {
-    REGB1 = TAG_Bool(0);
-    REGB0 = REGB1;
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* analysis/allocate_iregister_slots.nit:40 */
-    fra.me.REG[3] = ATTR_analysis___allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[1]);
-    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        REGB0 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
-        REGB0 = REGB1;
-      }
-    }
-    if (UNTAG_Bool(REGB0)) {
-      /* analysis/allocate_iregister_slots.nit:41 */
-      REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0])!=NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Uninitialized attribute %s", "_current_ir", LOCATE_analysis___allocate_iregister_slots, 41);
-      }
-      fra.me.REG[0] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0]);
-      ATTR_analysis___allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[1]) = fra.me.REG[0];
-    } else {
-      /* analysis/allocate_iregister_slots.nit:43 */
-      REGB0 = TAG_Bool(0);
-      ATTR_analysis___allocate_iregister_slots___IRegister____is_local(fra.me.REG[1]) = REGB0;
-    }
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_read[] = "allocate_iregister_slots::IRegisterSlotAllocationVisitor::(icode_tools::ICodeVisitor::visit_iregister_read)";
-void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_read(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 48;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_read;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  /* analysis/allocate_iregister_slots.nit:52 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_pass", LOCATE_analysis___allocate_iregister_slots, 52);
-  }
-  REGB0 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0]);
-  /* analysis/allocate_iregister_slots.nit:53 */
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    /* ../lib/standard/kernel.nit:237 */
-    REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* analysis/allocate_iregister_slots.nit:53 */
-    REGB2 = REGB1;
-  }
-  if (UNTAG_Bool(REGB2)) {
-    /* analysis/allocate_iregister_slots.nit:54 */
-    CALL_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-    /* analysis/allocate_iregister_slots.nit:55 */
-    ATTR_analysis___allocate_iregister_slots___IRegister____last(fra.me.REG[2]) = fra.me.REG[1];
-    /* analysis/allocate_iregister_slots.nit:56 */
-    ATTR_analysis___allocate_iregister_slots___IRegister____slot_index(fra.me.REG[2]) = NIT_NULL;
-  } else {
-    /* analysis/allocate_iregister_slots.nit:57 */
-    REGB2 = TAG_Int(1);
-    REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      /* ../lib/standard/kernel.nit:237 */
-      REGB2 = TAG_Bool((REGB0)==(REGB2));
-      /* analysis/allocate_iregister_slots.nit:57 */
-      REGB1 = REGB2;
-    }
-    if (UNTAG_Bool(REGB1)) {
-      fra.me.REG[3] = ATTR_analysis___allocate_iregister_slots___IRegister____last(fra.me.REG[2]);
-      REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
-      if (UNTAG_Bool(REGB1)) {
-      } else {
-        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-          REGB2 = TAG_Bool(0);
-          REGB1 = REGB2;
-        } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB1 = REGB2;
-        }
-      }
-    } else {
-      REGB2 = TAG_Bool(0);
-      REGB1 = REGB2;
-    }
-    if (UNTAG_Bool(REGB1)) {
-      /* analysis/allocate_iregister_slots.nit:58 */
-      CALL_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-    }
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_write[] = "allocate_iregister_slots::IRegisterSlotAllocationVisitor::(icode_tools::ICodeVisitor::visit_iregister_write)";
-void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_write(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 62;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_write;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  /* analysis/allocate_iregister_slots.nit:64 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_pass", LOCATE_analysis___allocate_iregister_slots, 64);
-  }
-  REGB0 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0]);
-  /* analysis/allocate_iregister_slots.nit:65 */
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    /* ../lib/standard/kernel.nit:237 */
-    REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* analysis/allocate_iregister_slots.nit:65 */
-    REGB2 = REGB1;
-  }
-  if (UNTAG_Bool(REGB2)) {
-    /* analysis/allocate_iregister_slots.nit:66 */
-    CALL_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-    /* analysis/allocate_iregister_slots.nit:67 */
-    ATTR_analysis___allocate_iregister_slots___IRegister____slot_index(fra.me.REG[2]) = NIT_NULL;
-    /* analysis/allocate_iregister_slots.nit:69 */
-    fra.me.REG[3] = ATTR_analysis___allocate_iregister_slots___IRegister____first(fra.me.REG[2]);
-    REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        REGB2 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
-        REGB2 = REGB1;
-      }
-    }
-    if (UNTAG_Bool(REGB2)) {
-      ATTR_analysis___allocate_iregister_slots___IRegister____first(fra.me.REG[2]) = fra.me.REG[1];
-    }
-    /* analysis/allocate_iregister_slots.nit:71 */
-    fra.me.REG[3] = ATTR_analysis___allocate_iregister_slots___IRegister____last(fra.me.REG[2]);
-    REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        REGB2 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
-        REGB2 = REGB1;
-      }
-    }
-    REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
-    if (UNTAG_Bool(REGB2)) {
-      ATTR_analysis___allocate_iregister_slots___IRegister____last(fra.me.REG[2]) = fra.me.REG[1];
-    }
-  } else {
-    /* analysis/allocate_iregister_slots.nit:72 */
-    REGB2 = TAG_Int(1);
-    REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      /* ../lib/standard/kernel.nit:237 */
-      REGB2 = TAG_Bool((REGB0)==(REGB2));
-      /* analysis/allocate_iregister_slots.nit:72 */
-      REGB1 = REGB2;
-    }
-    if (UNTAG_Bool(REGB1)) {
-      /* analysis/allocate_iregister_slots.nit:73 */
-      fra.me.REG[3] = ATTR_analysis___allocate_iregister_slots___IRegister____first(fra.me.REG[2]);
-      REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
-      if (UNTAG_Bool(REGB1)) {
-      } else {
-        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-          REGB2 = TAG_Bool(0);
-          REGB1 = REGB2;
-        } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB1 = REGB2;
-        }
-      }
-      if (UNTAG_Bool(REGB1)) {
-        /* analysis/allocate_iregister_slots.nit:74 */
-        CALL_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-      } else {
-        /* analysis/allocate_iregister_slots.nit:75 */
-        fra.me.REG[3] = ATTR_analysis___allocate_iregister_slots___IRegister____last(fra.me.REG[2]);
-        REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
-        if (UNTAG_Bool(REGB1)) {
-        } else {
-          REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-          if (UNTAG_Bool(REGB2)) {
-            REGB2 = TAG_Bool(0);
-            REGB1 = REGB2;
-          } else {
-            REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-            REGB1 = REGB2;
-          }
-        }
-        if (UNTAG_Bool(REGB1)) {
-          /* analysis/allocate_iregister_slots.nit:76 */
-          CALL_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-        }
-      }
-    }
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free[] = "allocate_iregister_slots::IRegisterSlotAllocationVisitor::deferred_free";
-void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 94;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* analysis/allocate_iregister_slots.nit:98 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred_list(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_deferred_list", LOCATE_analysis___allocate_iregister_slots, 98);
-  }
-  fra.me.REG[1] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred_list(fra.me.REG[0]);
-  fra.me.REG[1] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[1])(fra.me.REG[1]);
-  /* analysis/allocate_iregister_slots.nit:99 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_current_rank", LOCATE_analysis___allocate_iregister_slots, 99);
-  }
-  REGB0 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0]);
-  /* analysis/allocate_iregister_slots.nit:100 */
-  while(1) {
-    REGB1 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[1])(fra.me.REG[1]);
-    if (UNTAG_Bool(REGB1)) {
-      /* analysis/allocate_iregister_slots.nit:101 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
-      /* analysis/allocate_iregister_slots.nit:102 */
-      REGB1 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegister____born_rank(fra.me.REG[2])!=NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-      } else {
-        nit_abort("Uninitialized attribute %s", "_born_rank", LOCATE_analysis___allocate_iregister_slots, 102);
-      }
-      REGB1 = ATTR_analysis___allocate_iregister_slots___IRegister____born_rank(fra.me.REG[2]);
-      REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-      }
-      /* ../lib/standard/kernel.nit:243 */
-      REGB1 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-      /* analysis/allocate_iregister_slots.nit:102 */
-      if (UNTAG_Bool(REGB1)) {
-        /* analysis/allocate_iregister_slots.nit:103 */
-        CALL_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-        /* analysis/allocate_iregister_slots.nit:104 */
-        CALL_standard___collection___list___ListIterator___delete(fra.me.REG[1])(fra.me.REG[1]);
-      }
-      /* analysis/allocate_iregister_slots.nit:106 */
-      CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[1])(fra.me.REG[1]);
-    } else {
-      /* analysis/allocate_iregister_slots.nit:100 */
-      goto label1;
-    }
-  }
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode[] = "allocate_iregister_slots::IRegisterSlotAllocationVisitor::(icode_tools::ICodeVisitor::visit_icode)";
-void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 110;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* analysis/allocate_iregister_slots.nit:110 */
-  fra.me.REG[2] = fra.me.REG[0];
-  fra.me.REG[3] = fra.me.REG[1];
-  /* analysis/allocate_iregister_slots.nit:112 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[2])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_pass", LOCATE_analysis___allocate_iregister_slots, 112);
-  }
-  REGB0 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[2]);
-  REGB1 = TAG_Int(1);
-  REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    /* ../lib/standard/kernel.nit:237 */
-    REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* analysis/allocate_iregister_slots.nit:112 */
-    REGB2 = REGB1;
-  }
-  if (UNTAG_Bool(REGB2)) {
-    REGB2 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ILoop, ID_icode___icode_base___ILoop)) /*cast ILoop*/;
-  } else {
-    REGB1 = TAG_Bool(0);
-    REGB2 = REGB1;
-  }
-  if (UNTAG_Bool(REGB2)) {
-    /* analysis/allocate_iregister_slots.nit:113 */
-    REGB2 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2])!=NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_current_rank", LOCATE_analysis___allocate_iregister_slots, 113);
-    }
-    REGB2 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2]);
-    /* analysis/allocate_iregister_slots.nit:114 */
-    REGB1 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]);
-    REGB0 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:245 */
-    REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-    /* analysis/allocate_iregister_slots.nit:114 */
-    ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]) = REGB0;
-    /* analysis/allocate_iregister_slots.nit:115 */
-    REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2])!=NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_max_rank", LOCATE_analysis___allocate_iregister_slots, 115);
-    }
-    REGB0 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]);
-    ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2]) = REGB0;
-    /* analysis/allocate_iregister_slots.nit:116 */
-    CALL_SUPER_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    /* analysis/allocate_iregister_slots.nit:117 */
-    ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2]) = REGB2;
-    /* analysis/allocate_iregister_slots.nit:118 */
-    CALL_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free(fra.me.REG[2])(fra.me.REG[2]);
-  } else {
-    /* analysis/allocate_iregister_slots.nit:120 */
-    CALL_SUPER_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs[] = "allocate_iregister_slots::IRegisterSlotAllocationVisitor::(icode_tools::ICodeVisitor::visit_closure_defs)";
-void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 124;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* analysis/allocate_iregister_slots.nit:124 */
-  fra.me.REG[2] = fra.me.REG[0];
-  /* analysis/allocate_iregister_slots.nit:126 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[2])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_pass", LOCATE_analysis___allocate_iregister_slots, 126);
-  }
-  REGB0 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[2]);
-  REGB1 = TAG_Int(1);
-  REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    /* ../lib/standard/kernel.nit:237 */
-    REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* analysis/allocate_iregister_slots.nit:126 */
-    REGB2 = REGB1;
-  }
-  if (UNTAG_Bool(REGB2)) {
-    /* analysis/allocate_iregister_slots.nit:127 */
-    REGB2 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2])!=NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_current_rank", LOCATE_analysis___allocate_iregister_slots, 127);
-    }
-    REGB2 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2]);
-    /* analysis/allocate_iregister_slots.nit:128 */
-    REGB1 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]);
-    REGB0 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:245 */
-    REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-    /* analysis/allocate_iregister_slots.nit:128 */
-    ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]) = REGB0;
-    /* analysis/allocate_iregister_slots.nit:129 */
-    REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2])!=NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_max_rank", LOCATE_analysis___allocate_iregister_slots, 129);
-    }
-    REGB0 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]);
-    ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2]) = REGB0;
-    /* analysis/allocate_iregister_slots.nit:130 */
-    CALL_SUPER_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    /* analysis/allocate_iregister_slots.nit:131 */
-    ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2]) = REGB2;
-    /* analysis/allocate_iregister_slots.nit:132 */
-    CALL_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free(fra.me.REG[2])(fra.me.REG[2]);
-  } else {
-    /* analysis/allocate_iregister_slots.nit:134 */
-    CALL_SUPER_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine[] = "allocate_iregister_slots::IRegisterSlotAllocationVisitor::(icode_tools::ICodeVisitor::visit_iroutine)";
-void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 142;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 8;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[4] = NIT_NULL;
-  fra.me.REG[5] = NIT_NULL;
-  fra.me.REG[6] = NIT_NULL;
-  fra.me.REG[7] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* analysis/allocate_iregister_slots.nit:142 */
-  fra.me.REG[2] = fra.me.REG[0];
-  fra.me.REG[3] = fra.me.REG[1];
-  /* analysis/allocate_iregister_slots.nit:144 */
-  fra.me.REG[4] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[3])(fra.me.REG[3]);
-  /* analysis/allocate_iregister_slots.nit:145 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[2])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_pass", LOCATE_analysis___allocate_iregister_slots, 145);
-  }
-  REGB0 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[2]);
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    /* ../lib/standard/kernel.nit:237 */
-    REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* analysis/allocate_iregister_slots.nit:145 */
-    REGB2 = REGB1;
-  }
-  if (UNTAG_Bool(REGB2)) {
-    /* analysis/allocate_iregister_slots.nit:146 */
-    REGB2 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[2])!=NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_current_ir", LOCATE_analysis___allocate_iregister_slots, 146);
-    }
-    fra.me.REG[5] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[2]);
-    /* analysis/allocate_iregister_slots.nit:147 */
-    ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[2]) = fra.me.REG[3];
-    /* analysis/allocate_iregister_slots.nit:148 */
-    fra.me.REG[6] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
-    CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[6])(fra.me.REG[6], (&(fra.me)), ((fun_t)OC_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine_1));
-    /* analysis/allocate_iregister_slots.nit:152 */
-    CALL_SUPER_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    /* analysis/allocate_iregister_slots.nit:153 */
-    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        REGB2 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
-        REGB2 = REGB1;
-      }
-    }
-    REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
-    if (UNTAG_Bool(REGB2)) {
-      /* analysis/allocate_iregister_slots.nit:154 */
-      ATTR_analysis___allocate_iregister_slots___IRegister____last(fra.me.REG[4]) = fra.me.REG[2];
-      /* analysis/allocate_iregister_slots.nit:155 */
-      CALL_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-    }
-    /* analysis/allocate_iregister_slots.nit:157 */
-    ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[2]) = fra.me.REG[5];
-  } else {
-    /* analysis/allocate_iregister_slots.nit:159 */
-    REGB2 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2])!=NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_tag_slots", LOCATE_analysis___allocate_iregister_slots, 159);
-    }
-    fra.me.REG[5] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2]);
-    /* analysis/allocate_iregister_slots.nit:160 */
-    fra.me.REG[6] = NEW_SlotGroup_analysis___allocate_iregister_slots___SlotGroup___init();
-    ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2]) = fra.me.REG[6];
-    /* analysis/allocate_iregister_slots.nit:161 */
-    REGB2 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2])!=NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_std_slots", LOCATE_analysis___allocate_iregister_slots, 161);
-    }
-    fra.me.REG[6] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2]);
-    /* analysis/allocate_iregister_slots.nit:162 */
-    REGB2 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IClosureDef, ID_icode___icode_base___IClosureDef)) /*cast IClosureDef*/;
-    if (UNTAG_Bool(REGB2)) {
-      /* analysis/allocate_iregister_slots.nit:163 */
-      fra.me.REG[7] = NEW_SlotGroup_analysis___allocate_iregister_slots___SlotGroup___init();
-      ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2]) = fra.me.REG[7];
-    }
-    /* analysis/allocate_iregister_slots.nit:165 */
-    fra.me.REG[7] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
-    CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[7])(fra.me.REG[7], (&(fra.me)), ((fun_t)OC_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine_2));
-    /* analysis/allocate_iregister_slots.nit:168 */
-    CALL_SUPER_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    /* analysis/allocate_iregister_slots.nit:169 */
-    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        REGB2 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
-        REGB2 = REGB1;
-      }
-    }
-    REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
-    if (UNTAG_Bool(REGB2)) {
-      CALL_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-    }
-    /* analysis/allocate_iregister_slots.nit:170 */
-    REGB2 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2])!=NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_tag_slots", LOCATE_analysis___allocate_iregister_slots, 170);
-    }
-    fra.me.REG[4] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2]);
-    REGB2 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[4])!=NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_next_index", LOCATE_analysis___allocate_iregister_slots, 170);
-    }
-    REGB2 = ATTR_analysis___allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[4]);
-    ATTR_analysis___allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[3]) = REGB2;
-    /* analysis/allocate_iregister_slots.nit:171 */
-    ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2]) = fra.me.REG[5];
-    /* analysis/allocate_iregister_slots.nit:172 */
-    REGB2 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2])!=NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_std_slots", LOCATE_analysis___allocate_iregister_slots, 172);
-    }
-    fra.me.REG[5] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2]);
-    REGB2 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[5])!=NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_next_index", LOCATE_analysis___allocate_iregister_slots, 172);
-    }
-    REGB2 = ATTR_analysis___allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[5]);
-    ATTR_analysis___allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[3]) = REGB2;
-    /* analysis/allocate_iregister_slots.nit:173 */
-    ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2]) = fra.me.REG[6];
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
-    void OC_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
-      struct {struct stack_frame_t me;} fra;
-      fun_t CREG[1];
-      val_t tmp;
-      fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-      fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-      fra.me.line = 0;
-      fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine;
-      fra.me.has_broke = 0;
-      fra.me.REG_size = 1;
-      fra.me.nitni_local_ref_head = NULL;
-      fra.me.REG[0] = NIT_NULL;
-      fra.me.closure_ctx = closctx_param;
-      fra.me.closure_funs = CREG;
-      fra.me.REG[0] = p0;
-      CREG[0] = clos_fun0;
-      /* analysis/allocate_iregister_slots.nit:149 */
-      ATTR_analysis___allocate_iregister_slots___IRegister____first(fra.me.REG[0]) = closctx->REG[2];
-      /* analysis/allocate_iregister_slots.nit:150 */
-      CALL_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
-      stack_frame_head = fra.me.prev;
-      return;
-    }
-    void OC_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
-      struct {struct stack_frame_t me;} fra;
-      fun_t CREG[1];
-      val_t tmp;
-      fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-      fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-      fra.me.line = 0;
-      fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine;
-      fra.me.has_broke = 0;
-      fra.me.REG_size = 1;
-      fra.me.nitni_local_ref_head = NULL;
-      fra.me.REG[0] = NIT_NULL;
-      fra.me.closure_ctx = closctx_param;
-      fra.me.closure_funs = CREG;
-      fra.me.REG[0] = p0;
-      CREG[0] = clos_fun0;
-      /* analysis/allocate_iregister_slots.nit:166 */
-      CALL_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___register(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
-      stack_frame_head = fra.me.prev;
-      return;
-    }
-static const char LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___register[] = "allocate_iregister_slots::IRegisterSlotAllocationVisitor::register";
-void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___register(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 187;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___register;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* analysis/allocate_iregister_slots.nit:190 */
-  fra.me.REG[2] = ATTR_analysis___allocate_iregister_slots___IRegister____last(fra.me.REG[1]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
-  if (UNTAG_Bool(REGB0)) {
-    goto label1;
-  }
-  /* analysis/allocate_iregister_slots.nit:191 */
-  fra.me.REG[2] = ATTR_analysis___allocate_iregister_slots___IRegister____slot_index(fra.me.REG[1]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      /* ../lib/standard/kernel.nit:237 */
-      REGB1 = TAG_Bool((fra.me.REG[2])==(NIT_NULL));
-      /* analysis/allocate_iregister_slots.nit:191 */
-      REGB0 = REGB1;
-    }
-  }
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_analysis___allocate_iregister_slots, 191);
-  }
-  /* analysis/allocate_iregister_slots.nit:192 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_current_rank", LOCATE_analysis___allocate_iregister_slots, 192);
-  }
-  REGB0 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0]);
-  ATTR_analysis___allocate_iregister_slots___IRegister____born_rank(fra.me.REG[1]) = REGB0;
-  /* analysis/allocate_iregister_slots.nit:193 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegister____is_local(fra.me.REG[1])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_is_local", LOCATE_analysis___allocate_iregister_slots, 193);
-  }
-  REGB0 = ATTR_analysis___allocate_iregister_slots___IRegister____is_local(fra.me.REG[1]);
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    /* analysis/allocate_iregister_slots.nit:194 */
-    REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_global_slots", LOCATE_analysis___allocate_iregister_slots, 194);
-    }
-    fra.me.REG[2] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0]);
-    CALL_analysis___allocate_iregister_slots___SlotGroup___register(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  } else {
-    /* analysis/allocate_iregister_slots.nit:195 */
-    fra.me.REG[2] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[1])(fra.me.REG[1]);
-    REGB0 = CALL_primitive_info___MMType___is_tagged(fra.me.REG[2])(fra.me.REG[2]);
-    if (UNTAG_Bool(REGB0)) {
-      /* analysis/allocate_iregister_slots.nit:196 */
-      REGB0 = TAG_Bool(1);
-      ATTR_analysis___allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[1]) = REGB0;
-      /* analysis/allocate_iregister_slots.nit:197 */
-      REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0])!=NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Uninitialized attribute %s", "_tag_slots", LOCATE_analysis___allocate_iregister_slots, 197);
-      }
-      fra.me.REG[2] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0]);
-      CALL_analysis___allocate_iregister_slots___SlotGroup___register(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-    } else {
-      /* analysis/allocate_iregister_slots.nit:199 */
-      REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[0])!=NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Uninitialized attribute %s", "_std_slots", LOCATE_analysis___allocate_iregister_slots, 199);
-      }
-      fra.me.REG[0] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[0]);
-      CALL_analysis___allocate_iregister_slots___SlotGroup___register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    }
-  }
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___free[] = "allocate_iregister_slots::IRegisterSlotAllocationVisitor::free";
-void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 203;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___free;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* analysis/allocate_iregister_slots.nit:207 */
-  fra.me.REG[2] = ATTR_analysis___allocate_iregister_slots___IRegister____slot_index(fra.me.REG[1]);
-  /* analysis/allocate_iregister_slots.nit:208 */
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      /* ../lib/standard/kernel.nit:237 */
-      REGB1 = TAG_Bool((fra.me.REG[2])==(NIT_NULL));
-      /* analysis/allocate_iregister_slots.nit:208 */
-      REGB0 = REGB1;
-    }
-  }
-  if (UNTAG_Bool(REGB0)) {
-    goto label1;
-  }
-  /* analysis/allocate_iregister_slots.nit:209 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegister____born_rank(fra.me.REG[1])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_born_rank", LOCATE_analysis___allocate_iregister_slots, 209);
-  }
-  REGB0 = ATTR_analysis___allocate_iregister_slots___IRegister____born_rank(fra.me.REG[1]);
-  REGB1 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_current_rank", LOCATE_analysis___allocate_iregister_slots, 209);
-  }
-  REGB1 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0]);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:242 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* analysis/allocate_iregister_slots.nit:209 */
-  if (UNTAG_Bool(REGB1)) {
-    /* analysis/allocate_iregister_slots.nit:210 */
-    REGB1 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred_list(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_deferred_list", LOCATE_analysis___allocate_iregister_slots, 210);
-    }
-    fra.me.REG[2] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred_list(fra.me.REG[0]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  } else {
-    /* analysis/allocate_iregister_slots.nit:211 */
-    fra.me.REG[2] = ATTR_analysis___allocate_iregister_slots___IRegister____last(fra.me.REG[1]);
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        REGB0 = TAG_Bool(0);
-        REGB1 = REGB0;
-      } else {
-        REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-        REGB1 = REGB0;
-      }
-    }
-    REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-    if (UNTAG_Bool(REGB1)) {
-      /* analysis/allocate_iregister_slots.nit:212 */
-      REGB1 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[1])!=NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-      } else {
-        nit_abort("Uninitialized attribute %s", "_in_tag_slots", LOCATE_analysis___allocate_iregister_slots, 212);
-      }
-      REGB1 = ATTR_analysis___allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[1]);
-      if (UNTAG_Bool(REGB1)) {
-        /* analysis/allocate_iregister_slots.nit:213 */
-        REGB1 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0])!=NIT_NULL);
-        if (UNTAG_Bool(REGB1)) {
-        } else {
-          nit_abort("Uninitialized attribute %s", "_tag_slots", LOCATE_analysis___allocate_iregister_slots, 213);
-        }
-        fra.me.REG[2] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0]);
-        CALL_analysis___allocate_iregister_slots___SlotGroup___free(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-      } else {
-        /* analysis/allocate_iregister_slots.nit:214 */
-        REGB1 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegister____is_local(fra.me.REG[1])!=NIT_NULL);
-        if (UNTAG_Bool(REGB1)) {
-        } else {
-          nit_abort("Uninitialized attribute %s", "_is_local", LOCATE_analysis___allocate_iregister_slots, 214);
-        }
-        REGB1 = ATTR_analysis___allocate_iregister_slots___IRegister____is_local(fra.me.REG[1]);
-        if (UNTAG_Bool(REGB1)) {
-          /* analysis/allocate_iregister_slots.nit:215 */
-          REGB1 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[0])!=NIT_NULL);
-          if (UNTAG_Bool(REGB1)) {
-          } else {
-            nit_abort("Uninitialized attribute %s", "_std_slots", LOCATE_analysis___allocate_iregister_slots, 215);
-          }
-          fra.me.REG[2] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[0]);
-          CALL_analysis___allocate_iregister_slots___SlotGroup___free(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-        } else {
-          /* analysis/allocate_iregister_slots.nit:217 */
-          REGB1 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0])!=NIT_NULL);
-          if (UNTAG_Bool(REGB1)) {
-          } else {
-            nit_abort("Uninitialized attribute %s", "_global_slots", LOCATE_analysis___allocate_iregister_slots, 217);
-          }
-          fra.me.REG[0] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0]);
-          CALL_analysis___allocate_iregister_slots___SlotGroup___free(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-        }
-      }
-      /* analysis/allocate_iregister_slots.nit:219 */
-      ATTR_analysis___allocate_iregister_slots___IRegister____last(fra.me.REG[1]) = NIT_NULL;
-    }
-  }
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___iroutine_slot_allocation[] = "allocate_iregister_slots::IRegisterSlotAllocationVisitor::iroutine_slot_allocation";
-void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___iroutine_slot_allocation(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 223;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___iroutine_slot_allocation;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* analysis/allocate_iregister_slots.nit:226 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_current_ir", LOCATE_analysis___allocate_iregister_slots, 226);
-  }
-  fra.me.REG[1] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0]);
-  /* analysis/allocate_iregister_slots.nit:227 */
-  CALL_icode___icode_tools___ICodeVisitor___visit_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* analysis/allocate_iregister_slots.nit:228 */
-  REGB0 = TAG_Int(1);
-  ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0]) = REGB0;
-  /* analysis/allocate_iregister_slots.nit:229 */
-  CALL_icode___icode_tools___ICodeVisitor___visit_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* analysis/allocate_iregister_slots.nit:230 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred_list(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_deferred_list", LOCATE_analysis___allocate_iregister_slots, 230);
-  }
-  fra.me.REG[0] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred_list(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_analysis___allocate_iregister_slots, 230);
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___init[] = "allocate_iregister_slots::IRegisterSlotAllocationVisitor::init";
-void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___init(val_t p0, val_t p1, int* init_table){
-  int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t tmp;
-  if (init_table[itpos0]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 233;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* analysis/allocate_iregister_slots.nit:233 */
-  fra.me.REG[2] = fra.me.REG[0];
-  CALL_icode___icode_tools___ICodeVisitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* analysis/allocate_iregister_slots.nit:235 */
-  ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[2]) = fra.me.REG[1];
-  /* analysis/allocate_iregister_slots.nit:236 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[2])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_global_slots", LOCATE_analysis___allocate_iregister_slots, 236);
-  }
-  fra.me.REG[1] = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[2]);
-  ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  init_table[itpos0] = 1;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___SlotGroup___register[] = "allocate_iregister_slots::SlotGroup::register";
-void analysis___allocate_iregister_slots___SlotGroup___register(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 248;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___SlotGroup___register;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* analysis/allocate_iregister_slots.nit:251 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___SlotGroup____free(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_free", LOCATE_analysis___allocate_iregister_slots, 251);
-  }
-  fra.me.REG[2] = ATTR_analysis___allocate_iregister_slots___SlotGroup____free(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
-  if (UNTAG_Bool(REGB0)) {
-    /* analysis/allocate_iregister_slots.nit:252 */
-    REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_next_index", LOCATE_analysis___allocate_iregister_slots, 252);
-    }
-    REGB0 = ATTR_analysis___allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0]);
-    ATTR_analysis___allocate_iregister_slots___IRegister____slot_index(fra.me.REG[1]) = REGB0;
-    /* analysis/allocate_iregister_slots.nit:253 */
-    REGB0 = ATTR_analysis___allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0]);
-    REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:245 */
-    REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-    /* analysis/allocate_iregister_slots.nit:253 */
-    ATTR_analysis___allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0]) = REGB1;
-  } else {
-    /* analysis/allocate_iregister_slots.nit:255 */
-    REGB1 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___SlotGroup____free(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_free", LOCATE_analysis___allocate_iregister_slots, 255);
-    }
-    fra.me.REG[0] = ATTR_analysis___allocate_iregister_slots___SlotGroup____free(fra.me.REG[0]);
-    fra.me.REG[0] = CALL_standard___collection___abstract_collection___Sequence___pop(fra.me.REG[0])(fra.me.REG[0]);
-    ATTR_analysis___allocate_iregister_slots___IRegister____slot_index(fra.me.REG[1]) = fra.me.REG[0];
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___SlotGroup___free[] = "allocate_iregister_slots::SlotGroup::free";
-void analysis___allocate_iregister_slots___SlotGroup___free(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 259;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___SlotGroup___free;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* analysis/allocate_iregister_slots.nit:259 */
-  fra.me.REG[2] = fra.me.REG[0];
-  /* analysis/allocate_iregister_slots.nit:262 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___SlotGroup____free(fra.me.REG[2])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_free", LOCATE_analysis___allocate_iregister_slots, 262);
-  }
-  fra.me.REG[2] = ATTR_analysis___allocate_iregister_slots___SlotGroup____free(fra.me.REG[2]);
-  fra.me.REG[1] = ATTR_analysis___allocate_iregister_slots___IRegister____slot_index(fra.me.REG[1]);
-  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_analysis___allocate_iregister_slots, 262);
-  }
-  CALL_standard___collection___abstract_collection___Sequence___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___SlotGroup___init[] = "allocate_iregister_slots::SlotGroup::init";
-void analysis___allocate_iregister_slots___SlotGroup___init(val_t p0, int* init_table){
-  int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_analysis___allocate_iregister_slots___SlotGroup].i;
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  if (init_table[itpos1]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 0;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___SlotGroup___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  fra.me.nitni_local_ref_head = NULL;
-  stack_frame_head = fra.me.prev;
-  init_table[itpos1] = 1;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRoutine___std_slots_nb[] = "allocate_iregister_slots::IRoutine::std_slots_nb";
-val_t analysis___allocate_iregister_slots___IRoutine___std_slots_nb(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 267;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRoutine___std_slots_nb;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* analysis/allocate_iregister_slots.nit:267 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_std_slots_nb", LOCATE_analysis___allocate_iregister_slots, 267);
-  }
-  REGB0 = ATTR_analysis___allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRoutine___tag_slots_nb[] = "allocate_iregister_slots::IRoutine::tag_slots_nb";
-val_t analysis___allocate_iregister_slots___IRoutine___tag_slots_nb(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 270;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRoutine___tag_slots_nb;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* analysis/allocate_iregister_slots.nit:270 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_tag_slots_nb", LOCATE_analysis___allocate_iregister_slots, 270);
-  }
-  REGB0 = ATTR_analysis___allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRoutine___allocate_iregister_slots[] = "allocate_iregister_slots::IRoutine::allocate_iregister_slots";
-void analysis___allocate_iregister_slots___IRoutine___allocate_iregister_slots(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 273;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRoutine___allocate_iregister_slots;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* analysis/allocate_iregister_slots.nit:275 */
-  fra.me.REG[0] = NEW_IRegisterSlotAllocationVisitor_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___init(fra.me.REG[0]);
-  /* analysis/allocate_iregister_slots.nit:276 */
-  CALL_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___iroutine_slot_allocation(fra.me.REG[0])(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegister___slot_index[] = "allocate_iregister_slots::IRegister::slot_index";
-val_t analysis___allocate_iregister_slots___IRegister___slot_index(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 281;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegister___slot_index;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* analysis/allocate_iregister_slots.nit:281 */
-  fra.me.REG[0] = ATTR_analysis___allocate_iregister_slots___IRegister____slot_index(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegister___slot_index__eq[] = "allocate_iregister_slots::IRegister::slot_index=";
-void analysis___allocate_iregister_slots___IRegister___slot_index__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 281;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegister___slot_index__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* analysis/allocate_iregister_slots.nit:281 */
-  ATTR_analysis___allocate_iregister_slots___IRegister____slot_index(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegister___is_local[] = "allocate_iregister_slots::IRegister::is_local";
-val_t analysis___allocate_iregister_slots___IRegister___is_local(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 286;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegister___is_local;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* analysis/allocate_iregister_slots.nit:286 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegister____is_local(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_is_local", LOCATE_analysis___allocate_iregister_slots, 286);
-  }
-  REGB0 = ATTR_analysis___allocate_iregister_slots___IRegister____is_local(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegister___is_local__eq[] = "allocate_iregister_slots::IRegister::is_local=";
-void analysis___allocate_iregister_slots___IRegister___is_local__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 286;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegister___is_local__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* analysis/allocate_iregister_slots.nit:286 */
-  ATTR_analysis___allocate_iregister_slots___IRegister____is_local(fra.me.REG[0]) = REGB0;
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegister___local_iroutine[] = "allocate_iregister_slots::IRegister::local_iroutine";
-val_t analysis___allocate_iregister_slots___IRegister___local_iroutine(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 289;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegister___local_iroutine;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* analysis/allocate_iregister_slots.nit:289 */
-  fra.me.REG[0] = ATTR_analysis___allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegister___local_iroutine__eq[] = "allocate_iregister_slots::IRegister::local_iroutine=";
-void analysis___allocate_iregister_slots___IRegister___local_iroutine__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 289;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegister___local_iroutine__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* analysis/allocate_iregister_slots.nit:289 */
-  ATTR_analysis___allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegister___in_tag_slots[] = "allocate_iregister_slots::IRegister::in_tag_slots";
-val_t analysis___allocate_iregister_slots___IRegister___in_tag_slots(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 292;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegister___in_tag_slots;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* analysis/allocate_iregister_slots.nit:292 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_in_tag_slots", LOCATE_analysis___allocate_iregister_slots, 292);
-  }
-  REGB0 = ATTR_analysis___allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_analysis___allocate_iregister_slots___IRegister___in_tag_slots__eq[] = "allocate_iregister_slots::IRegister::in_tag_slots=";
-void analysis___allocate_iregister_slots___IRegister___in_tag_slots__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_analysis___allocate_iregister_slots;
-  fra.me.line = 292;
-  fra.me.meth = LOCATE_analysis___allocate_iregister_slots___IRegister___in_tag_slots__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* analysis/allocate_iregister_slots.nit:292 */
-  ATTR_analysis___allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[0]) = REGB0;
-  stack_frame_head = fra.me.prev;
-  return;
-}