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); 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 ]; GetIdConstantValue: PROC [ tv: TypedVariable, stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [WordSequence]; BuildRecordFieldDescriptor: PROC [ parentTV: TypedVariable, fieldBitOffset, fieldBits, bitsForType: INT] RETURNS [fD: FieldDescriptor]; GetValueAddress: PROC [tv: TypedVariable, mutableOnly: BOOL _ FALSE] RETURNS [ValueAddress]; RecordComponentISEI: PROC [ type: Type, index: NAT, p: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] ]; ComponentISEI: PROC [ type: Type, 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]; UnwindIndirectProcDesc: PROC [icl: ControlLink] RETURNS [ProcDesc]; END. `RTTypesPrivate.Mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Rovner, June 28, 1983 3:21 pm Russ Atkinson (RRA) February 11, 1985 12:25:49 pm PST T Y P E S PROCEDURES if mutableOnly then can raise Error[notMutable] UnderClass[type] B {record} UnderClass[type] B {record, union, enumerated} UnderClass[type] B {subRange} ΚC– "cedar" style˜codešœ™Kšœ Οmœ1™Kšœ=˜=Kšœ˜—šœ˜KšœžœžœžœŸ˜4Kšœ=˜=Kšœ˜—Kšž˜—Kšœ˜——K™K™Kšœ ™ ˜KšΟnœžœ@žœ˜pK˜Kš œžœDžœžœ˜‡K˜š  œžœ"žœžœžœ˜\Kšœ1™1—K˜š œžœžœžœ/˜jKšœœ ™—K˜š  œžœžœžœ/˜dKšœœŸœ™.—K˜Kš œžœžœžœ˜2K˜Kš  œžœžœžœ˜6K˜Kš  œžœžœžœ˜=K˜Kš œžœžœžœ˜VK˜Kš  œžœAžœ˜lK˜Kš œžœ:žœ˜kK˜Kš œžœ%žœ ˜AK˜Kš   œžœ žœžœžœ#žœ˜cK˜š  œžœžœ žœ˜7KšœœŸœ™—K˜Kš œžœžœ ˜CK˜—Kšžœ˜K˜—…—ˆ+