+ fra.me.REG[0] = ATTR_abstracttool___AbstractCompiler____tool_name(fra.me.REG[0]);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[0];
+}
+void abstracttool___AbstractCompiler___exec_cmd_line(val_t p0){
+ struct {struct stack_frame_t me; val_t MORE_REG[4];} 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 */
+ static val_t once_value_3; /* Once value */
+ static val_t once_value_4; /* Once value */
+ static val_t once_value_5; /* Once value */
+ static val_t once_value_6; /* Once value */
+ static val_t once_value_7; /* Once value */
+ static val_t once_value_8; /* Once value */
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_abstracttool;
+ fra.me.line = 40;
+ fra.me.meth = LOCATE_abstracttool___AbstractCompiler___exec_cmd_line;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 5;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[3] = NIT_NULL;
+ fra.me.REG[4] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ /* ./abstracttool.nit:42 */
+ CALL_mmloader___ToolContext___process_options(fra.me.REG[0])(fra.me.REG[0]);
+ fra.me.REG[1] = CALL_mmloader___ToolContext___opt_version(fra.me.REG[0])(fra.me.REG[0]);
+ fra.me.REG[1] = CALL_opts___Option___value(fra.me.REG[1])(fra.me.REG[1]);
+ /* ./abstracttool.nit:44 */
+ if (UNTAG_Bool(fra.me.REG[1])) {
+ REGB0 = TAG_Int(5);
+ fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+ /* ./abstracttool.nit:45 */
+ if (!once_value_1) {
+ fra.me.REG[2] = BOX_NativeString("");
+ REGB0 = TAG_Int(0);
+ fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+ once_value_1 = fra.me.REG[2];
+ register_static_object(&once_value_1);
+ } else fra.me.REG[2] = once_value_1;
+ array___Array___add(fra.me.REG[1], fra.me.REG[2]);
+ fra.me.REG[2] = CALL_abstracttool___AbstractCompiler___tool_name(fra.me.REG[0])(fra.me.REG[0]);
+ array___Array___add(fra.me.REG[1], fra.me.REG[2]);
+ if (!once_value_2) {
+ fra.me.REG[2] = BOX_NativeString(" version ");
+ REGB0 = TAG_Int(9);
+ fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+ once_value_2 = fra.me.REG[2];
+ register_static_object(&once_value_2);
+ } else fra.me.REG[2] = once_value_2;
+ array___Array___add(fra.me.REG[1], fra.me.REG[2]);
+ fra.me.REG[2] = CALL_nit_version___Object___nit_version(fra.me.REG[0])(fra.me.REG[0]);
+ array___Array___add(fra.me.REG[1], fra.me.REG[2]);
+ if (!once_value_3) {
+ fra.me.REG[2] = BOX_NativeString("");
+ REGB0 = TAG_Int(0);
+ fra.me.REG[2] = NEW_String_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;
+ array___Array___add(fra.me.REG[1], fra.me.REG[2]);
+ fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+ CALL_file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+ REGB0 = TAG_Int(0);
+ /* ./abstracttool.nit:46 */
+ CALL_kernel___Object___exit(fra.me.REG[0])(fra.me.REG[0], REGB0);
+ }
+ fra.me.REG[1] = CALL_mmloader___ToolContext___opt_help(fra.me.REG[0])(fra.me.REG[0]);
+ fra.me.REG[1] = CALL_opts___Option___value(fra.me.REG[1])(fra.me.REG[1]);
+ /* ./abstracttool.nit:49 */
+ if (UNTAG_Bool(fra.me.REG[1])) {
+ REGB0 = TAG_Int(3);
+ fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+ /* ./abstracttool.nit:50 */
+ if (!once_value_4) {
+ fra.me.REG[2] = BOX_NativeString("usage: ");
+ REGB0 = TAG_Int(7);
+ fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+ once_value_4 = fra.me.REG[2];
+ register_static_object(&once_value_4);
+ } else fra.me.REG[2] = once_value_4;
+ array___Array___add(fra.me.REG[1], fra.me.REG[2]);
+ fra.me.REG[2] = CALL_abstracttool___AbstractCompiler___tool_name(fra.me.REG[0])(fra.me.REG[0]);
+ array___Array___add(fra.me.REG[1], fra.me.REG[2]);
+ if (!once_value_5) {
+ fra.me.REG[2] = BOX_NativeString(" [options] file...");
+ REGB0 = TAG_Int(18);
+ fra.me.REG[2] = NEW_String_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;
+ array___Array___add(fra.me.REG[1], fra.me.REG[2]);
+ fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+ CALL_file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+ fra.me.REG[1] = CALL_mmloader___ToolContext___option_context(fra.me.REG[0])(fra.me.REG[0]);
+ /* ./abstracttool.nit:51 */
+ CALL_opts___OptionContext___usage(fra.me.REG[1])(fra.me.REG[1]);
+ REGB0 = TAG_Int(0);
+ /* ./abstracttool.nit:52 */
+ CALL_kernel___Object___exit(fra.me.REG[0])(fra.me.REG[0], REGB0);
+ }
+ fra.me.REG[1] = CALL_mmloader___ToolContext___option_context(fra.me.REG[0])(fra.me.REG[0]);
+ fra.me.REG[1] = CALL_opts___OptionContext___rest(fra.me.REG[1])(fra.me.REG[1]);
+ REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:23 */
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+ nit_exit(1);
+ }
+ REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+ REGB1 = TAG_Int(0);
+ REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
+ /* ./abstracttool.nit:55 */
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ REGB1 = TAG_Bool((REGB0)==(REGB1));
+ REGB2 = REGB1;
+ /* ./abstracttool.nit:55 */
+ }
+ if (UNTAG_Bool(REGB2)) {
+ REGB2 = TAG_Int(3);
+ fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB2);
+ /* ./abstracttool.nit:56 */
+ if (!once_value_6) {
+ fra.me.REG[2] = BOX_NativeString("usage: ");
+ REGB2 = TAG_Int(7);
+ fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB2);
+ once_value_6 = fra.me.REG[2];
+ register_static_object(&once_value_6);
+ } else fra.me.REG[2] = once_value_6;
+ array___Array___add(fra.me.REG[1], fra.me.REG[2]);
+ fra.me.REG[2] = CALL_abstracttool___AbstractCompiler___tool_name(fra.me.REG[0])(fra.me.REG[0]);
+ array___Array___add(fra.me.REG[1], fra.me.REG[2]);
+ if (!once_value_7) {
+ fra.me.REG[2] = BOX_NativeString(" [options] file...");
+ REGB2 = TAG_Int(18);
+ fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB2);
+ once_value_7 = fra.me.REG[2];
+ register_static_object(&once_value_7);
+ } else fra.me.REG[2] = once_value_7;
+ array___Array___add(fra.me.REG[1], fra.me.REG[2]);
+ fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+ CALL_file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+ fra.me.REG[1] = CALL_mmloader___ToolContext___option_context(fra.me.REG[0])(fra.me.REG[0]);
+ /* ./abstracttool.nit:57 */
+ CALL_opts___OptionContext___usage(fra.me.REG[1])(fra.me.REG[1]);
+ REGB2 = TAG_Int(1);
+ /* ./abstracttool.nit:58 */
+ CALL_kernel___Object___exit(fra.me.REG[0])(fra.me.REG[0], REGB2);