X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl.h;h=53a22911b0aa6d91b44266528ff89118ecb09397;hb=33b5f13c2468a991d2b495f02a62b59163be82af;hp=505c1223468a93ea25d20158e5568885c3c71d43;hpb=96a5add60f1f39d38341c09c11f0542e68f782b0;p=p5sagit%2Fp5-mst-13.2.git diff --git a/perl.h b/perl.h index 505c122..53a2291 100644 --- a/perl.h +++ b/perl.h @@ -813,17 +813,14 @@ 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) @@ -839,6 +836,10 @@ int usleep(unsigned int); */ #if !defined(PERL_FOR_X2P) && !(defined(WIN32)||defined(VMS)) # include "embed.h" +# ifndef PERL_MAD +# undef op_getmad +# define op_getmad(arg,pegop,slot) /**/ +# endif #endif #define MEM_SIZE Size_t @@ -2144,6 +2145,11 @@ struct RExC_state_t; typedef MEM_SIZE STRLEN; +#ifdef PERL_MAD +typedef struct token TOKEN; +typedef struct madprop MADPROP; +typedef struct nexttoken NEXTTOKE; +#endif typedef struct op OP; typedef struct cop COP; typedef struct unop UNOP; @@ -2319,6 +2325,10 @@ typedef struct clone_params CLONE_PARAMS; #if defined(VMS) # include "vmsish.h" # include "embed.h" +# ifndef PERL_MAD +# undef op_getmad +# define op_getmad(arg,pegop,slot) /**/ +# endif # define ISHISH "vms" #endif @@ -2349,6 +2359,10 @@ typedef struct clone_params CLONE_PARAMS; #ifdef __SYMBIAN32__ # include "symbian/symbianish.h" # include "embed.h" +# ifndef PERL_MAD +# undef op_getmad +# define op_getmad(arg,pegop,slot) /**/ +# endif # define ISHISH "symbian" #endif @@ -2957,9 +2971,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 @@ -3054,6 +3079,23 @@ typedef struct crypt_data { /* straight from /usr/include/crypt.h */ # define USE_HASH_SEED #endif +/* Win32 defines a type 'WORD' in windef.h. This conflicts with the enumerator + * 'WORD' defined in perly.h. The yytokentype enum is only a debugging aid, so + * it's not really needed. + */ +#if defined(WIN32) +# define YYTOKENTYPE +#endif +#include "perly.h" + +#ifdef PERL_MAD +struct nexttoken { + YYSTYPE next_val; /* value of next token, if any */ + I32 next_type; /* type of next token */ + MADPROP *next_mad; /* everything else about that token */ +}; +#endif + #include "regexp.h" #include "sv.h" #include "util.h" @@ -4072,15 +4114,6 @@ END_EXTERN_C #endif #endif -/* Win32 defines a type 'WORD' in windef.h. This conflicts with the enumerator - * 'WORD' defined in perly.h. The yytokentype enum is only a debugging aid, so - * it's not really needed. - */ -#if defined(WIN32) -# define YYTOKENTYPE -#endif -#include "perly.h" - #define LEX_NOTPARSING 11 /* borrowed from toke.c */ typedef enum { @@ -4313,6 +4346,12 @@ struct tempsym; /* defined in pp_pack.c */ #if !defined(PERL_FOR_X2P) # include "embedvar.h" #endif +#ifndef PERL_MAD +# undef PL_madskills +# undef PL_xmlfp +# define PL_madskills 0 +# define PL_xmlfp 0 +#endif /* Now include all the 'global' variables * If we don't have threads or multiple interpreters @@ -4335,6 +4374,10 @@ END_EXTERN_C #if defined(WIN32) /* Now all the config stuff is setup we can include embed.h */ # include "embed.h" +# ifndef PERL_MAD +# undef op_getmad +# define op_getmad(arg,pegop,slot) /**/ +# endif #endif #ifndef PERL_GLOBAL_STRUCT @@ -4353,11 +4396,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( @@ -4368,6 +4413,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); @@ -4379,6 +4425,7 @@ MGVTBL_SET( MEMBER_TO_FPTR(Perl_magic_clear_all_env), NULL, NULL, + NULL, NULL ); @@ -4390,6 +4437,7 @@ MGVTBL_SET( MEMBER_TO_FPTR(Perl_magic_clearenv), NULL, NULL, + NULL, NULL ); @@ -4401,13 +4449,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 @@ -4419,6 +4475,7 @@ MGVTBL_SET( MEMBER_TO_FPTR(Perl_magic_clearsig), NULL, NULL, + NULL, NULL ); #endif @@ -4431,6 +4488,7 @@ MGVTBL_SET( MEMBER_TO_FPTR(Perl_magic_wipepack), NULL, NULL, + NULL, NULL ); @@ -4442,6 +4500,7 @@ MGVTBL_SET( MEMBER_TO_FPTR(Perl_magic_clearpack), NULL, NULL, + NULL, NULL ); @@ -4453,6 +4512,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); @@ -4464,6 +4524,7 @@ MGVTBL_SET( MEMBER_TO_FPTR(Perl_magic_setisa), NULL, NULL, + NULL, NULL ); @@ -4475,6 +4536,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); @@ -4486,6 +4548,7 @@ MGVTBL_SET_CONST_MAGIC_GET( NULL, NULL, NULL, + NULL, NULL ); @@ -4497,6 +4560,7 @@ MGVTBL_SET( NULL, MEMBER_TO_FPTR(Perl_magic_freearylen_p), NULL, + NULL, NULL ); @@ -4508,6 +4572,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); @@ -4519,6 +4584,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); @@ -4530,6 +4596,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); @@ -4541,6 +4608,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); @@ -4552,6 +4620,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); @@ -4563,6 +4632,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); @@ -4574,6 +4644,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); @@ -4585,6 +4656,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); @@ -4596,6 +4668,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); @@ -4607,6 +4680,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); @@ -4618,6 +4692,7 @@ MGVTBL_SET( NULL, MEMBER_TO_FPTR(Perl_magic_freeregexp), NULL, + NULL, NULL ); @@ -4629,6 +4704,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); @@ -4640,6 +4716,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); @@ -4651,6 +4728,7 @@ MGVTBL_SET( NULL, MEMBER_TO_FPTR(Perl_magic_setamagic), NULL, + NULL, NULL ); @@ -4662,6 +4740,7 @@ MGVTBL_SET( NULL, MEMBER_TO_FPTR(Perl_magic_setamagic), NULL, + NULL, NULL ); @@ -4673,6 +4752,7 @@ MGVTBL_SET( NULL, MEMBER_TO_FPTR(Perl_magic_killbackrefs), NULL, + NULL, NULL ); @@ -4684,6 +4764,7 @@ MGVTBL_SET( NULL, MEMBER_TO_FPTR(Perl_magic_freeovrld), NULL, + NULL, NULL ); @@ -4695,6 +4776,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); #ifdef USE_LOCALE_COLLATE @@ -4706,6 +4788,7 @@ MGVTBL_SET( NULL, NULL, NULL, + NULL, NULL ); #endif