/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation. All rights reserved. */
/* time: July 22, 1992 2:39:29 pm PDT */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: PriorityQueueImpl, module: PriorityQueueImpl */
/* switches: bcfhklnouw */
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1120835715,625239706] PriorityQueueImpl";
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;
#define SOURCE(p, l) /* source p, l */
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
static void NoName←Q1080();
static void PriorityQueueImpl←P0();
static word IsPriorityQueue←P60();
static word Create←P120();
static word Predict←P180();
static word Top←P240();
static word Size←P300();
static word Empty←P360();
static void Insert←P420();
static word Remove←P480();
static word Copy←P540();
static word NoName←Q1140();
static void NoName←Q1200();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\222\262\322\070\300\022\075\041\222\100\164\000\000"};
static struct {unsigned f; char r[4];} string2 = {196611, "\004@\240"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\222\262\322\070\300\022\075\041\222\100\200\000\000"};
static struct {unsigned f; char r[12];} string4 = {524296, "\011\000\004\000\040\000\004\001\000\000\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\102\316\230\203\300\045\104\146\232\100\164\000\000"};
static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\222\262\322\070\300\022\075\041\222\100\150\000\000"};
static struct {
word f0[8]; word f8; 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[2];
} globalframe = {
{0}, (word) Copy←P540, 0, (word) Remove←P480,
0, (word) Insert←P420, 0, (word) Empty←P360,
0, (word) Size←P300, 0, (word) Top←P240,
0, (word) Predict←P180, 0, (word) Create←P120,
0, (word) IsPriorityQueue←P60, 0, (word) PriorityQueueImpl←P0,
{0}
};
static void NoName←Q1080()
{
register ptr gf←c093 = (ptr) &globalframe;
word var←c6776;
(* (( (ptr) gf←c093)+4) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
(* (( (ptr) gf←c093)+5) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
(void) XR←DeclareGlobalFrame((word) "PriorityQueueImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string5)), (word) (
( (bPt) gf←c093)+104)/* var←c6104 */ );
var←c6776 = (word) XR←ExportInterface((word) "PriorityQueue", (word) XR←GetTypeIndexS((word) (&string6)), 10);
(* (( (ptr) gf←c093)+28)/* var←c6744 */ ) = var←c6776;
(void) XR←ExportVar(var←c6776, 0, (word) (( (bPt) gf←c093)+24));
(void) XR←ExportVar(var←c6776, 1, (word) (( (bPt) gf←c093)+28));
(void) XR←ExportProcS(var←c6776, (word) (( (bPt) gf←c093)+88)/* var←c6040 */ , 67633666);
(void) XR←ExportProcS(var←c6776, (word) (( (bPt) gf←c093)+80)/* var←c6008 */ , 67896067);
(void) XR←ExportProcS(var←c6776, (word) (( (bPt) gf←c093)+72)/* var←c5976 */ , 67372033);
(void) XR←ExportProcS(var←c6776, (word) (( (bPt) gf←c093)+64)/* var←c5944 */ , 67372289);
(void) XR←ExportProcS(var←c6776, (word) (( (bPt) gf←c093)+56)/* var←c5912 */ , 67372545);
(void) XR←ExportProcS(var←c6776, (word) (( (bPt) gf←c093)+48)/* var←c5880 */ , 526082);
(void) XR←ExportProcS(var←c6776, (word) (( (bPt) gf←c093)+40)/* var←c5848 */ , 67373057);
(void) XR←ExportProcS(var←c6776, (word) (( (bPt) gf←c093)+32)/* var←c5816 */ , 67373313);
}
static void PriorityQueueImpl←P0(formal←c018, formal←c017)
word formal←c018;
word formal←c017;
{
/* PriorityQueueImpl: */
}
static word IsPriorityQueue←P60(ref←v2828)
word ref←v2828;
{
register ptr gf←c6808 = (ptr) &globalframe;
word var←c2888;
/* IsPriorityQueue: */
SOURCE(198, 131)
SOURCE(257, 72)
{
word var←c6136;
var←c6136 = ref←v2828;
if ((var←c6136 == 0)) {
goto lab←L100000;
};
if (((* (( (ptr) gf←c6808)+4) ) == XR←GetReferentType(var←c6136))) {
{
word pq←v3840;
pq←v3840 = var←c6136;
SOURCE(289, 13)
return(1);
};
}
else {
lab←L100000: ;
SOURCE(315, 14)
return(0);
};
};
}
static word Create←P120(pred←v2948, data←v2976)
word pred←v2948;
word data←v2976;
{
register ptr gf←c6840 = (ptr) &globalframe;
word var←c3032;
word pq←v3884;
/* Create: */
SOURCE(335, 149)
SOURCE(407, 64)
pq←v3884 = XR←NewObject(32, (* (( (ptr) gf←c6840)+4) ));
(* (( (ptr) pq←v3884)+4) ) = XR←CheckProc(pred←v2948);
(* (( (ptr) pq←v3884)+5) ) = data←v2976;
SOURCE(473, 11)
return(pq←v3884);
}
static word Predict←P180(size←v3092, pred←v3120, data←v3148)
word size←v3092;
word pred←v3120;
word data←v3148;
{
register ptr gf←c6872 = (ptr) &globalframe;
word var←c3204;
word pq←v3928;
/* Predict: */
SOURCE(490, 245)
SOURCE(574, 28)
pq←v3928 = (word) Create←P120(pred←v3120, data←v3148);
SOURCE(604, 37)
if (( (int)size←v3092 > (int)1610612733)) {
SOURCE(627, 14)
size←v3092 = 1610612733;
};
SOURCE(643, 63)
if (( (int)size←v3092 > (int)0)) {
SOURCE(660, 48)
{
word seq←v3972;
SOURCE(662, 30)
{
word var←c6200;
word var←c6232;
word var←c6264;
var←c6200 = BCK((size←v3092 + 1), 67108863);
var←c6232 = (var←c6200 << 2);
var←c6264 = XR←NewObject((4 + var←c6232), (* (( (ptr) gf←c6872)+5) ));
(* (ptr) var←c6264 ) = var←c6200;
seq←v3972 = var←c6264;
};
SOURCE(694, 12)
(* (( (ptr) pq←v3928)+7) ) = seq←v3972;
};
};
SOURCE(711, 11)
(* (( (ptr) pq←v3928)+6) ) = 0;
SOURCE(724, 11)
return(pq←v3928);
}
static word Top←P240(pq←v3264)
word pq←v3264;
{
register ptr gf←c6904 = (ptr) &globalframe;
word var←c6296;
word var←c3308;
/* Top: */
SOURCE(741, 117)
(void) (XR←MonitorEntry(pq←v3264));
SOURCE(793, 45)
if (((* (( (ptr) pq←v3264)+6) ) == 0)) {
SOURCE(813, 25)
var←c6296 = (word) (( (bPt) gf←c6904)+24);
(void) (XR←MonitorExit(pq←v3264));
goto lab←L100001;
};
SOURCE(840, 18)
{
word var←c6360;
{
word var←c6328;
var←c6328 = (* (( (ptr) pq←v3264)+7) );
{
word limit7;
var←c6360 = (* ((( (ptr) var←c6328)+1)+(
limit7 = (* (ptr) var←c6328 ),
BCK(1, limit7)
)) );
};
};
(void) (XR←MonitorExit(pq←v3264));
return(var←c6360);
};
/* c2c skipped dead code */
lab←L100001: ;
SOURCE(813, 25)
(void) XR←RaiseError(var←c6296, 0);
}
static word Size←P300(pq←v3368)
word pq←v3368;
{
word var←c3412;
/* Size: */
SOURCE(864, 68)
(void) (XR←MonitorEntry(pq←v3368));
SOURCE(916, 16)
{
word var←c6392;
var←c6392 = (* (( (ptr) pq←v3368)+6) );
(void) (XR←MonitorExit(pq←v3368));
return(var←c6392);
};
}
static word Empty←P360(pq←v3472)
word pq←v3472;
{
word var←c3516;
/* Empty: */
SOURCE(938, 74)
(void) (XR←MonitorEntry(pq←v3472));
SOURCE(992, 20)
{
word var←c6424;
var←c6424 = ((* (( (ptr) pq←v3472)+6) ) == 0);
(void) (XR←MonitorExit(pq←v3472));
return(var←c6424);
};
}
static void Insert←P420(pq←v3576, item←v3604)
word pq←v3576;
word item←v3604;
{
register ptr gf←c6936 = (ptr) &globalframe;
word var←c6456;
word size←v4016;
word a←v4044;
word pred←v4072;
word data←v4100;
word space←v4128;
/* Insert: */
SOURCE(1018, 913)
(void) (XR←MonitorEntry(pq←v3576));
SOURCE(1070, 19)
size←v4016 = (* (( (ptr) pq←v3576)+6) );
SOURCE(1115, 15)
a←v4044 = (* (( (ptr) pq←v3576)+7) );
SOURCE(1167, 24)
pred←v4072 = (* (( (ptr) pq←v3576)+4) );
SOURCE(1219, 19)
data←v4100 = (* (( (ptr) pq←v3576)+5) );
SOURCE(1273, 43)
space←v4128 = ( (a←v4044 == 0) ? 0 : (* (ptr) a←v4044 ) ) ;
SOURCE(1379, 15)
size←v4016 = (size←v4016 + 1);
SOURCE(1396, 48)
if ((size←v4016 >= 1610612733)) {
SOURCE(1420, 24)
var←c6456 = (word) (( (bPt) gf←c6936)+28);
(void) (XR←MonitorExit(pq←v3576));
goto lab←L100003;
};
SOURCE(1447, 282)
if ((size←v4016 >= space←v4128)) {
SOURCE(1469, 262)
{
word seq←v4212 = 0;
SOURCE(1487, 27)
if ((space←v4128 == 0)) {
SOURCE(1505, 9)
space←v4128 = 1;
};
SOURCE(1516, 117)
{
word var←c6488;
var←c6488 = space←v4128;
if ((var←c6488 < 2048)) {
SOURCE(1544, 21)
space←v4128 = SGNCK((space←v4128 + space←v4128));
}
else {
if ((var←c6488 < 1610611709)) {
SOURCE(1585, 20)
space←v4128 = (space←v4128 + 1024);
}
else {
SOURCE(1618, 15)
space←v4128 = 1610612733;
};
};
};
SOURCE(1636, 24)
{
word var←c6520;
word var←c6552;
word var←c6584;
var←c6520 = BCK(space←v4128, 67108863);
var←c6552 = (var←c6520 << 2);
var←c6584 = XR←NewObject((4 + var←c6552), (* (( (ptr) gf←c6936)+5) ));
(* (ptr) var←c6584 ) = var←c6520;
seq←v4212 = var←c6584;
};
SOURCE(1662, 40)
{
register word i←v4256 = 1;
register word noName←c6616;
noName←c6616 = size←v4016;
if ((i←v4256 >= noName←c6616)) {
goto lab←L100004;
};
lab←L100007: ;
SOURCE(1689, 13)
{
word limit8;
word limit9;
(* ((( (ptr) seq←v4212)+1)+(
limit8 = (* (ptr) seq←v4212 ),
BCK(i←v4256, limit8)
)) ) = (* ((( (ptr) a←v4044)+1)+(
limit9 = (* (ptr) a←v4044 ),
BCK(i←v4256, limit9)
)) );
};
i←v4256 = (i←v4256 + 1);
if ((i←v4256 < noName←c6616)) {
goto lab←L100007;
};
lab←L100004: ;
};
SOURCE(1713, 16)
(* (( (ptr) pq←v3576)+7) ) = seq←v4212;
a←v4044 = seq←v4212;
};
};
SOURCE(1735, 223)
{
word son←v4300;
word dad←v4328;
SOURCE(1737, 15)
son←v4300 = size←v4016;
SOURCE(1754, 16)
dad←v4328 = (son←v4300 >> 1);
SOURCE(1772, 85)
lab←L100010: ;
{
word tc10;
word limit11;
if ((dad←v4328 > 0)) {
tc10 = (word) (0 != (word) ( *( (fPt) ((* (ptr) pred←v4072 ))))(item←v3604, (* ((( (ptr) a←v4044)+1)+(
limit11 = (* (ptr) a←v4044 ),
BCK(dad←v4328, limit11)
)) ), data←v4100, pred←v4072));
}
else {
tc10 = (word) 0;
};
if (tc10) {
}
else {
goto lab←L100008;
};
};
SOURCE(1818, 15)
{
word limit12;
word limit13;
(* ((( (ptr) a←v4044)+1)+(
limit12 = (* (ptr) a←v4044 ),
BCK(son←v4300, limit12)
)) ) = (* ((( (ptr) a←v4044)+1)+(
limit13 = (* (ptr) a←v4044 ),
BCK(dad←v4328, limit13)
)) );
};
SOURCE(1835, 9)
son←v4300 = dad←v4328;
SOURCE(1846, 11)
dad←v4328 = (son←v4300 >> 1);
goto lab←L100010;
lab←L100008: ;
SOURCE(1868, 13)
{
word limit14;
(* ((( (ptr) a←v4044)+1)+(
limit14 = (* (ptr) a←v4044 ),
BCK(son←v4300, limit14)
)) ) = item←v3604;
};
SOURCE(1917, 14)
(* (( (ptr) pq←v3576)+6) ) = size←v4016;
};
SOURCE(1018, 913)
(void) (XR←MonitorExit(pq←v3576));
return;
/* c2c skipped dead code */
lab←L100003: ;
SOURCE(1420, 24)
(void) XR←RaiseError(var←c6456, 0);
}
static word Remove←P480(pq←v3664)
word pq←v3664;
{
register ptr gf←c6968 = (ptr) &globalframe;
word var←c6680;
word var←c3708;
word size←v4372;
word a←v4400;
word best←v4428 = 0;
word item←v4456 = 0;
word pred←v4484;
word data←v4512;
/* Remove: */
SOURCE(1966, 1080)
(void) (XR←MonitorEntry(pq←v3664));
SOURCE(2021, 19)
size←v4372 = (* (( (ptr) pq←v3664)+6) );
SOURCE(2067, 15)
a←v4400 = (* (( (ptr) pq←v3664)+7) );
SOURCE(2224, 24)
pred←v4484 = (* (( (ptr) pq←v3664)+4) );
SOURCE(2277, 19)
data←v4512 = (* (( (ptr) pq←v3664)+5) );
SOURCE(2331, 42)
if ((size←v4372 == 0)) {
SOURCE(2348, 25)
var←c6680 = (word) (( (bPt) gf←c6968)+24);
(void) (XR←MonitorExit(pq←v3664));
goto lab←L100012;
};
SOURCE(2376, 11)
{
word limit15;
best←v4428 = (* ((( (ptr) a←v4400)+1)+(
limit15 = (* (ptr) a←v4400 ),
BCK(1, limit15)
)) );
};
SOURCE(2421, 14)
{
word limit16;
item←v4456 = (* ((( (ptr) a←v4400)+1)+(
limit16 = (* (ptr) a←v4400 ),
BCK(size←v4372, limit16)
)) );
};
SOURCE(2463, 13)
{
word limit17;
(* ((( (ptr) a←v4400)+1)+(
limit17 = (* (ptr) a←v4400 ),
BCK(size←v4372, limit17)
)) ) = 0;
};
SOURCE(2478, 15)
size←v4372 = SGNCK((size←v4372 - 1));
SOURCE(2519, 14)
(* (( (ptr) pq←v3664)+6) ) = size←v4372;
SOURCE(2568, 30)
if ((size←v4372 == 0)) {
SOURCE(2585, 13)
(void) (XR←MonitorExit(pq←v3664));
return(best←v4428);
};
SOURCE(2601, 428)
{
word dad←v4568 = 1;
word maxdad←v4596;
SOURCE(2662, 22)
maxdad←v4596 = (size←v4372 >> 1);
SOURCE(2721, 282)
lab←L100015: ;
if ((dad←v4568 <= maxdad←v4596)) {
}
else {
goto lab←L100013;
};
{
word son←v4640;
word sonItem←v4668;
SOURCE(2744, 20)
son←v4640 = SGNCK((dad←v4568 + dad←v4568));
SOURCE(2766, 22)
{
word limit18;
sonItem←v4668 = (* ((( (ptr) a←v4400)+1)+(
limit18 = (* (ptr) a←v4400 ),
BCK(son←v4640, limit18)
)) );
};
SOURCE(2790, 138)
if ((son←v4640 < size←v4372)) {
SOURCE(2809, 124)
{
word nson←v4712;
word nsonItem←v4740;
SOURCE(2811, 19)
nson←v4712 = (son←v4640 + 1);
SOURCE(2832, 24)
{
word limit19;
nsonItem←v4740 = (* ((( (ptr) a←v4400)+1)+(
limit19 = (* (ptr) a←v4400 ),
BCK(nson←v4712, limit19)
)) );
};
SOURCE(2858, 70)
if ((0 != (word) ( *( (fPt) ((* (ptr) pred←v4484 ))))(nsonItem←v4740, sonItem←v4668, data←v4512, pred←v4484))) {
SOURCE(2898, 10)
son←v4640 = nson←v4712;
SOURCE(2910, 18)
sonItem←v4668 = nsonItem←v4740;
};
};
};
SOURCE(2936, 34)
if ((0 != (word) ( *( (fPt) ((* (ptr) pred←v4484 ))))(item←v4456, sonItem←v4668, data←v4512, pred←v4484))) {
SOURCE(2970, 4)
goto lab←L100014;
};
SOURCE(2976, 16)
{
word limit20;
(* ((( (ptr) a←v4400)+1)+(
limit20 = (* (ptr) a←v4400 ),
BCK(dad←v4568, limit20)
)) ) = sonItem←v4668;
};
SOURCE(2994, 9)
dad←v4568 = son←v4640;
};
goto lab←L100015;
lab←L100013: ;
lab←L100014: ;
SOURCE(3014, 13)
{
word limit21;
(* ((( (ptr) a←v4400)+1)+(
limit21 = (* (ptr) a←v4400 ),
BCK(dad←v4568, limit21)
)) ) = item←v4456;
};
};
SOURCE(3033, 13)
(void) (XR←MonitorExit(pq←v3664));
return(best←v4428);
/* c2c skipped dead code */
lab←L100012: ;
SOURCE(2348, 25)
(void) XR←RaiseError(var←c6680, 0);
}
static word Copy←P540(formal←c0104)
word formal←c0104;
{
W6 var←c7000;
/* declaration of pq←v3768 skipped */
/* declaration of var←c01 skipped */
word var←c3812;
var←c7000.f4/* pq←v3768 */ = formal←c0104;
/* Copy: */
SOURCE(3052, 261)
(void) (XR←MonitorEntry(var←c7000.f4/* pq←v3768 */ ));
SOURCE(3104, 209)
{
word var←c02;
{
word var←c0101;
var←c0101 = (word) &var←c7000;
var←c02 = (word) XR←Enable(( ((word) (fPt) NoName←Q1140) ), ( ((word) (fPt) NoName←Q1200) ), var←c0101);
};
/* removed trivial cond node */
};
return(var←c7000.f5/* var←c01 */ );
}
static word NoName←Q1140(formal←c0100)
word formal←c0100;
{
SOURCE(3127, 19)
{
word size←v4784;
word npq←v4812;
word src←v4840;
word dst←v4868;
SOURCE(3127, 19)
size←v4784 = (* (( (ptr) (* (( (ptr) formal←c0100)+4) ))+6) );
SOURCE(3148, 42)
npq←v4812 = (word) Predict←P180(size←v4784, (* (( (ptr) (* (( (ptr) formal←c0100)+4) ))+4) ), (* (( (ptr) (* (( (ptr) formal←c0100)+4)
))+5) ));
SOURCE(3192, 17)
src←v4840 = (* (( (ptr) (* (( (ptr) formal←c0100)+4) ))+7) );
SOURCE(3211, 18)
dst←v4868 = (* (( (ptr) npq←v4812)+7) );
SOURCE(3231, 42)
{
register word i←v4912 = 1;
register word noName←c6712;
noName←c6712 = size←v4784;
if ((i←v4912 >= noName←c6712)) {
goto lab←L100019;
};
lab←L100022: ;
SOURCE(3258, 15)
{
word limit22;
word limit23;
(* ((( (ptr) dst←v4868)+1)+(
limit22 = (* (ptr) dst←v4868 ),
BCK(i←v4912, limit22)
)) ) = (* ((( (ptr) src←v4840)+1)+(
limit23 = (* (ptr) src←v4840 ),
BCK(i←v4912, limit23)
)) );
};
i←v4912 = (i←v4912 + 1);
if ((i←v4912 < noName←c6712)) {
goto lab←L100022;
};
lab←L100019: ;
};
SOURCE(3284, 15)
(* (( (ptr) npq←v4812)+6) ) = size←v4784;
SOURCE(3301, 12)
(void) (XR←MonitorExit(* (( (ptr) formal←c0100)+4) ));
(* (( (ptr) formal←c0100)+5) ) = npq←v4812;
return(1);
};
/* c2c skipped dead code */
}
static void NoName←Q1200(formal←c092, formal←c200000, formal←c200001, formal←c200002, formal←c200003)
word formal←c092;
word formal←c200000;
word formal←c200001;
word formal←c200002;
word formal←c200003;
{
if ((formal←c200001 == XR←Unwind)) {
(void) (XR←MonitorExit(* (( (ptr) formal←c200000)+4) ));
};
(* (ptr) formal←c092 ) = 0;
(* (( (ptr) formal←c092)+1) ) = 0;
return;
}
/* file: PriorityQueueImpl, module: PriorityQueueImpl, compiled at: July 22, 1992 2:39:28 pm PDT */
extern void XR←install←PriorityQueueImpl() {
NoName←Q1080();
}
extern void XR←run←PriorityQueueImpl() { XR←Start(&globalframe); }