rv_2av, rv_2cv and rv_2hv also make use of OPf_SPECIAL, so update the
[p5sagit/p5-mst-13.2.git] / perl.h
diff --git a/perl.h b/perl.h
index 7512a7a..ea01dda 100644 (file)
--- a/perl.h
+++ b/perl.h
 #  ifndef MULTIPLICITY
 #    define MULTIPLICITY
 #  endif
-#  define pTHX register PerlInterpreter *my_perl PERL_UNUSED_DECL
+#  define tTHX PerlInterpreter*
+#  define sTHX (sizeof(tTHX) + (MEM_ALIGNBYTES - sizeof(tTHX)%MEM_ALIGNBYTES) % MEM_ALIGNBYTES)
+#  define pTHX register tTHX my_perl PERL_UNUSED_DECL
 #  define aTHX my_perl
 #  ifdef PERL_GLOBAL_STRUCT
-#    define dTHXa(a)   dVAR; pTHX = (PerlInterpreter*)a
+#    define dTHXa(a)   dVAR; pTHX = (tTHX)a
 #  else
-#    define dTHXa(a)   pTHX = (PerlInterpreter*)a
+#    define dTHXa(a)   pTHX = (tTHX)a
 #  endif
 #  ifdef PERL_GLOBAL_STRUCT
 #    define dTHX               dVAR; pTHX = PERL_GET_THX
 #  define pTHX_7       8
 #  define pTHX_8       9
 #  define pTHX_9       10
+#  if defined(DEBUGGING) && !defined(PERL_TRACK_MEMPOOL)
+#    define PERL_TRACK_MEMPOOL
+#  endif
+#else
+#  undef PERL_TRACK_MEMPOOL
 #endif
 
 #define STATIC static
 #define dNOOP extern int Perl___notused PERL_UNUSED_DECL
 
 #ifndef pTHX
+/* Don't bother defining tTHX and sTHX; using them outside
+ * code guarded by PERL_IMPLICIT_CONTEXT is an error.
+ */
 #  define pTHX         void
 #  define pTHX_
 #  define aTHX
@@ -819,6 +829,10 @@ int usleep(unsigned int);
 #define PERL_USES_PL_PIDSTATUS
 #endif
 
+#if !defined(OS2) && !defined(WIN32) && !defined(DJGPP) && !defined(EPOC) && !defined(__SYMBIAN32__) && !defined(MACOS_TRADITIONAL)
+#define PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION
+#endif
+
 /* Cannot include embed.h here on Win32 as win32.h has not 
    yet been included and defines some config variables e.g. HAVE_INTERP_INTERN
  */
@@ -2566,7 +2580,7 @@ typedef pthread_key_t     perl_key;
 #   define STATUS_NATIVE       PL_statusvalue_vms
 /*
  * vaxc$errno is only guaranteed to be valid if errno == EVMSERR, otherwise
- * it's contents can not be trusted.  Unfortunately, Perl seems to check
+ * its contents can not be trusted.  Unfortunately, Perl seems to check
  * it on exit, so it when PL_statusvalue_vms is updated, vaxc$errno should
  * be updated also.
  */
@@ -3786,10 +3800,8 @@ EXTCONST char PL_no_myglob[]
   INIT("\"my\" variable %s can't be in a package");
 EXTCONST char PL_no_localize_ref[]
   INIT("Can't localize through a reference");
-#ifdef PERL_MALLOC_WRAP
 EXTCONST char PL_memory_wrap[]
   INIT("panic: memory wrap");
-#endif
 
 EXTCONST char PL_uuemap[65]
   INIT("`!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_");
@@ -4007,6 +4019,9 @@ EXTCONST char* const PL_block_type[] = {
        "LOOP",
        "SUBST",
        "BLOCK",
+       "FORMAT",
+       "GIVEN",
+       "WHEN"
 };
 #else
 EXTCONST char* PL_block_type[];
@@ -4122,6 +4137,9 @@ enum {            /* pass one of these to get_vtbl */
 #define HINT_ASSERTING          0x01000000
 #define HINT_ASSERTIONSSEEN     0x02000000
 
+#define HINT_HH_FOR_EVAL       0x04000000 /* Squirrel a copy of %^H away
+                                           * with every eval "string" */
+
 /* The following are stored in $sort::hints, not in PL_hints */
 #define HINT_SORT_SORT_BITS    0x000000FF /* allow 256 different ones */
 #define HINT_SORT_QUICKSORT    0x00000001
@@ -4713,7 +4731,10 @@ enum {
   to_sv_amg,   to_av_amg,
   to_hv_amg,   to_gv_amg,
   to_cv_amg,   iter_amg,
-  int_amg,     DESTROY_amg,
+  int_amg,     smart_amg,
+
+  /* Note: Perl_Gv_AMupdate() assumes that DESTROY is the last entry */
+  DESTROY_amg,
   max_amg_code
   /* Do not leave a trailing comma here.  C9X allows it, C89 doesn't. */
 };
@@ -4760,7 +4781,8 @@ EXTCONST char * const PL_AMG_names[NofAMmeth] = {
   "(${}",      "(@{}",
   "(%{}",      "(*{}",
   "(&{}",      "(<>",
-  "(int",      "DESTROY",
+  "(int",      "(~~",
+  "DESTROY"
 };
 #else
 EXTCONST char * PL_AMG_names[NofAMmeth];
@@ -5390,14 +5412,15 @@ extern void moncontrol(int);
 #pragma message disable (mainparm) /* Perl uses the envp in main(). */
 #endif
 
-#if !defined(OS2) && !defined(WIN32) && !defined(DJGPP) && !defined(EPOC) && !defined(__SYMBIAN32__) && !defined(MACOS_TRADITIONAL)
-#define PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION
-#endif
-
 #define do_open(g, n, l, a, rm, rp, sf) \
        do_openn(g, n, l, a, rm, rp, sf, (SV **) NULL, 0)
 #ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION
-#define do_exec(cmd)   do_exec3(cmd,0,0)
+#  define do_exec(cmd)                 do_exec3(cmd,0,0)
+#endif
+#ifdef OS2
+#  define do_aexec                     Perl_do_aexec
+#else
+#  define do_aexec(really, mark,sp)    do_aexec5(really, mark, sp, 0, 0)
 #endif
 
 /* and finally... */