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

Checking in apply and bind for internal unbound frob



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.