示例#1
0
val_t hash___Bool___hash(val_t p0){
  struct {struct stack_frame_t me;} 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_hash;
  fra.me.line = 36;
  fra.me.meth = LOCATE_hash___Bool___hash;
  fra.me.has_broke = 0;
  fra.me.REG_size = 0;
  REGB0 = p0;
  /* ./../lib/standard//hash.nit:38 */
  if (UNTAG_Bool(REGB0)) {
    /* ./../lib/standard//hash.nit:39 */
    REGB0 = TAG_Int(1);
    goto label1;
  } else {
    /* ./../lib/standard//hash.nit:41 */
    REGB1 = TAG_Int(0);
    REGB0 = REGB1;
    goto label1;
  }
  label1: while(0);
  stack_frame_head = fra.me.prev;
  return REGB0;
}
 void OC_global___instantiated_type_analysis___Program___dump_not_instantiated_types_4(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   fun_t CREG[1];
   val_t tmp;
     static val_t once_value_5; /* Once value */
     static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_global___instantiated_type_analysis;
   fra.me.line = 0;
   fra.me.meth = LOCATE_global___instantiated_type_analysis___Program___dump_not_instantiated_types;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.closure_ctx = closctx_param;
   fra.me.closure_funs = CREG;
   fra.me.REG[0] = p0;
   CREG[0] = clos_fun0;
   /* global/instantiated_type_analysis.nit:40 */
   fra.me.REG[1] = CALL_global___instantiated_type_analysis___Program___ita(closctx->REG[0])(closctx->REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_global___instantiated_type_analysis, 40);
   }
   REGB0 = CALL_global___instantiated_type_analysis___InstantiatedTypeAnalysis___is_class_instantiated(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* global/instantiated_type_analysis.nit:41 */
     REGB0 = TAG_Int(3);
     fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_5) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
       fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
       once_value_5 = fra.me.REG[2];
       register_static_object(&once_value_5);
     } else fra.me.REG[2] = once_value_5;
     fra.me.REG[2] = fra.me.REG[2];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
     fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     if (!once_value_6) {
       fra.me.REG[0] = BOX_NativeString("\n");
       REGB0 = TAG_Int(1);
       fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
       once_value_6 = fra.me.REG[0];
       register_static_object(&once_value_6);
     } else fra.me.REG[0] = once_value_6;
     fra.me.REG[0] = fra.me.REG[0];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
     CALL_standard___stream___OStream___write(closctx->REG[2])(closctx->REG[2], fra.me.REG[1]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
val_t standard___collection___range___Range___length(val_t p0) {
    struct {
        struct stack_frame_t me;
        val_t MORE_REG[1];
    } 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_standard___collection___range;
    fra.me.line = 56;
    fra.me.meth = LOCATE_standard___collection___range___Range___length;
    fra.me.has_broke = 0;
    fra.me.REG_size = 2;
    fra.me.nitni_local_ref_head = NULL;
    fra.me.REG[0] = NIT_NULL;
    fra.me.REG[1] = NIT_NULL;
    fra.me.REG[0] = p0;
    /* ../lib/standard/collection/range.nit:58 */
    REGB0 = TAG_Bool(ATTR_standard___collection___range___Range____first(fra.me.REG[0])!=NIT_NULL);
    if (UNTAG_Bool(REGB0)) {
    } else {
        nit_abort("Uninitialized attribute %s", "_first", LOCATE_standard___collection___range, 58);
    }
    fra.me.REG[1] = ATTR_standard___collection___range___Range____first(fra.me.REG[0]);
    REGB0 = TAG_Bool(ATTR_standard___collection___range___Range____after(fra.me.REG[0])!=NIT_NULL);
    if (UNTAG_Bool(REGB0)) {
    } else {
        nit_abort("Uninitialized attribute %s", "_after", LOCATE_standard___collection___range, 58);
    }
    fra.me.REG[0] = ATTR_standard___collection___range___Range____after(fra.me.REG[0]);
    REGB0 = CALL_standard___kernel___Discrete___distance(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
    /* ../lib/standard/collection/range.nit:59 */
    REGB1 = TAG_Int(0);
    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
    if (UNTAG_Bool(REGB2)) {
    } else {
        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
    }
    /* ../lib/standard/kernel.nit:234 */
    REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
    /* ../lib/standard/collection/range.nit:59 */
    if (UNTAG_Bool(REGB1)) {
        /* ../lib/standard/collection/range.nit:60 */
        goto label1;
    } else {
        /* ../lib/standard/collection/range.nit:62 */
        REGB1 = TAG_Int(0);
        REGB0 = REGB1;
        goto label1;
    }
label1:
    while(0);
    stack_frame_head = fra.me.prev;
    return REGB0;
}
 void OC_global___reachable_method_analysis___Program___dump_unreachable_methods_5(struct stack_frame_t *closctx, val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
     static val_t once_value_6; /* Once value */
     static val_t once_value_7; /* Once value */
   /* global/reachable_method_analysis.nit:41 */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_global___reachable_method_analysis;
   fra.me.line = 41;
   fra.me.meth = LOCATE_global___reachable_method_analysis___Program___dump_unreachable_methods;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* global/reachable_method_analysis.nit:42 */
   fra.me.REG[1] = CALL_global___reachable_method_analysis___Program___rma(closctx->REG[0])(closctx->REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_global___reachable_method_analysis, 42);
   }
   REGB0 = CALL_global___reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* global/reachable_method_analysis.nit:43 */
     REGB0 = TAG_Int(3);
     fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_6) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
       fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
       once_value_6 = fra.me.REG[2];
       register_static_object(&once_value_6);
     } else fra.me.REG[2] = once_value_6;
     fra.me.REG[2] = fra.me.REG[2];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
     fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     if (!once_value_7) {
       fra.me.REG[0] = BOX_NativeString("\n");
       REGB0 = TAG_Int(1);
       fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
       once_value_7 = fra.me.REG[0];
       register_static_object(&once_value_7);
     } else fra.me.REG[0] = once_value_7;
     fra.me.REG[0] = fra.me.REG[0];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
     CALL_standard___stream___OStream___write(closctx->REG[3])(closctx->REG[3], fra.me.REG[1]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
示例#5
0
void syntax___SrcModuleLoader___process_metamodel(val_t p0, val_t p1, val_t p2){
  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
  val_t REGB0;
  val_t tmp;
  static val_t once_value_1; /* Once value */
  static val_t once_value_2; /* Once value */
  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
  fra.me.file = LOCATE_syntax;
  fra.me.line = 60;
  fra.me.meth = LOCATE_syntax___SrcModuleLoader___process_metamodel;
  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;
  fra.me.REG[2] = p2;
  /* ./syntax//syntax.nit:62 */
  CALL_syntax___MMSrcModule___process_supermodules(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
  /* ./syntax//syntax.nit:63 */
  REGB0 = TAG_Int(3);
  fra.me.REG[0] = NEW_Array_array___Array___with_capacity(REGB0);
  if (!once_value_1) {
    fra.me.REG[3] = BOX_NativeString("Syntax analysis for module: ");
    REGB0 = TAG_Int(28);
    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
    once_value_1 = fra.me.REG[3];
    register_static_object(&once_value_1);
  } else fra.me.REG[3] = once_value_1;
  fra.me.REG[3] = fra.me.REG[3];
  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
  fra.me.REG[3] = CALL_abstractmetamodel___MMModule___name(fra.me.REG[2])(fra.me.REG[2]);
  fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
  if (!once_value_2) {
    fra.me.REG[3] = BOX_NativeString("");
    REGB0 = TAG_Int(0);
    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
    once_value_2 = fra.me.REG[3];
    register_static_object(&once_value_2);
  } else fra.me.REG[3] = once_value_2;
  fra.me.REG[3] = fra.me.REG[3];
  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
  fra.me.REG[0] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
  REGB0 = TAG_Int(2);
  CALL_mmloader___ToolContext___info(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], REGB0);
  /* ./syntax//syntax.nit:64 */
  CALL_syntax___MMSrcModule___process_syntax(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
  stack_frame_head = fra.me.prev;
  return;
}
 void OC_global___remove_out_of_init_get_test___Program___dump_out_of_init_information_4(struct stack_frame_t *closctx, val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   /* global/remove_out_of_init_get_test.nit:44 */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_global___remove_out_of_init_get_test;
   fra.me.line = 44;
   fra.me.meth = LOCATE_global___remove_out_of_init_get_test___Program___dump_out_of_init_information;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* global/remove_out_of_init_get_test.nit:45 */
   fra.me.REG[1] = NEW_IssetCounter_icode___icode_tools___ICodeVisitor___init();
   /* global/remove_out_of_init_get_test.nit:46 */
   CALL_icode___icode_tools___ICodeVisitor___visit_iroutine(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   /* global/remove_out_of_init_get_test.nit:47 */
   REGB0 = CALL_global___remove_out_of_init_get_test___IssetCounter___nb_isset(fra.me.REG[1])(fra.me.REG[1]);
   /* ../lib/standard/kernel.nit:238 */
   REGB0 = TAG_Int(UNTAG_Int(closctx->REG[1])+UNTAG_Int(REGB0));
   /* global/remove_out_of_init_get_test.nit:47 */
   closctx->REG[1] = REGB0;
   stack_frame_head = fra.me.prev;
   return;
 }
示例#7
0
 void OC_abstracttool___MMModule___dump_module_info_8(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;
   val_t REGB0;
   fun_t CREG[1];
   val_t tmp;
   static val_t once_value_9; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_abstracttool;
   fra.me.line = 0;
   fra.me.meth = LOCATE_abstracttool___MMModule___dump_module_info;
   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;
   /* ./abstracttool.nit:108 */
   CALL_abstracttool___MMLocalClass___dump_properties(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
   /* ./abstracttool.nit:109 */
   if (!once_value_9) {
     fra.me.REG[0] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
     fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
     once_value_9 = fra.me.REG[0];
     register_static_object(&once_value_9);
   } else fra.me.REG[0] = once_value_9;
   fra.me.REG[0] = fra.me.REG[0];
   CALL_stream___OStream___write(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
示例#8
0
val_t syntax___SrcModuleLoader___file_type(val_t p0){
  struct {struct stack_frame_t me;} fra;
  val_t REGB0;
  val_t tmp;
  static val_t once_value_1; /* Once value */
  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
  fra.me.file = LOCATE_syntax;
  fra.me.line = 31;
  fra.me.meth = LOCATE_syntax___SrcModuleLoader___file_type;
  fra.me.has_broke = 0;
  fra.me.REG_size = 1;
  fra.me.REG[0] = NIT_NULL;
  fra.me.REG[0] = p0;
  /* ./syntax//syntax.nit:31 */
  if (!once_value_1) {
    fra.me.REG[0] = BOX_NativeString("nit");
    REGB0 = TAG_Int(3);
    fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
    once_value_1 = fra.me.REG[0];
    register_static_object(&once_value_1);
  } else fra.me.REG[0] = once_value_1;
  fra.me.REG[0] = fra.me.REG[0];
  goto label2;
  label2: while(0);
  stack_frame_head = fra.me.prev;
  return fra.me.REG[0];
}
示例#9
0
val_t nit_version___Object___nit_version(val_t p0){
  struct {struct stack_frame_t me;} fra;
  val_t REGB0;
  val_t tmp;
  static val_t once_value_1; /* Once value */
  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
  fra.me.file = LOCATE_nit_version;
  fra.me.line = 3;
  fra.me.meth = LOCATE_nit_version___Object___nit_version;
  fra.me.has_broke = 0;
  fra.me.REG_size = 1;
  fra.me.nitni_local_ref_head = NULL;
  fra.me.REG[0] = NIT_NULL;
  fra.me.REG[0] = p0;
  /* nit_version.nit:3 */
  if (!once_value_1) {
    fra.me.REG[0] = BOX_NativeString("v0.5-590-g649111c_nc3_dirty");
    REGB0 = TAG_Int(27);
    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
    once_value_1 = fra.me.REG[0];
    register_static_object(&once_value_1);
  } else fra.me.REG[0] = once_value_1;
  fra.me.REG[0] = fra.me.REG[0];
  goto label2;
  label2: while(0);
  stack_frame_head = fra.me.prev;
  return fra.me.REG[0];
}
 void OC_global___instantiated_type_analysis___Program___dump_instantiated_types_4(struct stack_frame_t *closctx, val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   static val_t once_value_5; /* Once value */
   static val_t once_value_6; /* Once value */
   /* global/instantiated_type_analysis.nit:29 */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_global___instantiated_type_analysis;
   fra.me.line = 29;
   fra.me.meth = LOCATE_global___instantiated_type_analysis___Program___dump_instantiated_types;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* global/instantiated_type_analysis.nit:30 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_5) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
     fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
     once_value_5 = fra.me.REG[2];
     register_static_object(&once_value_5);
   } else fra.me.REG[2] = once_value_5;
   fra.me.REG[2] = fra.me.REG[2];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   if (!once_value_6) {
     fra.me.REG[0] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
     fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
     once_value_6 = fra.me.REG[0];
     register_static_object(&once_value_6);
   } else fra.me.REG[0] = once_value_6;
   fra.me.REG[0] = fra.me.REG[0];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
   CALL_standard___stream___OStream___write(closctx->REG[2])(closctx->REG[2], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
 }
示例#11
0
int TAG_Byte_Array(uint8* input, NBT_byte_array *output)
{
    int curpos=0;
    curpos+=TAG_Int(&input[curpos], &output->length);
    output->data=new uint8 [output->length];
    memcpy(output->data, &input[curpos], output->length);
    curpos+=output->length;
    return curpos;
}
示例#12
0
/* out/indirect function for exec::NativeProcess::err_fd */
val_t NativeProcess_err_fd___out( val_t recv )
{
bigint orig_return;
val_t trans_return;
orig_return = exec_NativeProcess_NativeProcess_err_fd_0( UNBOX_NativeProcess(recv) );
trans_return = TAG_Int(orig_return);
nitni_local_ref_clean(  );
return trans_return;
}
示例#13
0
/* out/indirect function for exec::NativeString::system */
val_t NativeString_system___out( val_t recv )
{
bigint orig_return;
val_t trans_return;
orig_return = string_NativeString_NativeString_system_0( UNBOX_NativeString(recv) );
trans_return = TAG_Int(orig_return);
nitni_local_ref_clean(  );
return trans_return;
}
示例#14
0
 void OC_standard___math___Collection___rand_2(struct stack_frame_t *closctx, val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
   /* ../lib/standard/math.nit:49 */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___math;
   fra.me.line = 49;
   fra.me.meth = LOCATE_standard___math___Collection___rand;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ../lib/standard/math.nit:50 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(IS_EQUAL_OO(closctx->REG[2],REGB0));
   if (UNTAG_Bool(REGB1)) {
   } else {
     /* ../lib/standard/kernel.nit:227 */
     REGB0 = TAG_Bool((closctx->REG[2])==(REGB0));
     /* ../lib/standard/math.nit:50 */
     REGB1 = REGB0;
   }
   if (UNTAG_Bool(REGB1)) {
     /* ../lib/standard/math.nit:52 */
     closctx->REG[3] = fra.me.REG[0];
     /* ../lib/standard/math.nit:53 */
     closctx->has_broke = 1;
     goto label3;
   } else {
     /* ../lib/standard/math.nit:55 */
     REGB1 = TAG_Int(1);
     /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Int(UNTAG_Int(closctx->REG[2])-UNTAG_Int(REGB1));
     /* ../lib/standard/math.nit:55 */
     closctx->REG[2] = REGB1;
   }
   label3: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
示例#15
0
/* out/indirect function for file::NativeFile::io_close */
val_t NativeFile_io_close___out( val_t recv )
{
NativeFile recv___nitni;
bigint return___nitni;
val_t return___nit;
recv___nitni = UNBOX_NativeFile(recv);
return___nitni = file_NativeFile_NativeFile_io_close_0( recv___nitni );
return___nit = TAG_Int(return___nitni);
nitni_local_ref_clean(  );
return return___nit;
}
示例#16
0
/* out/indirect function for file::FileStat::ctime */
val_t FileStat_ctime___out( val_t recv )
{
FileStat recv___nitni;
bigint return___nitni;
val_t return___nit;
recv___nitni = UNBOX_FileStat(recv);
return___nitni = file_FileStat_FileStat_ctime_0( recv___nitni );
return___nit = TAG_Int(return___nitni);
nitni_local_ref_clean(  );
return return___nit;
}
示例#17
0
nullable_Int stream_Int_as_nullable( bigint value )
{
val_t temp;
nullable_Int out;
out = malloc( sizeof( struct s_nullable_Int ) );
out->ref.val = NIT_NULL;
out->ref.count = 0;
nitni_local_ref_add( (struct nitni_ref *)out );
temp = TAG_Int(value);
out->ref.val = temp;
return out;
}
void global___remove_out_of_init_get_test___IssetCounter___visit_icode(val_t p0, val_t p1){
  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
  val_t REGB0;
  val_t REGB1;
  val_t tmp;
  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
  fra.me.file = LOCATE_global___remove_out_of_init_get_test;
  fra.me.line = 61;
  fra.me.meth = LOCATE_global___remove_out_of_init_get_test___IssetCounter___visit_icode;
  fra.me.has_broke = 0;
  fra.me.REG_size = 4;
  fra.me.nitni_local_ref_head = NULL;
  fra.me.REG[0] = NIT_NULL;
  fra.me.REG[1] = NIT_NULL;
  fra.me.REG[2] = NIT_NULL;
  fra.me.REG[3] = NIT_NULL;
  fra.me.REG[0] = p0;
  fra.me.REG[1] = p1;
  /* global/remove_out_of_init_get_test.nit:61 */
  fra.me.REG[2] = fra.me.REG[0];
  fra.me.REG[3] = fra.me.REG[1];
  /* global/remove_out_of_init_get_test.nit:63 */
  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IAttrIsset, ID_icode___icode_base___IAttrIsset)) /*cast IAttrIsset*/;
  if (UNTAG_Bool(REGB0)) {
    /* global/remove_out_of_init_get_test.nit:64 */
    REGB0 = CALL_global___remove_out_of_init_get_test___IssetCounter___nb_isset(fra.me.REG[2])(fra.me.REG[2]);
    REGB1 = TAG_Int(1);
    /* ../lib/standard/kernel.nit:238 */
    REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
    /* global/remove_out_of_init_get_test.nit:64 */
    ATTR_global___remove_out_of_init_get_test___IssetCounter____nb_isset(fra.me.REG[2]) = REGB1;
  }
  /* global/remove_out_of_init_get_test.nit:67 */
  CALL_SUPER_global___remove_out_of_init_get_test___IssetCounter___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
  stack_frame_head = fra.me.prev;
  return;
}
val_t standard___collection___range___Range___count(val_t p0, val_t p1) {
    struct {
        struct stack_frame_t me;
        val_t MORE_REG[1];
    } 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_standard___collection___range;
    fra.me.line = 34;
    fra.me.meth = LOCATE_standard___collection___range___Range___count;
    fra.me.has_broke = 0;
    fra.me.REG_size = 2;
    fra.me.nitni_local_ref_head = NULL;
    fra.me.REG[0] = NIT_NULL;
    fra.me.REG[1] = NIT_NULL;
    fra.me.REG[0] = p0;
    fra.me.REG[1] = p1;
    /* ../lib/standard/collection/range.nit:36 */
    REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
    if (UNTAG_Bool(REGB0)) {
        /* ../lib/standard/collection/range.nit:37 */
        REGB0 = TAG_Int(1);
        goto label1;
    } else {
        /* ../lib/standard/collection/range.nit:39 */
        REGB1 = TAG_Int(0);
        REGB0 = REGB1;
        goto label1;
    }
label1:
    while(0);
    stack_frame_head = fra.me.prev;
    return REGB0;
}
示例#20
0
/* out/indirect function for string::Sys::native_argc */
val_t Sys_native_argc___out( val_t recv )
{
Sys recv___nitni;
bigint return___nitni;
val_t return___nit;
recv___nitni = malloc( sizeof( struct s_Sys ) );
recv___nitni->ref.val = NIT_NULL;
recv___nitni->ref.count = 0;
nitni_local_ref_add( (struct nitni_ref *)recv___nitni );
recv___nitni->ref.val = recv;
return___nitni = kernel_Sys_Sys_native_argc_0( recv___nitni );
return___nit = TAG_Int(return___nitni);
nitni_local_ref_clean(  );
return return___nit;
}
示例#21
0
val_t hash___Object___hash(val_t p0){
  struct {struct stack_frame_t me;} 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_hash;
  fra.me.line = 20;
  fra.me.meth = LOCATE_hash___Object___hash;
  fra.me.has_broke = 0;
  fra.me.REG_size = 1;
  fra.me.REG[0] = NIT_NULL;
  fra.me.REG[0] = p0;
  /* ./../lib/standard//hash.nit:24 */
  REGB0 = CALL_kernel___Object___object_id(fra.me.REG[0])(fra.me.REG[0]);
  REGB1 = TAG_Int(8);
  /* ./../lib/standard//kernel.nit:219 */
  REGB1 = TAG_Int(UNTAG_Int(REGB0)/UNTAG_Int(REGB1));
  /* ./../lib/standard//hash.nit:24 */
  goto label1;
  label1: while(0);
  stack_frame_head = fra.me.prev;
  return REGB1;
}
示例#22
0
/* out/indirect function for file::NativeFile::io_write */
val_t NativeFile_io_write___out( val_t recv, val_t buf, val_t len )
{
NativeFile recv___nitni;
char * buf___nitni;
bigint len___nitni;
bigint return___nitni;
val_t return___nit;
recv___nitni = UNBOX_NativeFile(recv);
buf___nitni = UNBOX_NativeString(buf);
len___nitni = UNTAG_Int(len);
return___nitni = file_NativeFile_NativeFile_io_write_2( recv___nitni, buf___nitni, len___nitni );
return___nit = TAG_Int(return___nitni);
nitni_local_ref_clean(  );
return return___nit;
}
示例#23
0
/* friendly for array::Array::(abstract_collection::SequenceRead::[]) */
nullable_Object stream_Array__index( Array recv, bigint index )
{
val_t recv___nit;
val_t index___nit;
nullable_Object result___nitni;
val_t result___nit;
recv___nit = recv->ref.val;
index___nit = TAG_Int(index);
result___nitni = malloc( sizeof( struct s_nullable_Object ) );
result___nitni->ref.val = NIT_NULL;
result___nitni->ref.count = 0;
nitni_local_ref_add( (struct nitni_ref *)result___nitni );
result___nit = CALL_standard___collection___abstract_collection___SequenceRead_____bra( recv___nit )( recv___nit, index___nit );
result___nitni->ref.val = result___nit;
return result___nitni;
}
示例#24
0
/* out/indirect function for stream::FDStream::native_close */
val_t FDStream_native_close___out( val_t recv, val_t i )
{
FDStream recv___nitni;
bigint i___nitni;
bigint return___nitni;
val_t return___nit;
recv___nitni = malloc( sizeof( struct s_FDStream ) );
recv___nitni->ref.val = NIT_NULL;
recv___nitni->ref.count = 0;
nitni_local_ref_add( (struct nitni_ref *)recv___nitni );
recv___nitni->ref.val = recv;
i___nitni = UNTAG_Int(i);
return___nitni = stream_FDStream_FDStream_native_close_1( recv___nitni, i___nitni );
return___nit = TAG_Int(return___nitni);
nitni_local_ref_clean(  );
return return___nit;
}
示例#25
0
val_t hash___Char___hash(val_t p0){
  struct {struct stack_frame_t me;} fra;
  val_t REGB0;
  val_t tmp;
  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
  fra.me.file = LOCATE_hash;
  fra.me.line = 32;
  fra.me.meth = LOCATE_hash___Char___hash;
  fra.me.has_broke = 0;
  fra.me.REG_size = 0;
  REGB0 = p0;
  /* ./../lib/standard//kernel.nit:382 */
  REGB0 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
  /* ./../lib/standard//hash.nit:32 */
  goto label1;
  label1: while(0);
  stack_frame_head = fra.me.prev;
  return REGB0;
}
示例#26
0
val_t ffi___c___ExternCode___is_c_header(val_t p0){
  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
  val_t REGB0;
  val_t REGB1;
  val_t tmp;
  static val_t once_value_1; /* Once value */
  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
  fra.me.file = LOCATE_ffi___c;
  fra.me.line = 30;
  fra.me.meth = LOCATE_ffi___c___ExternCode___is_c_header;
  fra.me.has_broke = 0;
  fra.me.REG_size = 2;
  fra.me.nitni_local_ref_head = NULL;
  fra.me.REG[0] = NIT_NULL;
  fra.me.REG[1] = NIT_NULL;
  fra.me.REG[0] = p0;
  /* ffi/c.nit:30 */
  fra.me.REG[0] = CALL_ffi___ffi_base___ExternCode___language_lowered(fra.me.REG[0])(fra.me.REG[0]);
  if (!once_value_1) {
    fra.me.REG[1] = BOX_NativeString("c header");
    REGB0 = TAG_Int(8);
    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
    once_value_1 = fra.me.REG[1];
    register_static_object(&once_value_1);
  } else fra.me.REG[1] = once_value_1;
  fra.me.REG[1] = fra.me.REG[1];
  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[0]));
  if (UNTAG_Bool(REGB0)) {
  } else {
    REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
    if (UNTAG_Bool(REGB1)) {
      REGB1 = TAG_Bool(0);
      REGB0 = REGB1;
    } else {
      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
      REGB0 = REGB1;
    }
  }
  goto label2;
  label2: while(0);
  stack_frame_head = fra.me.prev;
  return REGB0;
}
 void OC_global___remove_out_of_init_get_test___Program___optimize_out_of_init_getters_1(struct stack_frame_t *closctx, val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
   /* global/remove_out_of_init_get_test.nit:30 */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_global___remove_out_of_init_get_test;
   fra.me.line = 30;
   fra.me.meth = LOCATE_global___remove_out_of_init_get_test___Program___optimize_out_of_init_getters;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* global/remove_out_of_init_get_test.nit:31 */
   fra.me.REG[1] = CALL_global___reachable_from_init_method_analysis___Program___rfima(closctx->REG[0])(closctx->REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_global___remove_out_of_init_get_test, 31);
   }
   REGB0 = CALL_global___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* global/remove_out_of_init_get_test.nit:32 */
     fra.me.REG[1] = NEW_GetterTestRemover_icode___icode_tools___ICodeVisitor___init();
     /* global/remove_out_of_init_get_test.nit:33 */
     CALL_icode___icode_tools___ICodeVisitor___visit_iroutine(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     /* global/remove_out_of_init_get_test.nit:34 */
     REGB0 = CALL_global___remove_out_of_init_get_test___Program___nb_optimized_isset(closctx->REG[0])(closctx->REG[0]);
     REGB1 = CALL_global___remove_out_of_init_get_test___GetterTestRemover___nb_optimized_isset(fra.me.REG[1])(fra.me.REG[1]);
     /* ../lib/standard/kernel.nit:238 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
     /* global/remove_out_of_init_get_test.nit:34 */
     ATTR_global___remove_out_of_init_get_test___Program____nb_optimized_isset(closctx->REG[0]) = REGB1;
   }
   stack_frame_head = fra.me.prev;
   return;
 }
示例#28
0
/* out/indirect function for stream::FDStream::native_write */
val_t FDStream_native_write___out( val_t recv, val_t i, val_t buf, val_t len )
{
FDStream recv___nitni;
bigint i___nitni;
char * buf___nitni;
bigint len___nitni;
bigint return___nitni;
val_t return___nit;
recv___nitni = malloc( sizeof( struct s_FDStream ) );
recv___nitni->ref.val = NIT_NULL;
recv___nitni->ref.count = 0;
nitni_local_ref_add( (struct nitni_ref *)recv___nitni );
recv___nitni->ref.val = recv;
i___nitni = UNTAG_Int(i);
buf___nitni = UNBOX_NativeString(buf);
len___nitni = UNTAG_Int(len);
return___nitni = stream_FDStream_FDStream_native_write_3( recv___nitni, i___nitni, buf___nitni, len___nitni );
return___nit = TAG_Int(return___nitni);
nitni_local_ref_clean(  );
return return___nit;
}
示例#29
0
void native_interface___MMSrcModule___compile_separate_module(val_t p0, val_t p1){
  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
  val_t REGB0;
  val_t tmp;
    static val_t once_value_1; /* Once value */
    static val_t once_value_2; /* Once value */
    static val_t once_value_3; /* Once value */
  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
  fra.me.file = LOCATE_native_interface;
  fra.me.line = 24;
  fra.me.meth = LOCATE_native_interface___MMSrcModule___compile_separate_module;
  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;
  /* native_interface/native_interface.nit:24 */
  fra.me.REG[2] = fra.me.REG[0];
  fra.me.REG[3] = fra.me.REG[1];
  /* native_interface/native_interface.nit:26 */
  REGB0 = CALL_metamodel___abstractmetamodel___MMModule___is_extern_hybrid(fra.me.REG[2])(fra.me.REG[2]);
  if (UNTAG_Bool(REGB0)) {
    /* native_interface/native_interface.nit:27 */
    fra.me.REG[4] = NEW_FrontierVisitor_native_interface___frontier___FrontierVisitor___init(fra.me.REG[2], fra.me.REG[3]);
    /* native_interface/native_interface.nit:28 */
    CALL_native_interface___frontier___MMSrcModule___compile_frontier(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
    /* native_interface/native_interface.nit:30 */
    CALL_native_interface___frontier___FrontierVisitor___compile_cached(fra.me.REG[4])(fra.me.REG[4]);
    /* native_interface/native_interface.nit:32 */
    REGB0 = TAG_Int(5);
    fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
    if (!once_value_1) {
      fra.me.REG[6] = BOX_NativeString("");
      REGB0 = TAG_Int(0);
      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
      once_value_1 = fra.me.REG[6];
      register_static_object(&once_value_1);
    } else fra.me.REG[6] = once_value_1;
    fra.me.REG[6] = fra.me.REG[6];
    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
    fra.me.REG[3] = CALL_compiling___compiling_base___CProgram___compdir(fra.me.REG[3])(fra.me.REG[3]);
    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
    if (!once_value_2) {
      fra.me.REG[3] = BOX_NativeString("/");
      REGB0 = TAG_Int(1);
      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
      once_value_2 = fra.me.REG[3];
      register_static_object(&once_value_2);
    } else fra.me.REG[3] = once_value_2;
    fra.me.REG[3] = fra.me.REG[3];
    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
    fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___name(fra.me.REG[2])(fra.me.REG[2]);
    fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
    if (!once_value_3) {
      fra.me.REG[2] = BOX_NativeString("");
      REGB0 = TAG_Int(0);
      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
      once_value_3 = fra.me.REG[2];
      register_static_object(&once_value_3);
    } else fra.me.REG[2] = once_value_3;
    fra.me.REG[2] = fra.me.REG[2];
    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
    fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
    /* native_interface/native_interface.nit:33 */
    CALL_native_interface___frontier___FrontierVisitor___write_to_files(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
  }
  /* native_interface/native_interface.nit:36 */
  CALL_SUPER_native_interface___MMSrcModule___compile_separate_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
  stack_frame_head = fra.me.prev;
  return;
}
示例#30
0
val_t ffi___c___ExternCode___is_c_body(val_t p0){
  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
  val_t REGB0;
  val_t REGB1;
  val_t REGB2;
  val_t tmp;
    static val_t once_value_1; /* Once value */
    static val_t once_value_2; /* Once value */
  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
  fra.me.file = LOCATE_ffi___c;
  fra.me.line = 27;
  fra.me.meth = LOCATE_ffi___c___ExternCode___is_c_body;
  fra.me.has_broke = 0;
  fra.me.REG_size = 3;
  fra.me.nitni_local_ref_head = NULL;
  fra.me.REG[0] = NIT_NULL;
  fra.me.REG[1] = NIT_NULL;
  fra.me.REG[2] = NIT_NULL;
  fra.me.REG[0] = p0;
  /* ffi/c.nit:27 */
  fra.me.REG[1] = CALL_syntax___extern_inline___ExternCode___language(fra.me.REG[0])(fra.me.REG[0]);
  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
  if (UNTAG_Bool(REGB0)) {
  } else {
    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
    if (UNTAG_Bool(REGB1)) {
      REGB1 = TAG_Bool(0);
      REGB0 = REGB1;
    } else {
      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
      REGB0 = REGB1;
    }
  }
  if (UNTAG_Bool(REGB0)) {
    REGB0 = TAG_Bool(1);
  } else {
    /* ffi/c.nit:28 */
    fra.me.REG[1] = CALL_ffi___ffi_base___ExternCode___language_lowered(fra.me.REG[0])(fra.me.REG[0]);
    if (!once_value_1) {
      fra.me.REG[2] = BOX_NativeString("c");
      REGB1 = TAG_Int(1);
      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
      once_value_1 = fra.me.REG[2];
      register_static_object(&once_value_1);
    } else fra.me.REG[2] = once_value_1;
    fra.me.REG[2] = fra.me.REG[2];
    REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[2],fra.me.REG[1]));
    if (UNTAG_Bool(REGB1)) {
    } else {
      REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
      if (UNTAG_Bool(REGB2)) {
        REGB2 = TAG_Bool(0);
        REGB1 = REGB2;
      } else {
        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
        REGB1 = REGB2;
      }
    }
    /* ffi/c.nit:27 */
    REGB0 = REGB1;
  }
  if (UNTAG_Bool(REGB0)) {
    REGB0 = TAG_Bool(1);
  } else {
    /* ffi/c.nit:28 */
    fra.me.REG[0] = CALL_ffi___ffi_base___ExternCode___language_lowered(fra.me.REG[0])(fra.me.REG[0]);
    if (!once_value_2) {
      fra.me.REG[2] = BOX_NativeString("c body");
      REGB1 = TAG_Int(6);
      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
      once_value_2 = fra.me.REG[2];
      register_static_object(&once_value_2);
    } else fra.me.REG[2] = once_value_2;
    fra.me.REG[2] = fra.me.REG[2];
    REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[2],fra.me.REG[0]));
    if (UNTAG_Bool(REGB1)) {
    } else {
      REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
      if (UNTAG_Bool(REGB2)) {
        REGB2 = TAG_Bool(0);
        REGB1 = REGB2;
      } else {
        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
        REGB1 = REGB2;
      }
    }
    /* ffi/c.nit:27 */
    REGB0 = REGB1;
  }
  goto label3;
  label3: while(0);
  stack_frame_head = fra.me.prev;
  return REGB0;
}