DIRECTORY AMBridge USING[ TVHeadType, WordSequence, RemoteRef, RemotePointer, nilRemotePointer, RemoteFrameHandle, RemoteGlobalFrameHandle], AMTypes USING[Status, TypedVariable], PrincOps USING[ ProcDesc, SignalDesc, FrameHandle, GlobalFrameHandle, BytePC, EPRange, ControlLink, StateVector], Rope USING[ROPE], RTCommon USING[Field], RTSymbolDefs USING[SymbolTableBase, SymbolIdIndex, BodyIndex, CallableBodyIndex], SafeStorage USING[Type], WorldVM USING[World]; RTTypesPrivate: DEFINITIONS = BEGIN OPEN AMBridge, AMTypes, PrincOps, RTSymbolDefs, SafeStorage, WorldVM; TypedVariableRec: TYPE = RECORD[ referentType: TypeBundle, head: TypedVariableHead, status: Status _ mutable, field: SELECT tag: * FROM entire => [], embedded => [fd: FieldDescriptor], constant => [value: WordSequence] ENDCASE ]; TypeBundle: TYPE = RECORD[type: Type, tag: TypedVariable _ NIL]; TypedVariableHead: TYPE = RECORD[ SELECT tag: TVHeadType FROM reference => [ref: REF ANY], remoteReference => [remoteRef: RemoteRef], copiedRemoteObject => [ world: World _ , worldIncarnation: LONG CARDINAL, copy: WordSequence ], pointer => [ptr: LONG POINTER], remotePointer => [remotePointer: RemotePointer], gfh => [gfh: GlobalFrameHandle], remoteGFH => [remoteGlobalFrameHandle: RemoteGlobalFrameHandle], fh => [ fh: FrameHandle, bti: BodyIndex, evalStack: POINTER TO StateVector, isCatchFrame: BOOL _ FALSE, return: BOOL, contextPC: BOOL ], remoteFH => [ remoteFrameHandle: RemoteFrameHandle, bti: BodyIndex, evalStack: WordSequence _ , isCatchFrame: BOOL _ FALSE, return: BOOL, contextPC: BOOL ], constant => [], remoteConstant => [world: World _ , worldIncarnation: LONG CARDINAL] ENDCASE ]; FieldDescriptor: TYPE = RECORD[ wordOffset: INTEGER, extent: SELECT magnitude: * FROM small => [field: RTCommon.Field], large => [size: CARDINAL], ENDCASE ]; EVRange: TYPE = [0..4*EPRange); GetIdConstantValue: PROC[ tv: TypedVariable, stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS[WordSequence]; BuildRecordFieldDescriptor: PROC[ parentTV: TypedVariable, fieldBitOffset, fieldBits, bitsForType: INT] RETURNS[fD: FieldDescriptor]; ValueAddress: TYPE = RECORD[ SELECT tag: * FROM constant => [value: WordSequence _ ], pointer => [ ptr: LONG POINTER _ NIL, --includes the word offset fd: FieldDescriptor _ [wordOffset: 0, extent: large[size: 0]] ], remotePointer => [ ptr: RemotePointer _ nilRemotePointer, --includes word offset fd: FieldDescriptor _ [wordOffset: 0, extent: large[size: 0]] ], copiedRemoteObject => [ ptr: LONG POINTER _ NIL, --includes the word offset fd: FieldDescriptor _ [wordOffset: 0, extent: large[size: 0]] ] ENDCASE ]; GetValueAddress: PROC[tv: TypedVariable, mutableOnly: BOOL _ FALSE] RETURNS[ValueAddress]; -- Raises NotMutable RecordComponentISEI: PROC[ type: Type--record--, index: NAT, p: PROC[stb: SymbolTableBase, isei: SymbolIdIndex] ]; ComponentISEI: PROC[ type: Type--record, union, enumerated--, index: NAT, p: PROC[stb: SymbolTableBase, isei: SymbolIdIndex] ]; PDToName: PROC[pd: ProcDesc] RETURNS[Rope.ROPE]; SEDToName: PROC[sed: SignalDesc] RETURNS[Rope.ROPE]; GFHToName: PROC[gfh: GlobalFrameHandle] RETURNS[Rope.ROPE]; GetCBTI: PROC[stb: SymbolTableBase, epn: CARDINAL] RETURNS[cbti: CallableBodyIndex]; ConvertCbti: PROC[ lastBti: BodyIndex, pc, start: BytePC, base: SymbolTableBase ] RETURNS [bti: BodyIndex]; GetEp: PROC [pc: BytePC, gf: GlobalFrameHandle, stb: SymbolTableBase] RETURNS [ep: EVRange, start: BytePC]; GetPc: PROC[gf: GlobalFrameHandle, i: EVRange] RETURNS [BytePC]; BitsForType: PROC[type: Type] RETURNS [bft: LONG CARDINAL, argumentRecord, interfaceRecord: BOOL]; GetOrigin: PROC[type: Type] RETURNS[origin: INTEGER]; -- for subrange types UnwindIndirectProcDesc: PROC[icl: ControlLink] RETURNS[ProcDesc]; END. hRTTypesPrivate.Mesa last modified on June 28, 1983 3:21 pm by Paul Rovner T Y P E S PROCEDURES ΚΟ– "cedar" style˜Iprocšœ™Kšœ5™5K˜šΟk ˜ šœ œ˜Kšœr˜r—Kšœœ˜%šœ œ˜Kšœa˜a—Kšœœœ˜Kšœ œ˜Kšœ œ?˜QKšœ œ˜Kšœœ˜—K˜Kšœ ˜KšœœœA˜MK˜K˜šœ ™ šœœœ˜ Kšœ˜Kšœ˜Kšœ˜šœœ˜Kšœ ˜ Kšœ"˜"Kšœ!˜!Kš˜—Kšœ˜—K˜Kšœ œœ"œ˜@K˜šœœœ˜!šœ˜Kšœœœ˜Kšœ*˜*šœ˜Kšœ˜Kšœœœ˜ Kšœ˜Kšœ˜—Kšœœœ˜Kšœ0˜0Kšœ ˜ Kšœ@˜@šœ˜Kšœ˜Kšœ˜Kšœ œœ ˜"Kšœœœ˜Kšœœ˜ Kšœ ˜Kšœ˜—šœ ˜ Kšœ%˜%Kšœ˜Kšœ˜Kšœœœ˜Kšœœ˜ Kšœ ˜Kšœ˜—Kšœ˜Kšœ6œœ˜DKš˜—Kšœ˜—K˜šœœœ˜Kšœ œ˜Kšœœ˜ Kšœ!˜!Kšœœ˜Kš˜Kšœ˜—K˜Kšœ œ˜—K™K™Kšœ ™ ˜šΟnœœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜—K˜šžœœ˜!Kšœ˜Kšœ˜Kšœ ˜ Kšœ œ˜Kšœ˜—K˜šœœœ˜šœ˜Kšœ%˜%šœ ˜ KšœœœœΟc˜4Kšœ=˜=Kšœ˜—šœ˜Kšœ(Ÿ˜>Kšœ=˜=Kšœ˜—šœ˜KšœœœœŸ˜4Kšœ=˜=Kšœ˜—Kš˜—Kšœ˜—K˜šžœœ!œœ˜CKšœŸ˜,—K˜šžœœ˜Kšœ Ÿ œ˜Kšœœ˜ Kšœœ˜Kšœ˜Kšœ˜—K˜šž œœ˜Kšœ Ÿœ˜(Kšœœ˜ Kšœœ+˜2Kšœ˜—K˜Kšžœœœœ˜0K˜Kšž œœœœ˜4K˜Kšž œœœœ˜;K˜šžœœœ˜2Kšœ˜!—K˜šž œœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜—K˜šžœœ:˜EKšœ˜%—K˜Kšžœœ$œ ˜@K˜šž œœ ˜Kšœœœ#œ˜D—K˜Kš ž œœ œ œŸœ˜MK˜Kšžœœœ ˜AK˜—Kšœ˜K˜—…—Ύυ