On Fri, May 14, 2004 at 10:30:58AM +0200 Rafael Garcia-Suarez wrote:
> Tassilo von Parseval wrote:
> > > >         SAVESPTR(DEFSV);
> > > 
> > > or in other words SAVE_DEFSV
> > 
> > I read this in pp_grepstart:
> > 
> >     /* SAVE_DEFSV does *not* suffice here for USE_5005THREADS */
> >     SAVESPTR(DEFSV);
> 
> We're not reading the same sources :)
> in bleadperl you have
>     #define DEFSV GvSV(PL_defgv)
>     #define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv))
> in perl.h. (and references to 5005threads have been removed)

I have no blead right now. My whole APC repository was also on the
Debian partition that I smoked yesterday (see use.perl.org). :-)

Apart from that, my module should be runnable on at least 5.00503.

> > > A caveat, though: this will not work with a lexical $_ in perl 5.9.x.
> > > DEFSV is always $::_. With a lexical $_ (you can know whether there is
> > > one by looking it up in the pad) you have to replace SAVE_DEFSV by
> > > SAVESPTR(PAD_SVl(padoffset_of_dollarunderscore)). Grep bleadperl for
> > > details.
> > > 
> > > Hmm, maybe this means that a _new_ macro should be added for XS
> > > writers, that get DEFSV right, by testing whether there's a lexical $_
> > > in scope. Opinions ?
> > 
> > Well, yes, please! Ideally, it would be backwards-compatible so that
> > people could already start using it now (unless of course they
> > deliberately want $::_).
> 
> That's the job of PPPort, isn't it.

For instance. But pre-blead perls have no concept of lexically scoped $_
so it would make no sense to look for one on the pad. So those macros
would therefore look different on older perls (they'd simply expand to
DEFSV).

Tassilo
-- 
$_=q#",}])!JAPH!qq(tsuJ[{@"tnirp}3..0}_$;//::niam/s~=)]3[))_$-3(rellac(=_$({
pam{rekcahbus})(rekcah{lrePbus})(lreP{rehtonabus})!JAPH!qq(rehtona{tsuJbus#;
$_=reverse,s+(?<=sub).+q#q!'"qq.\t$&."'!#+sexisexiixesixeseg;y~\n~~dddd;eval

Reply via email to