[shell changes from patch from perl5.003_23 to perl5.003_24]
[p5sagit/p5-mst-13.2.git] / perl.h
diff --git a/perl.h b/perl.h
index 470a44d..6e8d00b 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -1242,6 +1242,7 @@ EXT U32           evalseq;        /* eval sequence number */
 EXT U32                sub_generation; /* inc to force methods to be looked up again */
 EXT char **    origenviron;
 EXT U32                origalen;
+EXT HV *       pidstatus;      /* pid-to-status mappings for waitpid */
 EXT U32 *      profiledata;
 EXT int                maxo INIT(MAXO);/* Number of ops */
 EXT char *     osname;         /* operating system */
@@ -1663,7 +1664,7 @@ IEXT char *       Ie_tmpname;
 IEXT PerlIO *  Ie_fp;
 IEXT U32       Iperldb;
        /* This value may be raised by extensions for testing purposes */
-IEXT int       Iperl_destruct_level IINIT(1);  /* 0=none, 1=full, 2=full with checks */
+IEXT int       Iperl_destruct_level IINIT(0);  /* 0=none, 1=full, 2=full with checks */
 
 /* magical thingies */
 IEXT Time_t    Ibasetime;              /* $^T */
@@ -1740,7 +1741,6 @@ IEXT int  Iforkprocess;   /* so do_open |- can return proc# */
 
 /* subprocess state */
 IEXT AV *      Ifdpid;         /* keep fd-to-pid mappings for my_popen */
-IEXT HV *      Ipidstatus;     /* keep pid-to-status mappings for waitpid */
 
 /* internal state */
 IEXT VOL int   Iin_eval;       /* trap "fatal" errors? */
@@ -1950,55 +1950,67 @@ EXT MGVTBL vtbl_amagicelem;
 #ifdef OVERLOAD
 EXT long amagic_generation;
 
-#define NofAMmeth 29
+#define NofAMmeth 58
 #ifdef DOINIT
-EXTCONST char * AMG_names[NofAMmeth][2] = {
-  {"fallback","abs"},
-  {"bool", "nomethod"},
-  {"\"\"", "0+"},
-  {"+","+="},
-  {"-","-="},
-  {"*", "*="},
-  {"/", "/="},
-  {"%", "%="},
-  {"**", "**="},
-  {"<<", "<<="},
-  {">>", ">>="},
-  {"&", "&="},
-  {"|", "|="},
-  {"^", "^="},
-  {"<", "<="},
-  {">", ">="},
-  {"==", "!="},
-  {"<=>", "cmp"},
-  {"lt", "le"},
-  {"gt", "ge"},
-  {"eq", "ne"},
-  {"!", "~"},
-  {"++", "--"},
-  {"atan2", "cos"},
-  {"sin", "exp"},
-  {"log", "sqrt"},
-  {"x","x="},
-  {".",".="},
-  {"=","neg"}
+EXTCONST char * AMG_names[NofAMmeth] = {
+  "fallback",  "abs",                  /* "fallback" should be the first. */
+  "bool",      "nomethod",
+  "\"\"",      "0+",
+  "+",         "+=",
+  "-",         "-=",
+  "*",         "*=",
+  "/",         "/=",
+  "%",         "%=",
+  "**",                "**=",
+  "<<",                "<<=",
+  ">>",                ">>=",
+  "&",         "&=",
+  "|",         "|=",
+  "^",         "^=",
+  "<",         "<=",
+  ">",         ">=",
+  "==",                "!=",
+  "<=>",       "cmp",
+  "lt",                "le",
+  "gt",                "ge",
+  "eq",                "ne",
+  "!",         "~",
+  "++",                "--",
+  "atan2",     "cos",
+  "sin",       "exp",
+  "log",       "sqrt",
+  "x",         "x=",
+  ".",         ".=",
+  "=",         "neg"
 };
 #else
-EXTCONST char * AMG_names[NofAMmeth][2];
+EXTCONST char * AMG_names[NofAMmeth];
 #endif /* def INITAMAGIC */
 
-struct  am_table        {
+struct am_table {
   long was_ok_sub;
   long was_ok_am;
-  CV* table[NofAMmeth*2];
+  U32 flags;
+  CV* table[NofAMmeth];
   long fallback;
 };
+struct am_table_short {
+  long was_ok_sub;
+  long was_ok_am;
+  U32 flags;
+};
 typedef struct am_table AMT;
+typedef struct am_table_short AMTS;
 
 #define AMGfallNEVER   1
 #define AMGfallNO      2
 #define AMGfallYES     3
 
+#define AMTf_AMAGIC            1
+#define AMT_AMAGIC(amt)                ((amt)->flags & AMTf_AMAGIC)
+#define AMT_AMAGIC_on(amt)     ((amt)->flags |= AMTf_AMAGIC)
+#define AMT_AMAGIC_off(amt)    ((amt)->flags &= ~AMTf_AMAGIC)
+
 enum {
   fallback_amg,        abs_amg,
   bool__amg,   nomethod_amg,