# 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
#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)
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
#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 */
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(
NULL,
NULL,
NULL,
+ NULL,
NULL
);
MEMBER_TO_FPTR(Perl_magic_clear_all_env),
NULL,
NULL,
+ NULL,
NULL
);
MEMBER_TO_FPTR(Perl_magic_clearenv),
NULL,
NULL,
+ NULL,
NULL
);
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
MEMBER_TO_FPTR(Perl_magic_clearsig),
NULL,
NULL,
+ NULL,
NULL
);
#endif
MEMBER_TO_FPTR(Perl_magic_wipepack),
NULL,
NULL,
+ NULL,
NULL
);
MEMBER_TO_FPTR(Perl_magic_clearpack),
NULL,
NULL,
+ NULL,
NULL
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
MEMBER_TO_FPTR(Perl_magic_setisa),
NULL,
NULL,
+ NULL,
NULL
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
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
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
NULL,
MEMBER_TO_FPTR(Perl_magic_freeregexp),
NULL,
+ NULL,
NULL
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
NULL,
MEMBER_TO_FPTR(Perl_magic_setamagic),
NULL,
+ NULL,
NULL
);
NULL,
MEMBER_TO_FPTR(Perl_magic_setamagic),
NULL,
+ NULL,
NULL
);
NULL,
MEMBER_TO_FPTR(Perl_magic_killbackrefs),
NULL,
+ NULL,
NULL
);
NULL,
MEMBER_TO_FPTR(Perl_magic_freeovrld),
NULL,
+ NULL,
NULL
);
NULL,
NULL,
NULL,
+ NULL,
NULL
);
#ifdef USE_LOCALE_COLLATE
NULL,
NULL,
NULL,
+ NULL,
NULL
);
#endif