X-Git-Url: http://nitlanguage.org diff --git a/c_src/sorter._sep.c b/c_src/sorter._sep.c index 6184777..cad08f7 100644 --- a/c_src/sorter._sep.c +++ b/c_src/sorter._sep.c @@ -1,386 +1,742 @@ /* This C file is generated by NIT to compile module sorter. */ #include "sorter._sep.h" -val_t sorter___AbstractSorter___compare(val_t self, val_t param0, val_t param1) { - struct trace_t trace = {NULL, NULL, 22, LOCATE_sorter___AbstractSorter___compare}; - val_t *variable = NULL; - void **closurevariable = NULL; - trace.prev = tracehead; tracehead = &trace; - trace.file = LOCATE_sorter; - fprintf(stderr, "Deferred method called"); - fprintf(stderr, " (%s:%d)\n", LOCATE_sorter, 22); - nit_exit(1); - tracehead = trace.prev; +val_t sorter___AbstractSorter___compare(val_t p0, val_t p1, val_t p2){ + struct {struct stack_frame_t me;} fra; + val_t tmp; + fra.me.prev = stack_frame_head; stack_frame_head = &fra.me; + fra.me.file = LOCATE_sorter; + fra.me.line = 22; + fra.me.meth = LOCATE_sorter___AbstractSorter___compare; + fra.me.has_broke = 0; + fra.me.REG_size = 0; + /* ./../lib/standard//collection//sorter.nit:22 */ + nit_abort("Deferred method called", NULL, LOCATE_sorter, 22); + stack_frame_head = fra.me.prev; return NIT_NULL; } -void sorter___AbstractSorter___sort(val_t self, val_t param0) { - struct trace_t trace = {NULL, NULL, 29, LOCATE_sorter___AbstractSorter___sort}; - val_t variable[5]; - void **closurevariable = NULL; - trace.prev = tracehead; tracehead = &trace; - trace.file = LOCATE_sorter; - variable[0] = self; - variable[1] = param0; - variable[3] = variable[0]; - variable[4] = CALL_abstract_collection___Collection___length( variable[1] /*array*/)( variable[1] /*array*/) /*AbstractArray::length*/; - variable[4] = TAG_Int(UNTAG_Int(variable[4])-UNTAG_Int( TAG_Int(1))); - CALL_sorter___AbstractSorter___sub_sort(variable[3])(variable[3], variable[1] /*array*/, TAG_Int(0), variable[4]) /*AbstractSorter::sub_sort*/; - return_label0: while(false); - tracehead = trace.prev; +void sorter___AbstractSorter___sort(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 REGB2; + val_t tmp; + fra.me.prev = stack_frame_head; stack_frame_head = &fra.me; + fra.me.file = LOCATE_sorter; + fra.me.line = 29; + fra.me.meth = LOCATE_sorter___AbstractSorter___sort; + 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; + fra.me.REG[1] = p1; + /* ./../lib/standard//collection//sorter.nit:30 */ + REGB0 = TAG_Int(0); + /* ./../lib/standard//collection//array.nit:23 */ + REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL); + if (UNTAG_Bool(REGB1)) { + } else { + nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23); + } + REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]); + /* ./../lib/standard//collection//sorter.nit:30 */ + REGB2 = TAG_Int(1); + /* ./../lib/standard//kernel.nit:217 */ + REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2)); + /* ./../lib/standard//collection//sorter.nit:30 */ + CALL_sorter___AbstractSorter___sub_sort(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0, REGB2); + stack_frame_head = fra.me.prev; return; } -void sorter___AbstractSorter___sub_sort(val_t self, val_t param0, val_t param1, val_t param2) { - struct trace_t trace = {NULL, NULL, 32, LOCATE_sorter___AbstractSorter___sub_sort}; - val_t variable[6]; - void **closurevariable = NULL; - trace.prev = tracehead; tracehead = &trace; - trace.file = LOCATE_sorter; - variable[0] = self; - variable[1] = param0; - variable[2] = param1; - variable[3] = param2; - variable[5] = TAG_Bool(UNTAG_Int( variable[2] /*from*/)>=UNTAG_Int( variable[3] /*to*/)); - if (UNTAG_Bool(variable[5])) { /*if*/ - goto return_label1; - } else { /*if*/ - variable[5] = TAG_Int(UNTAG_Int( variable[2] /*from*/)+UNTAG_Int( TAG_Int(7))); - variable[5] = TAG_Bool(UNTAG_Int(variable[5])=UNTAG_Int(REGB1)); + /* ./../lib/standard//collection//sorter.nit:35 */ + if (UNTAG_Bool(REGB2)) { + /* ./../lib/standard//collection//sorter.nit:36 */ + goto label1; + } else { + /* ./../lib/standard//collection//sorter.nit:37 */ + REGB2 = TAG_Int(7); + /* ./../lib/standard//kernel.nit:215 */ + REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2)); + /* ./../lib/standard//kernel.nit:212 */ + REGB2 = TAG_Bool(UNTAG_Int(REGB2)=UNTAG_Int( TAG_Int(0))); - variable[10] = variable[9]; - if (UNTAG_Bool(variable[10])) { /* and */ - variable[10] = variable[6]; - variable[10] = ATTR_array___AbstractArray____length(variable[10]) /*AbstractArray::_length*/; - variable[10] = TAG_Bool(UNTAG_Int( variable[7] /*index*/)=UNTAG_Int(REGB3)); + /* ./../lib/standard//collection//array.nit:245 */ + if (UNTAG_Bool(REGB3)) { + REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL); + if (UNTAG_Bool(REGB3)) { + } else { + nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245); + } + REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]); + /* ./../lib/standard//kernel.nit:212 */ + REGB3 = TAG_Bool(UNTAG_Int(REGB2)UNTAG_Int( variable[6] /*i*/)); - if (!UNTAG_Bool(variable[8])) break; /* while*/ - while (true) { /*while*/ - variable[8] = TAG_Bool(UNTAG_Int( variable[6] /*i*/)<=UNTAG_Int( variable[3] /*to*/)); - variable[9] = variable[8]; - if (UNTAG_Bool(variable[9])) { /* and */ - variable[9] = variable[0]; - variable[10] = variable[1] /*array*/; - variable[11] = variable[6] /*i*/; - variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)>=UNTAG_Int( TAG_Int(0))); - variable[14] = variable[13]; - if (UNTAG_Bool(variable[14])) { /* and */ - variable[14] = variable[10]; - variable[14] = ATTR_array___AbstractArray____length(variable[14]) /*AbstractArray::_length*/; - variable[14] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)val[UNTAG_Int(REGB2)]; + /* ./../lib/standard//collection//array.nit:246 */ + goto label1; + label1: while(0); + /* ./../lib/standard//collection//sorter.nit:48 */ + REGB2 = REGB0; + /* ./../lib/standard//collection//sorter.nit:49 */ + REGB3 = REGB1; + /* ./../lib/standard//collection//sorter.nit:50 */ + while(1) { + /* ./../lib/standard//kernel.nit:214 */ + REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2)); + /* ./../lib/standard//collection//sorter.nit:50 */ + if (UNTAG_Bool(REGB4)) { + /* ./../lib/standard//collection//sorter.nit:51 */ + while(1) { + /* ./../lib/standard//kernel.nit:211 */ + REGB4 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB1)); + /* ./../lib/standard//collection//sorter.nit:51 */ + if (UNTAG_Bool(REGB4)) { + /* ./../lib/standard//collection//array.nit:243 */ + fra.me.REG[3] = fra.me.REG[1]; + REGB4 = REGB2; + /* ./../lib/standard//collection//array.nit:245 */ + REGB5 = TAG_Int(0); + /* ./../lib/standard//kernel.nit:213 */ + REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5)); + /* ./../lib/standard//collection//array.nit:245 */ + if (UNTAG_Bool(REGB5)) { + REGB5 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL); + if (UNTAG_Bool(REGB5)) { + } else { + nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245); + } + REGB5 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]); + /* ./../lib/standard//kernel.nit:212 */ + REGB5 = TAG_Bool(UNTAG_Int(REGB4)val[UNTAG_Int(REGB4)]; + /* ./../lib/standard//collection//array.nit:246 */ + goto label2; + label2: while(0); + /* ./../lib/standard//collection//sorter.nit:51 */ + REGB4 = CALL_sorter___AbstractSorter___compare(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]); + REGB5 = TAG_Int(0); + /* ./../lib/standard//kernel.nit:211 */ + REGB5 = TAG_Bool(UNTAG_Int(REGB4)<=UNTAG_Int(REGB5)); + } else { + /* ./../lib/standard//collection//sorter.nit:51 */ + REGB4 = TAG_Bool(false); + REGB5 = REGB4; } - variable[13] = variable[14]; - if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_sorter, 229); nit_exit(1);} - variable[13] = variable[10]; - variable[13] = ATTR_array___Array____items(variable[13]) /*Array::_items*/; - variable[13] = UNBOX_NativeArray(variable[13])[UNTAG_Int( variable[11] /*index*/)]; - variable[12] = variable[13]; - goto return_label6; - return_label6: while(false); - variable[10] = variable[12]; - variable[9] = CALL_sorter___AbstractSorter___compare(variable[9])(variable[9], variable[10], variable[5] /*pivot*/) /*AbstractSorter::compare*/; - variable[9] = TAG_Bool(UNTAG_Int(variable[9])<=UNTAG_Int( TAG_Int(0))); - } - variable[8] = variable[9]; - if (!UNTAG_Bool(variable[8])) break; /* while*/ - variable[6] = TAG_Int(UNTAG_Int(variable[6])+UNTAG_Int( TAG_Int(1))) /*i*/; - continue_5: while(0); - } - break_5: while(0); - while (true) { /*while*/ - variable[8] = TAG_Bool(UNTAG_Int( variable[7] /*j*/)>UNTAG_Int( variable[6] /*i*/)); - variable[9] = variable[8]; - if (UNTAG_Bool(variable[9])) { /* and */ - variable[9] = variable[0]; - variable[10] = variable[1] /*array*/; - variable[11] = variable[7] /*j*/; - variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)>=UNTAG_Int( TAG_Int(0))); - variable[14] = variable[13]; - if (UNTAG_Bool(variable[14])) { /* and */ - variable[14] = variable[10]; - variable[14] = ATTR_array___AbstractArray____length(variable[14]) /*AbstractArray::_length*/; - variable[14] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)=UNTAG_Int( TAG_Int(0))); } - variable[8] = variable[9]; - if (!UNTAG_Bool(variable[8])) break; /* while*/ - variable[7] = TAG_Int(UNTAG_Int(variable[7])-UNTAG_Int( TAG_Int(1))) /*j*/; - continue_7: while(0); - } - break_7: while(0); - variable[8] = TAG_Bool(UNTAG_Int( variable[7] /*j*/)>UNTAG_Int( variable[6] /*i*/)); - if (UNTAG_Bool(variable[8])) { /*if*/ - variable[9] = variable[1] /*array*/; - variable[10] = variable[6] /*i*/; - variable[12] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)>=UNTAG_Int( TAG_Int(0))); - variable[13] = variable[12]; - if (UNTAG_Bool(variable[13])) { /* and */ - variable[13] = variable[9]; - variable[13] = ATTR_array___AbstractArray____length(variable[13]) /*AbstractArray::_length*/; - variable[13] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)UNTAG_Int(REGB2)); + /* ./../lib/standard//collection//sorter.nit:52 */ + if (UNTAG_Bool(REGB5)) { + /* ./../lib/standard//collection//array.nit:243 */ + fra.me.REG[3] = fra.me.REG[1]; + REGB5 = REGB3; + /* ./../lib/standard//collection//array.nit:245 */ + REGB4 = TAG_Int(0); + /* ./../lib/standard//kernel.nit:213 */ + REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4)); + /* ./../lib/standard//collection//array.nit:245 */ + if (UNTAG_Bool(REGB4)) { + REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL); + if (UNTAG_Bool(REGB4)) { + } else { + nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245); + } + REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]); + /* ./../lib/standard//kernel.nit:212 */ + REGB4 = TAG_Bool(UNTAG_Int(REGB5)val[UNTAG_Int(REGB5)]; + /* ./../lib/standard//collection//array.nit:246 */ + goto label4; + label4: while(0); + /* ./../lib/standard//collection//sorter.nit:52 */ + REGB5 = CALL_sorter___AbstractSorter___compare(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]); + REGB4 = TAG_Int(0); + /* ./../lib/standard//kernel.nit:213 */ + REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4)); + } else { + /* ./../lib/standard//collection//sorter.nit:52 */ + REGB5 = TAG_Bool(false); + REGB4 = REGB5; + } + if (UNTAG_Bool(REGB4)) { + REGB4 = TAG_Int(1); + /* ./../lib/standard//kernel.nit:217 */ + REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB4)); + /* ./../lib/standard//collection//sorter.nit:52 */ + REGB3 = REGB4; + } else { + goto label5; + } } - variable[12] = variable[13]; - if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_sorter, 229); nit_exit(1);} - variable[12] = variable[9]; - variable[12] = ATTR_array___Array____items(variable[12]) /*Array::_items*/; - variable[12] = UNBOX_NativeArray(variable[12])[UNTAG_Int( variable[10] /*index*/)]; - variable[11] = variable[12]; - goto return_label9; - return_label9: while(false); - variable[9] = variable[11]; - variable[8] = variable[9]; - variable[9] = variable[1] /*array*/; - variable[10] = variable[7] /*j*/; - variable[12] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)>=UNTAG_Int( TAG_Int(0))); - variable[13] = variable[12]; - if (UNTAG_Bool(variable[13])) { /* and */ - variable[13] = variable[9]; - variable[13] = ATTR_array___AbstractArray____length(variable[13]) /*AbstractArray::_length*/; - variable[13] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)UNTAG_Int(REGB2)); + /* ./../lib/standard//collection//sorter.nit:53 */ + if (UNTAG_Bool(REGB4)) { + /* ./../lib/standard//collection//array.nit:243 */ + fra.me.REG[3] = fra.me.REG[1]; + REGB4 = REGB2; + /* ./../lib/standard//collection//array.nit:245 */ + REGB5 = TAG_Int(0); + /* ./../lib/standard//kernel.nit:213 */ + REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5)); + /* ./../lib/standard//collection//array.nit:245 */ + if (UNTAG_Bool(REGB5)) { + REGB5 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL); + if (UNTAG_Bool(REGB5)) { + } else { + nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245); + } + REGB5 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]); + /* ./../lib/standard//kernel.nit:212 */ + REGB5 = TAG_Bool(UNTAG_Int(REGB4)val[UNTAG_Int(REGB4)]; + /* ./../lib/standard//collection//array.nit:246 */ + goto label6; + label6: while(0); + /* ./../lib/standard//collection//array.nit:243 */ + fra.me.REG[4] = fra.me.REG[1]; + REGB4 = REGB3; + /* ./../lib/standard//collection//array.nit:245 */ + REGB5 = TAG_Int(0); + /* ./../lib/standard//kernel.nit:213 */ + REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5)); + /* ./../lib/standard//collection//array.nit:245 */ + if (UNTAG_Bool(REGB5)) { + REGB5 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL); + if (UNTAG_Bool(REGB5)) { + } else { + nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245); + } + REGB5 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]); + /* ./../lib/standard//kernel.nit:212 */ + REGB5 = TAG_Bool(UNTAG_Int(REGB4)val[UNTAG_Int(REGB4)]; + /* ./../lib/standard//collection//array.nit:246 */ + goto label7; + label7: while(0); + /* ./../lib/standard//collection//sorter.nit:55 */ + CALL_abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB2, fra.me.REG[4]); + /* ./../lib/standard//collection//sorter.nit:56 */ + CALL_abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB3, fra.me.REG[3]); } - variable[12] = variable[13]; - if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_sorter, 229); nit_exit(1);} - variable[12] = variable[9]; - variable[12] = ATTR_array___Array____items(variable[12]) /*Array::_items*/; - variable[12] = UNBOX_NativeArray(variable[12])[UNTAG_Int( variable[10] /*index*/)]; - variable[11] = variable[12]; - goto return_label10; - return_label10: while(false); - variable[9] = variable[11]; - CALL_abstract_collection___Map_____braeq( variable[1] /*array*/)( variable[1] /*array*/, variable[6] /*i*/, variable[9]) /*Array::[]=*/; - CALL_abstract_collection___Map_____braeq( variable[1] /*array*/)( variable[1] /*array*/, variable[7] /*j*/, variable[8] /*t*/) /*Array::[]=*/; + } else { + /* ./../lib/standard//collection//sorter.nit:50 */ + goto label8; + } + } + label8: while(0); + /* ./../lib/standard//collection//sorter.nit:59 */ + REGB3 = TAG_Int(1); + /* ./../lib/standard//kernel.nit:217 */ + REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3)); + /* ./../lib/standard//collection//array.nit:243 */ + fra.me.REG[3] = fra.me.REG[1]; + /* ./../lib/standard//collection//array.nit:245 */ + REGB4 = TAG_Int(0); + /* ./../lib/standard//kernel.nit:213 */ + REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4)); + /* ./../lib/standard//collection//array.nit:245 */ + if (UNTAG_Bool(REGB4)) { + REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL); + if (UNTAG_Bool(REGB4)) { + } else { + nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245); } - continue_4: while(0); + REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]); + /* ./../lib/standard//kernel.nit:212 */ + REGB4 = TAG_Bool(UNTAG_Int(REGB3)=UNTAG_Int( TAG_Int(0))); - variable[13] = variable[12]; - if (UNTAG_Bool(variable[13])) { /* and */ - variable[13] = variable[9]; - variable[13] = ATTR_array___AbstractArray____length(variable[13]) /*AbstractArray::_length*/; - variable[13] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)val[UNTAG_Int(REGB3)]; + /* ./../lib/standard//collection//array.nit:246 */ + goto label9; + label9: while(0); + /* ./../lib/standard//collection//sorter.nit:59 */ + CALL_abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[3]); + /* ./../lib/standard//collection//sorter.nit:60 */ + REGB3 = TAG_Int(1); + /* ./../lib/standard//kernel.nit:217 */ + REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3)); + /* ./../lib/standard//collection//sorter.nit:60 */ + CALL_abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB3, fra.me.REG[2]); + /* ./../lib/standard//collection//sorter.nit:61 */ + REGB3 = TAG_Int(2); + /* ./../lib/standard//kernel.nit:217 */ + REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3)); + /* ./../lib/standard//collection//sorter.nit:61 */ + CALL_sorter___AbstractSorter___sub_sort(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0, REGB3); + /* ./../lib/standard//collection//sorter.nit:62 */ + CALL_sorter___AbstractSorter___sub_sort(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB2, REGB1); + stack_frame_head = fra.me.prev; return; } -void sorter___AbstractSorter___bubble_sort(val_t self, val_t param0, val_t param1, val_t param2) { - struct trace_t trace = {NULL, NULL, 65, LOCATE_sorter___AbstractSorter___bubble_sort}; - val_t variable[15]; - void **closurevariable = NULL; - trace.prev = tracehead; tracehead = &trace; - trace.file = LOCATE_sorter; - variable[0] = self; - variable[1] = param0; - variable[2] = param1; - variable[3] = param2; - variable[5] = variable[2] /*from*/; - while (true) { /*while*/ - variable[6] = TAG_Bool(UNTAG_Int( variable[5] /*i*/)=UNTAG_Int( TAG_Int(0))); - variable[12] = variable[11]; - if (UNTAG_Bool(variable[12])) { /* and */ - variable[12] = variable[8]; - variable[12] = ATTR_array___AbstractArray____length(variable[12]) /*AbstractArray::_length*/; - variable[12] = TAG_Bool(UNTAG_Int( variable[9] /*index*/)=UNTAG_Int( TAG_Int(0))); - variable[14] = variable[13]; - if (UNTAG_Bool(variable[14])) { /* and */ - variable[14] = variable[10]; - variable[14] = ATTR_array___AbstractArray____length(variable[14]) /*AbstractArray::_length*/; - variable[14] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)=UNTAG_Int(REGB4)); + /* ./../lib/standard//collection//array.nit:245 */ + if (UNTAG_Bool(REGB4)) { + REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL); + if (UNTAG_Bool(REGB4)) { + } else { + nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245); + } + REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]); + /* ./../lib/standard//kernel.nit:212 */ + REGB4 = TAG_Bool(UNTAG_Int(REGB3)UNTAG_Int( TAG_Int(0))); - if (UNTAG_Bool(variable[9])) { /*if*/ - variable[6] = variable[8] /*j*/ /*min=*/; - variable[9] = variable[1] /*array*/; - variable[10] = variable[8] /*j*/; - variable[12] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)>=UNTAG_Int( TAG_Int(0))); - variable[13] = variable[12]; - if (UNTAG_Bool(variable[13])) { /* and */ - variable[13] = variable[9]; - variable[13] = ATTR_array___AbstractArray____length(variable[13]) /*AbstractArray::_length*/; - variable[13] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)val[UNTAG_Int(REGB3)]; + /* ./../lib/standard//collection//array.nit:246 */ + goto label1; + label1: while(0); + /* ./../lib/standard//collection//sorter.nit:72 */ + REGB3 = REGB0; + /* ./../lib/standard//collection//sorter.nit:73 */ + while(1) { + /* ./../lib/standard//kernel.nit:211 */ + REGB4 = TAG_Bool(UNTAG_Int(REGB3)<=UNTAG_Int(REGB1)); + /* ./../lib/standard//collection//sorter.nit:73 */ + if (UNTAG_Bool(REGB4)) { + /* ./../lib/standard//collection//array.nit:243 */ + fra.me.REG[3] = fra.me.REG[1]; + REGB4 = REGB3; + /* ./../lib/standard//collection//array.nit:245 */ + REGB5 = TAG_Int(0); + /* ./../lib/standard//kernel.nit:213 */ + REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5)); + /* ./../lib/standard//collection//array.nit:245 */ + if (UNTAG_Bool(REGB5)) { + REGB5 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL); + if (UNTAG_Bool(REGB5)) { + } else { + nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245); + } + REGB5 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]); + /* ./../lib/standard//kernel.nit:212 */ + REGB5 = TAG_Bool(UNTAG_Int(REGB4)val[UNTAG_Int(REGB4)]; + /* ./../lib/standard//collection//array.nit:246 */ + goto label2; + label2: while(0); + /* ./../lib/standard//collection//sorter.nit:74 */ + REGB4 = CALL_sorter___AbstractSorter___compare(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]); + REGB5 = TAG_Int(0); + /* ./../lib/standard//kernel.nit:214 */ + REGB5 = TAG_Bool(UNTAG_Int(REGB4)>UNTAG_Int(REGB5)); + /* ./../lib/standard//collection//sorter.nit:74 */ + if (UNTAG_Bool(REGB5)) { + /* ./../lib/standard//collection//sorter.nit:75 */ + REGB2 = REGB3; + /* ./../lib/standard//collection//array.nit:243 */ + fra.me.REG[3] = fra.me.REG[1]; + REGB5 = REGB3; + /* ./../lib/standard//collection//array.nit:245 */ + REGB4 = TAG_Int(0); + /* ./../lib/standard//kernel.nit:213 */ + REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4)); + /* ./../lib/standard//collection//array.nit:245 */ + if (UNTAG_Bool(REGB4)) { + REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL); + if (UNTAG_Bool(REGB4)) { + } else { + nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245); + } + REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]); + /* ./../lib/standard//kernel.nit:212 */ + REGB4 = TAG_Bool(UNTAG_Int(REGB5)val[UNTAG_Int(REGB5)]; + /* ./../lib/standard//collection//array.nit:246 */ + goto label3; + label3: while(0); + /* ./../lib/standard//collection//sorter.nit:76 */ + fra.me.REG[2] = fra.me.REG[3]; + } + /* ./../lib/standard//collection//sorter.nit:78 */ + REGB5 = TAG_Int(1); + /* ./../lib/standard//kernel.nit:215 */ + REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB5)); + /* ./../lib/standard//collection//sorter.nit:78 */ + REGB3 = REGB5; + } else { + /* ./../lib/standard//collection//sorter.nit:73 */ + goto label4; } - variable[12] = variable[13]; - if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_sorter, 229); nit_exit(1);} - variable[12] = variable[9]; - variable[12] = ATTR_array___Array____items(variable[12]) /*Array::_items*/; - variable[12] = UNBOX_NativeArray(variable[12])[UNTAG_Int( variable[10] /*index*/)]; - variable[11] = variable[12]; - goto return_label17; - return_label17: while(false); - variable[9] = variable[11]; - variable[7] = variable[9] /*min_v=*/; } - variable[8] = TAG_Int(UNTAG_Int(variable[8])+UNTAG_Int( TAG_Int(1))) /*j*/; - continue_15: while(0); - } - break_15: while(0); - variable[9] = TAG_Bool(( variable[6] /*min*/)!=( variable[5] /*i*/)); - if (UNTAG_Bool(variable[9])) { /*if*/ - variable[9] = variable[1] /*array*/; - variable[10] = variable[5] /*i*/; - variable[12] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)>=UNTAG_Int( TAG_Int(0))); - variable[13] = variable[12]; - if (UNTAG_Bool(variable[13])) { /* and */ - variable[13] = variable[9]; - variable[13] = ATTR_array___AbstractArray____length(variable[13]) /*AbstractArray::_length*/; - variable[13] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)=UNTAG_Int(REGB5)); + /* ./../lib/standard//collection//array.nit:245 */ + if (UNTAG_Bool(REGB5)) { + REGB5 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL); + if (UNTAG_Bool(REGB5)) { + } else { + nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245); + } + REGB5 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]); + /* ./../lib/standard//kernel.nit:212 */ + REGB5 = TAG_Bool(UNTAG_Int(REGB3)val[UNTAG_Int(REGB3)]; + /* ./../lib/standard//collection//array.nit:246 */ + goto label5; + label5: while(0); + /* ./../lib/standard//collection//sorter.nit:81 */ + CALL_abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB2, fra.me.REG[3]); + /* ./../lib/standard//collection//sorter.nit:82 */ + CALL_abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]); } - variable[12] = variable[13]; - if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_sorter, 229); nit_exit(1);} - variable[12] = variable[9]; - variable[12] = ATTR_array___Array____items(variable[12]) /*Array::_items*/; - variable[12] = UNBOX_NativeArray(variable[12])[UNTAG_Int( variable[10] /*index*/)]; - variable[11] = variable[12]; - goto return_label18; - return_label18: while(false); - variable[9] = variable[11]; - CALL_abstract_collection___Map_____braeq( variable[1] /*array*/)( variable[1] /*array*/, variable[6] /*min*/, variable[9]) /*Array::[]=*/; - CALL_abstract_collection___Map_____braeq( variable[1] /*array*/)( variable[1] /*array*/, variable[5] /*i*/, variable[7] /*min_v*/) /*Array::[]=*/; + /* ./../lib/standard//collection//sorter.nit:84 */ + REGB2 = TAG_Int(1); + /* ./../lib/standard//kernel.nit:215 */ + REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2)); + /* ./../lib/standard//collection//sorter.nit:84 */ + REGB0 = REGB2; + } else { + /* ./../lib/standard//collection//sorter.nit:69 */ + goto label6; } - variable[5] = TAG_Int(UNTAG_Int(variable[5])+UNTAG_Int( TAG_Int(1))) /*i*/; - continue_13: while(0); } - break_13: while(0); - return_label12: while(false); - tracehead = trace.prev; + label6: while(0); + stack_frame_head = fra.me.prev; return; } -void sorter___AbstractSorter___init(val_t self, int* init_table) { - struct trace_t trace = {NULL, NULL, 0, LOCATE_sorter___AbstractSorter___init}; - val_t *variable = NULL; - void **closurevariable = NULL; - trace.prev = tracehead; tracehead = &trace; - trace.file = LOCATE_sorter; - tracehead = trace.prev; +void sorter___AbstractSorter___init(val_t p0, int* init_table){ + int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AbstractSorter].i; + struct {struct stack_frame_t me;} fra; + val_t tmp; + if (init_table[itpos0]) return; + fra.me.prev = stack_frame_head; stack_frame_head = &fra.me; + fra.me.file = LOCATE_sorter; + fra.me.line = 0; + fra.me.meth = LOCATE_sorter___AbstractSorter___init; + fra.me.has_broke = 0; + fra.me.REG_size = 0; + stack_frame_head = fra.me.prev; + init_table[itpos0] = 1; return; } -val_t sorter___ComparableSorter___compare(val_t self, val_t param0, val_t param1) { - struct trace_t trace = {NULL, NULL, 93, LOCATE_sorter___ComparableSorter___compare}; - val_t variable[5]; - void **closurevariable = NULL; - trace.prev = tracehead; tracehead = &trace; - trace.file = LOCATE_sorter; - variable[0] = self; - variable[1] = param0; - variable[2] = param1; - variable[4] = CALL_kernel___Comparable_____leqg( variable[1] /*a*/)( variable[1] /*a*/, variable[2] /*b*/) /*Comparable::<=>*/; - variable[3] = variable[4]; - goto return_label19; - return_label19: while(false); - tracehead = trace.prev; - return variable[3]; +val_t sorter___ComparableSorter___compare(val_t p0, val_t p1, val_t p2){ + 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_sorter; + fra.me.line = 93; + fra.me.meth = LOCATE_sorter___ComparableSorter___compare; + 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; + fra.me.REG[2] = p2; + /* ./../lib/standard//collection//sorter.nit:94 */ + REGB0 = CALL_kernel___Comparable_____leqg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]); + goto label1; + label1: while(0); + stack_frame_head = fra.me.prev; + return REGB0; } -void sorter___ComparableSorter___init(val_t self, int* init_table) { - struct trace_t trace = {NULL, NULL, 96, LOCATE_sorter___ComparableSorter___init}; - val_t variable[2]; - void **closurevariable = NULL; - trace.prev = tracehead; tracehead = &trace; - trace.file = LOCATE_sorter; - variable[0] = self; - if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ComparableSorter].i]) return; - return_label20: while(false); - init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ComparableSorter].i] = 1; - tracehead = trace.prev; +void sorter___ComparableSorter___init(val_t p0, int* init_table){ + int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ComparableSorter].i; + struct {struct stack_frame_t me;} fra; + val_t tmp; + if (init_table[itpos1]) return; + fra.me.prev = stack_frame_head; stack_frame_head = &fra.me; + fra.me.file = LOCATE_sorter; + fra.me.line = 96; + fra.me.meth = LOCATE_sorter___ComparableSorter___init; + fra.me.has_broke = 0; + fra.me.REG_size = 1; + fra.me.REG[0] = NIT_NULL; + fra.me.REG[0] = p0; + /* ./../lib/standard//collection//sorter.nit:96 */ + CALL_sorter___AbstractSorter___init(fra.me.REG[0])(fra.me.REG[0], init_table); + stack_frame_head = fra.me.prev; + init_table[itpos1] = 1; return; }