/* Generated with C2C (Cedar To C)*/ /* Copyright (C) 1992 by Xerox Corporation. All rights reserved. */ /* time: July 22, 1992 11:25:37 am PDT */ /* C2C version: October 16, 1990 (native) */ /* ref-counting: off */ /* file: VMChunksImpl, module: VMChunksImpl */ /* switches: bcfhklnouw */ #include #include static char versionStamp[] = "@(#)mob_version [1800547671,957849160] VMChunksImpl"; typedef unsigned word, *ptr; typedef unsigned char byte, *bPt; typedef unsigned short half, *hPt; typedef word (*fPt)(); typedef struct {word f0, f1, f2, f3, f4, f5;} W6; typedef struct {word f0, f1;} W2; #define SOURCE(p, l) /* source p, l */ static void NoName_Q840(); static void VMChunksImpl_P0(); static word IsChunk_P60(); static word NarrowChunk_P120(); static word AddressOfChunk_P180(); static word SizeOfChunk_P240(); static word DomainOfChunk_P300(); static word CreateDomain_P360(); static word InitRoot_P780(); static word NewChunk_P420(); static word AllocateChunk_P480(); static void Free_P540(); static void SplitNCreateNext_P600(); static void JoinNRemoveNext_P660(); static void Finalizor_P720(); static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\153\122\055\127\300\071\027\236\110\100\214\000\000"}; static struct {unsigned f; char r[4];} string2 = {131074, "\003\004\000"}; static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\153\122\055\127\300\071\027\236\110\100\244\000\000"}; static struct {unsigned f; char r[4];} string4 = {131074, "\004\003\000"}; static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\153\122\055\127\300\071\027\236\110\100\230\000\000"}; static struct {unsigned f; char r[4];} string6 = {131074, "\004\014\000"}; static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\153\122\055\127\300\071\027\236\110\100\200\000\000"}; static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\157\176\027\244\300\037\074\133\137\100\150\000\000"}; static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\246\171\266\212\300\131\156\315\206\100\150\000\000"}; static struct {unsigned f; char r[24];} string10 = {1441816, "\211\012\011\104\157\155\141\151\156\122\145\160\300\246\171\266\212\300\131\156\315\206\000"}; static struct {unsigned f; char r[24];} string11 = {1376280, "\211\011\010\103\150\165\156\153\122\145\160\300\246\171\266\212\300\131\156\315\206\000\000"}; static struct { word f0[9]; word f9; word f10; word f11; word f12; word f13; word f14; word f15; word f16; word f17; word f18; word f19; word f20; word f21; word f22; word f23; word f24; word f25; word f26; word f27; word f28; word f29; word f30; word f31; word f32; word f33; word f34[3]; } globalframe = { {0}, (word) Finalizor_P720, 0, (word) JoinNRemoveNext_P660, 0, (word) SplitNCreateNext_P600, 0, (word) Free_P540, 0, (word) AllocateChunk_P480, 0, (word) NewChunk_P420, 0, (word) CreateDomain_P360, 0, (word) DomainOfChunk_P300, 0, (word) SizeOfChunk_P240, 0, (word) AddressOfChunk_P180, 0, (word) NarrowChunk_P120, 0, (word) IsChunk_P60, 0, (word) VMChunksImpl_P0, {0} }; static void NoName_Q840() { register ptr gf_c063 = (ptr) &globalframe; word var_c6928; (* (( (ptr) gf_c063)+5) ) = (word) XR_GetTypeIndex((word) &string1, 0, (word) &string2); (* (( (ptr) gf_c063)+6) ) = (word) XR_GetTypeIndex((word) &string3, 0, (word) &string4); (* (( (ptr) gf_c063)+8) ) = (word) XR_GetTypeIndex((word) &string5, 0, (word) &string6); (void) XR_DeclareGlobalFrame((word) "VMChunksImpl", &globalframe, (word) XR_GetTypeIndex((word) &string7, 0, (word) &string2) , (word) (( (bPt) gf_c063)+132)/* var_c6544 */ ); var_c6928 = (word) XR_ImportInterface((word) "FinalizeOps", (word) XR_GetTypeIndexS((word) (&string8)), 7); (* (( (ptr) gf_c063)+35)/* var_c6576 */ ) = var_c6928; (void) XR_ImportProcS(var_c6928, 67634178); (void) XR_ImportProcS(var_c6928, 67634690); var_c6928 = (word) XR_ExportInterface((word) "VMChunks", (word) XR_GetTypeIndexS((word) (&string9)), 9); (* (( (ptr) gf_c063)+36)/* var_c6960 */ ) = var_c6928; (void) XR_ExportType((word) "DomainRep", (word) XR_GetTypeIndexS((word) (&string10)), (word) XR_GetTypeIndex((word) &string1, 0, (word) &string2) ); (void) XR_ExportType((word) "ChunkRep", (word) XR_GetTypeIndexS((word) (&string11)), (word) XR_GetTypeIndex((word) &string3, 0, (word) &string4) ); (void) XR_ExportProcS(var_c6928, (word) (( (bPt) gf_c063)+84)/* var_c6352 */ , 67633666); (void) XR_ExportProcS(var_c6928, (word) (( (bPt) gf_c063)+124)/* var_c6512 */ , 67371777); (void) XR_ExportProcS(var_c6928, (word) (( (bPt) gf_c063)+116)/* var_c6480 */ , 67372033); (void) XR_ExportProcS(var_c6928, (word) (( (bPt) gf_c063)+68)/* var_c6288 */ , 67634434); (void) XR_ExportProcS(var_c6928, (word) (( (bPt) gf_c063)+108)/* var_c6448 */ , 67372545); (void) XR_ExportProcS(var_c6928, (word) (( (bPt) gf_c063)+100)/* var_c6416 */ , 67372801); (void) XR_ExportProcS(var_c6928, (word) (( (bPt) gf_c063)+92)/* var_c6384 */ , 67373057); } static void VMChunksImpl_P0(formal_c020, formal_c019) word formal_c020; word formal_c019; { register ptr gf_c6992 = (ptr) &globalframe; /* VMChunksImpl: */ SOURCE(34, 3210) SOURCE(3053, 81) { word pd12; pd12 = (* (( (ptr) (* (( (ptr) gf_c6992)+35)/* var_c6576 */ ))+10) ); (* (( (ptr) gf_c6992)+4)/* finalizationQueue_v3028 */ ) = (word) ( *( (fPt) ((* (ptr) pd12 ))))((word) (( (bPt) gf_c6992)+36) /* var_c6160 */ , 3, pd12); }; } static word IsChunk_P60(x_v3496) word x_v3496; { register ptr gf_c7024 = (ptr) &globalframe; word var_c3556; /* IsChunk: */ SOURCE(586, 102) SOURCE(639, 49) { word tc13; if ((x_v3496 != 0)) { if ((x_v3496 == 0)) { tc13 = (word) 1; } else { tc13 = (word) ((* (( (ptr) gf_c7024)+6) ) == XR_GetReferentType(x_v3496)); }; } else { tc13 = (word) 0; }; return(tc13); }; } static word NarrowChunk_P120(x_v3616) word x_v3616; { register ptr gf_c7056 = (ptr) &globalframe; word var_c3672; /* NarrowChunk: */ SOURCE(692, 97) SOURCE(750, 39) return(XR_Narrow(x_v3616, (* (( (ptr) gf_c7056)+6) ))); } static word AddressOfChunk_P180(chunk_v3732) word chunk_v3732; { word var_c3776; /* AddressOfChunk: */ SOURCE(793, 84) SOURCE(855, 22) return((* (ptr) (* (ptr) chunk_v3732 ) )); } static word SizeOfChunk_P240(chunk_v3836) word chunk_v3836; { word var_c3880; /* SizeOfChunk: */ SOURCE(881, 81) SOURCE(940, 22) return((* (( (ptr) (* (ptr) chunk_v3836 ))+1) )); } static word DomainOfChunk_P300(chunk_v3940) word chunk_v3940; { word var_c3984; /* DomainOfChunk: */ SOURCE(966, 82) SOURCE(1029, 19) return((* (( (ptr) chunk_v3940)+1) )); } static word CreateDomain_P360(startAddress_v4044, size_v4072) word startAddress_v4044; word size_v4072; { W6 var_c7088; register ptr gf_c7120 = (ptr) &globalframe; word d_v4116; /* declaration of var_c6640 skipped */ /* CreateDomain: */ SOURCE(1052, 307) { word tmpAddr14; tmpAddr14 = (word) (( (ptr) &var_c7088)+4)/* var_c6640 */ ; (* (ptr) tmpAddr14 ) = ( ((word) (fPt) InitRoot_P780) ); (* (( (ptr) tmpAddr14) + 1) ) = 1; }; SOURCE(1052, 307) d_v4116 = 0; SOURCE(1302, 18) d_v4116 = XR_NewObject(20, (* (( (ptr) gf_c7120)+5) )); SOURCE(1322, 37) (* (( (ptr) d_v4116)+4) ) = (word) InitRoot_P780(startAddress_v4044, size_v4072, (word) (( (bPt) &var_c7088)+16)/* var_c6640 */ ) ; SOURCE(1052, 307) return(d_v4116); } static word InitRoot_P780(startAddress_v4820, size_v4848, formal_c7184) word startAddress_v4820; word size_v4848; word formal_c7184; { register ptr gf_c7152 = (ptr) &globalframe; word c_v4892; formal_c7184 = (formal_c7184 - 16); /* InitRoot: */ SOURCE(1135, 162) SOURCE(1135, 162) c_v4892 = 0; SOURCE(1217, 21) c_v4892 = XR_NewObject(20, (* (( (ptr) gf_c7152)+8) )); SOURCE(1240, 13) (* (( (ptr) c_v4892)+1) ) = size_v4848; SOURCE(1255, 21) (* (ptr) c_v4892 ) = startAddress_v4820; SOURCE(1278, 19) (* (( (ptr) c_v4892)+3) ) = c_v4892; (* (( (ptr) c_v4892)+2) ) = c_v4892; SOURCE(1135, 162) return(c_v4892); } static word NewChunk_P420(domain_v4176, c_v4204) word domain_v4176; word c_v4204; { register ptr gf_c7216 = (ptr) &globalframe; word ch_v4260; /* NewChunk: */ SOURCE(1419, 204) SOURCE(1419, 204) ch_v4260 = 0; SOURCE(1496, 46) { word var_c6768; var_c6768 = XR_NewObject(8, (* (( (ptr) gf_c7216)+6) )); (* (ptr) var_c6768 ) = c_v4204; (* (( (ptr) var_c6768)+1) ) = domain_v4176; ch_v4260 = var_c6768; }; SOURCE(1544, 17) (* (( (ptr) c_v4204)+4) ) = 1; SOURCE(1564, 59) { word var_c6800; word pd15; pd15 = (* (( (ptr) (* (( (ptr) gf_c7216)+35)/* var_c6576 */ ))+8) ); var_c6800 = (word) ( *( (fPt) ((* (ptr) pd15 ))))(ch_v4260, (* (( (ptr) gf_c7216)+4)/* finalizationQueue_v3028 */ ), pd15) ; }; SOURCE(1419, 204) return(ch_v4260); } static word AllocateChunk_P480(domain_v4320, size_v4348) word domain_v4320; word size_v4348; { word var_c4392; word root_v4932; word c_v4960; /* AllocateChunk: */ SOURCE(1627, 526) (void) (XR_MonitorEntry(domain_v4320)); SOURCE(1709, 36) root_v4932 = (* (( (ptr) domain_v4320)+4) ); SOURCE(1747, 26) c_v4960 = root_v4932; SOURCE(1775, 57) size_v4348 = (((size_v4348 + 7) >> 3) << 3); SOURCE(1835, 27) if ((size_v4348 == 0)) { SOURCE(1850, 12) (void) (XR_MonitorExit(domain_v4320)); return(0); }; SOURCE(1864, 8) c_v4960 = root_v4932; SOURCE(1874, 97) lab_L100002: ; SOURCE(1877, 64) if ( ( (0 == (* (( (ptr) c_v4960)+4) )) ? ((* (( (ptr) c_v4960)+1) ) == size_v4348) : 0 ) ) { SOURCE(1914, 27) { word var_c6832; var_c6832 = (word) NewChunk_P420(domain_v4320, c_v4960); (void) (XR_MonitorExit(domain_v4320)); return(var_c6832); }; }; SOURCE(1944, 10) c_v4960 = (* (( (ptr) c_v4960)+3) ); SOURCE(1956, 15) if ((c_v4960 == root_v4932)) { SOURCE(1971, 4) goto lab_L100001; }; goto lab_L100002; lab_L100001: ; SOURCE(1987, 8) c_v4960 = root_v4932; SOURCE(1997, 128) lab_L100005: ; SOURCE(2000, 93) if ( ( (0 == (* (( (ptr) c_v4960)+4) )) ? ((* (( (ptr) c_v4960)+1) ) > size_v4348) : 0 ) ) { SOURCE(2038, 25) (void) SplitNCreateNext_P600(c_v4960, size_v4348); SOURCE(2065, 28) { word var_c6864; var_c6864 = (word) NewChunk_P420(domain_v4320, c_v4960); (void) (XR_MonitorExit(domain_v4320)); return(var_c6864); }; }; SOURCE(2098, 10) c_v4960 = (* (( (ptr) c_v4960)+3) ); SOURCE(2110, 15) if ((c_v4960 == root_v4932)) { SOURCE(2125, 4) goto lab_L100004; }; goto lab_L100005; lab_L100004: ; SOURCE(2141, 12) (void) (XR_MonitorExit(domain_v4320)); return(0); } static void Free_P540(domain_v4452, c_v4480) word domain_v4452; word c_v4480; { /* Free: */ SOURCE(2159, 215) (void) (XR_MonitorEntry(domain_v4452)); SOURCE(2218, 20) if ((0 == (* (( (ptr) c_v4480)+4) ))) { SOURCE(2238, 5) (void) XR_RaiseUnnamedError(); }; SOURCE(2245, 18) (* (( (ptr) c_v4480)+4) ) = 0; SOURCE(2265, 51) if ((0 == (* (( (ptr) (* (( (ptr) c_v4480)+3) ))+4) ))) { SOURCE(2290, 26) (void) JoinNRemoveNext_P660(domain_v4452, c_v4480); }; SOURCE(2318, 56) if ((0 == (* (( (ptr) (* (( (ptr) c_v4480)+2) ))+4) ))) { SOURCE(2343, 31) (void) JoinNRemoveNext_P660(domain_v4452, (* (( (ptr) c_v4480)+2) )); }; SOURCE(2159, 215) (void) (XR_MonitorExit(domain_v4452)); return; } static void SplitNCreateNext_P600(c_v4552, nbytes_v4580) word c_v4552; word nbytes_v4580; { register ptr gf_c7248 = (ptr) &globalframe; word new_v5028; /* SplitNCreateNext: */ SOURCE(2380, 316) SOURCE(2452, 41) new_v5028 = XR_NewObject(20, (* (( (ptr) gf_c7248)+8) )); SOURCE(2495, 37) if ((0 != (* (( (ptr) c_v4552)+4) )) || (nbytes_v4580 >= (* (( (ptr) c_v4552)+1) ))) { SOURCE(2532, 5) (void) XR_RaiseUnnamedError(); }; SOURCE(2559, 26) (* (( (ptr) new_v5028)+1) ) = ((* (( (ptr) c_v4552)+1) ) - nbytes_v4580); SOURCE(2587, 15) (* (( (ptr) c_v4552)+1) ) = nbytes_v4580; SOURCE(2604, 26) (* (ptr) new_v5028 ) = ((* (ptr) c_v4552 ) + nbytes_v4580); SOURCE(2632, 17) (* (( (ptr) new_v5028)+3) ) = (* (( (ptr) c_v4552)+3) ); SOURCE(2651, 12) (* (( (ptr) new_v5028)+2) ) = c_v4552; SOURCE(2665, 17) (* (( (ptr) (* (( (ptr) c_v4552)+3) ))+2) ) = new_v5028; SOURCE(2684, 12) (* (( (ptr) c_v4552)+3) ) = new_v5028; } static void JoinNRemoveNext_P660(domain_v4652, c_v4680) word domain_v4652; word c_v4680; { word root_v5084; word remove_v5112; /* JoinNRemoveNext: */ SOURCE(2702, 345) SOURCE(2775, 36) root_v5084 = (* (( (ptr) domain_v4652)+4) ); SOURCE(2813, 33) remove_v5112 = (* (( (ptr) c_v4680)+3) ); SOURCE(2848, 26) if ((remove_v5112 == root_v5084)) { SOURCE(2868, 6) return; }; SOURCE(2911, 38) if ((0 != (* (( (ptr) c_v4680)+4) )) || (0 != (* (( (ptr) remove_v5112)+4) ))) { SOURCE(2949, 5) (void) XR_RaiseUnnamedError(); }; SOURCE(2976, 20) (* (( (ptr) c_v4680)+3) ) = (* (( (ptr) remove_v5112)+3) ); SOURCE(2998, 20) (* (( (ptr) (* (( (ptr) remove_v5112)+3) ))+2) ) = c_v4680; SOURCE(3020, 27) (* (( (ptr) c_v4680)+1) ) = ((* (( (ptr) c_v4680)+1) ) + (* (( (ptr) remove_v5112)+1) )); } static void Finalizor_P720(handle_v5844, object_v5872) word handle_v5844; word object_v5872; { register ptr gf_c7280 = (ptr) &globalframe; word chunk_v5180; /* Finalizor: */ SOURCE(3136, 108) SOURCE(3176, 42) chunk_v5180 = XR_Narrow(object_v5872, (* (( (ptr) gf_c7280)+6) )); SOURCE(3220, 24) (void) Free_P540((* (( (ptr) chunk_v5180)+1) ), (* (ptr) chunk_v5180 )); } /* file: VMChunksImpl, module: VMChunksImpl, compiled at: July 22, 1992 11:25:36 am PDT */ extern void XR_install_VMChunksImpl() { NoName_Q840(); } extern void XR_run_VMChunksImpl() { XR_Start(&globalframe); }