/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation. All rights reserved. */
/* time: January 28, 1993 4:06:48 pm PST */
/* C2C version: January 27, 1993 (sun4) */
/* ref-counting: off */
/* file: FinalizeOpsImpl, module: FinalizeOpsImpl */
/* switches: bcfhklnouw */
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [2596585603,1001728106] FinalizeOpsImpl";
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;} W5;
typedef struct {word f0, f1;} W2;
#define SOURCE(p, l) /* source p, l */
static void NoName←Q1176();
static void FinalizeOpsImpl←P0();
static word IsCallQueue←P60();
static word NarrowCallQueue←P120();
static word IsFinalizeOpsHandle←P180();
static word EnableFinalization←P240();
static word ReenableFinalization←P300();
static word CreateCallQueue←P360();
static word HandleToObject←P420();
static word Forward←P600();
static word Fetch←P660();
static void CallQueueProcess←P720();
static word NoName←Q1236();
static void MainQueueProcess←P780();
static void NoName←Q1296();
static word NoName←Q1356();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\232\304\300\203\300\073\265\050\152\100\200\000\000"};
static struct {unsigned f; char r[4];} string2 = {196611, "\004A\200"};
static struct {unsigned f; char r[80];} string3 = {5111888, "\260\006\005\146\151\162\163\164\216\211\022\021\106\151\156\141\154\151\172\141\142\154\145\117\142\152\145\143\164\300\250\013\333\033\300\120\151\334\170\005\004\162\145\163\164\214\216\211\022\021\106\151\156\141\154\151\172\141\142\154\145\117\142\152\145\143\164\300\250\013\333\033\300\120\151\334\170\261\000"};
static struct {unsigned f; char r[4];} string4 = {131074, "\004\003\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\232\304\300\203\300\073\265\050\152\100\164\000\000"};
static struct {unsigned f; char r[4];} string6 = {196611, "\004C\000"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\250\013\333\033\300\120\151\334\170\100\150\000\000"};
static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\240\236\274\315\300\111\163\325\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\157\176\027\244\300\037\074\133\137\100\150\000\000"};
static struct {unsigned f; char r[28];} string10 = {1638428, "\211\015\014\103\141\154\154\121\165\145\165\145\122\145\160\300\157\176\027\244\300\037\074\133\137\000\000"};
static struct {
word f0[13]; 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; word f35;
word f36[4];
} globalframe = {
{0}, (word) MainQueueProcess←P780, 0, (word) CallQueueProcess←P720,
0, (word) Fetch←P660, 0, (word) Forward←P600,
0, (word) HandleToObject←P420, 0, (word) CreateCallQueue←P360,
0, (word) ReenableFinalization←P300, 0, (word) EnableFinalization←P240,
0, (word) IsFinalizeOpsHandle←P180, 0, (word) NarrowCallQueue←P120,
0, (word) IsCallQueue←P60, 0, (word) FinalizeOpsImpl←P0,
{0}
};
static void NoName←Q1176()
{
register ptr gf←c074 = (ptr) &globalframe;
word var←c8312;
(* (( (ptr) gf←c074)+10) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
(* (( (ptr) gf←c074)+12) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
(void) XR←DeclareGlobalFrame((word) "FinalizeOpsImpl", &globalframe, (word) XR←GetTypeIndex((word) &string5, 0, (word) &string6)
, (word) (( (bPt) gf←c074)+140)/* var←c7864 */ );
var←c8312 = (word) XR←ImportInterface((word) "Finalize", (word) XR←GetTypeIndexS((word) (&string7)), 14);
(* (( (ptr) gf←c074)+37)/* var←c7896 */ ) = var←c8312;
(void) XR←ImportProcS(var←c8312, 67374081);
(void) XR←ImportProcS(var←c8312, 67373057);
(void) XR←ImportProcS(var←c8312, 67634690);
(void) XR←ImportProcS(var←c8312, 67896323);
(void) XR←ImportProcS(var←c8312, 67373313);
(void) XR←ImportProcS(var←c8312, 67111424);
var←c8312 = (word) XR←ImportInterface((word) "Process", (word) XR←GetTypeIndexS((word) (&string8)), 22);
(* (( (ptr) gf←c074)+38)/* var←c8184 */ ) = var←c8312;
(void) XR←ImportProcS(var←c8312, 264449);
(void) XR←ImportProcS(var←c8312, 526081);
var←c8312 = (word) XR←ExportInterface((word) "FinalizeOps", (word) XR←GetTypeIndexS((word) (&string9)), 7);
(* (( (ptr) gf←c074)+39)/* var←c8344 */ ) = var←c8312;
(void) XR←ExportProcS(var←c8312, (word) (( (bPt) gf←c074)+116)/* var←c7768 */ , 67371009);
(void) XR←ExportType((word) "CallQueueRep", (word) XR←GetTypeIndexS((word) (&string10)), (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2)
);
(void) XR←ExportProcS(var←c8312, (word) (( (bPt) gf←c074)+132)/* var←c7832 */ , 67371521);
(void) XR←ExportProcS(var←c8312, (word) (( (bPt) gf←c074)+124)/* var←c7800 */ , 67371777);
(void) XR←ExportProcS(var←c8312, (word) (( (bPt) gf←c074)+108)/* var←c7736 */ , 67634178);
(void) XR←ExportProcS(var←c8312, (word) (( (bPt) gf←c074)+100)/* var←c7704 */ , 67372289);
(void) XR←ExportProcS(var←c8312, (word) (( (bPt) gf←c074)+92)/* var←c7672 */ , 67634690);
}
static void FinalizeOpsImpl←P0(formal←c023, formal←c022)
word formal←c023;
word formal←c022;
{
register ptr gf←c8376 = (ptr) &globalframe;
/* FinalizeOpsImpl: */
SOURCE(46, 2957)
SOURCE(430, 49)
{
word pd11;
pd11 = (* (( (ptr) (* (( (ptr) gf←c8376)+37)/* var←c7896 */ ))+14) );
(* (( (ptr) gf←c8376)+8)/* fq←v2664 */ ) = (word) ( *( (fPt) ((* (ptr) pd11 ))))(pd11);
};
}
static word IsCallQueue←P60(x←v3528)
word x←v3528;
{
register ptr gf←c8408 = (ptr) &globalframe;
word var←c3588;
/* IsCallQueue: */
SOURCE(482, 83)
SOURCE(535, 30)
{
word tc12;
if ((x←v3528 == 0)) {
tc12 = (word) 1;
}
else {
tc12 = (word) ((* (( (ptr) gf←c8408)+10) ) == XR←GetReferentType(x←v3528));
};
return(tc12);
};
}
static word NarrowCallQueue←P120(x←v3648)
word x←v3648;
{
register ptr gf←c8440 = (ptr) &globalframe;
word var←c3704;
/* NarrowCallQueue: */
SOURCE(568, 92)
SOURCE(630, 30)
return(XR←Narrow(x←v3648, (* (( (ptr) gf←c8440)+10) )));
}
static word IsFinalizeOpsHandle←P180(handle←v3764)
word handle←v3764;
{
register ptr gf←c8472 = (ptr) &globalframe;
word var←c3808;
/* IsFinalizeOpsHandle: */
SOURCE(663, 183)
SOURCE(741, 105)
{
word var←c7960;
{
word pd13;
pd13 = (* (( (ptr) (* (( (ptr) gf←c8472)+37)/* var←c7896 */ ))+13) );
var←c7960 = (word) ( *( (fPt) ((* (ptr) pd13 ))))(handle←v3764, pd13);
};
if ((var←c7960 == 0)) {
goto lab←L100000;
};
if (((* (( (ptr) gf←c8472)+10) ) == XR←GetReferentType(var←c7960))) {
{
word cq←v5060;
cq←v5060 = var←c7960;
SOURCE(806, 13)
return(1);
};
}
else {
lab←L100000: ;
SOURCE(832, 14)
return(0);
};
};
}
static word EnableFinalization←P240(object←v3868, callQueue←v3896)
word object←v3868;
word callQueue←v3896;
{
register ptr gf←c8504 = (ptr) &globalframe;
word handle←v3952;
/* EnableFinalization: */
SOURCE(852, 168)
SOURCE(852, 168)
handle←v3952 = 0;
SOURCE(961, 59)
{
word pd14;
pd14 = (* (( (ptr) (* (( (ptr) gf←c8504)+37)/* var←c7896 */ ))+8) );
handle←v3952 = (word) ( *( (fPt) ((* (ptr) pd14 ))))(object←v3868, (* (( (ptr) gf←c8504)+8)/* fq←v2664 */ ), callQueue←v3896, pd14)
;
};
SOURCE(852, 168)
return(handle←v3952);
}
static word ReenableFinalization←P300(handle←v4012)
word handle←v4012;
{
register ptr gf←c8536 = (ptr) &globalframe;
word oldState←v4056;
/* ReenableFinalization: */
SOURCE(1025, 219)
SOURCE(1127, 117)
{
word var←c7992;
{
word pd15;
pd15 = (* (( (ptr) (* (( (ptr) gf←c8536)+37)/* var←c7896 */ ))+13) );
var←c7992 = (word) ( *( (fPt) ((* (ptr) pd15 ))))(handle←v4012, pd15);
};
if ((var←c7992 == 0)) {
goto lab←L100001;
};
if (((* (( (ptr) gf←c8536)+10) ) == XR←GetReferentType(var←c7992))) {
{
word cq←v5104;
cq←v5104 = var←c7992;
SOURCE(1192, 52)
{
word pd16;
pd16 = (* (( (ptr) (* (( (ptr) gf←c8536)+37)/* var←c7896 */ ))+10) );
oldState←v4056 = (word) ( *( (fPt) ((* (ptr) pd16 ))))(handle←v4012, (* (( (ptr) gf←c8536)+8)/* fq←v2664 */ ), pd16);
};
};
}
else {
lab←L100001: ;
SOURCE(1257, 5)
(void) XR←RaiseUnnamedError();
};
};
SOURCE(1025, 219)
return(oldState←v4056);
}
static word CreateCallQueue←P360(finalize←v4116, priority←v4144)
word finalize←v4116;
word priority←v4144;
{
register ptr gf←c8568 = (ptr) &globalframe;
word cq←v4188;
/* CreateCallQueue: */
SOURCE(1267, 204)
SOURCE(1267, 204)
cq←v4188 = 0;
SOURCE(1406, 65)
{
word var←c8024;
var←c8024 = XR←NewObject(36, (* (( (ptr) gf←c8568)+10) ));
(* (( (ptr) var←c8024)+4) ) = XR←CheckProc(finalize←v4116);
(* (( (ptr) var←c8024)+5) ) = priority←v4144;
cq←v4188 = var←c8024;
};
SOURCE(1267, 204)
return(cq←v4188);
}
static word HandleToObject←P420(handle←v4248)
word handle←v4248;
{
register ptr gf←c8600 = (ptr) &globalframe;
word object←v4292;
/* HandleToObject: */
SOURCE(1477, 112)
SOURCE(1477, 112)
object←v4292 = 0;
SOURCE(1548, 41)
{
word pd17;
pd17 = (* (( (ptr) (* (( (ptr) gf←c8600)+37)/* var←c7896 */ ))+12) );
return((word) ( *( (fPt) ((* (ptr) pd17 ))))(handle←v4248, pd17));
};
}
static word Forward←P600(cq←v4780, h←v4808)
word cq←v4780;
word h←v4808;
{
register ptr gf←c8632 = (ptr) &globalframe;
word mustFork←v4852;
word list←v5148;
/* Forward: */
SOURCE(1904, 245)
(void) (XR←MonitorEntry((word) (( (bPt) gf←c8632)+16)/* LOCK←v2524 */ ));
SOURCE(1904, 245)
mustFork←v4852 = 0;
SOURCE(1988, 6)
{
word l←v7432;
word h←v7464;
h←v7464 = h←v4808;
SOURCE(1734, 164)
l←v7432 = 0;
SOURCE(1808, 12)
l←v7432 = (* (( (ptr) gf←c8632)+9)/* freeList←v2888 */ );
SOURCE(1822, 76)
if ((l←v7432 == 0)) {
SOURCE(1836, 17)
{
word var←c8120;
word var←c8152;
var←c8120 = XR←NewObject(8, (* (( (ptr) gf←c8632)+12) ));
var←c8152 = var←c8120;
(* (ptr) var←c8152 ) = h←v7464;
l←v7432 = var←c8120;
};
}
else {
SOURCE(1854, 17)
(* (( (ptr) gf←c8632)+9)/* freeList←v2888 */ ) = (* (( (ptr) l←v7432)+1) );
SOURCE(1873, 11)
(* (ptr) l←v7432 ) = h←v7464;
SOURCE(1886, 12)
(* (( (ptr) l←v7432)+1) ) = 0;
};
SOURCE(1734, 164)
list←v5148 = l←v7432;
};
SOURCE(2023, 62)
if (((* (( (ptr) cq←v4780)+7) ) == 0)) {
SOURCE(2045, 21)
(* (( (ptr) cq←v4780)+7) ) = list←v5148;
}
else {
SOURCE(2066, 19)
(* (( (ptr) (* (( (ptr) cq←v4780)+8) ))+1) ) = list←v5148;
};
SOURCE(2087, 14)
(* (( (ptr) cq←v4780)+8) ) = list←v5148;
SOURCE(2103, 46)
if ((0 == (* (( (ptr) cq←v4780)+6) ))) {
SOURCE(2122, 27)
mustFork←v4852 = 1;
(* (( (ptr) cq←v4780)+6) ) = 1;
};
SOURCE(1904, 245)
(void) (XR←MonitorExit((word) (( (bPt) gf←c8632)+16)/* LOCK←v2524 */ ));
return(mustFork←v4852);
}
static word Fetch←P660(cq←v4912)
word cq←v4912;
{
register ptr gf←c8664 = (ptr) &globalframe;
word h←v4956;
word l←v5276;
/* Fetch: */
SOURCE(2156, 180)
(void) (XR←MonitorEntry((word) (( (bPt) gf←c8664)+16)/* LOCK←v2524 */ ));
SOURCE(2156, 180)
h←v4956 = 0;
SOURCE(2220, 3)
l←v5276 = (* (( (ptr) cq←v4912)+7) );
SOURCE(2250, 86)
if ((l←v5276 != 0)) {
SOURCE(2266, 11)
h←v4956 = (* (ptr) l←v5276 );
SOURCE(2279, 17)
(* (( (ptr) cq←v4912)+7) ) = (* (( (ptr) l←v5276)+1) );
SOURCE(2298, 14)
{
word l←v7384;
l←v7384 = l←v5276;
SOURCE(1683, 13)
(* (ptr) l←v7384 ) = 0;
SOURCE(1698, 17)
(* (( (ptr) l←v7384)+1) ) = (* (( (ptr) gf←c8664)+9)/* freeList←v2888 */ );
SOURCE(1717, 13)
(* (( (ptr) gf←c8664)+9)/* freeList←v2888 */ ) = l←v7384;
};
}
else {
SOURCE(2319, 17)
(* (( (ptr) cq←v4912)+6) ) = 0;
};
SOURCE(2156, 180)
(void) (XR←MonitorExit((word) (( (bPt) gf←c8664)+16)/* LOCK←v2524 */ ));
return(h←v4956);
}
static void CallQueueProcess←P720(formal←c092)
word formal←c092;
{
W5 var←c8696;
/* declaration of cq←v5016 skipped */
register ptr gf←c8728 = (ptr) &globalframe;
var←c8696.f4/* cq←v5016 */ = formal←c092;
/* CallQueueProcess: */
SOURCE(2342, 194)
SOURCE(2385, 32)
{
word pd18;
pd18 = (* (( (ptr) (* (( (ptr) gf←c8728)+38)/* var←c8184 */ ))+13) );
(void) ( *( (fPt) ((* (ptr) pd18 ))))((* ((( (ptr) var←c8696.f4/* cq←v5016 */ )+5)) ), pd18);
};
SOURCE(2419, 117)
lab←L100005: ;
SOURCE(2422, 114)
{
word var←c01;
{
word var←c089;
var←c089 = (word) &var←c8696;
var←c01 = (word) XR←Enable(( ((word) (fPt) NoName←Q1236) ), ( ((word) (fPt) NoName←Q1296) ), var←c089);
};
if ((var←c01 == 2)) {
goto lab←L100005;
}
else {
if ((var←c01 == 1)) {
goto lab←L02;
};
};
};
goto lab←L100005;
lab←L02: ;
return;
}
static word NoName←Q1236(formal←c087)
word formal←c087;
{
register ptr gf←c086 = (ptr) &globalframe;
SOURCE(2446, 90)
lab←L100010: ;
SOURCE(2446, 90)
{
word h←v5404;
SOURCE(2449, 21)
h←v5404 = (word) Fetch←P660((* ((( (ptr) formal←c087)+4)) ));
SOURCE(2472, 20)
if ((h←v5404 == 0)) {
SOURCE(2486, 6)
return(1);
};
SOURCE(2494, 42)
{
word var←c8216;
{
word pd19;
pd19 = (* (( (ptr) (* (( (ptr) gf←c086)+37)/* var←c7896 */ ))+12) );
var←c8216 = (word) ( *( (fPt) ((* (ptr) pd19 ))))(h←v5404, pd19);
};
{
word pd20;
pd20 = (* (( (ptr) (* (( (ptr) formal←c087)+4) ))+4) );
(void) ( *( (fPt) ((* (ptr) pd20 ))))(h←v5404, var←c8216, pd20);
};
};
};
goto lab←L100010;
/* c2c skipped dead code */
}
static void MainQueueProcess←P780()
{
register ptr gf←c8760 = (ptr) &globalframe;
/* MainQueueProcess: */
SOURCE(2560, 338)
SOURCE(2590, 47)
{
word pd21;
pd21 = (* (( (ptr) (* (( (ptr) gf←c8760)+38)/* var←c8184 */ ))+13) );
(void) ( *( (fPt) ((* (ptr) pd21 ))))(3, pd21);
};
SOURCE(2639, 259)
lab←L100013: ;
SOURCE(2639, 259)
{
word handle←v5448;
SOURCE(2642, 43)
{
word pd22;
pd22 = (* (( (ptr) (* (( (ptr) gf←c8760)+37)/* var←c7896 */ ))+16) );
handle←v5448 = (word) ( *( (fPt) ((* (ptr) pd22 ))))((* ((( (ptr) gf←c8760)+8)/* fq←v2664 */ ) ), pd22);
};
SOURCE(2687, 211)
if ((handle←v5448 != 0)) {
SOURCE(2708, 157)
{
word var←c8248;
{
word pd23;
pd23 = (* (( (ptr) (* (( (ptr) gf←c8760)+37)/* var←c7896 */ ))+13) );
var←c8248 = (word) ( *( (fPt) ((* (ptr) pd23 ))))(handle←v5448, pd23);
};
if ((var←c8248 == 0)) {
goto lab←L100014;
};
if (((* (( (ptr) gf←c8760)+10) ) == XR←GetReferentType(var←c8248))) {
{
word cq←v5492;
cq←v5492 = var←c8248;
SOURCE(2775, 90)
if ((0 != (word) Forward←P600(cq←v5492, handle←v5448))) {
SOURCE(2820, 45)
SOURCE(2822, 41)
{
W2 var←c8280;
{
W2 var←c065;
word var←c064;
var←c064 = XR←ExtensionAlloc(5);
{
/*1*/ word tmpAddr24;
/*1*/ tmpAddr24 = (word) var←c064;
/*1*/ (* (ptr) tmpAddr24 ) = ( ((word) (fPt) NoName←Q1356) );
/*1*/ (* (( (ptr) tmpAddr24) + 1) ) = 0;
/*1*/ (* (( (ptr) tmpAddr24) + 2) ) = (word) (( (bPt) gf←c8760)+60)/* var←c7544 */ ;
/*1*/ (* (( (ptr) tmpAddr24) + 3) ) = 0;
/*1*/ (* (( (ptr) tmpAddr24) + 4) ) = cq←v5492;
/*1*/ };
(void) XR←Fork((word) &var←c065, var←c064);
var←c8280 = var←c065;
};
{
word pd25;
pd25 = (* (( (ptr) (* (( (ptr) gf←c8760)+38)/* var←c8184 */ ))+11) );
(void) ( *( (fPt) ((* (ptr) pd25 ))))(var←c8280, pd25);
};
};
};
};
}
else {
lab←L100014: ;
};
};
SOURCE(2886, 12)
handle←v5448 = 0;
};
};
goto lab←L100013;
}
static void NoName←Q1296(formal←c073, formal←c200000, formal←c200001, formal←c200002, formal←c200003)
word formal←c073;
word formal←c200000;
word formal←c200001;
word formal←c200002;
word formal←c200003;
{
if ((formal←c200001 == XR←Aborted)) {
SOURCE(2440, 4)
(* (ptr) formal←c073 ) = 2;
(* (( (ptr) formal←c073)+1) ) = 2;
return;
};
(* (ptr) formal←c073 ) = 0;
(* (( (ptr) formal←c073)+1) ) = 0;
return;
}
static word NoName←Q1356(formal←c066)
word formal←c066;
{
word var←c068;
word var←c067;
/* intermediary proc for a FORK, nArgs: 1, nRets: 0 */
var←c068 = (* (( (ptr) formal←c066)+4) );
var←c067 = (* (( (ptr) formal←c066)+2) );
formal←c066 = XR←ExtensionFree(formal←c066);
(void) ( *( (fPt) ((* (ptr) var←c067 ))))(var←c068, var←c067);
return(0);
}
/* file: FinalizeOpsImpl, module: FinalizeOpsImpl, compiled at: January 28, 1993 4:06:47 pm PST */
extern void XR←install←FinalizeOpsImpl() {
NoName←Q1176();
}
extern void XR←run←FinalizeOpsImpl() { XR←Start(&globalframe); }