val_t metamodel___virtualtype___MMVirtualType___for_module(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_metamodel___virtualtype;
  fra.me.line = 73;
  fra.me.meth = LOCATE_metamodel___virtualtype___MMVirtualType___for_module;
  fra.me.has_broke = 0;
  fra.me.REG_size = 4;
  fra.me.nitni_local_ref_head = NULL;
  fra.me.REG[0] = NIT_NULL;
  fra.me.REG[1] = NIT_NULL;
  fra.me.REG[2] = NIT_NULL;
  fra.me.REG[3] = NIT_NULL;
  fra.me.REG[0] = p0;
  fra.me.REG[1] = p1;
  /* metamodel/virtualtype.nit:75 */
  fra.me.REG[2] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[2]));
  if (UNTAG_Bool(REGB0)) {
  } else {
    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
    REGB0 = REGB1;
  }
  if (UNTAG_Bool(REGB0)) {
    fra.me.REG[2] = fra.me.REG[0];
    goto label1;
  }
  /* metamodel/virtualtype.nit:76 */
  fra.me.REG[3] = CALL_metamodel___virtualtype___MMVirtualType___recv(fra.me.REG[0])(fra.me.REG[0]);
  fra.me.REG[1] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
  fra.me.REG[1] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
  fra.me.REG[2] = fra.me.REG[1];
  goto label1;
  label1: while(0);
  stack_frame_head = fra.me.prev;
  return fra.me.REG[2];
}
Esempio n. 2
0
void global___cha_analysis___ChaVisitor___visit_icode(val_t p0, val_t p1){
  struct {struct stack_frame_t me; val_t MORE_REG[6];} 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_global___cha_analysis;
  fra.me.line = 94;
  fra.me.meth = LOCATE_global___cha_analysis___ChaVisitor___visit_icode;
  fra.me.has_broke = 0;
  fra.me.REG_size = 7;
  fra.me.nitni_local_ref_head = NULL;
  fra.me.REG[0] = NIT_NULL;
  fra.me.REG[1] = NIT_NULL;
  fra.me.REG[2] = NIT_NULL;
  fra.me.REG[3] = NIT_NULL;
  fra.me.REG[4] = NIT_NULL;
  fra.me.REG[5] = NIT_NULL;
  fra.me.REG[6] = NIT_NULL;
  fra.me.REG[0] = p0;
  fra.me.REG[1] = p1;
  /* global/cha_analysis.nit:94 */
  fra.me.REG[2] = fra.me.REG[0];
  fra.me.REG[3] = fra.me.REG[1];
  /* global/cha_analysis.nit:96 */
  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IStaticCall, ID_icode___icode_base___IStaticCall)) /*cast IStaticCall*/;
  if (UNTAG_Bool(REGB0)) {
    /* global/cha_analysis.nit:98 */
    fra.me.REG[4] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
    if (UNTAG_Bool(REGB0)) {
      nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 98);
    }
    fra.me.REG[5] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
    if (UNTAG_Bool(REGB0)) {
      nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 98);
    }
    fra.me.REG[6] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
    fra.me.REG[6] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[6])(fra.me.REG[6]);
    REGB0 = TAG_Bool(true);
    REGB1 = TAG_Bool(false);
    CALL_global___cha_analysis___ChaBuilder___add_search(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], REGB0, REGB1);
  } else {
    /* global/cha_analysis.nit:99 */
    REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___INew, ID_icode___icode_base___INew)) /*cast INew*/;
    if (UNTAG_Bool(REGB1)) {
      /* global/cha_analysis.nit:101 */
      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
      if (UNTAG_Bool(REGB1)) {
        nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 101);
      }
      fra.me.REG[6] = CALL_icode___icode_base___INew___stype(fra.me.REG[3])(fra.me.REG[3]);
      /* global/cha_analysis.nit:102 */
      fra.me.REG[5] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
      fra.me.REG[5] = CALL_global___cha_analysis___ChaBuilder___program(fra.me.REG[5])(fra.me.REG[5]);
      fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[5])(fra.me.REG[5]);
      fra.me.REG[5] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
      fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[5])(fra.me.REG[5]);
      /* global/cha_analysis.nit:103 */
      fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
      REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[6])(fra.me.REG[6]);
      REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
      if (UNTAG_Bool(REGB1)) {
        /* global/cha_analysis.nit:104 */
        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
        if (UNTAG_Bool(REGB1)) {
          nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 104);
        }
        fra.me.REG[6] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
        fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
        fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
        REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
        if (UNTAG_Bool(REGB1)) {
        } else {
          nit_abort("Cast failed", NULL, LOCATE_global___cha_analysis, 104);
        }
        /* global/cha_analysis.nit:105 */
        fra.me.REG[5] = CALL_program___MMLocalClass___new_instance_iroutine(fra.me.REG[5])(fra.me.REG[5]);
        fra.me.REG[6] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
        /* global/cha_analysis.nit:106 */
        fra.me.REG[5] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
        if (UNTAG_Bool(REGB1)) {
          nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 106);
        }
        fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
        REGB1 = TAG_Bool(false);
        REGB0 = TAG_Bool(false);
        CALL_global___cha_analysis___ChaBuilder___add_search(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], REGB1, REGB0);
      }
    } else {
      /* global/cha_analysis.nit:108 */
      REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ISuper, ID_icode___icode_base___ISuper)) /*cast ISuper*/;
      if (UNTAG_Bool(REGB0)) {
        /* global/cha_analysis.nit:109 */
        fra.me.REG[6] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
        REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
        if (UNTAG_Bool(REGB0)) {
          nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 109);
        }
        fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
        REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
        if (UNTAG_Bool(REGB0)) {
          nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 109);
        }
        fra.me.REG[5] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
        fra.me.REG[5] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[5])(fra.me.REG[5]);
        REGB0 = TAG_Bool(false);
        REGB1 = TAG_Bool(true);
        CALL_global___cha_analysis___ChaBuilder___add_search(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4], fra.me.REG[5], REGB0, REGB1);
      } else {
        /* global/cha_analysis.nit:110 */
        REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ICall, ID_icode___icode_base___ICall)) /*cast ICall*/;
        if (UNTAG_Bool(REGB1)) {
          /* global/cha_analysis.nit:111 */
          fra.me.REG[5] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
          REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
          if (UNTAG_Bool(REGB1)) {
            nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 111);
          }
          fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
          REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
          if (UNTAG_Bool(REGB1)) {
            nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 111);
          }
          fra.me.REG[6] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
          fra.me.REG[6] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[6])(fra.me.REG[6]);
          REGB1 = TAG_Bool(false);
          REGB0 = TAG_Bool(false);
          CALL_global___cha_analysis___ChaBuilder___add_search(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], REGB1, REGB0);
        } else {
          /* global/cha_analysis.nit:112 */
          REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ICheckInstance, ID_icode___icode_base___ICheckInstance)) /*cast ICheckInstance*/;
          if (UNTAG_Bool(REGB0)) {
            /* global/cha_analysis.nit:113 */
            REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
            if (UNTAG_Bool(REGB0)) {
              nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 113);
            }
            fra.me.REG[6] = CALL_icode___icode_base___ICheckInstance___stype(fra.me.REG[3])(fra.me.REG[3]);
            /* global/cha_analysis.nit:114 */
            fra.me.REG[4] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
            fra.me.REG[4] = CALL_global___cha_analysis___ChaBuilder___program(fra.me.REG[4])(fra.me.REG[4]);
            fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
            fra.me.REG[4] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
            fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
            /* global/cha_analysis.nit:115 */
            fra.me.REG[4] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[4])(fra.me.REG[4]);
            /* global/cha_analysis.nit:116 */
            fra.me.REG[6] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
            REGB0 = TAG_Bool(true);
            REGB1 = TAG_Bool(false);
            CALL_global___cha_analysis___ChaBuilder___add_search(fra.me.REG[6])(fra.me.REG[6], NIT_NULL, fra.me.REG[4], REGB0, REGB1);
          } else {
            /* global/cha_analysis.nit:117 */
            REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IInitAttributes, ID_icode___icode_base___IInitAttributes)) /*cast IInitAttributes*/;
            if (UNTAG_Bool(REGB1)) {
              /* global/cha_analysis.nit:118 */
              REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
              if (UNTAG_Bool(REGB1)) {
		nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 118);
              }
              fra.me.REG[3] = CALL_icode___icode_base___IInitAttributes___stype(fra.me.REG[3])(fra.me.REG[3]);
              /* global/cha_analysis.nit:119 */
              fra.me.REG[4] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
              fra.me.REG[4] = CALL_global___cha_analysis___ChaBuilder___program(fra.me.REG[4])(fra.me.REG[4]);
              fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
              fra.me.REG[4] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
              fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
              /* global/cha_analysis.nit:120 */
              fra.me.REG[4] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[4])(fra.me.REG[4]);
              /* global/cha_analysis.nit:121 */
              fra.me.REG[2] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
              REGB1 = TAG_Bool(true);
              REGB0 = TAG_Bool(false);
              CALL_global___cha_analysis___ChaBuilder___add_search(fra.me.REG[2])(fra.me.REG[2], NIT_NULL, fra.me.REG[4], REGB1, REGB0);
            }
          }
        }
      }
    }
  }
  /* global/cha_analysis.nit:123 */
  CALL_SUPER_global___cha_analysis___ChaVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
  stack_frame_head = fra.me.prev;
  return;
}