[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

REALFRAMPE AND DUMMYFRAMEP



here is latest situaton:

there is a function DUMMYFRAMEP(POS) which is T if the user
never wrote a call to the function at POS, e.g. in interlisp-10
DUMMYFRAMEP is T for *PROG*LAM frames, *ENV* frames, and
FOOBLOCK frames.

DUMMYFRAMEP is used in break for matching in the baktracelst,
so that the baktraclest does not have to have dummyframes in it.
however, baktrace will still print dummyframes that
are not included in a sequence that matches baktrace.
(question - maybe this sould be suppressed on BT but
not !BT or some such?)

there is a function REALFRAMEP(POS INTERPFLG) which is
T if POS corresponds to a real frame, i.e. the user did
write a call to POS, and furthermore either INTERPFLG is T,
or else POS is a frame thatwould be there interpreted or
compiled both. For example, for the frame corresponding
to COND, REALFRAMEP(POS T) is T, but REALFRAMEP(POS) is NIL.

REALSTKNTH(N POS INTERPFLG OLDPOS) skips
back N or -N frames for which (REALFRAMEP POS INTERPFLG) is T.


Thus, REALFRAMEP and REALSTKNTH can be used to write
functions which work on interpreted or compiled
code. For examppe, REALSTKNTH i s used in
READLINEP, the function which checks to see if you
are under a call to readlne. Used to be the case that
if you had a lispxuserfn which was not compiled, READLINEP
didnt work correctly.


DUMMYFRAMEP, REALFRAMEP, and REALSTKNTH are in LOADUP
on NEWLISP. DUMMYFRAMEP probably belons in the VM.
not sure about the relationship betteen realframep and
the vm.

note difference in sign between dummyframep and realframep.


warren

-------