I did not see John's message about just a DROP with no parameters, but I have seen that used.
In a prior product that I worked on, we used LOTS of named USINGs. Sometimes these were dependent ones, and it is particularly difficult to get rid of those. So in some sections of code, we would do our USINGs and at the end when we returned to "normal" code, we would use DROP with no parameters, and respecify the appropriate USINGs. Lloyd ----- Original Message ---- From: john gilmore <[email protected]> To: [email protected] Sent: Mon, July 11, 2011 9:10:34 PM Subject: Re: Annoyance with the IEZJSAB macro The other question, how to protect oneself from an ill-behaved macro, is interesting too; and John Ehrman's construct | drop , in one that I had not seen before; but the two questions are very different ones. John Gilmore Ashland, MA 01721-1817 USA > Date: Mon, 11 Jul 2011 14:04:55 -0700 > From: [email protected] > Subject: Re: Annoyance with the IEZJSAB macro > To: [email protected] > > John Gilmore commented on Tom Marchant's query: > > > Tom Marchant wrote: > > > > <begin snippet> > > > I might go so far as to contend that whenever a macro alters registers > 1, 14, or 15 it should issue a drop for those registers if there is an > active using. Unfortunately, AFAIK, there is no way to do this. > > > </end snippet> > > > Fortunately, in my view, he is quite right that there is no way to do > this. > > This technique sometimes works: > > PUSH USING Save current USINGs > DROP , Drop all registers > - - - Call the ill-behaved macro > POP USING Restore original USINGs > > If the ill-behaved macro requires local addressability, establish a local > base register; it will be DROPped automatically by the POP USING.
