This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Externalization from Jatan Shah <jshah@broadcom.com>.
[perl5.git] / pp.h
diff --git a/pp.h b/pp.h
index b05e6d0..9a909c8 100644 (file)
--- a/pp.h
+++ b/pp.h
@@ -1,23 +1,25 @@
 /*    pp.h
  *
- *    Copyright (c) 1991-2001, Larry Wall
+ *    Copyright (c) 1991-2002, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
  *
  */
 
-#ifdef USE_THREADS
+#ifdef USE_5005THREADS
 #define ARGS thr
 #define dARGS struct perl_thread *thr;
 #else
 #define ARGS
 #define dARGS
-#endif /* USE_THREADS */
+#endif /* USE_5005THREADS */
 
 #define PP(s) OP * Perl_##s(pTHX)
 
 /*
+=head1 Stack Manipulation Macros
+
 =for apidoc AmU||SP
 Stack pointer.  This is usually handled by C<xsubpp>.  See C<dSP> and
 C<SPAGAIN>.
@@ -55,6 +57,7 @@ Refetch the stack pointer.  Used after a callback.  See L<perlcall>.
 
 =cut */
 
+#undef SP /* Solaris 2.7 i386 has this in /usr/include/sys/reg.h */
 #define SP sp
 #define MARK mark
 #define TARG targ
@@ -66,8 +69,8 @@ Refetch the stack pointer.  Used after a callback.  See L<perlcall>.
 #define TOPMARK                (*PL_markstack_ptr)
 #define POPMARK                (*PL_markstack_ptr--)
 
-#define djSP           register SV **sp = PL_stack_sp
-#define dSP            djSP
+#define dSP            register SV **sp = PL_stack_sp
+#define djSP           dSP
 #define dMARK          register SV **mark = PL_stack_base + POPMARK
 #define dORIGMARK      I32 origmark = mark - PL_stack_base
 #define SETORIGMARK    origmark = mark - PL_stack_base
@@ -99,7 +102,16 @@ See C<PUSHMARK> and L<perlcall> for other uses.
 Pops an SV off the stack.
 
 =for apidoc Amn|char*|POPp
+Pops a string off the stack. Deprecated. New code should provide
+a STRLEN n_a and use POPpx.
+
+=for apidoc Amn|char*|POPpx
 Pops a string off the stack.
+Requires a variable STRLEN n_a in scope.
+
+=for apidoc Amn|char*|POPpbytex
+Pops a string off the stack which must consist of bytes i.e. characters < 256.
+Requires a variable STRLEN n_a in scope.
 
 =for apidoc Amn|NV|POPn
 Pops a double off the stack.
@@ -121,6 +133,7 @@ Pops a long off the stack.
 #define POPs           (*sp--)
 #define POPp           (SvPVx(POPs, PL_na))            /* deprecated */
 #define POPpx          (SvPVx(POPs, n_a))
+#define POPpbytex      (SvPVbytex(POPs, n_a))
 #define POPn           (SvNVx(POPs))
 #define POPi           ((IV)SvIVx(POPs))
 #define POPu           ((UV)SvUVx(POPs))
@@ -133,6 +146,7 @@ Pops a long off the stack.
 
 #define TOPs           (*sp)
 #define TOPm1s         (*(sp-1))
+#define TOPp1s         (*(sp+1))
 #define TOPp           (SvPV(TOPs, PL_na))             /* deprecated */
 #define TOPpx          (SvPV(TOPs, n_a))
 #define TOPn           (SvNV(TOPs))
@@ -332,6 +346,7 @@ See C<PUSHu>.
           if (PL_amagic_generation) { \
            SV* tmpsv; \
            SV* arg= sp[shift]; \
+          if(0) goto am_again;  /* shut up unused warning */ \
          am_again: \
            if ((SvAMAGIC(arg))&&\
                (tmpsv=AMG_CALLun(arg,meth))) {\