[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Checking in apply and bind for internal unbound frob
- To: MOON at MIT-MC
- Subject: Checking in apply and bind for internal unbound frob
- From: JONL at MIT-MC (Jon L White)
- Date: Tue, 18 Jul 78 02:26:00 GMT
- Cc: (BUG LISP) at MIT-MC
- Original-date: 17 JUL 1978 2226-EDT
I guess that your motive in this is for some, albeit inadequate,
compensation for the failure of the PDP10-compiled code to check
for accessing unbound variables. I'm sort of against it since
it doesn't do much more than a little compensation, and would
be doubly confusing to users who would notice that it would be
alright to listify such things, obtain them by car-cdring (and
any other opencoded computation) but not use then in function
calls. But I'm not dead set against it.
1) at .SET1, squeeze in the two lines below, just before the PUSH:
CAIN A,QUNBOUND
JRST <additional-checking-etc>
this will catch any binding caused by SET, or by interpreted versions
of SETQ PUSH POP .
2) at a number of places in the uuo handler, such as at ARGPDL and
PDLARG, and at UUOS03+8 (or so) and UUOLB3+2, and at any place
in the uuo handler where PDLNMK or PDLNKJ is called; This will
catch most leakage thru compiled-code to compiled-code linkage.
3) at the interpreter's versions of the CARCDR function, ie at CR7+1,
at EVSYM (which is already done), and probably at interpreter's
accessing of hunks, arrays, etc.
4) at SPEC2+1 (which is SPECBIND)
So 1, 2, and 4 will stop almost all "leaks" of QUNBOUND out of
compiled code (and interpreted code cant generate this loser!),
the single exception is when it is open-coded into some list
structure (or hunk, or array). That exceptional case should be
caught by 3.