-val_t file___String___file_exists(val_t self) {
- struct trace_t trace = {NULL, "file::String::file_exists (bin/../lib/standard//file.nit:193,2--194:56)"};
- val_t variable0;
- trace.prev = tracehead; tracehead = &trace;
- variable0 = ((string___String___to_cstring_t)CALL( self,COLOR_string___String___to_cstring))( self) /*String::to_cstring*/;
- variable0 = ((file___NativeString___file_exists_t)CALL(variable0,COLOR_file___NativeString___file_exists))(variable0) /*NativeString::file_exists*/;
- goto return_label25;
- return_label25: while(false);
- tracehead = trace.prev;
- return variable0;
-}
-val_t file___String___file_stat(val_t self) {
- struct trace_t trace = {NULL, "file::String::file_stat (bin/../lib/standard//file.nit:196,2--56)"};
- val_t variable0;
- trace.prev = tracehead; tracehead = &trace;
- variable0 = ((string___String___to_cstring_t)CALL( self,COLOR_string___String___to_cstring))( self) /*String::to_cstring*/;
- variable0 = ((file___NativeString___file_stat_t)CALL(variable0,COLOR_file___NativeString___file_stat))(variable0) /*NativeString::file_stat*/;
- goto return_label26;
- return_label26: while(false);
- tracehead = trace.prev;
- return variable0;
-}
-val_t file___String___strip_extension(val_t self, val_t param0) {
- struct trace_t trace = {NULL, "file::String::strip_extension (bin/../lib/standard//file.nit:198,2--203:13)"};
- val_t variable0;
- val_t variable1;
- val_t variable2;
- trace.prev = tracehead; tracehead = &trace;
- variable0 = param0;
- variable1 = ((string___String___has_suffix_t)CALL( self,COLOR_string___String___has_suffix))( self, variable0 /*ext*/) /*String::has_suffix*/;
- if (UNTAG_Bool(variable1)) { /*if*/
- variable1 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*String::length*/;
- variable2 = ((array___AbstractArray___length_t)CALL( variable0 /*ext*/,COLOR_abstract_collection___Collection___length))( variable0 /*ext*/) /*String::length*/;
- variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int(variable2));
- variable1 = ((string___String___substring_t)CALL( self,COLOR_string___String___substring))( self, TAG_Int(0), variable1) /*String::substring*/;
- goto return_label27;
- }
- variable1 = self;
- goto return_label27;
- return_label27: while(false);
- tracehead = trace.prev;
- return variable1;
-}
-val_t file___String___basename(val_t self, val_t param0) {
- struct trace_t trace = {NULL, "file::String::basename (bin/../lib/standard//file.nit:206,2--213:30)"};
- val_t variable0;
- val_t variable1;
- val_t variable2;
- val_t variable3;
- trace.prev = tracehead; tracehead = &trace;
- variable0 = param0;
- variable2 = ATTR_array___AbstractArray____length( self) /*String::_length*/;
- variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int( TAG_Int(1)));
- variable2 = ((array___AbstractArray___last_index_of_from_t)CALL( self,COLOR_array___AbstractArray___last_index_of_from))( self, TAG_Char('/'), variable2) /*String::last_index_of_from*/;
- variable1 = variable2;
- variable2 = self;
- variable3 = TAG_Bool(UNTAG_Int( variable1 /*pos*/)>=UNTAG_Int( TAG_Int(0)));
- if (UNTAG_Bool(variable3)) { /*if*/
- variable3 = TAG_Int(UNTAG_Int( variable1 /*pos*/)+UNTAG_Int( TAG_Int(1)));
- variable3 = ((string___String___substring_from_t)CALL( self,COLOR_string___String___substring_from))( self, variable3) /*String::substring_from*/;
- variable2 = variable3 /*n=*/;
- }
- variable3 = ((file___String___strip_extension_t)CALL( variable2 /*n*/,COLOR_file___String___strip_extension))( variable2 /*n*/, variable0 /*ext*/) /*String::strip_extension*/;
- variable1 = variable3;
- goto return_label28;
- return_label28: while(false);
- tracehead = trace.prev;
- return variable1;
-}
-val_t file___String___dirname(val_t self) {
- struct trace_t trace = {NULL, "file::String::dirname (bin/../lib/standard//file.nit:216,2--222:13)"};
- val_t variable0;
- val_t variable1;
- trace.prev = tracehead; tracehead = &trace;
- variable1 = ATTR_array___AbstractArray____length( self) /*String::_length*/;
- variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int( TAG_Int(1)));
- variable1 = ((array___AbstractArray___last_index_of_from_t)CALL( self,COLOR_array___AbstractArray___last_index_of_from))( self, TAG_Char('/'), variable1) /*String::last_index_of_from*/;
- variable0 = variable1;
- variable1 = TAG_Bool(UNTAG_Int( variable0 /*pos*/)>=UNTAG_Int( TAG_Int(0)));
- if (UNTAG_Bool(variable1)) { /*if*/
- variable1 = ((string___String___substring_t)CALL( self,COLOR_string___String___substring))( self, TAG_Int(0), variable0 /*pos*/) /*String::substring*/;
- variable0 = variable1;
- goto return_label29;
- } else { /*if*/
- variable1 = NEW_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
- variable0 = variable1;
- goto return_label29;
- }
- return_label29: while(false);
- tracehead = trace.prev;
- return variable0;
-}
-val_t file___String___file_path(val_t self) {
- struct trace_t trace = {NULL, "file::String::file_path (bin/../lib/standard//file.nit:226,2--233:12)"};
- val_t variable0;
- val_t variable1;
- val_t variable2;
- trace.prev = tracehead; tracehead = &trace;
- variable1 = ATTR_array___AbstractArray____length( self) /*String::_length*/;
- variable0 = variable1;
- variable2 = TAG_Int(UNTAG_Int( variable0 /*l*/)-UNTAG_Int( TAG_Int(1)));
- variable2 = ((array___AbstractArray___last_index_of_from_t)CALL( self,COLOR_array___AbstractArray___last_index_of_from))( self, TAG_Char('/'), variable2) /*String::last_index_of_from*/;
- variable1 = variable2;
- variable2 = TAG_Bool(UNTAG_Int( variable1 /*pos*/)>=UNTAG_Int( TAG_Int(0)));
- if (UNTAG_Bool(variable2)) { /*if*/
- variable2 = ((string___String___substring_t)CALL( self,COLOR_string___String___substring))( self, TAG_Int(0), variable1 /*pos*/) /*String::substring*/;
- variable0 = variable2;
- goto return_label30;
- }
- variable2 = NEW_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
- variable0 = variable2;
- goto return_label30;
- return_label30: while(false);
- tracehead = trace.prev;
- return variable0;
-}
-void file___String___mkdir(val_t self) {
- struct trace_t trace = {NULL, "file::String::mkdir (bin/../lib/standard//file.nit:236,2--250:29)"};
- val_t variable0;
- val_t variable1;
- val_t variable2;
- val_t variable3;
- val_t variable4;
- trace.prev = tracehead; tracehead = &trace;
- variable1 = NEW_string___String___with_native(BOX_NativeString("/"), TAG_Int(1)); /*new String*/
- variable1 = ((string_search___String___split_with_t)CALL( self,COLOR_string_search___String___split_with))( self, variable1) /*String::split_with*/;
- variable0 = variable1;
- variable2 = NEW_string___String___init(); /*new String*/
- variable1 = variable2;
- variable2 = ((array___AbstractArray___is_empty_t)CALL( variable0 /*dirs*/,COLOR_abstract_collection___Collection___is_empty))( variable0 /*dirs*/) /*Array::is_empty*/;
- if (UNTAG_Bool(variable2)) { /*if*/
- goto return_label31;
- }
- variable2 = TAG_Int(0);
- variable3 = TAG_Bool(UNTAG_Int( variable2 /*index*/)>=UNTAG_Int( TAG_Int(0)));
- variable4 = variable3;
- if (UNTAG_Bool(variable4)) { /* and */
- variable4 = ATTR_array___AbstractArray____length( variable0 /*dirs*/) /*Array::_length*/;
- variable4 = TAG_Bool(UNTAG_Int( variable2 /*index*/)<UNTAG_Int(variable4));
- }
- variable3 = variable4;
- if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert 'index' failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
- variable3 = ATTR_array___Array____items( variable0 /*dirs*/) /*Array::_items*/;
- variable3 = UNBOX_NativeArray(variable3)[UNTAG_Int( variable2 /*index*/)];
- goto return_label32;
- return_label32: while(false);
- variable2 = variable3;
- variable2 = ((array___AbstractArray___is_empty_t)CALL(variable2,COLOR_abstract_collection___Collection___is_empty))(variable2) /*String::is_empty*/;
- if (UNTAG_Bool(variable2)) { /*if*/
- ((string___String___add_t)CALL( variable1 /*path*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*path*/, TAG_Char('/')) /*String::add*/;
- }
- variable2 = ((array___AbstractArray___iterator_t)CALL( variable0 /*dirs*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*dirs*/) /*Array::iterator*/;
- while (true) { /*for*/
- variable3 = ((array___ArrayIterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*ArrayIterator::is_ok*/;
- if (!UNTAG_Bool(variable3)) break; /*for*/
- variable3 = ((array___ArrayIterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*ArrayIterator::item*/;
- variable4 = ((array___AbstractArray___is_empty_t)CALL( variable3 /*d*/,COLOR_abstract_collection___Collection___is_empty))( variable3 /*d*/) /*String::is_empty*/;
- if (UNTAG_Bool(variable4)) { /*if*/
- goto continue_33;
+val_t file___String___file_exists(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_file;
+ fra.me.line = 193;
+ fra.me.meth = LOCATE_file___String___file_exists;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 1;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ /* ./../lib/standard//file.nit:194 */
+ fra.me.REG[0] = CALL_string___String___to_cstring(fra.me.REG[0])(fra.me.REG[0]);
+ REGB0 = CALL_file___NativeString___file_exists(fra.me.REG[0])(fra.me.REG[0]);
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return REGB0;
+}
+val_t file___String___file_stat(val_t p0){
+ struct {struct stack_frame_t me;} fra;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_file;
+ fra.me.line = 196;
+ fra.me.meth = LOCATE_file___String___file_stat;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 1;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ /* ./../lib/standard//file.nit:196 */
+ fra.me.REG[0] = CALL_string___String___to_cstring(fra.me.REG[0])(fra.me.REG[0]);
+ fra.me.REG[0] = CALL_file___NativeString___file_stat(fra.me.REG[0])(fra.me.REG[0]);
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[0];
+}
+val_t file___String___file_delete(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_file;
+ fra.me.line = 198;
+ fra.me.meth = LOCATE_file___String___file_delete;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 1;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ /* ./../lib/standard//file.nit:198 */
+ fra.me.REG[0] = CALL_string___String___to_cstring(fra.me.REG[0])(fra.me.REG[0]);
+ REGB0 = CALL_file___NativeString___file_delete(fra.me.REG[0])(fra.me.REG[0]);
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return REGB0;
+}
+val_t file___String___strip_extension(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_file;
+ fra.me.line = 200;
+ fra.me.meth = LOCATE_file___String___strip_extension;
+ 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//file.nit:202 */
+ REGB0 = CALL_string___AbstractString___has_suffix(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+ if (UNTAG_Bool(REGB0)) {
+ /* ./../lib/standard//file.nit:203 */
+ REGB0 = TAG_Int(0);
+ /* ./../lib/standard//collection//array.nit:23 */
+ REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+ }
+ REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
+ REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+ }
+ REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+ /* ./../lib/standard//kernel.nit:217 */
+ REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
+ /* ./../lib/standard//file.nit:203 */
+ fra.me.REG[1] = CALL_string___AbstractString___substring(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2);
+ goto label1;
+ }
+ /* ./../lib/standard//file.nit:205 */
+ fra.me.REG[1] = fra.me.REG[0];
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[1];
+}
+val_t file___String___basename(val_t p0, val_t p1){
+ struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_file;
+ fra.me.line = 208;
+ fra.me.meth = LOCATE_file___String___basename;
+ 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;
+ /* ./../lib/standard//file.nit:210 */
+ REGB0 = TAG_Char('/');
+ REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_length", LOCATE_file, 210);
+ }
+ REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
+ REGB2 = TAG_Int(1);
+ /* ./../lib/standard//kernel.nit:217 */
+ REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
+ /* ./../lib/standard//file.nit:210 */
+ REGB2 = CALL_array___AbstractArrayRead___last_index_of_from(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2);
+ /* ./../lib/standard//file.nit:211 */
+ fra.me.REG[2] = fra.me.REG[0];
+ /* ./../lib/standard//file.nit:212 */
+ REGB0 = TAG_Int(0);
+ /* ./../lib/standard//kernel.nit:213 */
+ REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
+ /* ./../lib/standard//file.nit:212 */
+ if (UNTAG_Bool(REGB0)) {
+ /* ./../lib/standard//file.nit:213 */
+ REGB0 = TAG_Int(1);
+ /* ./../lib/standard//kernel.nit:215 */
+ REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
+ /* ./../lib/standard//file.nit:213 */
+ fra.me.REG[0] = CALL_string___AbstractString___substring_from(fra.me.REG[0])(fra.me.REG[0], REGB0);
+ fra.me.REG[2] = fra.me.REG[0];
+ }
+ /* ./../lib/standard//file.nit:215 */
+ fra.me.REG[1] = CALL_file___String___strip_extension(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[1];
+}
+val_t file___String___dirname(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;
+ static val_t once_value_2; /* Once value */
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_file;
+ fra.me.line = 218;
+ fra.me.meth = LOCATE_file___String___dirname;
+ 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;
+ /* ./../lib/standard//file.nit:220 */
+ REGB0 = TAG_Char('/');
+ REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_length", LOCATE_file, 220);
+ }
+ REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
+ REGB2 = TAG_Int(1);
+ /* ./../lib/standard//kernel.nit:217 */
+ REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
+ /* ./../lib/standard//file.nit:220 */
+ REGB2 = CALL_array___AbstractArrayRead___last_index_of_from(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2);
+ /* ./../lib/standard//file.nit:221 */
+ REGB0 = TAG_Int(0);
+ /* ./../lib/standard//kernel.nit:213 */
+ REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
+ /* ./../lib/standard//file.nit:221 */
+ if (UNTAG_Bool(REGB0)) {
+ /* ./../lib/standard//file.nit:222 */
+ REGB0 = TAG_Int(0);
+ fra.me.REG[0] = CALL_string___AbstractString___substring(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2);
+ goto label1;
+ } else {
+ /* ./../lib/standard//file.nit:224 */
+ if (!once_value_2) {
+ fra.me.REG[1] = BOX_NativeString(".");
+ REGB2 = TAG_Int(1);
+ fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB2);
+ once_value_2 = fra.me.REG[1];
+ register_static_object(&once_value_2);
+ } else fra.me.REG[1] = once_value_2;
+ fra.me.REG[1] = fra.me.REG[1];
+ fra.me.REG[0] = fra.me.REG[1];
+ goto label1;
+ }
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[0];
+}
+val_t file___String___file_path(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;
+ static val_t once_value_2; /* Once value */
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_file;
+ fra.me.line = 228;
+ fra.me.meth = LOCATE_file___String___file_path;
+ 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;
+ /* ./../lib/standard//file.nit:230 */
+ REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_length", LOCATE_file, 230);
+ }
+ REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
+ /* ./../lib/standard//file.nit:231 */
+ REGB1 = TAG_Char('/');
+ REGB2 = TAG_Int(1);
+ /* ./../lib/standard//kernel.nit:217 */
+ REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
+ /* ./../lib/standard//file.nit:231 */
+ REGB2 = CALL_array___AbstractArrayRead___last_index_of_from(fra.me.REG[0])(fra.me.REG[0], REGB1, REGB2);
+ /* ./../lib/standard//file.nit:232 */
+ REGB1 = TAG_Int(0);
+ /* ./../lib/standard//kernel.nit:213 */
+ REGB1 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB1));
+ /* ./../lib/standard//file.nit:232 */
+ if (UNTAG_Bool(REGB1)) {
+ /* ./../lib/standard//file.nit:233 */
+ REGB1 = TAG_Int(0);
+ fra.me.REG[0] = CALL_string___AbstractString___substring(fra.me.REG[0])(fra.me.REG[0], REGB1, REGB2);
+ goto label1;
+ }
+ /* ./../lib/standard//file.nit:235 */
+ if (!once_value_2) {
+ fra.me.REG[1] = BOX_NativeString(".");
+ REGB2 = TAG_Int(1);
+ fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB2);
+ once_value_2 = fra.me.REG[1];
+ register_static_object(&once_value_2);
+ } else fra.me.REG[1] = once_value_2;
+ fra.me.REG[1] = fra.me.REG[1];
+ fra.me.REG[0] = fra.me.REG[1];
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[0];
+}
+void file___String___mkdir(val_t p0){
+ struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ 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_file;
+ fra.me.line = 238;
+ fra.me.meth = LOCATE_file___String___mkdir;
+ 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;
+ /* ./../lib/standard//file.nit:241 */
+ if (!once_value_1) {
+ fra.me.REG[1] = BOX_NativeString("/");
+ REGB0 = TAG_Int(1);
+ fra.me.REG[1] = NEW_String_string___String___with_native(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];
+ fra.me.REG[1] = CALL_string_search___String___split_with(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+ /* ./../lib/standard//file.nit:242 */
+ fra.me.REG[0] = NEW_Buffer_string___Buffer___init();
+ /* ./../lib/standard//file.nit:243 */
+ REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
+ if (UNTAG_Bool(REGB0)) {
+ goto label2;
+ }
+ /* ./../lib/standard//file.nit:244 */
+ REGB0 = TAG_Int(0);
+ /* ./../lib/standard//collection//array.nit:243 */
+ fra.me.REG[2] = fra.me.REG[1];
+ /* ./../lib/standard//collection//array.nit:245 */
+ REGB1 = TAG_Int(0);
+ /* ./../lib/standard//kernel.nit:213 */
+ REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+ /* ./../lib/standard//collection//array.nit:245 */
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);