BuildFramePtrInterface:
PUBLIC
SAFE
PROC[bindInfo: SMBind.BindInfo]
RETURNS[ir: SMBind.RIR] ~ TRUSTED {
bcd: BcdDefs.BcdBase ~ bindInfo.bcd;
mth: BcdDefs.MTHandle;
name: ATOM;
stamp: TimeStamp.Stamp;
IF bcd.nModules ~= 1 THEN ERROR;
mth ← @LOOPHOLE[bcd+bcd.mtOffset, BcdDefs.Base][BcdDefs.MTIndex.FIRST];
name ← Atom.MakeAtom[SMModelBcd.RopeFromNS[bcd, mth.name]];
IF mth.file = BcdDefs.FTSelf THEN stamp ← bcd.version
ELSE {
fth: BcdDefs.FTHandle ~ @LOOPHOLE[bcd+bcd.ftOffset, BcdDefs.Base][mth.file];
stamp ← fth.version};
ir ← AllocateIR[stamp, name, 1];
ir[0] ← [link~[variable[vtag~var, vgfi~bindInfo.moduleIndex, var~0]]];
RETURN};