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];
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: BOOLEAN ← TRUE, 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];