/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: February 21, 1992 4:26:06 pm PST */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: FinalizationImpl, module: FinalizationImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [4148406558,3787425269] FinalizationImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
#define SOURCE(p, l) /* source p, l */
static void NoName←Q600();
static void FinalizationImpl←P0();
static word NewFQ←P60();
static word FQEmpty←P120();
static word FQNextNoAbort←P180();
static word FQNext←P240();
static word EnableFinalization←P300();
static word DisableFinalization←P360();
static word ReenableFinalization←P420();
static word GetFinalizationState←P480();
static word HandleToObject←P540();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\367\103\251\036\300\341\277\205\365\100\164\000\000"};
static struct {unsigned f; char r[4];} string2 = {131074, "\004\014\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\367\103\251\036\300\341\277\205\365\100\150\000\000"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\247\301\054\125\300\015\075\063\112\100\150\000\000"};
static struct {unsigned f; char r[32];} string5 = {1966112, "\211\022\021\106\151\156\141\154\151\172\141\142\154\145\117\142\152\145\143\164\300\247\301\054\125\300\015\075\063\112\000"};
static struct {unsigned f; char r[36];} string6 = {2162724, "\211\025\024\106\151\156\141\154\151\172\141\164\151\157\156\121\165\145\165\145\122\145\160\300\247\301\054\125\300\015\075\063\112\000\000"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\367\103\251\036\300\341\277\205\365\100\200\000\000"};
static struct {unsigned f; char r[4];} string8 = {131074, "\004\003\000"};
static struct {
   word f0[6]; word f6; word f7; 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[2]; 
   } globalframe = {
   {0}, (word) HandleToObject←P540, 0, (word) GetFinalizationState←P480, 
   0, (word) ReenableFinalization←P420, 0, (word) DisableFinalization←P360, 
   0, (word) EnableFinalization←P300, 0, (word) FQNext←P240, 
   0, (word) FQNextNoAbort←P180, 0, (word) FQEmpty←P120, 
   0, (word) NewFQ←P60, 0, (word) FinalizationImpl←P0, 
   {0}
   };

static void NoName←Q600()
   {
   register ptr gf←c036 =  (ptr) &globalframe;
   word var←c6144;
   (* (( (ptr) gf←c036)+4) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (void) XR←DeclareGlobalFrame((word) "FinalizationImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string3)), (word) (
         ( (bPt) gf←c036)+96)/* var←c5824 */ );
   var←c6144 = (word) XR←ExportInterface((word) "Finalization", (word) XR←GetTypeIndexS((word) (&string4)), 11);
   (* (( (ptr) gf←c036)+26)/* var←c6112 */  ) = var←c6144;
   (void) XR←ExportType((word) "FinalizableObject", (word) XR←GetTypeIndexS((word) (&string5)), (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2)
      );
   (void) XR←ExportType((word) "FinalizationQueueRep", (word) XR←GetTypeIndexS((word) (&string6)), (word) XR←GetTypeIndex((word) &string7, 0, (word) &string8)
      );
   (void) XR←ExportProcS(var←c6144, (word) (( (bPt) gf←c036)+56)/* var←c5664 */ , 67633666);
   (void) XR←ExportProcS(var←c6144, (word) (( (bPt) gf←c036)+48)/* var←c5632 */ , 67371777);
   (void) XR←ExportProcS(var←c6144, (word) (( (bPt) gf←c036)+40)/* var←c5600 */ , 67634178);
   (void) XR←ExportProcS(var←c6144, (word) (( (bPt) gf←c036)+32)/* var←c5568 */ , 67372289);
   (void) XR←ExportProcS(var←c6144, (word) (( (bPt) gf←c036)+24)/* var←c5536 */ , 67372545);
   (void) XR←ExportProcS(var←c6144, (word) (( (bPt) gf←c036)+88)/* var←c5792 */ , 67110656);
   (void) XR←ExportProcS(var←c6144, (word) (( (bPt) gf←c036)+64)/* var←c5696 */ , 67373057);
   (void) XR←ExportProcS(var←c6144, (word) (( (bPt) gf←c036)+72)/* var←c5728 */ , 67373313);
   (void) XR←ExportProcS(var←c6144, (word) (( (bPt) gf←c036)+80)/* var←c5760 */ , 67373569);
   }

static void FinalizationImpl←P0(formal←c015, formal←c014)
   word formal←c015;
   word formal←c014;
   {
   /* FinalizationImpl: */ 
   }

static word NewFQ←P60()
   {
   word var←c3104;
   /* NewFQ: */ 
SOURCE(528, 151)
SOURCE(660, 19)
   return((word) XR←NewFQ());
   }

static word FQEmpty←P120(fq←v3164)
   word fq←v3164;
   {
   word var←c3208;
   /* FQEmpty: */ 
SOURCE(685, 182)
SOURCE(843, 24)
   return((word) XR←FQEmpty(fq←v3164));
   }

static word FQNextNoAbort←P180(fq←v3268)
   word fq←v3268;
   {
   word handle←v3312;
   /* FQNextNoAbort: */ 
SOURCE(873, 226)
SOURCE(873, 226)
   handle←v3312 = 0;
SOURCE(1069, 30)
   return((word) XR←FQNextNoAbort(fq←v3268));
   }

static word FQNext←P240(fq←v3372)
   word fq←v3372;
   {
   word handle←v3416;
   /* FQNext: */ 
SOURCE(1105, 257)
SOURCE(1105, 257)
   handle←v3416 = 0;
SOURCE(1300, 26)
   handle←v3416 = (word) FQNextNoAbort←P180(fq←v3372);
SOURCE(1328, 34)
   if ((handle←v3416 == 0)) {
SOURCE(1349, 13)
      (void) XR←RaiseError(XR←Aborted, 0);
      };
SOURCE(1105, 257)
   return(handle←v3416);
   }

static word EnableFinalization←P300(object←v3476, fq←v3504)
   word object←v3476;
   word fq←v3504;
   {
   register ptr gf←c6176 =  (ptr) &globalframe;
   word handle←v3564;
   /* EnableFinalization: */ 
SOURCE(1367, 322)
SOURCE(1367, 322)
   handle←v3564 = 0;
SOURCE(1597, 50)
   {
      word var←c5952;
      var←c5952 = XR←NewObject(16, (* (( (ptr) gf←c6176)+4) ));
      (* (( (ptr) var←c5952)+2) ) = fq←v3504;
      handle←v3564 = var←c5952;
      };
SOURCE(1649, 40)
   (void) XR←EnableFinalization(object←v3476, fq←v3504, handle←v3564);
SOURCE(1367, 322)
   return(handle←v3564);
   }

static word DisableFinalization←P360(handle←v3624)
   word handle←v3624;
   {
   word oldState←v3668;
   /* DisableFinalization: */ 
SOURCE(1695, 267)
SOURCE(1923, 39)
   return((word) XR←DisableFinalization(handle←v3624));
   }

static word ReenableFinalization←P420(handle←v3728, fq←v3756)
   word handle←v3728;
   word fq←v3756;
   {
   word oldState←v3800;
   /* ReenableFinalization: */ 
SOURCE(1968, 321)
SOURCE(2245, 44)
   return((word) XR←ReenableFinalization(handle←v3728, fq←v3756));
   }

static word GetFinalizationState←P480(handle←v3860)
   word handle←v3860;
   {
   word state←v3904;
   /* GetFinalizationState: */ 
SOURCE(2295, 265)
SOURCE(2520, 40)
   return((word) XR←GetFinalizationState(handle←v3860));
   }

static word HandleToObject←P540(handle←v3964)
   word handle←v3964;
   {
   word object←v4008;
   /* HandleToObject: */ 
SOURCE(2566, 215)
SOURCE(2566, 215)
   object←v4008 = 0;
SOURCE(2747, 34)
   return((word) XR←HandleToObject(handle←v3964));
   }

/* file: FinalizationImpl, module: FinalizationImpl, compiled at: February 21, 1992 4:26:06 pm PST */ 
extern void XR←install←FinalizationImpl() {
   NoName←Q600();
   }
extern void XR←run←FinalizationImpl() { XR←Start(&globalframe); }