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.

Reply via email to