RTTypesRemotePrivate.Mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Rovner, July 7, 1983 3:04 pm
Russ Atkinson (RRA) February 11, 1985 4:24:58 pm PST
DIRECTORY
AMBridge USING [WordSequence, RemotePD, RemoteGlobalFrameHandle, RemoteFrameHandle, RemoteRef, RemoteSED, RemotePointer],
AMTypes USING [TypedVariable],
BcdDefs USING [BcdBase],
LoadState USING [ModuleIndex],
PrincOps USING [GlobalFrame, Frame, SignalDesc, EPRange, BytePC],
Rope USING [ROPE],
SafeStorage USING [Type],
RTCommon USING [Field],
RTSymbolDefs USING [SymbolTableBase, BodyIndex, CallableBodyIndex],
WorldVM USING [World, Incarnation];
RTTypesRemotePrivate: DEFINITIONS = BEGIN OPEN AMBridge, RTSymbolDefs, WorldVM;
S I G N A L S
RemoteError: ERROR[type: RemoteErrorType, message: LONG POINTER TO TEXTNIL];
RemoteErrorType: TYPE = {addressFault, invalidFrame};
T Y P E S
EVRange: TYPE = [0..4*PrincOps.EPRange);
P R O C E D U R E S
This really ought to be in AMBridge (?).
RemoteTypeToLocal: PROC [world: World, remoteType: CARDINAL] RETURNS [type: SafeStorage.Type];
UnwindRemoteIndirectProcDesc: PROC [pd: RemotePD] RETURNS [RemotePD];
AcquireCBTHandleFromRemotePD: PROC [pd: RemotePD] RETURNS [stb: SymbolTableBase, cbti: CallableBodyIndex];
AcquireSTBFromRemoteGFH: PROC [gfh: RemoteGlobalFrameHandle] RETURNS [stb: SymbolTableBase];
OuterFromRemoteGFH: PROC [gfh: RemoteGlobalFrameHandle, inner: PROC [stb: SymbolTableBase]];
equivalent to {
stb: SymbolTableBase ← AcquireSTBFromRemoteGFH[gfh];
inner[stb ! UNWIND => ReleaseSTB[stb];
ReleaseSTB[stb];
};
GetRemoteGFHeader: PROC [gfh: RemoteGlobalFrameHandle] RETURNS [REF PrincOps.GlobalFrame];
GetRemoteFrameHeader: PROC [fh: RemoteFrameHandle] RETURNS [REF PrincOps.Frame];
GetRemoteWords: PROC [remotePointer: RemotePointer, nWords: NAT] RETURNS [AMBridge.WordSequence];
GetRemoteWord: PROC [remotePointer: RemotePointer] RETURNS [WORD];
GetRemoteLC: PROC [remotePointer: RemotePointer] RETURNS [LONG CARDINAL];
RemoteStoreWords: PROC [from: LONG POINTER, to: RemotePointer, nWords: NAT];
RemoteStoreWord: PROC [to: RemotePointer, value: CARDINAL];
RemoteStoreDoubleWord: PROC [to: RemotePointer, value: LONG CARDINAL];
RemoteStoreFieldLong: PROC [ ptr: RemotePointer, field: RTCommon.Field, value: LONG CARDINAL ];
ValidateRemoteFrame: PROC [remoteFH: RemoteFrameHandle];
GetRemoteReferentType: PROC [remoteRef: RemoteRef] RETURNS [SafeStorage.Type--valid locally--];
GetRemoteProcedureType: PROC [remotePD: RemotePD] RETURNS [SafeStorage.Type--valid locally--];
GetRemoteSignalType: PROC [remoteSED: RemoteSED] RETURNS [SafeStorage.Type--valid locally--];
IsRemoteCatchFrame: PROC [remoteFrameHandle: RemoteFrameHandle, bti: BodyIndex] RETURNS [isCatchFrame: BOOLEANTRUE, revBti: BodyIndex];
AcquireBTIFromRemoteFH: PROC [remoteFrameHandle: RemoteFrameHandle, contextPC: BOOL] RETURNS [bti: BodyIndex];
RemotePDToName: PROC [pd: RemotePD] RETURNS [Rope.ROPE];
RemoteSEDToName: PROC [sed: RemoteSED] RETURNS [Rope.ROPE];
RemoteGFHToName: PROC [gfh: RemoteGlobalFrameHandle] RETURNS [Rope.ROPE];
ValidateRemoteRef: PROC [ref: RemoteRef];
raises InvalidRef if ref does not point to the top of a valid object, else returns.
RemoteSignalValues: PROC [tv: AMTypes.TypedVariable--catch Frame--] RETURNS [message: CARDINAL, signal: PrincOps.SignalDesc, world: World];
AcquireRemoteBCDAndModule: PROC [gfh: RemoteGlobalFrameHandle] RETURNS [BcdDefs.BcdBase, LoadState.ModuleIndex];
AcquireRemoteBCD: PROC [world: World, incarnation: Incarnation, bcd: BcdDefs.BcdBase--remote--] RETURNS [mappedBCD: BcdDefs.BcdBase--local--];
ReleaseRemoteBCD: PROC [bcd: BcdDefs.BcdBase];
GetRemoteEp: PROC [ pc: PrincOps.BytePC, gf: RemoteGlobalFrameHandle, stb: SymbolTableBase ] RETURNS [ep: EVRange, start: PrincOps.BytePC];
GetRemotePc: PROC [gf: RemoteGlobalFrameHandle, i: EVRange] RETURNS [PrincOps.BytePC];
END.