#include "M3Runtime.h" typedef struct { int tc; char* str; int len; } TXT; PRIVATE TXT txt1 = { 3, "return_@:;\012", 12}; PRIVATE TXT txt2 = { 3, "RAISE_FOR_SURE (h@@.exception);\012", 33}; PRIVATE TXT txt3 = { 3, "h@@.exception = ", 17}; PRIVATE TXT txt4 = { 3, "h@@.exception;\012", 16}; PRIVATE TXT txt5 = { 3, "goto @@;\012", 10}; PRIVATE TXT txt6 = { 3, "{\001\012HANDLER h@@;\012", 17}; PRIVATE TXT txt7 = { 3, "PUSH_FINALLY (h@@, ", 20}; PRIVATE TXT txt8 = { 3, "@@);\012", 6}; PRIVATE TXT txt9 = { 3, "\002@@:\012\001", 7}; PRIVATE TXT txt10 = { 3, "CUT_TO_NEXT_HANDLER (h@@);\012", 28}; PRIVATE TXT txt11 = { 3, "if (h@@.exception != FALL_EXCEPTION) {\001\012", 41}; PRIVATE TXT txt12 = { 3, "if (h@@.exception == EXIT_EXCEPTION) {\001\012", 41}; PRIVATE TXT txt13 = { 3, "h@@.exception = EXIT_EXCEPTION;\012", 33}; PRIVATE TXT txt14 = { 3, "\002};\012", 5}; PRIVATE TXT txt15 = { 3, "if (h@@.exception == RETURN_EXCEPTION) {\001\012", 43}; PRIVATE TXT txt16 = { 3, "h@@.exception = RETURN_EXCEPTION;\012", 35}; PRIVATE TXT txt17 = { 3, "PUSH_RAISES (h@@, ", 19}; PRIVATE TXT txt18 = { 3, "raises_@, ", 11}; PRIVATE TXT txt19 = { 3, "if (h@@.exception != 0) ", 25}; PRIVATE TXT txt20 = { 3, "goto return_@;\012", 16}; PRIVATE TXT txt21 = { 3, "return;\012", 9}; PRIVATE TXT txt22 = { 3, "*_return = @;\012", 15}; PRIVATE TXT txt23 = { 3, "return @;\012", 11}; #line 18 "../Interfaces/ProcType.i3" #define t12 ADDRESS #define t31 ADDRESS typedef int t3; #define TC31 TC_ADDRESS IMPORT TYPE TC_ADDRESS; IMPORT char VS_ADDRESS__30f7308738738b44; #line 13 "./String.i3" #define t6 ADDRESS #define TC6 TC_String__T IMPORT TYPE TC_String__T; #line 13 IMPORT char VS_String__T__3a6c7dc12615e4ee; typedef struct { t6 _module; t6 _item; } t24; #define t70 ADDRESS #define t87 void typedef struct { TYPE self; int private; } t70_methods; #define t70_msize (sizeof (t70_methods)) typedef struct { ADDRESS methods; } t70_fields; #define t70_size (sizeof (t70_fields)) #define TC70 TC_UNTRACED_ROOT IMPORT TYPE TC_UNTRACED_ROOT; IMPORT char VS_UNTRACED_ROOT__3e0964513fd6da20; #line 15 "./M3.i3" #define t17 ADDRESS #define TC17 TC_M3__Value IMPORT TYPE TC_M3__Value; #line 15 IMPORT char VS_M3__Value__6f64cf9c2cae25fb; #line 14 "../Interfaces/ProcType.i3" typedef struct { t12 _next; t24 _name; t17 _except; } t25; #define TC12 TC_ProcType__Raisee IMPORT TYPE TC_ProcType__Raisee; #line 18 IMPORT char VS_ProcType__Raisee__5fe771ff27c179d9; #line 14 "../Interfaces/Expr.i3" #define t27 ADDRESS #define t26 ADDRESS #define TC26 TC_M3__Expr IMPORT TYPE TC_M3__Expr; #line 16 "./M3.i3" IMPORT char VS_M3__Expr__8ae39aaa2d432477; #line 116 ".ROOT/.boots/corelib/Interfaces/Wr.i3" typedef struct { char* elts; int size[1]; } t75; #line 14 "../Interfaces/Expr.i3" #define t61 t75 #define TC27 TC_Expr__List IMPORT TYPE TC_Expr__List; #line 14 IMPORT char VS_Expr__List__3f87eceb2b9a246a; #define t44 ADDRESS #define TC44 TC_REFANY IMPORT TYPE TC_REFANY; IMPORT char VS_REFANY__4b8748e831fc107a; #line 17 "./Scope.i3" #define t57 ADDRESS #define t18 t75 #define TC57 TC_Scope__ValueList IMPORT TYPE TC_Scope__ValueList; #line 17 IMPORT char VS_Scope__ValueList__64bf053e22e4e53c; #line 16 "../Interfaces/Type.i3" #define t60 ADDRESS #define t67 t75 #define TC60 TC_Type__Map IMPORT TYPE TC_Type__Map; #line 16 IMPORT char VS_Type__Map__41dd9f4b33104fce; #define t65 ADDRESS #define t9 ADDRESS #define TC9 TC_M3__Type IMPORT TYPE TC_M3__Type; #line 18 "./M3.i3" IMPORT char VS_M3__Type__4d87bc25311f81d2; #line 17 "../Interfaces/Type.i3" typedef struct { t65 _next; t9 _type; } t66; #define TC65 TC_Type__List IMPORT TYPE TC_Type__List; #line 17 IMPORT char VS_Type__List__5791758e343becc1; #define t88 ADDRESS #define TC88 TC_NULL IMPORT TYPE TC_NULL; IMPORT char VS_NULL__fb50c7d53bec30dc; #line 15 "Marker.m3" typedef unsigned char t7; typedef unsigned char t10; #line 16 "../Interfaces/Variable.i3" #define t8 ADDRESS #define TC8 TC_Variable__T IMPORT TYPE TC_Variable__T; #line 16 IMPORT char VS_Variable__T__be7ead4a3afd8be5; #line 17 "Marker.m3" typedef struct { t7 _kind; t6 _prefix; t3 _label; t10 _returnSeen; t10 _exitSeen; t9 _type; t8 _variable; t10 _inline; } t13; #line 42 #define t1 t75 typedef t87 (*t2)(); #line 402 typedef t3 (*t4)(); #line 32 typedef struct { t3 _exit; t3 _eStop; t3 _return; t3 _rStop; t3 _except; } t5; #line 287 typedef t10 (*t11)(); #line 42 typedef signed_char t14; typedef struct { t13 elts[51]; } t15; #line 17 "../Interfaces/CallExpr.i3" #define t16 ADDRESS #define TC16 TC_CallExpr__MethodList IMPORT TYPE TC_CallExpr__MethodList; #line 17 IMPORT char VS_CallExpr__MethodList__7e87c2d720444b71; #line 34 "../Interfaces/ProcType.i3" typedef t9 (*t19)(); #line 27 typedef t16 (*t20)(); #line 14 "./M3.i3" #define t21 ADDRESS #define TC21 TC_M3__Scope IMPORT TYPE TC_M3__Scope; #line 14 IMPORT char VS_M3__Scope__6e6d8848308d8a2d; #line 24 "../Interfaces/ProcType.i3" typedef t21 (*t22)(); #line 15 "./Token.i3" typedef unsigned char t35; #line 45 typedef struct { int elts[4]; } t23; #line 39 "../Interfaces/CallExpr.i3" typedef t26 (*t28)(); #line 19 "./M3.i3" #define t30 ADDRESS #define TC30 TC_M3__Temp IMPORT TYPE TC_M3__Temp; #line 19 IMPORT char VS_M3__Temp__450b691937f03dae; #line 22 "../Interfaces/CallExpr.i3" typedef t30 (*t29)(); #define t45 ADDRESS typedef struct { TYPE self; int private; } t45_methods; #define t45_msize (sizeof (t45_methods)) typedef struct { ADDRESS methods; } t45_fields; #define t45_size (sizeof (t45_fields)) #define TC45 TC_ROOT IMPORT TYPE TC_ROOT; IMPORT char VS_ROOT__349f58f628be0ac6; #define t45_MapProc TC_ROOT->mapProc #define t32 ADDRESS #define TC32 TC_Rd__T IMPORT TYPE TC_Rd__T; #line 83 ".ROOT/.boots/corelib/Interfaces/Rd.i3" IMPORT char VS_Rd__T__2555b70b3f7780b1; #define t32_MapProc TC_Rd__T->mapProc #define t33 ADDRESS #define TC33 TC_TEXT IMPORT TYPE TC_TEXT; IMPORT char VS_TEXT__b7a92447326386f5; #define t33_MapProc TC_TEXT->mapProc typedef t6 (*t34)(); #line 13 "./Scanner.i3" typedef struct { t35 _token; t6 _string; t3 _value; t3 _offset; } t36; typedef int t37; #line 249 ".ROOT/.boots/corelib/Interfaces/Rd.i3" typedef t37 (*t38)(); #line 220 typedef t33 (*t39)(); typedef unsigned char t40; #line 189 #define t41 t75 typedef t40 (*t42)(); #line 84 typedef unsigned char t43; #line 27 "./Emit.i3" typedef signed_char t46; #line 63 typedef t46 (*t47)(); #line 19 "./String.i3" typedef signed_char t71; #line 65 "./Token.i3" #define t68 t75 typedef struct { t6 elts[100]; } t72; #line 17 "./String.i3" typedef struct { t3 _top; t72 _stk; } t48; typedef double t49; #line 16 "../Interfaces/Stmt.i3" typedef unsigned char t54; typedef struct { int elts[1]; } t50; #line 17 "./M3.i3" #define t51 ADDRESS #define TC51 TC_M3__Stmt IMPORT TYPE TC_M3__Stmt; #line 17 IMPORT char VS_M3__Stmt__376b307627fc1f2f; #line 27 "../Interfaces/Stmt.i3" typedef void (*t52)(); #line 19 typedef t51 (*t53)(); #line 24 "../Interfaces/Variable.i3" typedef t8 (*t55)(); #line 14 "../Interfaces/Decl.i3" typedef struct { t6 _alias; t10 _isExternal; t10 _isInline; t10 _isUnused; t10 _isObsolete; } t56; #line 38 "./Scope.i3" typedef t17 (*t58)(); #line 90 ".ROOT/.boots/corelib/Interfaces/Wr.i3" #define t59 ADDRESS #define TC59 TC_Wr__T IMPORT TYPE TC_Wr__T; #line 90 IMPORT char VS_Wr__T__2555b70b3f7780b1; #define t59_MapProc TC_Wr__T->mapProc typedef unsigned char t62; #line 40 "../Interfaces/Value.i3" typedef t62 (*t63)(); #line 121 "../Interfaces/Type.i3" typedef t60 (*t64)(); #line 65 "./Token.i3" typedef struct { t6 elts[97]; } t69; #line 67 ".ROOT/.boots/corelib/Interfaces/Text.i3" typedef signed_char t73; typedef t73 (*t74)(); #line 91 ".ROOT/.boots/corelib/Interfaces/Wr.i3" typedef unsigned char t76; #line 15 ".ROOT/.boots/corelib/Interfaces/Thread.i3" #define t77 ADDRESS #define TC77 TC_Thread__T IMPORT TYPE TC_Thread__T; #line 15 IMPORT char VS_Thread__T__2555b70b3f7780b1; #define t77_MapProc TC_Thread__T->mapProc typedef t44 (*t78)(); #define t79 ADDRESS #define TC79 TC_Thread__Condition IMPORT TYPE TC_Thread__Condition; #line 21 IMPORT char VS_Thread__Condition__26d5968239e08f4e; #define t79_MapProc TC_Thread__Condition->mapProc #define t80 ADDRESS #define TC80 TC_MUTEX IMPORT TYPE TC_MUTEX; IMPORT char VS_MUTEX__1f9d4e89391ab815; #define t80_MapProc TC_MUTEX->mapProc typedef t77 (*t81)(); #line 23 #define t82 ADDRESS #line 23 typedef struct { t78 _apply; } t82_methods; #define t82_msize (sizeof (t82_methods)) typedef struct { #line 23 int filler; } t82_fields; #define t82_size (sizeof (t82_fields)) #define TC82 TC_Thread__Closure IMPORT TYPE TC_Thread__Closure; #line 23 IMPORT char VS_Thread__Closure__7fb5c6232c5a658a; #define t82_MapProc TC_Thread__Closure->mapProc typedef t79 (*t83)(); typedef t80 (*t84)(); #line 28 #define t85 ADDRESS #line 28 typedef struct { int filler; } t85_methods; #define t85_msize (sizeof (t85_methods)) typedef struct { #line 28 t37 _stackSize; } t85_fields; #define t85_size (sizeof (t85_fields)) #define TC85 TC_Thread__SizedClosure IMPORT TYPE TC_Thread__SizedClosure; #line 28 IMPORT char VS_Thread__SizedClosure__8a46717d2eae7b07; #define t85_MapProc TC_Thread__SizedClosure->mapProc typedef CLOSURE t86; typedef float t89; #line 10 "Marker.m3" IMPORT INITLINK* ProcType__init; IMPORT INITLINK* Variable__init; IMPORT INITLINK* Type__init; IMPORT INITLINK* String__init; #line 10 IMPORT INITLINK* Scanner__init; IMPORT INITLINK* Token__init; IMPORT INITLINK* Emit__init; IMPORT INITLINK* Error__init; IMPORT INITLINK* Stmt__init; #line 10 IMPORT INITLINK* Marker__init; IMPORT t87 _ProcType__Raises (); IMPORT char VS_ProcType__Raises__f4b8d0b93b9af8b2; IMPORT t3 _ProcType__RaisesVar (); #line 10 IMPORT char VS_ProcType__RaisesVar__8e10f9d23aa93de3; IMPORT t10 _ProcType__LargeResult (); IMPORT char VS_ProcType__LargeResult__547fe44c362c53bb; #line 10 IMPORT TYPE TC_Type__T; IMPORT char VS_Type__T__2446b70b3f7780a5; IMPORT t6 _String__Add (); IMPORT char VS_String__Add__0f5e21cc3d204b63; #line 10 IMPORT t23 _Token__DeclStart; IMPORT char VS_Token__DeclStart__730c82bc2c2001b8; IMPORT t23 _Token__TypeStart; IMPORT char VS_Token__TypeStart__f71616cb38a20d02; #line 10 IMPORT t23 _Token__ExprStart; IMPORT char VS_Token__ExprStart__21dc8a0a27344836; IMPORT char VS_Emit__MaxStream__cf0a0e8934c9c9f3; #line 10 IMPORT TYPE TC_Emit__Format; IMPORT char VS_Emit__Format__bc4a2b083b93bbd7; IMPORT t87 _Emit__Op (); IMPORT char VS_Emit__Op__072646cc27c8ae10; #line 10 IMPORT t87 _Emit__OpSI (); IMPORT char VS_Emit__OpSI__ab1965f432d76dc2; IMPORT t87 _Emit__OpI (); IMPORT char VS_Emit__OpI__02cb878634bb9f49; #line 10 IMPORT t87 _Emit__OpV (); IMPORT char VS_Emit__OpV__330b9ba039cee040; IMPORT TYPE TC_Stmt__T; IMPORT char VS_Stmt__T__2446b70b3f7780a5; #line 10 IMPORT TYPE TC_Marker__Prefix; IMPORT char VS_Marker__Prefix__819dde3f21a97326; EXPORT t87 _Marker__Pop (); EXPORT char VS_Marker__Pop__e998f6f7244b0f3e = '\0'; #line 10 EXPORT t87 _Marker__PushTry (); EXPORT char VS_Marker__PushTry__6cc1e1133f497417 = '\0'; EXPORT t87 _Marker__PushTryElse (); #line 10 EXPORT char VS_Marker__PushTryElse__448ab7da204fe899 = '\0'; EXPORT t87 _Marker__EmitElse (); EXPORT char VS_Marker__EmitElse__5f56d9f833484fc7 = '\0'; #line 10 EXPORT t87 _Marker__PushFinally (); EXPORT char VS_Marker__PushFinally__0a3f25a0352cef57 = '\0'; EXPORT t87 _Marker__StartOfFinally (); #line 10 EXPORT char VS_Marker__StartOfFinally__c8ccfcac30ec0eb4 = '\0'; EXPORT t87 _Marker__MiddleOfFinally (); EXPORT char VS_Marker__MiddleOfFinally__4f35fb60268cef8a = '\0'; #line 10 EXPORT t87 _Marker__EndOfFinally (); EXPORT char VS_Marker__EndOfFinally__40d9236d36eae813 = '\0'; EXPORT t87 _Marker__PushExit (); #line 10 EXPORT char VS_Marker__PushExit__cc7dd98132c2b6e7 = '\0'; EXPORT t10 _Marker__ExitOK (); EXPORT char VS_Marker__ExitOK__5c8c215e3edf7d55 = '\0'; #line 10 EXPORT t87 _Marker__EmitExit (); EXPORT char VS_Marker__EmitExit__102723f22c7baeba = '\0'; EXPORT t87 _Marker__PushRaises (); #line 10 EXPORT char VS_Marker__PushRaises__e66ae3ef32b22df5 = '\0'; EXPORT t87 _Marker__StartRaises (); EXPORT char VS_Marker__StartRaises__0f15931e32ee1d1a = '\0'; #line 10 EXPORT t87 _Marker__EndRaises (); EXPORT char VS_Marker__EndRaises__36efc08b269a8318 = '\0'; EXPORT t87 _Marker__PushProcedure (); #line 10 EXPORT char VS_Marker__PushProcedure__9278f0072a06b043 = '\0'; EXPORT t10 _Marker__ReturnOK (); EXPORT char VS_Marker__ReturnOK__b217d96a293189f5 = '\0'; #line 10 EXPORT t87 _Marker__ReturnVar (); EXPORT char VS_Marker__ReturnVar__351bfb97347d6b7a = '\0'; EXPORT t87 _Marker__EmitReturn (); #line 10 EXPORT char VS_Marker__EmitReturn__9a77826c22eb25fb = '\0'; EXPORT t87 _Marker__Initialize (); EXPORT char VS_Marker__Initialize__7b562fc82a453136 = '\0'; #line 10 PRIVATE t3 _Marker__tos; PRIVATE t15 _Marker__stack; PRIVATE t6 _Marker__empty; PRIVATE t3 _Marker__nextReturnLabel; PRIVATE t87 _Marker__DoReturn (); #line 10 PRIVATE t87 _Marker__Push (); PRIVATE t87 _Marker__FindOutcome (); PRIVATE t3 _Marker__FindWhereToCut (); #line 45 "Marker.m3" EXPORT t87 _Marker__Pop () { t3 z2; t10 z3; t10 z0; #line 45 "Marker.m3" { { CHECKSTACKOVERFLOW; _Marker__tos -= 1 ; { t13 *with; z2 = _Marker__tos; if ((z2 < 0) || (50 < z2)) RANGEFAULT; with = &(_Marker__stack.elts[z2]); { auto t13 * _z; #line 48 { _z = with; z3 = (((*_z)._kind) == 5 ); z0 = 0; if (z3) { z0 = ((*_z)._inline); }; if (z0) { _Emit__OpI (((ADDRESS)(& txt1.str)), ((*_z)._label)); goto if_1_end; }; if_1_end: /**/; } } }; } } }; #line 57 "Marker.m3" EXPORT t87 _Marker__PushFinally (_p, _x) t6 _p; t3 _x; { #line 57 "Marker.m3" { { CHECKSTACKOVERFLOW; _Marker__Push ( 0 , _p, _x); } } }; #line 62 "Marker.m3" EXPORT t87 _Marker__StartOfFinally (_p, _x) t6 _p; t3 _x; { #line 62 "Marker.m3" { { CHECKSTACKOVERFLOW; _Marker__PushFinally (_p, _x); _Emit__OpSI (((ADDRESS)(& txt6.str)), _p, _x); _Emit__OpSI (((ADDRESS)(& txt7.str)), _p, _x); _Emit__OpSI (((ADDRESS)(& txt8.str)), _p, _x); } } }; #line 70 "Marker.m3" EXPORT t87 _Marker__MiddleOfFinally (_p, _x, _returnSeen, _exitSeen) t6 _p; t3 _x; t10 * _returnSeen; t10 * _exitSeen; { t3 z2; #line 70 "Marker.m3" { { CHECKSTACKOVERFLOW; _Emit__OpSI (((ADDRESS)(& txt9.str)), _p, _x); _Emit__OpSI (((ADDRESS)(& txt10.str)), _p, _x); _Marker__Pop (); z2 = _Marker__tos; if ((z2 < 0) || (50 < z2)) RANGEFAULT; (*_returnSeen) = ((_Marker__stack.elts[z2])._returnSeen); z2 = _Marker__tos; if ((z2 < 0) || (50 < z2)) RANGEFAULT; (*_exitSeen) = ((_Marker__stack.elts[z2])._exitSeen); } } #line 77 }; #line 80 "Marker.m3" EXPORT t87 _Marker__EndOfFinally (_p, _x, _returnSeen, _exitSeen) t6 _p; t3 _x; t10 _returnSeen; t10 _exitSeen; { t10 z2; t3 z3; t10 z5; t10 z0; t10 z6; #line 80 "Marker.m3" { auto t3 _i; auto t5 _o; auto t6 _p1; auto t3 _x1; { CHECKSTACKOVERFLOW; _Marker__FindOutcome (&_o); _Emit__OpSI (((ADDRESS)(& txt11.str)), _p, _x); if (_exitSeen) { _i = (_o._exit); z2 = (_i != -1 ); if (!z2) ASSERTFAULT; _Emit__OpSI (((ADDRESS)(& txt12.str)), _p, _x); z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; _p1 = ((_Marker__stack.elts[z3])._prefix); z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; _x1 = ((_Marker__stack.elts[z3])._label); z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; z5 = (((_Marker__stack.elts[z3])._kind) != 1 ); if (z5) { _Emit__OpSI (((ADDRESS)(& txt13.str)), _p1, _x1); goto if_3_end; }; if_3_end: /**/; _Emit__OpSI (((ADDRESS)(& txt5.str)), _p1, _x1); _Emit__Op (((ADDRESS)(& txt14.str))); goto if_2_end; }; if_2_end: /**/; if (_returnSeen) { _i = (_o._return); z2 = (_i != -1 ); if (!z2) ASSERTFAULT; _Emit__OpSI (((ADDRESS)(& txt15.str)), _p, _x); z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; z5 = (((_Marker__stack.elts[z3])._kind) == 5 ); z0 = 1; if (! z5) { #line 107 z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; z6 = (((_Marker__stack.elts[z3])._kind) == 4 ); z0 = z6; }; if (z0) { _Marker__DoReturn (_i); goto if_5_end; }; z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; _p1 = ((_Marker__stack.elts[z3])._prefix); z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; _x1 = ((_Marker__stack.elts[z3])._label); _Emit__OpSI (((ADDRESS)(& txt16.str)), _p1, _x1); _Emit__OpSI (((ADDRESS)(& txt5.str)), _p1, _x1); if_5_end: /**/; _Emit__Op (((ADDRESS)(& txt14.str))); goto if_4_end; }; if_4_end: /**/; _i = (_o._except); z2 = (_i == -1 ); z0 = 1; if (! z2) { z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; z6 = (((_Marker__stack.elts[z3])._kind) == 5 ); #line 119 z0 = z6; }; if (z0) { _Emit__OpSI (((ADDRESS)(& txt2.str)), _p, _x); goto if_6_end; }; z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; _p1 = ((_Marker__stack.elts[z3])._prefix); z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; _x1 = ((_Marker__stack.elts[z3])._label); _Emit__OpSI (((ADDRESS)(& txt3.str)), _p1, _x1); _Emit__OpSI (((ADDRESS)(& txt4.str)), _p, _x); _Emit__OpSI (((ADDRESS)(& txt5.str)), _p1, _x1); if_6_end: /**/; _Emit__Op (((ADDRESS)(& txt14.str))); _Emit__Op (((ADDRESS)(& txt14.str))); } } }; #line 135 "Marker.m3" EXPORT t87 _Marker__PushTry (_p, _x) t6 _p; t3 _x; { #line 135 "Marker.m3" { { CHECKSTACKOVERFLOW; _Marker__Push ( 2 , _p, _x); } } }; #line 140 "Marker.m3" EXPORT t87 _Marker__PushTryElse (_p, _x) t6 _p; t3 _x; { #line 140 "Marker.m3" { { CHECKSTACKOVERFLOW; _Marker__Push ( 3 , _p, _x); } } }; #line 145 "Marker.m3" EXPORT t87 _Marker__EmitElse (_p, _x) t6 _p; t3 _x; { t10 z2; t10 z0; t3 z3; t10 z6; #line 145 "Marker.m3" { auto t3 _i; auto t5 _o; auto t6 _p1; auto t3 _x1; { CHECKSTACKOVERFLOW; _Marker__FindOutcome (&_o); _i = (_o._except); z2 = (_i == -1 ); z0 = 1; if (! z2) { z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; z6 = (((_Marker__stack.elts[z3])._kind) == 5 ); #line 150 z0 = z6; }; if (z0) { _Emit__OpSI (((ADDRESS)(& txt2.str)), _p, _x); goto if_7_end; }; z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; _p1 = ((_Marker__stack.elts[z3])._prefix); z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; _x1 = ((_Marker__stack.elts[z3])._label); _Emit__OpSI (((ADDRESS)(& txt3.str)), _p1, _x1); _Emit__OpSI (((ADDRESS)(& txt4.str)), _p, _x); _Emit__OpSI (((ADDRESS)(& txt5.str)), _p1, _x1); if_7_end: /**/; } } }; #line 163 "Marker.m3" EXPORT t87 _Marker__PushExit (_p, _x) t6 _p; t3 _x; { #line 163 "Marker.m3" { { CHECKSTACKOVERFLOW; _Marker__Push ( 1 , _p, _x); } } }; #line 168 "Marker.m3" EXPORT t10 _Marker__ExitOK () { t3 z2; t10 z5; #line 168 "Marker.m3" { auto t10 __result; { ZERO1B (& __result); CHECKSTACKOVERFLOW; { int from, to, index; z2 = _Marker__tos - 1 ; from = z2; to = 0 ; { auto t3 _i; { for (index = from; index >= to; index += -1) { #line 170 _i = (t3) index; z2 = _i; if (z2 > 50) RANGEFAULT; z5 = (((_Marker__stack.elts[z2])._kind) == 1 ); if (z5) { __result = 1 ; #line 171 return __result; }; z2 = _i; if (z2 > 50) RANGEFAULT; z5 = (((_Marker__stack.elts[z2])._kind) == 5 ); if (z5) { __result = 0 ; #line 172 return __result; }; } } }; }; __result = 0 ; return __result; } } }; #line 177 "Marker.m3" EXPORT t87 _Marker__EmitExit () { t10 z2; t10 z0; t10 z4; t3 z3; t10 z5; t3 z6; #line 177 "Marker.m3" { auto t3 _i; auto t5 _o; auto t6 _p; auto t3 _x; { CHECKSTACKOVERFLOW; _Marker__FindOutcome (&_o); _i = (_o._exit); z2 = (_i != -1 ); z0 = 0; if (z2) { z4 = ((_o._eStop) != -1 ); z0 = z4; }; if (!z0) ASSERTFAULT; { int from, to, index; from = (_o._eStop); z3 = _Marker__tos - 1 ; to = z3; { auto t3 _j; { for (index = from; index <= to; index += 1) { #line 183 _j = (t3) index; z3 = _j; if ((z3 < 0) || (50 < z3)) RANGEFAULT; ((_Marker__stack.elts[z3])._exitSeen) = 1 ; #line 183 } } }; }; z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; _p = ((_Marker__stack.elts[z3])._prefix); z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; _x = ((_Marker__stack.elts[z3])._label); z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; z5 = (((_Marker__stack.elts[z3])._kind) != 1 ); if (z5) { _Emit__OpSI (((ADDRESS)(& txt13.str)), _p, _x); goto if_10_end; }; { t3 with; z3 = _Marker__FindWhereToCut (_i); with = z3; { auto t3 _j; { _j = with; z2 = (_j != -1 ); if (z2) { z6 = _j; if ((z6 < 0) || (50 < z6)) RANGEFAULT; _Emit__OpSI (((ADDRESS)(& txt10.str)), ((_Marker__stack.elts[z6])._prefix), ((_Marker__stack.elts[z6])._label)); #line 192 goto if_11_end; }; if_11_end: /**/; } } }; if_10_end: /**/; _Emit__OpSI (((ADDRESS)(& txt5.str)), _p, _x); } } }; #line 201 "Marker.m3" EXPORT t87 _Marker__PushRaises (_p, _x) t6 _p; t3 _x; { #line 201 "Marker.m3" { { CHECKSTACKOVERFLOW; _Marker__Push ( 4 , _p, _x); } } }; #line 206 "Marker.m3" EXPORT t87 _Marker__StartRaises (_p, _x, _t) t6 _p; t3 _x; t9 _t; { t10 z1; t3 z4; #line 206 "Marker.m3" { auto t12 _r; auto t10 _any; { ZERO1B (& _any); #line 206 CHECKSTACKOVERFLOW; _ProcType__Raises (_t, &_r, &_any); z1 = ! _any; if (z1) { _Marker__Push ( 4 , _p, _x); _Emit__OpSI (((ADDRESS)(& txt6.str)), _p, _x); _Emit__OpSI (((ADDRESS)(& txt17.str)), _p, _x); z4 = _ProcType__RaisesVar (_t); _Emit__OpI (((ADDRESS)(& txt18.str)), z4); _Emit__OpSI (((ADDRESS)(& txt8.str)), _p, _x); goto if_12_end; }; if_12_end: /**/; } } }; #line 219 "Marker.m3" EXPORT t87 _Marker__EndRaises (_t) t9 _t; { t3 z2; t10 z3; #line 219 "Marker.m3" { auto t6 _p; auto t3 _x; auto t12 _r; auto t10 _any; { ZERO1B (& _any); #line 219 CHECKSTACKOVERFLOW; _ProcType__Raises (_t, &_r, &_any); if (_any) { return; }; _Marker__Pop (); { t13 *with; z2 = _Marker__tos; if ((z2 < 0) || (50 < z2)) RANGEFAULT; with = &(_Marker__stack.elts[z2]); { auto t13 * _z; #line 229 { _z = with; z3 = (((*_z)._kind) == 4 ); if (!z3) ASSERTFAULT; _p = ((*_z)._prefix); _x = ((*_z)._label); } } }; _Emit__OpSI (((ADDRESS)(& txt9.str)), _p, _x); _Emit__OpSI (((ADDRESS)(& txt10.str)), _p, _x); _Emit__OpSI (((ADDRESS)(& txt19.str)), _p, _x); _Emit__OpSI (((ADDRESS)(& txt2.str)), _p, _x); #line 268 _Emit__Op (((ADDRESS)(& txt14.str))); } } }; #line 275 "Marker.m3" EXPORT t87 _Marker__PushProcedure (_t, _v, _inline) t9 _t; t8 _v; t10 _inline; { t10 z2; t10 z3; t10 z0; t3 z4; t3 z1; #line 275 "Marker.m3" { { CHECKSTACKOVERFLOW; z2 = (_t == 0); z3 = (_v == 0); z0 = (z2 == z3); if (!z0) ASSERTFAULT; _Marker__Push ( 5 , _Marker__empty, _Marker__nextReturnLabel); _Marker__nextReturnLabel += 1 ; { t13 *with; z4 = _Marker__tos - 1 ; z1 = z4; if ((z1 < 0) || (50 < z1)) RANGEFAULT; with = &(_Marker__stack.elts[z1]); #line 280 { auto t13 * _z; { _z = with; ((*_z)._type) = _t; ((*_z)._variable) = _v; ((*_z)._inline) = _inline; } } }; } } }; #line 287 "Marker.m3" EXPORT t10 _Marker__ReturnOK () { t3 z2; t10 z5; #line 287 "Marker.m3" { auto t10 __result; { ZERO1B (& __result); CHECKSTACKOVERFLOW; { int from, to, index; z2 = _Marker__tos - 1 ; from = z2; to = 0 ; { auto t3 _i; { for (index = from; index >= to; index += -1) { #line 289 _i = (t3) index; z2 = _i; if (z2 > 50) RANGEFAULT; z5 = (((_Marker__stack.elts[z2])._kind) == 5 ); if (z5) { __result = 1 ; #line 290 return __result; }; } } }; }; __result = 0 ; return __result; } } }; #line 295 "Marker.m3" EXPORT t87 _Marker__ReturnVar (_t, _v) t9 * _t; t8 * _v; { t3 z2; t10 z5; #line 295 "Marker.m3" { { CHECKSTACKOVERFLOW; { int from, to, index; z2 = _Marker__tos - 1 ; from = z2; to = 0 ; { auto t3 _i; { for (index = from; index >= to; index += -1) { #line 297 _i = (t3) index; z2 = _i; if (z2 > 50) RANGEFAULT; z5 = (((_Marker__stack.elts[z2])._kind) == 5 ); if (z5) { z2 = _i; if (z2 > 50) RANGEFAULT; (*_t) = ((_Marker__stack.elts[z2])._type); z2 = _i; if (z2 > 50) RANGEFAULT; (*_v) = ((_Marker__stack.elts[z2])._variable); return; }; } } }; }; if (! 0 ) ASSERTFAULT; } } }; #line 307 "Marker.m3" EXPORT t87 _Marker__EmitReturn () { t10 z2; t10 z0; t10 z4; t3 z3; t10 z5; t10 z6; #line 307 "Marker.m3" { auto t3 _i; auto t6 _p; auto t3 _x; auto t5 _o; { CHECKSTACKOVERFLOW; _Marker__FindOutcome (&_o); _i = (_o._return); z2 = (_i != -1 ); z0 = 0; if (z2) { z4 = ((_o._rStop) != -1 ); z0 = z4; }; if (!z0) ASSERTFAULT; { int from, to, index; from = (_o._rStop); z3 = _Marker__tos - 1 ; to = z3; { auto t3 _j; { for (index = from; index <= to; index += 1) { #line 313 _j = (t3) index; z3 = _j; if ((z3 < 0) || (50 < z3)) RANGEFAULT; ((_Marker__stack.elts[z3])._returnSeen) = 1 ; #line 313 } } }; }; z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; z5 = (((_Marker__stack.elts[z3])._kind) == 5 ); z0 = 1; if (! z5) { #line 314 z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; z6 = (((_Marker__stack.elts[z3])._kind) == 4 ); z0 = z6; }; if (z0) { _Marker__DoReturn (_i); goto if_16_end; }; z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; _p = ((_Marker__stack.elts[z3])._prefix); z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; _x = ((_Marker__stack.elts[z3])._label); _Emit__OpSI (((ADDRESS)(& txt16.str)), _p, _x); _Emit__OpSI (((ADDRESS)(& txt5.str)), _p, _x); if_16_end: /**/; } } }; #line 324 "Marker.m3" PRIVATE t87 _Marker__DoReturn (_i) t3 _i; { t3 z2; t10 z5; t3 z4; t10 z3; #line 324 "Marker.m3" { { CHECKSTACKOVERFLOW; z2 = _i; if ((z2 < 0) || (50 < z2)) RANGEFAULT; z5 = (((_Marker__stack.elts[z2])._kind) == 4 ); if (z5) { z4 = _i; if ((z4 < 0) || (50 < z4)) RANGEFAULT; _Emit__OpSI (((ADDRESS)(& txt10.str)), ((_Marker__stack.elts[z4])._prefix), ((_Marker__stack.elts[z4])._label)); _i -= 1 ; goto if_17_end; }; if_17_end: /**/; { t13 *with; z2 = _i; if ((z2 < 0) || (50 < z2)) RANGEFAULT; with = &(_Marker__stack.elts[z2]); { auto t13 * _z; { _z = with; if (((*_z)._inline)) { _Emit__OpI (((ADDRESS)(& txt20.str)), ((*_z)._label)); goto if_18_end; }; z3 = (((*_z)._type) == 0); if (z3) { _Emit__Op (((ADDRESS)(& txt21.str))); goto if_18_end; }; z3 = _ProcType__LargeResult (((*_z)._type)); if (z3) { _Emit__OpV (((ADDRESS)(& txt22.str)), ((*_z)._variable)); _Emit__Op (((ADDRESS)(& txt21.str))); goto if_18_end; }; _Emit__OpV (((ADDRESS)(& txt23.str)), ((*_z)._variable)); if_18_end: /**/; } } }; } } }; #line 346 "Marker.m3" PRIVATE t87 _Marker__Push (_k, _p, _x) t7 _k; t6 _p; t3 _x; { t3 z2; #line 346 "Marker.m3" { { CHECKSTACKOVERFLOW; { t13 *with; z2 = _Marker__tos; if ((z2 < 0) || (50 < z2)) RANGEFAULT; with = &(_Marker__stack.elts[z2]); { auto t13 * _z; #line 348 { _z = with; ((*_z)._kind) = _k; ((*_z)._prefix) = _p; ((*_z)._label) = _x; ((*_z)._returnSeen) = 0 ; ((*_z)._exitSeen) = 0 ; ((*_z)._type) = (t9) 0; ((*_z)._variable) = (t8) 0; } } }; _Marker__tos += 1 ; } } }; #line 360 "Marker.m3" PRIVATE t87 _Marker__FindOutcome (_o) t5 * _o; { t3 z2; t10 z3; t10 z0; #line 360 "Marker.m3" { auto t3 _i; auto t3 _pending; { CHECKSTACKOVERFLOW; ((*_o)._exit) = -1 ; ((*_o)._eStop) = -1 ; ((*_o)._return) = -1 ; ((*_o)._rStop) = -1 ; ((*_o)._except) = -1 ; _pending = 5 ; z2 = _Marker__tos - 1 ; _i = z2; z3 = (_pending > 0 ); z0 = 0; if (z3) { z3 = (_i >= 0 ); z0 = z3; }; if (z0) do { { t13 *with; z2 = _i; if ((z2 < 0) || (50 < z2)) RANGEFAULT; with = &(_Marker__stack.elts[z2]); { auto t13 * _z; #line 371 { _z = with; switch (((*_z)._kind)) { case 0: z3 = (((*_o)._exit) == -1 ); if (z3) { ((*_o)._exit) = _i; _pending -= 1 ; goto if_19_end; }; if_19_end: /**/; z3 = (((*_o)._return) == -1 ); if (z3) { ((*_o)._return) = _i; _pending -= 1 ; goto if_20_end; }; #line 375 if_20_end: /**/; z3 = (((*_o)._except) == -1 ); if (z3) { ((*_o)._except) = _i; _pending -= 1 ; goto if_21_end; }; #line 376 if_21_end: /**/; break; case 1: z3 = (((*_o)._exit) == -1 ); if (z3) { ((*_o)._exit) = _i; _pending -= 1 ; goto if_22_end; }; if_22_end: /**/; z3 = (((*_o)._eStop) == -1 ); if (z3) { ((*_o)._eStop) = _i; _pending -= 1 ; goto if_23_end; }; if_23_end: /**/; #line 379 break; case 2: z3 = (((*_o)._except) == -1 ); if (z3) { ((*_o)._except) = _i; _pending -= 1 ; goto if_24_end; }; if_24_end: /**/; break; case 3: z3 = (((*_o)._exit) == -1 ); if (z3) { ((*_o)._exit) = _i; _pending -= 1 ; goto if_25_end; }; if_25_end: /**/; z3 = (((*_o)._eStop) == -1 ); if (z3) { ((*_o)._eStop) = _i; _pending -= 1 ; goto if_26_end; }; if_26_end: /**/; z3 = (((*_o)._return) == -1 ); if (z3) { ((*_o)._return) = _i; _pending -= 1 ; goto if_27_end; }; #line 385 if_27_end: /**/; z3 = (((*_o)._rStop) == -1 ); if (z3) { ((*_o)._rStop) = _i; _pending -= 1 ; goto if_28_end; }; if_28_end: /**/; z3 = (((*_o)._except) == -1 ); if (z3) { ((*_o)._except) = _i; _pending -= 1 ; goto if_29_end; }; #line 387 if_29_end: /**/; break; case 4: z3 = (((*_o)._except) == -1 ); if (z3) { ((*_o)._except) = _i; _pending -= 1 ; goto if_30_end; }; if_30_end: /**/; z3 = (((*_o)._return) == -1 ); if (z3) { ((*_o)._return) = _i; _pending -= 1 ; goto if_31_end; }; #line 390 if_31_end: /**/; break; case 5: z3 = (((*_o)._return) == -1 ); if (z3) { ((*_o)._return) = _i; goto if_32_end; }; if_32_end: /**/; z3 = (((*_o)._rStop) == -1 ); if (z3) { ((*_o)._rStop) = _i; goto if_33_end; }; if_33_end: /**/; z3 = (((*_o)._except) == -1 ); if (z3) { ((*_o)._except) = _i; goto if_34_end; }; if_34_end: /**/; _pending = 0 ; break; default: /**/; }; } } }; _i -= 1 ; z3 = (_pending > 0 ); z0 = 0; if (z3) { z3 = (_i >= 0 ); z0 = z3; }; } while (z0); } } }; #line 402 "Marker.m3" PRIVATE t3 _Marker__FindWhereToCut (_i) t3 _i; { t10 z2; t3 z3; t10 z5; t10 z0; t10 z6; #line 402 "Marker.m3" { auto t3 __result; { CHECKSTACKOVERFLOW; z2 = (_i < _Marker__tos); if (z2) do { z3 = _i; if ((z3 < 0) || (50 < z3)) RANGEFAULT; z5 = (((_Marker__stack.elts[z3])._kind) == 2 ); z0 = 1; if (! z5) { z3 = _i; #line 405 if ((z3 < 0) || (50 < z3)) RANGEFAULT; z6 = (((_Marker__stack.elts[z3])._kind) == 4 ); z0 = z6; }; if (z0) { __result = _i; return __result; }; _i += 1 ; z2 = (_i < _Marker__tos); } while (z2); __result = -1 ; return __result; } } }; #line 413 "Marker.m3" EXPORT t87 _Marker__Initialize () { t6 z3; #line 413 "Marker.m3" { { CHECKSTACKOVERFLOW; z3 = _String__Add (NULLTEXT, 999999 ); _Marker__empty = z3; } } }; PRIVATE int init_done = -1; #line 415 "Marker.m3" PRIVATE void Marker__initProc (g) int g; { #line 415 "Marker.m3" if (init_done >= g) return; init_done = g; INITIALIZE (& Marker__init); INITIALIZE (& ProcType__init); INITIALIZE (& Variable__init); #line 415 INITIALIZE (& Type__init); INITIALIZE (& String__init); INITIALIZE (& Scanner__init); INITIALIZE (& Token__init); INITIALIZE (& Emit__init); #line 415 INITIALIZE (& Error__init); INITIALIZE (& Stmt__init); #line 42 ZERO (1122, & _Marker__stack); #line 41 ZERO1 ((& _Marker__tos)); #line 273 ZERO1 ((& _Marker__nextReturnLabel)); #line 415 return; }; PRIVATE INITLINK me_0 ={(INITLINK*)NIL, 0, Marker__initProc}; static char* VSimports[] = { &VS_ProcType__Raisee__5fe771ff27c179d9, &VS_ProcType__Raises__f4b8d0b93b9af8b2, &VS_ProcType__RaisesVar__8e10f9d23aa93de3, &VS_ProcType__LargeResult__547fe44c362c53bb, &VS_Variable__T__be7ead4a3afd8be5, &VS_Type__T__2446b70b3f7780a5, &VS_Type__Map__41dd9f4b33104fce, &VS_Type__List__5791758e343becc1, &VS_String__T__3a6c7dc12615e4ee, &VS_String__Add__0f5e21cc3d204b63, &VS_Token__DeclStart__730c82bc2c2001b8, &VS_Token__TypeStart__f71616cb38a20d02, &VS_Token__ExprStart__21dc8a0a27344836, &VS_Emit__MaxStream__cf0a0e8934c9c9f3, &VS_Emit__Format__bc4a2b083b93bbd7, &VS_Emit__Op__072646cc27c8ae10, &VS_Emit__OpSI__ab1965f432d76dc2, &VS_Emit__OpI__02cb878634bb9f49, &VS_Emit__OpV__330b9ba039cee040, &VS_Stmt__T__2446b70b3f7780a5, &VS_Marker__Prefix__819dde3f21a97326, NIL }; void Marker__MLink (phase) int phase; { switch (phase) { case 0: { me_0.link = Marker__init; Marker__init = & me_0; break; }; case 1: { break; }; case 2: { break; }; }; };