c_src: update
[nit.git] / c_src / allocate_iregister_slots._sep.c
index e0472df..cc3909f 100644 (file)
@@ -1,5 +1,87 @@
 /* This C file is generated by NIT to compile module allocate_iregister_slots. */
 #include "allocate_iregister_slots._sep.h"
+void 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_allocate_iregister_slots;
+  fra.me.line = 36;
+  fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  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_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_allocate_iregister_slots, 39);
+  }
+  REGB0 = ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1]);
+  if (UNTAG_Bool(REGB0)) {
+    fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[1]);
+    REGB0 = TAG_Bool(ATTR_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_allocate_iregister_slots, 39);
+    }
+    fra.me.REG[3] = ATTR_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(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_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(false);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./analysis//allocate_iregister_slots.nit:40 */
+    fra.me.REG[3] = ATTR_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(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_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_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_allocate_iregister_slots, 41);
+      }
+      fra.me.REG[0] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0]);
+      ATTR_allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[1]) = fra.me.REG[0];
+    } else {
+      /* ./analysis//allocate_iregister_slots.nit:43 */
+      REGB0 = TAG_Bool(false);
+      ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1]) = REGB0;
+    }
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
 void 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;
@@ -19,73 +101,43 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister
   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_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:50 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_pass");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 50);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_pass", LOCATE_allocate_iregister_slots, 52);
   }
   REGB0 = ATTR_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));
-  /* ./analysis//allocate_iregister_slots.nit:51 */
   if (UNTAG_Bool(REGB2)) {
   } else {
+    /* ./../lib/standard//kernel.nit:207 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
+    /* ./analysis//allocate_iregister_slots.nit:53 */
     REGB2 = REGB1;
-  /* ./analysis//allocate_iregister_slots.nit:51 */
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./analysis//allocate_iregister_slots.nit:52 */
-    CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-    REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
-    /* ./analysis//allocate_iregister_slots.nit:53 */
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_lasts");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 53);
-      nit_exit(1);
-    }
-    fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
-    CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
     /* ./analysis//allocate_iregister_slots.nit:54 */
+    CALL_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_allocate_iregister_slots___IRegister____last(fra.me.REG[2]) = fra.me.REG[1];
+    /* ./analysis//allocate_iregister_slots.nit:56 */
     ATTR_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));
-    /* ./analysis//allocate_iregister_slots.nit:55 */
     if (UNTAG_Bool(REGB1)) {
     } else {
+      /* ./../lib/standard//kernel.nit:207 */
       REGB2 = TAG_Bool((REGB0)==(REGB2));
-      REGB1 = REGB2;
-    /* ./analysis//allocate_iregister_slots.nit:55 */
-    }
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-      } else {
-        fprintf(stderr, "Uninitialized attribute %s", "_lasts");
-        fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 55);
-        nit_exit(1);
-      }
-      fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
-      REGB1 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-    } else {
-      REGB2 = TAG_Bool(false);
+      /* ./analysis//allocate_iregister_slots.nit:57 */
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-      } else {
-        fprintf(stderr, "Uninitialized attribute %s", "_lasts");
-        fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 55);
-        nit_exit(1);
-      }
-      fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+      fra.me.REG[3] = ATTR_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 {
@@ -103,7 +155,7 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
-      /* ./analysis//allocate_iregister_slots.nit:56 */
+      /* ./analysis//allocate_iregister_slots.nit:58 */
       CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
     }
   }
@@ -118,7 +170,7 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 60;
+  fra.me.line = 62;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_write;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -129,93 +181,77 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister
   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_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:62 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_pass");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 62);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_pass", LOCATE_allocate_iregister_slots, 64);
   }
   REGB0 = ATTR_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));
-  /* ./analysis//allocate_iregister_slots.nit:63 */
   if (UNTAG_Bool(REGB2)) {
   } else {
+    /* ./../lib/standard//kernel.nit:207 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
+    /* ./analysis//allocate_iregister_slots.nit:65 */
     REGB2 = REGB1;
-  /* ./analysis//allocate_iregister_slots.nit:63 */
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./analysis//allocate_iregister_slots.nit:64 */
+    /* ./analysis//allocate_iregister_slots.nit:66 */
     CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-    /* ./analysis//allocate_iregister_slots.nit:65 */
-    ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[2]) = NIT_NULL;
-    REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[0])!=NIT_NULL);
     /* ./analysis//allocate_iregister_slots.nit:67 */
+    ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[2]) = NIT_NULL;
+    /* ./analysis//allocate_iregister_slots.nit:69 */
+    fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegister____first(fra.me.REG[2]);
+    REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_firsts");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 67);
-      nit_exit(1);
-    }
-    fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[0]);
-    REGB2 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-    REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
-    if (UNTAG_Bool(REGB2)) {
-      REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[0])!=NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
+      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB2 = REGB1;
       } else {
-        fprintf(stderr, "Uninitialized attribute %s", "_firsts");
-        fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 67);
-        nit_exit(1);
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+        REGB2 = REGB1;
       }
-      fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[0]);
-      CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
     }
-    REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
-    /* ./analysis//allocate_iregister_slots.nit:69 */
     if (UNTAG_Bool(REGB2)) {
-    } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_lasts");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 69);
-      nit_exit(1);
+      ATTR_allocate_iregister_slots___IRegister____first(fra.me.REG[2]) = fra.me.REG[1];
     }
-    fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
-    REGB2 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+    /* ./analysis//allocate_iregister_slots.nit:71 */
+    fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegister____last(fra.me.REG[2]);
+    REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB2 = REGB1;
       } else {
-        fprintf(stderr, "Uninitialized attribute %s", "_lasts");
-        fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 69);
-        nit_exit(1);
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+        REGB2 = REGB1;
       }
-      fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
-      CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
+    }
+    REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
+    if (UNTAG_Bool(REGB2)) {
+      ATTR_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));
-    /* ./analysis//allocate_iregister_slots.nit:70 */
     if (UNTAG_Bool(REGB1)) {
     } else {
+      /* ./../lib/standard//kernel.nit:207 */
       REGB2 = TAG_Bool((REGB0)==(REGB2));
+      /* ./analysis//allocate_iregister_slots.nit:72 */
       REGB1 = REGB2;
-    /* ./analysis//allocate_iregister_slots.nit:70 */
     }
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[0])!=NIT_NULL);
-      /* ./analysis//allocate_iregister_slots.nit:71 */
-      if (UNTAG_Bool(REGB1)) {
-      } else {
-        fprintf(stderr, "Uninitialized attribute %s", "_firsts");
-        fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 71);
-        nit_exit(1);
-      }
-      fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+      /* ./analysis//allocate_iregister_slots.nit:73 */
+      fra.me.REG[3] = ATTR_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 {
@@ -229,47 +265,25 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister
         }
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./analysis//allocate_iregister_slots.nit:72 */
+        /* ./analysis//allocate_iregister_slots.nit:74 */
         CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
       } else {
-        REGB1 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
-        /* ./analysis//allocate_iregister_slots.nit:73 */
+        /* ./analysis//allocate_iregister_slots.nit:75 */
+        fra.me.REG[3] = ATTR_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 {
-          fprintf(stderr, "Uninitialized attribute %s", "_lasts");
-          fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 73);
-          nit_exit(1);
-        }
-        fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
-        REGB1 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-        if (UNTAG_Bool(REGB1)) {
-          REGB1 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
-          if (UNTAG_Bool(REGB1)) {
-          } else {
-            fprintf(stderr, "Uninitialized attribute %s", "_lasts");
-            fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 73);
-            nit_exit(1);
-          }
-          fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
-          fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-          REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
-          if (UNTAG_Bool(REGB1)) {
+          REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB2)) {
+            REGB2 = TAG_Bool(false);
+            REGB1 = REGB2;
           } else {
-            REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-            if (UNTAG_Bool(REGB2)) {
-              REGB2 = TAG_Bool(false);
-              REGB1 = REGB2;
-            } else {
-              REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-              REGB1 = REGB2;
-            }
+            REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+            REGB1 = REGB2;
           }
-        } else {
-          REGB2 = TAG_Bool(false);
-          REGB1 = REGB2;
         }
         if (UNTAG_Bool(REGB1)) {
-          /* ./analysis//allocate_iregister_slots.nit:74 */
+          /* ./analysis//allocate_iregister_slots.nit:76 */
           CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
         }
       }
@@ -278,43 +292,105 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister
   stack_frame_head = fra.me.prev;
   return;
 }
+void 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 tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_allocate_iregister_slots;
+  fra.me.line = 94;
+  fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  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_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_allocate_iregister_slots, 98);
+  }
+  fra.me.REG[1] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred_list(fra.me.REG[0]);
+  fra.me.REG[1] = CALL_abstract_collection___Collection___iterator(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./analysis//allocate_iregister_slots.nit:99 */
+  REGB0 = TAG_Bool(ATTR_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_allocate_iregister_slots, 99);
+  }
+  REGB0 = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0]);
+  /* ./analysis//allocate_iregister_slots.nit:100 */
+  while(1) {
+    REGB1 = CALL_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_abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
+      /* ./analysis//allocate_iregister_slots.nit:102 */
+      REGB1 = TAG_Bool(ATTR_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_allocate_iregister_slots, 102);
+      }
+      REGB1 = ATTR_allocate_iregister_slots___IRegister____born_rank(fra.me.REG[2]);
+      /* ./../lib/standard//kernel.nit:213 */
+      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_allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+        /* ./analysis//allocate_iregister_slots.nit:104 */
+        CALL_list___ListIterator___delete(fra.me.REG[1])(fra.me.REG[1]);
+      }
+      /* ./analysis//allocate_iregister_slots.nit:106 */
+      CALL_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;
+}
 void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  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_allocate_iregister_slots;
-  fra.me.line = 105;
+  fra.me.line = 110;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 4;
   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[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_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[2])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:107 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_pass");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 107);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_pass", LOCATE_allocate_iregister_slots, 112);
   }
   REGB0 = ATTR_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:207 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
+    /* ./analysis//allocate_iregister_slots.nit:112 */
     REGB2 = REGB1;
-  /* ./analysis//allocate_iregister_slots.nit:107 */
   }
   if (UNTAG_Bool(REGB2)) {
     REGB2 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_ILoop, ID_ILoop)) /*cast ILoop*/;
@@ -323,106 +399,124 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode(val
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2])!=NIT_NULL);
-    /* ./analysis//allocate_iregister_slots.nit:108 */
+    /* ./analysis//allocate_iregister_slots.nit:113 */
+    REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_live");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 108);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_current_rank", LOCATE_allocate_iregister_slots, 113);
+    }
+    REGB2 = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2]);
+    /* ./analysis//allocate_iregister_slots.nit:114 */
+    REGB1 = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]);
+    REGB0 = TAG_Int(1);
+    /* ./../lib/standard//kernel.nit:215 */
+    REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
+    /* ./analysis//allocate_iregister_slots.nit:114 */
+    ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]) = REGB0;
+    /* ./analysis//allocate_iregister_slots.nit:115 */
+    REGB0 = TAG_Bool(ATTR_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_allocate_iregister_slots, 115);
     }
-    fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2]);
-    fra.me.REG[4] = NEW_HashSet_hash_collection___HashSet___init();
-    /* ./analysis//allocate_iregister_slots.nit:110 */
-    ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2]) = fra.me.REG[4];
-    /* ./analysis//allocate_iregister_slots.nit:111 */
+    REGB0 = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]);
+    ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2]) = REGB0;
+    /* ./analysis//allocate_iregister_slots.nit:116 */
     CALL_SUPER_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    /* ./analysis//allocate_iregister_slots.nit:112 */
-    ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2]) = fra.me.REG[3];
-    /* ./analysis//allocate_iregister_slots.nit:113 */
-    CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+    /* ./analysis//allocate_iregister_slots.nit:117 */
+    ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2]) = REGB2;
+    /* ./analysis//allocate_iregister_slots.nit:118 */
+    CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free(fra.me.REG[2])(fra.me.REG[2]);
   } else {
-    /* ./analysis//allocate_iregister_slots.nit:115 */
+    /* ./analysis//allocate_iregister_slots.nit:120 */
     CALL_SUPER_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;
 }
 void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  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_allocate_iregister_slots;
-  fra.me.line = 119;
+  fra.me.line = 124;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 3;
   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[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_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[2])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:121 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_pass");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 121);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_pass", LOCATE_allocate_iregister_slots, 126);
   }
   REGB0 = ATTR_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:207 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
+    /* ./analysis//allocate_iregister_slots.nit:126 */
     REGB2 = REGB1;
-  /* ./analysis//allocate_iregister_slots.nit:121 */
   }
   if (UNTAG_Bool(REGB2)) {
-    REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2])!=NIT_NULL);
-    /* ./analysis//allocate_iregister_slots.nit:122 */
+    /* ./analysis//allocate_iregister_slots.nit:127 */
+    REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_live");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 122);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_current_rank", LOCATE_allocate_iregister_slots, 127);
+    }
+    REGB2 = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2]);
+    /* ./analysis//allocate_iregister_slots.nit:128 */
+    REGB1 = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]);
+    REGB0 = TAG_Int(1);
+    /* ./../lib/standard//kernel.nit:215 */
+    REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
+    /* ./analysis//allocate_iregister_slots.nit:128 */
+    ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]) = REGB0;
+    /* ./analysis//allocate_iregister_slots.nit:129 */
+    REGB0 = TAG_Bool(ATTR_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_allocate_iregister_slots, 129);
     }
-    fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2]);
-    fra.me.REG[4] = NEW_HashSet_hash_collection___HashSet___init();
-    /* ./analysis//allocate_iregister_slots.nit:124 */
-    ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2]) = fra.me.REG[4];
-    /* ./analysis//allocate_iregister_slots.nit:125 */
+    REGB0 = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]);
+    ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2]) = REGB0;
+    /* ./analysis//allocate_iregister_slots.nit:130 */
     CALL_SUPER_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    /* ./analysis//allocate_iregister_slots.nit:126 */
-    ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2]) = fra.me.REG[3];
-    /* ./analysis//allocate_iregister_slots.nit:127 */
-    CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+    /* ./analysis//allocate_iregister_slots.nit:131 */
+    ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[2]) = REGB2;
+    /* ./analysis//allocate_iregister_slots.nit:132 */
+    CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free(fra.me.REG[2])(fra.me.REG[2]);
   } else {
-    /* ./analysis//allocate_iregister_slots.nit:129 */
+    /* ./analysis//allocate_iregister_slots.nit:134 */
     CALL_SUPER_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;
 }
 void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  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_allocate_iregister_slots;
-  fra.me.line = 137;
+  fra.me.line = 142;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 9;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -431,71 +525,46 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine(
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[7] = NIT_NULL;
-  fra.me.REG[8] = 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_base___IRoutine___result(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./analysis//allocate_iregister_slots.nit:145 */
   REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[2])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:140 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_pass");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 140);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_pass", LOCATE_allocate_iregister_slots, 145);
   }
   REGB0 = ATTR_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:207 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
+    /* ./analysis//allocate_iregister_slots.nit:145 */
     REGB2 = REGB1;
-  /* ./analysis//allocate_iregister_slots.nit:140 */
   }
   if (UNTAG_Bool(REGB2)) {
+    /* ./analysis//allocate_iregister_slots.nit:146 */
     REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[2])!=NIT_NULL);
-    /* ./analysis//allocate_iregister_slots.nit:141 */
     if (UNTAG_Bool(REGB2)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_current_ir");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 141);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_current_ir", LOCATE_allocate_iregister_slots, 146);
     }
     fra.me.REG[5] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[2]);
-    /* ./analysis//allocate_iregister_slots.nit:142 */
+    /* ./analysis//allocate_iregister_slots.nit:147 */
     ATTR_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_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[6] = CALL_abstract_collection___Collection___iterator(fra.me.REG[6])(fra.me.REG[6]);
-    /* ./analysis//allocate_iregister_slots.nit:143 */
-    while(1) {
-      REGB2 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[6])(fra.me.REG[6]);
-      if (UNTAG_Bool(REGB2)) {
-        fra.me.REG[7] = CALL_abstract_collection___Iterator___item(fra.me.REG[6])(fra.me.REG[6]);
-        REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[2])!=NIT_NULL);
-        /* ./analysis//allocate_iregister_slots.nit:144 */
-        if (UNTAG_Bool(REGB2)) {
-        } else {
-          fprintf(stderr, "Uninitialized attribute %s", "_firsts");
-          fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 144);
-          nit_exit(1);
-        }
-        fra.me.REG[8] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[2]);
-        CALL_abstract_collection___Map_____braeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7], fra.me.REG[2]);
-        /* ./analysis//allocate_iregister_slots.nit:145 */
-        CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
-      } else {
-        /* ./analysis//allocate_iregister_slots.nit:143 */
-        goto label1;
-      }
-      CALL_abstract_collection___Iterator___next(fra.me.REG[6])(fra.me.REG[6]);
-    }
-    label1: while(0);
-    /* ./analysis//allocate_iregister_slots.nit:147 */
+    CALL_abstract_collection___Collection___iterate(fra.me.REG[6])(fra.me.REG[6], (&(fra.me)), ((fun_t)OC_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine_1));
+    /* ./analysis//allocate_iregister_slots.nit:152 */
     CALL_SUPER_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);
-    /* ./analysis//allocate_iregister_slots.nit:148 */
     if (UNTAG_Bool(REGB2)) {
     } else {
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
@@ -509,70 +578,45 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine(
     }
     REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
     if (UNTAG_Bool(REGB2)) {
-      REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[2])!=NIT_NULL);
-      /* ./analysis//allocate_iregister_slots.nit:149 */
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        fprintf(stderr, "Uninitialized attribute %s", "_lasts");
-        fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 149);
-        nit_exit(1);
-      }
-      fra.me.REG[6] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[2]);
-      CALL_abstract_collection___Map_____braeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4], fra.me.REG[2]);
-      /* ./analysis//allocate_iregister_slots.nit:150 */
+      /* ./analysis//allocate_iregister_slots.nit:154 */
+      ATTR_allocate_iregister_slots___IRegister____last(fra.me.REG[4]) = fra.me.REG[2];
+      /* ./analysis//allocate_iregister_slots.nit:155 */
       CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
     }
-    /* ./analysis//allocate_iregister_slots.nit:152 */
+    /* ./analysis//allocate_iregister_slots.nit:157 */
     ATTR_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_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2])!=NIT_NULL);
-    /* ./analysis//allocate_iregister_slots.nit:154 */
     if (UNTAG_Bool(REGB2)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_tag_slots");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 154);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_tag_slots", LOCATE_allocate_iregister_slots, 159);
     }
     fra.me.REG[5] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2]);
+    /* ./analysis//allocate_iregister_slots.nit:160 */
     fra.me.REG[6] = NEW_SlotGroup_allocate_iregister_slots___SlotGroup___init();
-    /* ./analysis//allocate_iregister_slots.nit:155 */
     ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2]) = fra.me.REG[6];
+    /* ./analysis//allocate_iregister_slots.nit:161 */
     REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2])!=NIT_NULL);
-    /* ./analysis//allocate_iregister_slots.nit:156 */
     if (UNTAG_Bool(REGB2)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_std_slots");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 156);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_std_slots", LOCATE_allocate_iregister_slots, 161);
     }
     fra.me.REG[6] = ATTR_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_IClosureDef, ID_IClosureDef)) /*cast IClosureDef*/;
-    /* ./analysis//allocate_iregister_slots.nit:157 */
     if (UNTAG_Bool(REGB2)) {
+      /* ./analysis//allocate_iregister_slots.nit:163 */
       fra.me.REG[7] = NEW_SlotGroup_allocate_iregister_slots___SlotGroup___init();
-      /* ./analysis//allocate_iregister_slots.nit:158 */
       ATTR_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_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[7] = CALL_abstract_collection___Collection___iterator(fra.me.REG[7])(fra.me.REG[7]);
-    /* ./analysis//allocate_iregister_slots.nit:160 */
-    while(1) {
-      REGB2 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[7])(fra.me.REG[7]);
-      if (UNTAG_Bool(REGB2)) {
-        fra.me.REG[8] = CALL_abstract_collection___Iterator___item(fra.me.REG[7])(fra.me.REG[7]);
-        /* ./analysis//allocate_iregister_slots.nit:161 */
-        CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___register(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
-      } else {
-        /* ./analysis//allocate_iregister_slots.nit:160 */
-        goto label2;
-      }
-      CALL_abstract_collection___Iterator___next(fra.me.REG[7])(fra.me.REG[7]);
-    }
-    label2: while(0);
-    /* ./analysis//allocate_iregister_slots.nit:163 */
+    CALL_abstract_collection___Collection___iterate(fra.me.REG[7])(fra.me.REG[7], (&(fra.me)), ((fun_t)OC_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine_2));
+    /* ./analysis//allocate_iregister_slots.nit:168 */
     CALL_SUPER_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);
-    /* ./analysis//allocate_iregister_slots.nit:164 */
     if (UNTAG_Bool(REGB2)) {
     } else {
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
@@ -588,189 +632,84 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine(
     if (UNTAG_Bool(REGB2)) {
       CALL_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_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2])!=NIT_NULL);
-    /* ./analysis//allocate_iregister_slots.nit:165 */
     if (UNTAG_Bool(REGB2)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_tag_slots");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 165);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_tag_slots", LOCATE_allocate_iregister_slots, 170);
     }
     fra.me.REG[4] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2]);
     REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_next_index");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 165);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_next_index", LOCATE_allocate_iregister_slots, 170);
     }
     REGB2 = ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[4]);
     ATTR_allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[3]) = REGB2;
-    /* ./analysis//allocate_iregister_slots.nit:166 */
+    /* ./analysis//allocate_iregister_slots.nit:171 */
     ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2]) = fra.me.REG[5];
+    /* ./analysis//allocate_iregister_slots.nit:172 */
     REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2])!=NIT_NULL);
-    /* ./analysis//allocate_iregister_slots.nit:167 */
     if (UNTAG_Bool(REGB2)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_std_slots");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 167);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_std_slots", LOCATE_allocate_iregister_slots, 172);
     }
     fra.me.REG[5] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2]);
     REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_next_index");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 167);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_next_index", LOCATE_allocate_iregister_slots, 172);
     }
     REGB2 = ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[5]);
     ATTR_allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[3]) = REGB2;
-    /* ./analysis//allocate_iregister_slots.nit:168 */
+    /* ./analysis//allocate_iregister_slots.nit:173 */
     ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2]) = fra.me.REG[6];
   }
   stack_frame_head = fra.me.prev;
   return;
 }
-void 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_allocate_iregister_slots;
-  fra.me.line = 36;
-  fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  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;
-  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:39 */
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_is_local");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 39);
-    nit_exit(1);
-  }
-  REGB0 = ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1]);
-  if (UNTAG_Bool(REGB0)) {
-    fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[1]);
-    REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_current_ir");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 39);
-      nit_exit(1);
-    }
-    fra.me.REG[3] = ATTR_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(false);
-        REGB0 = REGB1;
-      } else {
-        REGB1 = CALL_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(false);
-    REGB0 = REGB1;
-  }
-  if (UNTAG_Bool(REGB0)) {
-    fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[1]);
-    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    /* ./analysis//allocate_iregister_slots.nit:40 */
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(false);
-        REGB0 = REGB1;
-      } else {
-        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
-        REGB0 = REGB1;
-      }
-    }
-    if (UNTAG_Bool(REGB0)) {
-      REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0])!=NIT_NULL);
-      /* ./analysis//allocate_iregister_slots.nit:41 */
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        fprintf(stderr, "Uninitialized attribute %s", "_current_ir");
-        fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 41);
-        nit_exit(1);
-      }
-      fra.me.REG[0] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0]);
-      ATTR_allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[1]) = fra.me.REG[0];
-    } else {
-      REGB0 = TAG_Bool(false);
-      /* ./analysis//allocate_iregister_slots.nit:43 */
-      ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1]) = REGB0;
+    void OC_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_allocate_iregister_slots;
+      fra.me.line = 0;
+      fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine;
+      fra.me.has_broke = 0;
+      fra.me.REG_size = 1;
+      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_allocate_iregister_slots___IRegister____first(fra.me.REG[0]) = closctx->REG[2];
+      /* ./analysis//allocate_iregister_slots.nit:150 */
+      CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
+      stack_frame_head = fra.me.prev;
+      return;
     }
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
-void allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_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_allocate_iregister_slots;
-  fra.me.line = 90;
-  fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  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;
-  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred(fra.me.REG[0])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:95 */
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_deferred");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 95);
-    nit_exit(1);
-  }
-  fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred(fra.me.REG[0]);
-  REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  /* ./analysis//allocate_iregister_slots.nit:96 */
-  if (UNTAG_Bool(REGB0)) {
-    /* ./analysis//allocate_iregister_slots.nit:97 */
-    CALL_abstract_collection___RemovableCollection___clear(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./analysis//allocate_iregister_slots.nit:98 */
-    ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred(fra.me.REG[0]) = fra.me.REG[1];
-    fra.me.REG[2] = CALL_abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./analysis//allocate_iregister_slots.nit:99 */
-    while(1) {
-      REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
-      if (UNTAG_Bool(REGB0)) {
-        fra.me.REG[1] = CALL_abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
-        /* ./analysis//allocate_iregister_slots.nit:100 */
-        CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-      } else {
-        /* ./analysis//allocate_iregister_slots.nit:99 */
-        goto label1;
-      }
-      CALL_abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
+    void OC_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_allocate_iregister_slots;
+      fra.me.line = 0;
+      fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine;
+      fra.me.has_broke = 0;
+      fra.me.REG_size = 1;
+      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_allocate_iregister_slots___IRegisterSlotAllocationVisitor___register(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
+      stack_frame_head = fra.me.prev;
+      return;
     }
-    label1: while(0);
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
 void 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;
@@ -778,7 +717,7 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___register(val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 182;
+  fra.me.line = 187;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___register;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -787,23 +726,26 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___register(val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:185 */
+  /* ./analysis//allocate_iregister_slots.nit:190 */
+  fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegister____last(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_lasts");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 185);
-    nit_exit(1);
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
   }
-  fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
-  REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
+  /* ./analysis//allocate_iregister_slots.nit:191 */
   fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:186 */
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
@@ -811,74 +753,63 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___register(val_t
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
+      /* ./../lib/standard//kernel.nit:207 */
       REGB1 = TAG_Bool((fra.me.REG[2])==(NIT_NULL));
+      /* ./analysis//allocate_iregister_slots.nit:191 */
       REGB0 = REGB1;
-    /* ./analysis//allocate_iregister_slots.nit:186 */
     }
   }
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Assert failed");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 186);
-    nit_exit(1);
+    nit_abort("Assert failed", NULL, LOCATE_allocate_iregister_slots, 191);
   }
-  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[0])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:187 */
+  /* ./analysis//allocate_iregister_slots.nit:192 */
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_live");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 187);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_current_rank", LOCATE_allocate_iregister_slots, 192);
   }
-  fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[0]);
-  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  REGB0 = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0]);
+  ATTR_allocate_iregister_slots___IRegister____born_rank(fra.me.REG[1]) = REGB0;
+  /* ./analysis//allocate_iregister_slots.nit:193 */
   REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:188 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_is_local");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 188);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_is_local", LOCATE_allocate_iregister_slots, 193);
   }
   REGB0 = ATTR_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_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0])!=NIT_NULL);
-    /* ./analysis//allocate_iregister_slots.nit:189 */
     if (UNTAG_Bool(REGB0)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_global_slots");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 189);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_global_slots", LOCATE_allocate_iregister_slots, 194);
     }
     fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0]);
     CALL_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_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]);
-    /* ./analysis//allocate_iregister_slots.nit:190 */
     if (UNTAG_Bool(REGB0)) {
+      /* ./analysis//allocate_iregister_slots.nit:196 */
       REGB0 = TAG_Bool(true);
-      /* ./analysis//allocate_iregister_slots.nit:191 */
       ATTR_allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[1]) = REGB0;
+      /* ./analysis//allocate_iregister_slots.nit:197 */
       REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0])!=NIT_NULL);
-      /* ./analysis//allocate_iregister_slots.nit:192 */
       if (UNTAG_Bool(REGB0)) {
       } else {
-        fprintf(stderr, "Uninitialized attribute %s", "_tag_slots");
-        fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 192);
-        nit_exit(1);
+        nit_abort("Uninitialized attribute %s", "_tag_slots", LOCATE_allocate_iregister_slots, 197);
       }
       fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0]);
       CALL_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_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[0])!=NIT_NULL);
-      /* ./analysis//allocate_iregister_slots.nit:194 */
       if (UNTAG_Bool(REGB0)) {
       } else {
-        fprintf(stderr, "Uninitialized attribute %s", "_std_slots");
-        fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 194);
-        nit_exit(1);
+        nit_abort("Uninitialized attribute %s", "_std_slots", LOCATE_allocate_iregister_slots, 199);
       }
       fra.me.REG[0] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[0]);
       CALL_allocate_iregister_slots___SlotGroup___register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
@@ -895,7 +826,7 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 198;
+  fra.me.line = 203;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___free;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -904,9 +835,10 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(val_t p0,
   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_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);
-  /* ./analysis//allocate_iregister_slots.nit:202 */
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
@@ -914,112 +846,103 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(val_t p0,
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
+      /* ./../lib/standard//kernel.nit:207 */
       REGB1 = TAG_Bool((fra.me.REG[2])==(NIT_NULL));
+      /* ./analysis//allocate_iregister_slots.nit:208 */
       REGB0 = REGB1;
-    /* ./analysis//allocate_iregister_slots.nit:202 */
     }
   }
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[0])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:203 */
+  /* ./analysis//allocate_iregister_slots.nit:209 */
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____born_rank(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_live");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 203);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_born_rank", LOCATE_allocate_iregister_slots, 209);
   }
-  fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[0]);
-  REGB0 = CALL_abstract_collection___Collection___has(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred(fra.me.REG[0])!=NIT_NULL);
-    /* ./analysis//allocate_iregister_slots.nit:204 */
-    if (UNTAG_Bool(REGB0)) {
+  REGB0 = ATTR_allocate_iregister_slots___IRegister____born_rank(fra.me.REG[1]);
+  REGB1 = TAG_Bool(ATTR_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_allocate_iregister_slots, 209);
+  }
+  REGB1 = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0]);
+  /* ./../lib/standard//kernel.nit:212 */
+  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_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred_list(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_deferred");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 204);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_deferred_list", LOCATE_allocate_iregister_slots, 210);
     }
-    fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred(fra.me.REG[0]);
+    fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred_list(fra.me.REG[0]);
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   } else {
-    REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
-    /* ./analysis//allocate_iregister_slots.nit:205 */
-    if (UNTAG_Bool(REGB0)) {
+    /* ./analysis//allocate_iregister_slots.nit:211 */
+    fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegister____last(fra.me.REG[1]);
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_lasts");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 205);
-      nit_exit(1);
-    }
-    fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
-    REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-    if (UNTAG_Bool(REGB0)) {
-      REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[1])!=NIT_NULL);
-      /* ./analysis//allocate_iregister_slots.nit:206 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
+        REGB0 = TAG_Bool(false);
+        REGB1 = REGB0;
       } else {
-        fprintf(stderr, "Uninitialized attribute %s", "_in_tag_slots");
-        fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 206);
-        nit_exit(1);
+        REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB1 = REGB0;
       }
-      REGB0 = ATTR_allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[1]);
-      if (UNTAG_Bool(REGB0)) {
-        REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0])!=NIT_NULL);
-        /* ./analysis//allocate_iregister_slots.nit:207 */
-        if (UNTAG_Bool(REGB0)) {
+    }
+    REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+    if (UNTAG_Bool(REGB1)) {
+      /* ./analysis//allocate_iregister_slots.nit:212 */
+      REGB1 = TAG_Bool(ATTR_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_allocate_iregister_slots, 212);
+      }
+      REGB1 = ATTR_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_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0])!=NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
         } else {
-          fprintf(stderr, "Uninitialized attribute %s", "_tag_slots");
-          fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 207);
-          nit_exit(1);
+          nit_abort("Uninitialized attribute %s", "_tag_slots", LOCATE_allocate_iregister_slots, 213);
         }
         fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0]);
         CALL_allocate_iregister_slots___SlotGroup___free(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
       } else {
-        REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1])!=NIT_NULL);
-        /* ./analysis//allocate_iregister_slots.nit:208 */
-        if (UNTAG_Bool(REGB0)) {
+        /* ./analysis//allocate_iregister_slots.nit:214 */
+        REGB1 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1])!=NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
         } else {
-          fprintf(stderr, "Uninitialized attribute %s", "_is_local");
-          fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 208);
-          nit_exit(1);
+          nit_abort("Uninitialized attribute %s", "_is_local", LOCATE_allocate_iregister_slots, 214);
         }
-        REGB0 = ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1]);
-        if (UNTAG_Bool(REGB0)) {
-          REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[0])!=NIT_NULL);
-          /* ./analysis//allocate_iregister_slots.nit:209 */
-          if (UNTAG_Bool(REGB0)) {
+        REGB1 = ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1]);
+        if (UNTAG_Bool(REGB1)) {
+          /* ./analysis//allocate_iregister_slots.nit:215 */
+          REGB1 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB1)) {
           } else {
-            fprintf(stderr, "Uninitialized attribute %s", "_std_slots");
-            fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 209);
-            nit_exit(1);
+            nit_abort("Uninitialized attribute %s", "_std_slots", LOCATE_allocate_iregister_slots, 215);
           }
           fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[0]);
           CALL_allocate_iregister_slots___SlotGroup___free(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
         } else {
-          REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0])!=NIT_NULL);
-          /* ./analysis//allocate_iregister_slots.nit:211 */
-          if (UNTAG_Bool(REGB0)) {
+          /* ./analysis//allocate_iregister_slots.nit:217 */
+          REGB1 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB1)) {
           } else {
-            fprintf(stderr, "Uninitialized attribute %s", "_global_slots");
-            fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 211);
-            nit_exit(1);
+            nit_abort("Uninitialized attribute %s", "_global_slots", LOCATE_allocate_iregister_slots, 217);
           }
-          fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0]);
-          CALL_allocate_iregister_slots___SlotGroup___free(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+          fra.me.REG[0] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0]);
+          CALL_allocate_iregister_slots___SlotGroup___free(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
         }
       }
-      REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
-      /* ./analysis//allocate_iregister_slots.nit:213 */
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        fprintf(stderr, "Uninitialized attribute %s", "_lasts");
-        fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 213);
-        nit_exit(1);
-      }
-      fra.me.REG[0] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
-      CALL_abstract_collection___Map___remove_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+      /* ./analysis//allocate_iregister_slots.nit:219 */
+      ATTR_allocate_iregister_slots___IRegister____last(fra.me.REG[1]) = NIT_NULL;
     }
   }
   label1: while(0);
@@ -1032,29 +955,39 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___iroutine_slot_a
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 226;
+  fra.me.line = 223;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___iroutine_slot_allocation;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   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_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:229 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_current_ir");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 229);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_current_ir", LOCATE_allocate_iregister_slots, 226);
   }
   fra.me.REG[1] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0]);
-  /* ./analysis//allocate_iregister_slots.nit:230 */
+  /* ./analysis//allocate_iregister_slots.nit:227 */
   CALL_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);
-  /* ./analysis//allocate_iregister_slots.nit:231 */
   ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0]) = REGB0;
-  /* ./analysis//allocate_iregister_slots.nit:232 */
+  /* ./analysis//allocate_iregister_slots.nit:229 */
   CALL_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_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_allocate_iregister_slots, 230);
+  }
+  fra.me.REG[0] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred_list(fra.me.REG[0]);
+  REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_allocate_iregister_slots, 230);
+  }
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1066,7 +999,7 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___init(val_t p0,
   if (init_table[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 235;
+  fra.me.line = 233;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1075,18 +1008,16 @@ void allocate_iregister_slots___IRegisterSlotAllocationVisitor___init(val_t p0,
   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];
-  /* ./analysis//allocate_iregister_slots.nit:235 */
   CALL_icode_tools___ICodeVisitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./analysis//allocate_iregister_slots.nit:237 */
+  /* ./analysis//allocate_iregister_slots.nit:235 */
   ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[2]) = fra.me.REG[1];
+  /* ./analysis//allocate_iregister_slots.nit:236 */
   REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[2])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:238 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_global_slots");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 238);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_global_slots", LOCATE_allocate_iregister_slots, 236);
   }
   fra.me.REG[1] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[2]);
   ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2]) = fra.me.REG[1];
@@ -1101,7 +1032,7 @@ void allocate_iregister_slots___SlotGroup___register(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 250;
+  fra.me.line = 248;
   fra.me.meth = LOCATE_allocate_iregister_slots___SlotGroup___register;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1110,40 +1041,36 @@ void allocate_iregister_slots___SlotGroup___register(val_t p0, val_t p1){
   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_allocate_iregister_slots___SlotGroup____free(fra.me.REG[0])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:253 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_free");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 253);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_free", LOCATE_allocate_iregister_slots, 251);
   }
   fra.me.REG[2] = ATTR_allocate_iregister_slots___SlotGroup____free(fra.me.REG[0]);
   REGB0 = CALL_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_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0])!=NIT_NULL);
-    /* ./analysis//allocate_iregister_slots.nit:254 */
     if (UNTAG_Bool(REGB0)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_next_index");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 254);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_next_index", LOCATE_allocate_iregister_slots, 252);
     }
     REGB0 = ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0]);
     ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[1]) = REGB0;
+    /* ./analysis//allocate_iregister_slots.nit:253 */
     REGB0 = ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0]);
     REGB1 = TAG_Int(1);
+    /* ./../lib/standard//kernel.nit:215 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-    /* ./analysis//allocate_iregister_slots.nit:255 */
+    /* ./analysis//allocate_iregister_slots.nit:253 */
     ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0]) = REGB1;
   } else {
+    /* ./analysis//allocate_iregister_slots.nit:255 */
     REGB1 = TAG_Bool(ATTR_allocate_iregister_slots___SlotGroup____free(fra.me.REG[0])!=NIT_NULL);
-    /* ./analysis//allocate_iregister_slots.nit:257 */
     if (UNTAG_Bool(REGB1)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_free");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 257);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_free", LOCATE_allocate_iregister_slots, 255);
     }
     fra.me.REG[0] = ATTR_allocate_iregister_slots___SlotGroup____free(fra.me.REG[0]);
     fra.me.REG[0] = CALL_abstract_collection___Sequence___pop(fra.me.REG[0])(fra.me.REG[0]);
@@ -1158,7 +1085,7 @@ void allocate_iregister_slots___SlotGroup___free(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 261;
+  fra.me.line = 259;
   fra.me.meth = LOCATE_allocate_iregister_slots___SlotGroup___free;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1166,22 +1093,18 @@ void allocate_iregister_slots___SlotGroup___free(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./analysis//allocate_iregister_slots.nit:262 */
   REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___SlotGroup____free(fra.me.REG[0])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:264 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_free");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 264);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_free", LOCATE_allocate_iregister_slots, 262);
   }
   fra.me.REG[0] = ATTR_allocate_iregister_slots___SlotGroup____free(fra.me.REG[0]);
   fra.me.REG[1] = ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Cast failed");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 264);
-    nit_exit(1);
+    nit_abort("Cast failed", NULL, LOCATE_allocate_iregister_slots, 262);
   }
   CALL_abstract_collection___Sequence___push(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
@@ -1208,19 +1131,17 @@ val_t allocate_iregister_slots___IRoutine___std_slots_nb(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 269;
+  fra.me.line = 267;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRoutine___std_slots_nb;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./analysis//allocate_iregister_slots.nit:267 */
   REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[0])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:269 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_std_slots_nb");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 269);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_std_slots_nb", LOCATE_allocate_iregister_slots, 267);
   }
   REGB0 = ATTR_allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1232,19 +1153,17 @@ val_t allocate_iregister_slots___IRoutine___tag_slots_nb(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 272;
+  fra.me.line = 270;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRoutine___tag_slots_nb;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./analysis//allocate_iregister_slots.nit:270 */
   REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:272 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_tag_slots_nb");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 272);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_tag_slots_nb", LOCATE_allocate_iregister_slots, 270);
   }
   REGB0 = ATTR_allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1255,14 +1174,15 @@ void allocate_iregister_slots___IRoutine___allocate_iregister_slots(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 275;
+  fra.me.line = 273;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRoutine___allocate_iregister_slots;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./analysis//allocate_iregister_slots.nit:275 */
   fra.me.REG[0] = NEW_IRegisterSlotAllocationVisitor_allocate_iregister_slots___IRegisterSlotAllocationVisitor___init(fra.me.REG[0]);
-  /* ./analysis//allocate_iregister_slots.nit:278 */
+  /* ./analysis//allocate_iregister_slots.nit:276 */
   CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___iroutine_slot_allocation(fra.me.REG[0])(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
@@ -1272,14 +1192,14 @@ val_t allocate_iregister_slots___IRegister___slot_index(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 283;
+  fra.me.line = 281;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___slot_index;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./analysis//allocate_iregister_slots.nit:281 */
   fra.me.REG[0] = ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[0]);
-  /* ./analysis//allocate_iregister_slots.nit:283 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
@@ -1288,7 +1208,7 @@ void allocate_iregister_slots___IRegister___slot_index__eq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 283;
+  fra.me.line = 281;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___slot_index__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1296,7 +1216,7 @@ void allocate_iregister_slots___IRegister___slot_index__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./analysis//allocate_iregister_slots.nit:283 */
+  /* ./analysis//allocate_iregister_slots.nit:281 */
   ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1307,19 +1227,17 @@ val_t allocate_iregister_slots___IRegister___is_local(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 288;
+  fra.me.line = 286;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___is_local;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./analysis//allocate_iregister_slots.nit:286 */
   REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[0])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:288 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_is_local");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 288);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_is_local", LOCATE_allocate_iregister_slots, 286);
   }
   REGB0 = ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1331,14 +1249,14 @@ void allocate_iregister_slots___IRegister___is_local__eq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 288;
+  fra.me.line = 286;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___is_local__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./analysis//allocate_iregister_slots.nit:288 */
+  /* ./analysis//allocate_iregister_slots.nit:286 */
   ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
@@ -1348,14 +1266,14 @@ val_t allocate_iregister_slots___IRegister___local_iroutine(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 291;
+  fra.me.line = 289;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___local_iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./analysis//allocate_iregister_slots.nit:289 */
   fra.me.REG[0] = ATTR_allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[0]);
-  /* ./analysis//allocate_iregister_slots.nit:291 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
@@ -1364,7 +1282,7 @@ void allocate_iregister_slots___IRegister___local_iroutine__eq(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 291;
+  fra.me.line = 289;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___local_iroutine__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1372,7 +1290,7 @@ void allocate_iregister_slots___IRegister___local_iroutine__eq(val_t p0, val_t p
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./analysis//allocate_iregister_slots.nit:291 */
+  /* ./analysis//allocate_iregister_slots.nit:289 */
   ATTR_allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1383,19 +1301,17 @@ val_t allocate_iregister_slots___IRegister___in_tag_slots(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 294;
+  fra.me.line = 292;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___in_tag_slots;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./analysis//allocate_iregister_slots.nit:292 */
   REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[0])!=NIT_NULL);
-  /* ./analysis//allocate_iregister_slots.nit:294 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_in_tag_slots");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 294);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_in_tag_slots", LOCATE_allocate_iregister_slots, 292);
   }
   REGB0 = ATTR_allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1407,14 +1323,14 @@ void allocate_iregister_slots___IRegister___in_tag_slots__eq(val_t p0, val_t p1)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_allocate_iregister_slots;
-  fra.me.line = 294;
+  fra.me.line = 292;
   fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___in_tag_slots__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./analysis//allocate_iregister_slots.nit:294 */
+  /* ./analysis//allocate_iregister_slots.nit:292 */
   ATTR_allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;