Only #define PERL_DONT_CREATE_GVSV if it wasn't already defined.
[p5sagit/p5-mst-13.2.git] / perl.h
diff --git a/perl.h b/perl.h
index 6f9f966..c7807b4 100644 (file)
--- a/perl.h
+++ b/perl.h
 #  endif
 #endif
 
-#define pVAR    register struct perl_vars* my_vars PERL_UNUSED_DECL
+#define pVAR    register struct perl_vars* const my_vars PERL_UNUSED_DECL
 
 #ifdef PERL_GLOBAL_STRUCT
 #  define dVAR         pVAR    = (struct perl_vars*)PERL_GET_VARS()
 #  define PERL_UNUSED_VAR(x) ((void)x)
 #endif
 
+#ifdef USE_ITHREADS
+#  define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl)
+#else
+#  define PERL_UNUSED_CONTEXT
+#endif
+
 #define NOOP (void)0
 #define dNOOP extern int Perl___notused PERL_UNUSED_DECL
 
@@ -807,12 +813,19 @@ int usleep(unsigned int);
 #define PERL_ARENA_SIZE 4080
 #endif
 
+/* enable ARENA_SETS by default, but allow disabling */
+#ifndef ARENASETS
+#define ARENASETS 1
+#endif
+
 #endif /* PERL_CORE */
 
 /* We no longer default to creating a new SV for GvSV.
    Do this before embed.  */
 #ifndef PERL_CREATE_GVSV
-#define PERL_DONT_CREATE_GVSV
+#  ifndef PERL_DONT_CREATE_GVSV
+#    define PERL_DONT_CREATE_GVSV
+#  endif
 #endif
 
 #if !defined(HAS_WAITPID) && !defined(HAS_WAIT4) || defined(HAS_WAITPID_RUNTIME)
@@ -2946,9 +2959,20 @@ typedef pthread_key_t    perl_key;
    appropriate to call return.  In either case, include the lint directive.
  */
 #ifdef HASATTRIBUTE_NORETURN
-#  define NORETURN_FUNCTION_END /* NOT REACHED */
+#  define NORETURN_FUNCTION_END /* NOTREACHED */
 #else
-#  define NORETURN_FUNCTION_END /* NOT REACHED */ return 0
+#  define NORETURN_FUNCTION_END /* NOTREACHED */ return 0
+#endif
+
+#ifdef HAS_BUILTIN_EXPECT
+#  define EXPECT(expr,val)                  __builtin_expect(expr,val)
+#else
+#  define EXPECT(expr,val)                  (expr)
+#endif
+#define LIKELY(cond)                        EXPECT(cond,1)
+#define UNLIKELY(cond)                      EXPECT(cond,0)
+#ifdef HAS_BUILTIN_CHOOSE_EXPR
+/* placeholder */
 #endif
 
 /* Some unistd.h's give a prototype for pause() even though
@@ -3480,7 +3504,6 @@ Gid_t getegid (void);
 #define PERL_MAGIC_substr        'x' /* substr() lvalue */
 #define PERL_MAGIC_defelem       'y' /* Shadow "foreach" iterator variable /
                                        smart parameter vivification */
-#define PERL_MAGIC_glob                  '*' /* GV (typeglob) */
 #define PERL_MAGIC_arylen        '#' /* Array length ($#ary) */
 #define PERL_MAGIC_pos           '.' /* pos() lvalue */
 #define PERL_MAGIC_backref       '<' /* for weak ref data */
@@ -4343,11 +4366,13 @@ END_EXTERN_C
 START_EXTERN_C
 
 #ifdef DOINIT
-#  define MGVTBL_SET(var,a,b,c,d,e,f,g) EXT MGVTBL var = {a,b,c,d,e,f,g}
-#  define MGVTBL_SET_CONST_MAGIC_GET(var,a,b,c,d,e,f,g) EXT MGVTBL var = {(int (*)(pTHX_ SV *, MAGIC *))a,b,c,d,e,f,g} /* Like MGVTBL_SET but with the get magic having a const MG* */
+#  define MGVTBL_SET(var,a,b,c,d,e,f,g,h) EXT MGVTBL var = {a,b,c,d,e,f,g,h}
+/* Like MGVTBL_SET but with the get magic having a const MG* */
+#  define MGVTBL_SET_CONST_MAGIC_GET(var,a,b,c,d,e,f,g,h) EXT MGVTBL var \
+    = {(int (*)(pTHX_ SV *, MAGIC *))a,b,c,d,e,f,g,h}
 #else
-#  define MGVTBL_SET(var,a,b,c,d,e,f,g) EXT MGVTBL var
-#  define MGVTBL_SET_CONST_MAGIC_GET(var,a,b,c,d,e,f,g) EXT MGVTBL var
+#  define MGVTBL_SET(var,a,b,c,d,e,f,g,h) EXT MGVTBL var
+#  define MGVTBL_SET_CONST_MAGIC_GET(var,a,b,c,d,e,f,g,h) EXT MGVTBL var
 #endif
 
 MGVTBL_SET(
@@ -4358,6 +4383,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4369,6 +4395,7 @@ MGVTBL_SET(
     MEMBER_TO_FPTR(Perl_magic_clear_all_env),
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4380,6 +4407,7 @@ MGVTBL_SET(
     MEMBER_TO_FPTR(Perl_magic_clearenv),
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4391,13 +4419,21 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
 #ifdef PERL_MICRO
 MGVTBL_SET(
     PL_vtbl_sigelem,
-    NULL, NULL, NULL, NULL, NULL, NULL, NULL
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL
 );
 
 #else
@@ -4409,6 +4445,7 @@ MGVTBL_SET(
     MEMBER_TO_FPTR(Perl_magic_clearsig),
     NULL,
     NULL,
+    NULL,
     NULL
 );
 #endif
@@ -4421,6 +4458,7 @@ MGVTBL_SET(
     MEMBER_TO_FPTR(Perl_magic_wipepack),
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4432,6 +4470,7 @@ MGVTBL_SET(
     MEMBER_TO_FPTR(Perl_magic_clearpack),
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4443,6 +4482,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4454,6 +4494,7 @@ MGVTBL_SET(
     MEMBER_TO_FPTR(Perl_magic_setisa),
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4465,6 +4506,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4476,6 +4518,7 @@ MGVTBL_SET_CONST_MAGIC_GET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4487,16 +4530,6 @@ MGVTBL_SET(
     NULL,
     MEMBER_TO_FPTR(Perl_magic_freearylen_p),
     NULL,
-    NULL
-);
-
-MGVTBL_SET(
-    PL_vtbl_glob,
-    MEMBER_TO_FPTR(Perl_magic_getglob),
-    MEMBER_TO_FPTR(Perl_magic_setglob),
-    NULL,
-    NULL,
-    NULL,
     NULL,
     NULL
 );
@@ -4509,6 +4542,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4520,6 +4554,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4531,6 +4566,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4542,6 +4578,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4553,6 +4590,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4564,6 +4602,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4575,6 +4614,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4586,6 +4626,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4597,6 +4638,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4608,6 +4650,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4619,6 +4662,7 @@ MGVTBL_SET(
     NULL,
     MEMBER_TO_FPTR(Perl_magic_freeregexp),
     NULL,
+    NULL,
     NULL
 );
 
@@ -4630,6 +4674,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4641,6 +4686,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 
@@ -4652,6 +4698,7 @@ MGVTBL_SET(
     NULL,
     MEMBER_TO_FPTR(Perl_magic_setamagic),
     NULL,
+    NULL,
     NULL
 );
 
@@ -4663,6 +4710,7 @@ MGVTBL_SET(
     NULL,
     MEMBER_TO_FPTR(Perl_magic_setamagic),
     NULL,
+    NULL,
     NULL
 );
 
@@ -4674,6 +4722,7 @@ MGVTBL_SET(
     NULL,
     MEMBER_TO_FPTR(Perl_magic_killbackrefs),
     NULL,
+    NULL,
     NULL
 );
 
@@ -4685,6 +4734,7 @@ MGVTBL_SET(
     NULL,
     MEMBER_TO_FPTR(Perl_magic_freeovrld),
     NULL,
+    NULL,
     NULL
 );
 
@@ -4696,6 +4746,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 #ifdef USE_LOCALE_COLLATE
@@ -4707,6 +4758,7 @@ MGVTBL_SET(
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
 );
 #endif