#include "M3Runtime.h" #define t2 ADDRESS #define t19 void #define TC2 TC_REFANY IMPORT TYPE TC_REFANY; IMPORT char VS_REFANY__4b8748e831fc107a; #define t22 ADDRESS typedef int t17; #define TC22 TC_ADDRESS IMPORT TYPE TC_ADDRESS; IMPORT char VS_ADDRESS__30f7308738738b44; #define t23 ADDRESS #define TC23 TC_NULL IMPORT TYPE TC_NULL; IMPORT char VS_NULL__fb50c7d53bec30dc; #line 84 "Thread.i3" typedef t19 (*t1)(); #define t15 ADDRESS typedef struct { TYPE self; int private; } t15_methods; #define t15_msize (sizeof (t15_methods)) typedef struct { ADDRESS methods; } t15_fields; #define t15_size (sizeof (t15_fields)) #define TC15 TC_ROOT IMPORT TYPE TC_ROOT; IMPORT char VS_ROOT__349f58f628be0ac6; #define t15_MapProc TC_ROOT->mapProc #define t3 ADDRESS PRIVATE typecell t3_TC = {0, 0, 0, 0, 0, (PROC)NIL, #line 15 0, 0, NIL, 0, 0, (PROC)NIL, (PROC)NIL, (PROC)NIL, NIL, 0, 0}; PRIVATE TYPE TC3 = &t3_TC; #define t3_MapProc t3_TC.mapProc typedef t2 (*t4)(); #define t5 ADDRESS PRIVATE typecell t5_TC = {0, 0, 0, 0, 0, (PROC)NIL, #line 21 0, 0, NIL, 0, 0, (PROC)NIL, (PROC)NIL, (PROC)NIL, NIL, 0, 0}; PRIVATE TYPE TC5 = &t5_TC; #define t5_MapProc t5_TC.mapProc #define t6 ADDRESS #define TC6 TC_MUTEX IMPORT TYPE TC_MUTEX; IMPORT char VS_MUTEX__1f9d4e89391ab815; #define t6_MapProc TC_MUTEX->mapProc typedef unsigned char t7; #line 71 typedef t7 (*t8)(); #line 61 typedef t3 (*t9)(); #line 23 #define t10 ADDRESS #line 23 typedef struct { t4 _apply; } t10_methods; #define t10_msize (sizeof (t10_methods)) typedef struct { #line 23 int filler; } t10_fields; #define t10_size (sizeof (t10_fields)) PRIVATE void t10_InitProc (); #line 23 PRIVATE void t10_SetupProc (); PRIVATE void t10_PrintProc (); PRIVATE void t10_MapProc (); PRIVATE typecell t10_TC; PRIVATE typecell t10_TC_init = {0, 0, 0, 0, 0, t10_MapProc, #line 23 t10_size, t10_msize, NIL, 0, 0, t10_InitProc, t10_SetupProc, t10_PrintProc, "", 1264937390, 940741778}; PRIVATE TYPE TC10 = &t10_TC; #line 23 #line 34 typedef t5 (*t11)(); #line 31 typedef t6 (*t12)(); typedef int t13; #line 28 #define t14 ADDRESS #line 28 typedef struct { int filler; } t14_methods; #define t14_msize (sizeof (t14_methods)) typedef struct { #line 28 t13 _stackSize; } t14_fields; #define t14_size (sizeof (t14_fields)) PRIVATE void t14_InitProc (); #line 28 PRIVATE void t14_SetupProc (); PRIVATE void t14_PrintProc (); PRIVATE void t14_MapProc (); PRIVATE typecell t14_TC; PRIVATE typecell t14_TC_init = {0, 0, 0, &t10_TC, 0, t14_MapProc, #line 28 t14_size, t14_msize, NIL, 0, 0, t14_InitProc, t14_SetupProc, t14_PrintProc, "", 613857146, 723551350}; PRIVATE TYPE TC14 = &t14_TC; #line 28 typedef t17 (*t16)(); typedef CLOSURE t18; #define t20 ADDRESS #define TC20 TC_TEXT IMPORT TYPE TC_TEXT; IMPORT char VS_TEXT__b7a92447326386f5; #define t20_MapProc TC_TEXT->mapProc #define t21 ADDRESS typedef struct { TYPE self; int private; } t21_methods; #define t21_msize (sizeof (t21_methods)) typedef struct { ADDRESS methods; } t21_fields; #define t21_size (sizeof (t21_fields)) #define TC21 TC_UNTRACED_ROOT IMPORT TYPE TC_UNTRACED_ROOT; IMPORT char VS_UNTRACED_ROOT__3e0964513fd6da20; typedef unsigned char t24; typedef double t25; typedef float t26; #line 8 EXPORT INITLINK* Thread__init = (INITLINK*) 0; EXPORT char VS_Thread__DefaultStackSize__0c949e2e2def4e40 = '\0'; EXPORT TYPE TC_Thread__T = &t3_TC; #line 8 EXPORT char VS_Thread__T__2555b70b3f7780b1 = '\0'; EXPORT TYPE TC_Thread__Mutex = (TYPE) 0; EXPORT char VS_Thread__Mutex__4f5c12072cdeec3e = '\0'; #line 8 EXPORT TYPE TC_Thread__Condition = &t5_TC; EXPORT char VS_Thread__Condition__26d5968239e08f4e = '\0'; EXPORT TYPE TC_Thread__Closure = &t10_TC; #line 8 EXPORT char VS_Thread__Closure__7fb5c6232c5a658a = '\0'; EXPORT TYPE TC_Thread__SizedClosure = &t14_TC; EXPORT char VS_Thread__SizedClosure__8a46717d2eae7b07 = '\0'; #line 8 IMPORT t6 _Thread__NewMutex (); IMPORT char VS_Thread__NewMutex__15398f4b3009e1dc; IMPORT t5 _Thread__NewCondition (); IMPORT char VS_Thread__NewCondition__5bf986db2b342179; #line 8 IMPORT t3 _Thread__Fork (); IMPORT char VS_Thread__Fork__ef3a2f9230b337c8; IMPORT t2 _Thread__Join (); IMPORT char VS_Thread__Join__4341274725ba29c2; #line 8 IMPORT t19 _Thread__Wait (); IMPORT char VS_Thread__Wait__c083964332379bed; IMPORT t19 _Thread__Acquire (); IMPORT char VS_Thread__Acquire__4f2412f3260f1927; #line 8 IMPORT t19 _Thread__Release (); IMPORT char VS_Thread__Release__539a01d7243a726e; IMPORT t19 _Thread__Broadcast (); IMPORT char VS_Thread__Broadcast__11fc5a192fbbaeab; #line 8 IMPORT t19 _Thread__Signal (); IMPORT char VS_Thread__Signal__ebee2db02dc779f7; IMPORT t3 _Thread__Self (); IMPORT char VS_Thread__Self__a246fed12a2d90d9; #line 8 EXPORT EXCEPTION_NAME _Thread__Alerted = "_Thread__Alerted"; EXPORT char VS_Thread__Alerted__fc88feb43485af46 = '\0'; IMPORT t19 _Thread__Alert (); #line 8 IMPORT char VS_Thread__Alert__1131dec43b9866e6; IMPORT t7 _Thread__TestAlert (); IMPORT char VS_Thread__TestAlert__cd6b7dbf31cf31ce; #line 8 IMPORT t19 _Thread__AlertWait (); IMPORT char VS_Thread__AlertWait__f0ec408b33a29632; IMPORT t2 _Thread__AlertJoin (); IMPORT char VS_Thread__AlertJoin__3714d01c23a59a9a; #line 8 IMPORT t19 _Thread__Yield (); IMPORT char VS_Thread__Yield__cf7d94fc3f11c25f; PRIVATE int init_done = -1; #line 8 "Thread.i3" PRIVATE void Thread__initProc (g) int g; { #line 8 "Thread.i3" if (init_done >= g) return; init_done = g; }; PRIVATE void t10_InitProc (obj) char* obj; { register t10_fields* p; CHECKSTACKOVERFLOW; p = (t10_fields*) (obj + TC15->datasize); }; PRIVATE void t10_SetupProc () { register int* p; t10_TC.datasize += TC15->datasize; t10_TC.methodsize += TC15->methodsize; p = (int*) UALLOC (t10_TC.methodsize); COPY (TC15->defaultMethods, p, (TC15->methodsize)); p[0] = (int)(& t10_TC); p[1] = 0; t10_TC.defaultMethods = (char*) p; }; PRIVATE void t10_PrintProc (obj) char *obj; { t10_fields* o; CHECKSTACKOVERFLOW; if (TC15->printProc != 0) {TC15->printProc (obj); } fprintf (stderr, "{%s} ", TC10->brand); o = (t10_fields*) (obj + TC15->datasize); }; PRIVATE void t14_InitProc (obj) char* obj; { register t14_fields* p; CHECKSTACKOVERFLOW; p = (t14_fields*) (obj + TC10->datasize); p->_stackSize = 3000 ; }; PRIVATE void t14_SetupProc () { register int* p; t14_TC.datasize += TC10->datasize; t14_TC.methodsize += TC10->methodsize; p = (int*) UALLOC (t14_TC.methodsize); COPY (TC10->defaultMethods, p, (TC10->methodsize)); p[0] = (int)(& t14_TC); p[1] = 0; t14_TC.defaultMethods = (char*) p; }; PRIVATE void t14_PrintProc (obj) char *obj; { t14_fields* o; CHECKSTACKOVERFLOW; if (TC10->printProc != 0) {TC10->printProc (obj); } fprintf (stderr, "{%s} ", TC14->brand); o = (t14_fields*) (obj + TC10->datasize); fprintf (stderr, "stackSize = %d", o->_stackSize); }; PRIVATE void t10_MapProc (p, r, c) void (*p) (); char* r; ADDRESS c; { register t10_fields* o; CHECKSTACKOVERFLOW; t15_MapProc (p, r, c); o = (t10_fields*) (r + TC15->datasize); }; PRIVATE void t14_MapProc (p, r, c) void (*p) (); char* r; ADDRESS c; { register t14_fields* o; CHECKSTACKOVERFLOW; t10_MapProc (p, r, c); o = (t14_fields*) (r + TC10->datasize); }; PRIVATE INITLINK me = {(INITLINK*)NIL, 1, Thread__initProc }; static char* VSimports[] = { &VS_Thread__NewMutex__15398f4b3009e1dc, &VS_Thread__NewCondition__5bf986db2b342179, &VS_Thread__Fork__ef3a2f9230b337c8, &VS_Thread__Join__4341274725ba29c2, &VS_Thread__Wait__c083964332379bed, &VS_Thread__Acquire__4f2412f3260f1927, &VS_Thread__Release__539a01d7243a726e, &VS_Thread__Broadcast__11fc5a192fbbaeab, &VS_Thread__Signal__ebee2db02dc779f7, &VS_Thread__Self__a246fed12a2d90d9, &VS_Thread__Alert__1131dec43b9866e6, &VS_Thread__TestAlert__cd6b7dbf31cf31ce, &VS_Thread__AlertWait__f0ec408b33a29632, &VS_Thread__AlertJoin__3714d01c23a59a9a, &VS_Thread__Yield__cf7d94fc3f11c25f, NIL }; void Thread__ILink (phase) int phase; { switch (phase) { case 0: { me.link = Thread__init; Thread__init = & me; TC_Thread__Mutex = TC6; REGISTEROPAQUE (TC3); REGISTEROPAQUE (TC5); t10_TC = t10_TC_init; REGISTERTYPE (TC10); t14_TC = t14_TC_init; REGISTERTYPE (TC14); break; }; case 1: { t10_TC.parent = TC_ROOT; break; }; case 2: { break; }; }; };