diff options
author | Karl Berry <karl@freefriends.org> | 2012-05-21 00:15:27 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-05-21 00:15:27 +0000 |
commit | a4c42bfb2337d37da89d789cb8cc226367994e32 (patch) | |
tree | c3eabdef5d565a4e515d2be0d9d4d0540bde0250 /Master/tlpkg/tlperl/lib/CORE | |
parent | 8274475057f024d35332ac47c2e2f23ea156e6ed (diff) |
perl 5.14.2 from siep
git-svn-id: svn://tug.org/texlive/trunk@26525 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/tlperl/lib/CORE')
54 files changed, 13042 insertions, 14367 deletions
diff --git a/Master/tlpkg/tlperl/lib/CORE/XSUB.h b/Master/tlpkg/tlperl/lib/CORE/XSUB.h index 0d2c24f8b76..a2cfccd8db2 100644 --- a/Master/tlpkg/tlperl/lib/CORE/XSUB.h +++ b/Master/tlpkg/tlperl/lib/CORE/XSUB.h @@ -72,8 +72,9 @@ Sets up the C<ix> variable for an XSUB which has aliases. This is usually handled automatically by C<xsubpp>. =for apidoc Ams||dUNDERBAR -Sets up the C<padoff_du> variable for an XSUB that wishes to use -C<UNDERBAR>. +Sets up any variable needed by the C<UNDERBAR> macro. It used to define +C<padoff_du>, but it is currently a noop. However, it is strongly advised +to still use it for ensuring past and future compatibility. =for apidoc AmU||UNDERBAR The SV* corresponding to the $_ variable. Works even if there @@ -166,10 +167,8 @@ is a lexical $_ in scope. #define XSINTERFACE_FUNC_SET(cv,f) \ CvXSUBANY(cv).any_dxptr = (void (*) (pTHX_ void*))(f) -#define dUNDERBAR PADOFFSET padoff_du = find_rundefsvoffset() -#define UNDERBAR ((padoff_du == NOT_IN_PAD \ - || PAD_COMPNAME_FLAGS_isOUR(padoff_du)) \ - ? DEFSV : PAD_SVl(padoff_du)) +#define dUNDERBAR dNOOP +#define UNDERBAR find_rundefsv() /* Simple macros to put new mortal values onto the stack. */ /* Typically used to return values from XS functions. */ @@ -244,6 +243,10 @@ Macro to verify that a PM module's $VERSION variable matches the XS module's C<XS_VERSION> variable. This is usually handled automatically by C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">. +=for apidoc Ams||XS_APIVERSION_BOOTCHECK +Macro to verify that the perl api version an XS module has been compiled against +matches the api version of the perl interpreter it's being loaded into. + =head1 Simple Exception Handling Macros =for apidoc Ams||dXCPT @@ -295,47 +298,14 @@ Rethrows a previously caught exception. See L<perlguts/"Exception Handling">. #ifdef XS_VERSION # define XS_VERSION_BOOTCHECK \ - STMT_START { \ - SV *_sv; \ - const char *vn = NULL, *module = SvPV_nolen_const(ST(0)); \ - if (items >= 2) /* version supplied as bootstrap arg */ \ - _sv = ST(1); \ - else { \ - /* XXX GV_ADDWARN */ \ - _sv = get_sv(Perl_form(aTHX_ "%s::%s", module, \ - vn = "XS_VERSION"), FALSE); \ - if (!_sv || !SvOK(_sv)) \ - _sv = get_sv(Perl_form(aTHX_ "%s::%s", module, \ - vn = "VERSION"), FALSE); \ - } \ - if (_sv) { \ - SV *xpt = NULL; \ - SV *xssv = Perl_newSVpvn(aTHX_ STR_WITH_LEN(XS_VERSION)); \ - SV *pmsv = sv_derived_from(_sv, "version") \ - ? SvREFCNT_inc_simple_NN(_sv) \ - : new_version(_sv); \ - xssv = upg_version(xssv, 0); \ - if ( vcmp(pmsv,xssv) ) { \ - xpt = Perl_newSVpvf(aTHX_ "%s object version %"SVf \ - " does not match %s%s%s%s %"SVf, \ - module, \ - SVfARG(Perl_sv_2mortal(aTHX_ vstringify(xssv))), \ - vn ? "$" : "", vn ? module : "", \ - vn ? "::" : "", \ - vn ? vn : "bootstrap parameter", \ - SVfARG(Perl_sv_2mortal(aTHX_ vstringify(pmsv)))); \ - Perl_sv_2mortal(aTHX_ xpt); \ - } \ - SvREFCNT_dec(xssv); \ - SvREFCNT_dec(pmsv); \ - if (xpt) \ - Perl_croak(aTHX_ "%s", SvPVX(xpt)); \ - } \ - } STMT_END + Perl_xs_version_bootcheck(aTHX_ items, ax, STR_WITH_LEN(XS_VERSION)) #else # define XS_VERSION_BOOTCHECK #endif +#define XS_APIVERSION_BOOTCHECK \ + Perl_xs_apiversion_bootcheck(aTHX_ ST(0), STR_WITH_LEN("v" PERL_API_VERSION_STRING)) + #ifdef NO_XSLOCKS # define dXCPT dJMPENV; int rEtV = 0 # define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0) @@ -344,9 +314,9 @@ Rethrows a previously caught exception. See L<perlguts/"Exception Handling">. # define XCPT_RETHROW JMPENV_JUMP(rEtV) #endif -/* - The DBM_setFilter & DBM_ckFilter macros are only used by - the *DB*_File modules +/* + The DBM_setFilter & DBM_ckFilter macros are only used by + the *DB*_File modules */ #define DBM_setFilter(db_type,code) \ diff --git a/Master/tlpkg/tlperl/lib/CORE/av.h b/Master/tlpkg/tlperl/lib/CORE/av.h index f8c9d1bdc24..de54fa92826 100644 --- a/Master/tlpkg/tlperl/lib/CORE/av.h +++ b/Master/tlpkg/tlperl/lib/CORE/av.h @@ -9,14 +9,13 @@ */ struct xpvav { - union _xnvu xnv_u; + HV* xmg_stash; /* class package */ + union _xmgu xmg_u; SSize_t xav_fill; /* Index of last element present */ SSize_t xav_max; /* max index for which array has space */ - _XPVMG_HEAD; + SV** xav_alloc; /* pointer to beginning of C array of SVs */ }; -/* SV** xav_alloc; */ -#define xav_alloc xiv_u.xivu_p1 /* SV* xav_arylen; */ /* SVpav_REAL is set for all AVs whose xav_array contents are refcounted. @@ -29,7 +28,7 @@ struct xpvav { * real if the array needs to be modified in some way. Functions that * modify fake AVs check both flags to call av_reify() as appropriate. * - * Note that the Perl stack and @DB::args have neither flag set. (Thus, + * Note that the Perl stack has neither flag set. (Thus, * items that go on the stack are never refcounted.) * * These internal details are subject to change any time. AV @@ -58,7 +57,7 @@ Same as C<av_len()>. Deprecated, use C<av_len()> instead. #endif #define AvARRAY(av) ((av)->sv_u.svu_array) -#define AvALLOC(av) (*((SV***)&((XPVAV*) SvANY(av))->xav_alloc)) +#define AvALLOC(av) ((XPVAV*) SvANY(av))->xav_alloc #define AvMAX(av) ((XPVAV*) SvANY(av))->xav_max #define AvFILLp(av) ((XPVAV*) SvANY(av))->xav_fill #define AvARYLEN(av) (*Perl_av_arylen_p(aTHX_ MUTABLE_AV(av))) diff --git a/Master/tlpkg/tlperl/lib/CORE/cc_runtime.h b/Master/tlpkg/tlperl/lib/CORE/cc_runtime.h deleted file mode 100644 index 90826dfb0e0..00000000000 --- a/Master/tlpkg/tlperl/lib/CORE/cc_runtime.h +++ /dev/null @@ -1,85 +0,0 @@ -/* cc_runtime.h - * - * Copyright (C) 1999, 2000, 2001, 2004, 2006, 2008 by Larry Wall and others - * - * You may distribute under the terms of either the GNU General Public - * License or the Artistic License, as specified in the README file. - * - */ - -#define DOOP(ppname) PUTBACK; PL_op = ppname(aTHX); SPAGAIN -#define CCPP(s) OP * s(pTHX) - -#define PP_LIST(g) do { \ - dMARK; \ - if (g != G_ARRAY) { \ - if (++MARK <= SP) \ - *MARK = *SP; \ - else \ - *MARK = &PL_sv_undef; \ - SP = MARK; \ - } \ - } while (0) - -#define MAYBE_TAINT_SASSIGN_SRC(sv) \ - if (PL_tainting && PL_tainted && (!SvGMAGICAL(left) || !SvSMAGICAL(left) || \ - !((mg=mg_find(left, PERL_MAGIC_taint)) && mg->mg_len & 1)))\ - TAINT_NOT - -#define PP_PREINC(sv) do { \ - if (SvIOK(sv)) { \ - ++SvIVX(sv); \ - SvFLAGS(sv) &= ~(SVf_NOK|SVf_POK|SVp_NOK|SVp_POK); \ - } \ - else \ - sv_inc(sv); \ - SvSETMAGIC(sv); \ - } while (0) - -#define PP_UNSTACK do { \ - TAINT_NOT; \ - PL_stack_sp = PL_stack_base + cxstack[cxstack_ix].blk_oldsp; \ - FREETMPS; \ - oldsave = PL_scopestack[PL_scopestack_ix - 1]; \ - LEAVE_SCOPE(oldsave); \ - SPAGAIN; \ - } while(0) - -/* Anyone using eval "" deserves this mess */ -#define PP_EVAL(ppaddr, nxt) do { \ - dJMPENV; \ - int ret; \ - PUTBACK; \ - JMPENV_PUSH(ret); \ - switch (ret) { \ - case 0: \ - PL_op = ppaddr(aTHX); \ - cxstack[cxstack_ix].blk_eval.retop = Nullop; \ - if (PL_op != nxt) CALLRUNOPS(aTHX); \ - JMPENV_POP; \ - break; \ - case 1: JMPENV_POP; JMPENV_JUMP(1); \ - case 2: JMPENV_POP; JMPENV_JUMP(2); \ - case 3: \ - JMPENV_POP; \ - if (PL_restartop && PL_restartop != nxt) \ - JMPENV_JUMP(3); \ - } \ - PL_op = nxt; \ - SPAGAIN; \ - } while (0) - -#define PP_ENTERTRY(label) \ - STMT_START { \ - dJMPENV; \ - int ret; \ - JMPENV_PUSH(ret); \ - switch (ret) { \ - case 1: JMPENV_POP; JMPENV_JUMP(1);\ - case 2: JMPENV_POP; JMPENV_JUMP(2);\ - case 3: JMPENV_POP; SPAGAIN; goto label;\ - } \ - } STMT_END - -#define PP_LEAVETRY \ - STMT_START{ PL_top_env=PL_top_env->je_prev; }STMT_END diff --git a/Master/tlpkg/tlperl/lib/CORE/config.h b/Master/tlpkg/tlperl/lib/CORE/config.h index 0dd6de31bf0..8a65c234e73 100644 --- a/Master/tlpkg/tlperl/lib/CORE/config.h +++ b/Master/tlpkg/tlperl/lib/CORE/config.h @@ -1,19 +1,15 @@ -/* - * This file was produced by running the config_h.SH script, which +/* This file was produced by running the config_h.SH script, which * gets its values from undef, which is generally produced by * running Configure. * * Feel free to modify any of this as the need arises. Note, however, * that running config_h.SH again will wipe out any changes you've made. * For a more permanent change edit undef and rerun config_h.SH. - * - * $Id: Config_h.U 1 2006-08-24 12:32:52Z rmanfredi $ */ -/* - * Package name : perl5 +/* Package name : perl5 * Source directory : - * Configuration time: Thu Feb 10 14:38:06 2011 + * Configuration time: Fri May 18 10:52:25 2012 * Configured by : siepo * Target system : */ @@ -910,7 +906,7 @@ /* HAS_QUAD: * This symbol, if defined, tells that there's a 64-bit integer type, - * Quad_t, and its unsigned counterpar, Uquad_t. QUADKIND will be one + * Quad_t, and its unsigned counterpart, Uquad_t. QUADKIND will be one * of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, or QUAD_IS_INT64_T. */ #define HAS_QUAD /**/ @@ -924,18 +920,28 @@ # define QUAD_IS_INT64_T 4 #endif -/* OSNAME: - * This symbol contains the name of the operating system, as determined - * by Configure. You shouldn't rely on it too much; the specific - * feature tests from Configure are generally more reliable. +/* USE_CROSS_COMPILE: + * This symbol, if defined, indicates that Perl is being cross-compiled. */ -/* OSVERS: - * This symbol contains the version of the operating system, as determined - * by Configure. You shouldn't rely on it too much; the specific - * feature tests from Configure are generally more reliable. +/* PERL_TARGETARCH: + * This symbol, if defined, indicates the target architecture + * Perl has been cross-compiled to. Undefined if not a cross-compile. */ -#define OSNAME "MSWin32" /**/ -#define OSVERS "5.1" /**/ +#ifndef USE_CROSS_COMPILE +/*#define USE_CROSS_COMPILE / **/ +#define PERL_TARGETARCH "" /**/ +#endif + +/* MEM_ALIGNBYTES: + * This symbol contains the number of bytes required to align a + * double, or a long double when applicable. Usual values are 2, + * 4 and 8. The default is eight, for safety. + */ +#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH) +# define MEM_ALIGNBYTES 8 +#else +#define MEM_ALIGNBYTES 8 +#endif /* ARCHLIB: * This variable, if defined, holds the name of the directory in @@ -950,7 +956,7 @@ * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define ARCHLIB "c:\\perl\\lib" /**/ +#define ARCHLIB "x:\\tlperl\\lib" /**/ /*#define ARCHLIB_EXP "" / **/ /* ARCHNAME: @@ -973,67 +979,58 @@ * This symbol, if defined, indicates that we'd like to relocate entries * in @INC at run time based on the location of the perl binary. */ -#define BIN "c:\\perl\\bin" /**/ -#define BIN_EXP "c:\\perl\\bin" /**/ +#define BIN "x:\\tlperl\\bin" /**/ +#define BIN_EXP "x:\\tlperl\\bin" /**/ #define PERL_RELOCATABLE_INC "undef" /**/ -/* CAT2: - * This macro concatenates 2 tokens together. - */ -/* STRINGIFY: - * This macro surrounds its token with double quotes. - */ -#if 42 == 1 -#define CAT2(a,b) a/**/b -#define STRINGIFY(a) "a" -#endif -#if 42 == 42 -#define PeRl_CaTiFy(a, b) a ## b -#define PeRl_StGiFy(a) #a -#define CAT2(a,b) PeRl_CaTiFy(a,b) -#define StGiFy(a) PeRl_StGiFy(a) -#define STRINGIFY(a) PeRl_StGiFy(a) -#endif -#if 42 != 1 && 42 != 42 -#include "Bletch: How does this C preprocessor concatenate tokens?" -#endif - -/* CPPSTDIN: - * This symbol contains the first part of the string which will invoke - * the C preprocessor on the standard input and produce to standard - * output. Typical value of "cc -E" or "/lib/cpp", but it can also - * call a wrapper. See CPPRUN. - */ -/* CPPMINUS: - * This symbol contains the second part of the string which will invoke - * the C preprocessor on the standard input and produce to standard - * output. This symbol will have the value "-" if CPPSTDIN needs a minus - * to specify standard input, otherwise the value is "". - */ -/* CPPRUN: - * This symbol contains the string which will invoke a C preprocessor on - * the standard input and produce to standard output. It needs to end - * with CPPLAST, after all other preprocessor flags have been specified. - * The main difference with CPPSTDIN is that this program will never be a - * pointer to a shell wrapper, i.e. it will be empty if no preprocessor is - * available directly to the user. Note that it may well be different from - * the preprocessor used to compile the C program. - */ -/* CPPLAST: - * This symbol is intended to be used along with CPPRUN in the same manner - * symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "". +/* BYTEORDER: + * This symbol holds the hexadecimal constant defined in byteorder, + * in a UV, i.e. 0x1234 or 0x4321 or 0x12345678, etc... + * If the compiler supports cross-compiling or multiple-architecture + * binaries (eg. on NeXT systems), use compiler-defined macros to + * determine the byte order. + * On NeXT 3.2 (and greater), you can build "Fat" Multiple Architecture + * Binaries (MAB) on either big endian or little endian machines. + * The endian-ness is available at compile-time. This only matters + * for perl, where the config.h can be generated and installed on + * one system, and used by a different architecture to build an + * extension. Older versions of NeXT that might not have + * defined either *_ENDIAN__ were all on Motorola 680x0 series, + * so the default case (for NeXT) is big endian to catch them. + * This might matter for NeXT 3.0. */ -#define CPPSTDIN "gcc -E" -#define CPPMINUS "-" -#define CPPRUN "gcc -E" -#define CPPLAST "" +#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH) +# ifdef __LITTLE_ENDIAN__ +# if LONGSIZE == 4 +# define BYTEORDER 0x1234 +# else +# if LONGSIZE == 8 +# define BYTEORDER 0x12345678 +# endif +# endif +# else +# ifdef __BIG_ENDIAN__ +# if LONGSIZE == 4 +# define BYTEORDER 0x4321 +# else +# if LONGSIZE == 8 +# define BYTEORDER 0x87654321 +# endif +# endif +# endif +# endif +# if !defined(BYTEORDER) && (defined(NeXT) || defined(__NeXT__)) +# define BYTEORDER 0x4321 +# endif +#else +#define BYTEORDER 0x1234 /* large digits for MSB */ +#endif /* NeXT */ -/* HAS_ACCESS: - * This manifest constant lets the C program know that the access() - * system call is available to check for accessibility using real UID/GID. - * (always present on UNIX.) +/* CHARBITS: + * This symbol contains the size of a char, so that the C preprocessor + * can make decisions based on it. */ -#define HAS_ACCESS /**/ +#define CHARBITS 8 /**/ /* HAS_ACCESSX: * This symbol, if defined, indicates that the accessx routine is @@ -1054,53 +1051,32 @@ /*#define HAS_ASCTIME_R / **/ #define ASCTIME_R_PROTO 0 /**/ -/* HASATTRIBUTE_FORMAT: - * Can we handle GCC attribute for checking printf-style formats - */ -/* PRINTF_FORMAT_NULL_OK: - * Allows __printf__ format to be null when checking printf-style - */ -/* HASATTRIBUTE_MALLOC: - * Can we handle GCC attribute for malloc-style functions. - */ -/* HASATTRIBUTE_NONNULL: - * Can we handle GCC attribute for nonnull function parms. - */ -/* HASATTRIBUTE_NORETURN: - * Can we handle GCC attribute for functions that do not return - */ -/* HASATTRIBUTE_PURE: - * Can we handle GCC attribute for pure functions - */ -/* HASATTRIBUTE_UNUSED: - * Can we handle GCC attribute for unused variables and arguments +/* CASTI32: + * This symbol is defined if the C compiler can cast negative + * or large floating point numbers to 32-bit ints. */ -/* HASATTRIBUTE_DEPRECATED: - * Can we handle GCC attribute for marking deprecated APIs +#define CASTI32 /**/ + +/* CASTNEGFLOAT: + * This symbol is defined if the C compiler can cast negative + * numbers to unsigned longs, ints and shorts. */ -/* HASATTRIBUTE_WARN_UNUSED_RESULT: - * Can we handle GCC attribute for warning on unused results +/* CASTFLAGS: + * This symbol contains flags that say what difficulties the compiler + * has casting odd floating values to unsigned long: + * 0 = ok + * 1 = couldn't cast < 0 + * 2 = couldn't cast >= 0x80000000 + * 4 = couldn't cast in argument expression list */ -/*#define HASATTRIBUTE_DEPRECATED / **/ -/*#define HASATTRIBUTE_FORMAT / **/ -/*#define PRINTF_FORMAT_NULL_OK / **/ -/*#define HASATTRIBUTE_NORETURN / **/ -/*#define HASATTRIBUTE_MALLOC / **/ -/*#define HASATTRIBUTE_NONNULL / **/ -/*#define HASATTRIBUTE_PURE / **/ -/*#define HASATTRIBUTE_UNUSED / **/ -/*#define HASATTRIBUTE_WARN_UNUSED_RESULT / **/ +#define CASTNEGFLOAT /**/ +#define CASTFLAGS 0 /**/ -/* HASCONST: - * This symbol, if defined, indicates that this C compiler knows about - * the const type. There is no need to actually test for that symbol - * within your programs. The mere use of the "const" keyword will - * trigger the necessary tests. +/* VOID_CLOSEDIR: + * This symbol, if defined, indicates that the closedir() routine + * does not return a value. */ -#define HASCONST /**/ -#ifndef HASCONST -#define const -#endif +/*#define VOID_CLOSEDIR / **/ /* HAS_CRYPT_R: * This symbol, if defined, indicates that the crypt_r routine @@ -1115,17 +1091,6 @@ /*#define HAS_CRYPT_R / **/ #define CRYPT_R_PROTO 0 /**/ -/* HAS_CSH: - * This symbol, if defined, indicates that the C-shell exists. - */ -/* CSH: - * This symbol, if defined, contains the full pathname of csh. - */ -/*#define HAS_CSH / **/ -#ifdef HAS_CSH -#define CSH "" /**/ -#endif - /* HAS_CTERMID_R: * This symbol, if defined, indicates that the ctermid_r routine * is available to ctermid re-entrantly. @@ -1165,26 +1130,12 @@ /*#define HAS_DRAND48_R / **/ #define DRAND48_R_PROTO 0 /**/ -/* HAS_DRAND48_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the drand48() function. Otherwise, it is up - * to the program to supply one. A good guess is - * extern double drand48(void); - */ -/*#define HAS_DRAND48_PROTO / **/ - /* HAS_EACCESS: * This symbol, if defined, indicates that the eaccess routine is * available to do extended access checks. */ /*#define HAS_EACCESS / **/ -/* HAS_ENDGRENT: - * This symbol, if defined, indicates that the getgrent routine is - * available for finalizing sequential access of the group database. - */ -/*#define HAS_ENDGRENT / **/ - /* HAS_ENDGRENT_R: * This symbol, if defined, indicates that the endgrent_r routine * is available to endgrent re-entrantly. @@ -1198,12 +1149,6 @@ /*#define HAS_ENDGRENT_R / **/ #define ENDGRENT_R_PROTO 0 /**/ -/* HAS_ENDHOSTENT: - * This symbol, if defined, indicates that the endhostent() routine is - * available to close whatever was being used for host queries. - */ -/*#define HAS_ENDHOSTENT / **/ - /* HAS_ENDHOSTENT_R: * This symbol, if defined, indicates that the endhostent_r routine * is available to endhostent re-entrantly. @@ -1217,12 +1162,6 @@ /*#define HAS_ENDHOSTENT_R / **/ #define ENDHOSTENT_R_PROTO 0 /**/ -/* HAS_ENDNETENT: - * This symbol, if defined, indicates that the endnetent() routine is - * available to close whatever was being used for network queries. - */ -/*#define HAS_ENDNETENT / **/ - /* HAS_ENDNETENT_R: * This symbol, if defined, indicates that the endnetent_r routine * is available to endnetent re-entrantly. @@ -1236,12 +1175,6 @@ /*#define HAS_ENDNETENT_R / **/ #define ENDNETENT_R_PROTO 0 /**/ -/* HAS_ENDPROTOENT: - * This symbol, if defined, indicates that the endprotoent() routine is - * available to close whatever was being used for protocol queries. - */ -/*#define HAS_ENDPROTOENT / **/ - /* HAS_ENDPROTOENT_R: * This symbol, if defined, indicates that the endprotoent_r routine * is available to endprotoent re-entrantly. @@ -1255,12 +1188,6 @@ /*#define HAS_ENDPROTOENT_R / **/ #define ENDPROTOENT_R_PROTO 0 /**/ -/* HAS_ENDPWENT: - * This symbol, if defined, indicates that the getgrent routine is - * available for finalizing sequential access of the passwd database. - */ -/*#define HAS_ENDPWENT / **/ - /* HAS_ENDPWENT_R: * This symbol, if defined, indicates that the endpwent_r routine * is available to endpwent re-entrantly. @@ -1274,12 +1201,6 @@ /*#define HAS_ENDPWENT_R / **/ #define ENDPWENT_R_PROTO 0 /**/ -/* HAS_ENDSERVENT: - * This symbol, if defined, indicates that the endservent() routine is - * available to close whatever was being used for service queries. - */ -/*#define HAS_ENDSERVENT / **/ - /* HAS_ENDSERVENT_R: * This symbol, if defined, indicates that the endservent_r routine * is available to endservent re-entrantly. @@ -1293,17 +1214,28 @@ /*#define HAS_ENDSERVENT_R / **/ #define ENDSERVENT_R_PROTO 0 /**/ -/* FLEXFILENAMES: - * This symbol, if defined, indicates that the system supports filenames - * longer than 14 characters. +/* HAS_FD_SET: + * This symbol, when defined, indicates presence of the fd_set typedef + * in <sys/types.h> */ -#define FLEXFILENAMES /**/ +#define HAS_FD_SET /**/ -/* HAS_GETGRENT: - * This symbol, if defined, indicates that the getgrent routine is - * available for sequential access of the group database. +/* Gconvert: + * This preprocessor macro is defined to convert a floating point + * number to a string without a trailing decimal point. This + * emulates the behavior of sprintf("%g"), but is sometimes much more + * efficient. If gconvert() is not available, but gcvt() drops the + * trailing decimal point, then gcvt() is used. If all else fails, + * a macro using sprintf("%g") is used. Arguments for the Gconvert + * macro are: value, number of digits, whether trailing zeros should + * be retained, and the output buffer. + * The usual values are: + * d_Gconvert='gconvert((x),(n),(t),(b))' + * d_Gconvert='gcvt((x),(n),(b))' + * d_Gconvert='sprintf((b),"%.*g",(n),(x))' + * The last two assume trailing zeros should not be kept. */ -/*#define HAS_GETGRENT / **/ +#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x)) /* HAS_GETGRENT_R: * This symbol, if defined, indicates that the getgrent_r routine @@ -1344,53 +1276,6 @@ /*#define HAS_GETGRNAM_R / **/ #define GETGRNAM_R_PROTO 0 /**/ -/* HAS_GETHOSTBYADDR: - * This symbol, if defined, indicates that the gethostbyaddr() routine is - * available to look up hosts by their IP addresses. - */ -#define HAS_GETHOSTBYADDR /**/ - -/* HAS_GETHOSTBYNAME: - * This symbol, if defined, indicates that the gethostbyname() routine is - * available to look up host names in some data base or other. - */ -#define HAS_GETHOSTBYNAME /**/ - -/* HAS_GETHOSTENT: - * This symbol, if defined, indicates that the gethostent() routine is - * available to look up host names in some data base or another. - */ -/*#define HAS_GETHOSTENT / **/ - -/* HAS_GETHOSTNAME: - * This symbol, if defined, indicates that the C program may use the - * gethostname() routine to derive the host name. See also HAS_UNAME - * and PHOSTNAME. - */ -/* HAS_UNAME: - * This symbol, if defined, indicates that the C program may use the - * uname() routine to derive the host name. See also HAS_GETHOSTNAME - * and PHOSTNAME. - */ -/* PHOSTNAME: - * This symbol, if defined, indicates the command to feed to the - * popen() routine to derive the host name. See also HAS_GETHOSTNAME - * and HAS_UNAME. Note that the command uses a fully qualified path, - * so that it is safe even if used by a process with super-user - * privileges. - */ -/* HAS_PHOSTNAME: - * This symbol, if defined, indicates that the C program may use the - * contents of PHOSTNAME as a command to feed to the popen() routine - * to derive the host name. - */ -#define HAS_GETHOSTNAME /**/ -#define HAS_UNAME /**/ -/*#define HAS_PHOSTNAME / **/ -#ifdef HAS_PHOSTNAME -#define PHOSTNAME "" /* How to get the host name */ -#endif - /* HAS_GETHOSTBYADDR_R: * This symbol, if defined, indicates that the gethostbyaddr_r routine * is available to gethostbyaddr re-entrantly. @@ -1430,14 +1315,6 @@ /*#define HAS_GETHOSTENT_R / **/ #define GETHOSTENT_R_PROTO 0 /**/ -/* HAS_GETHOST_PROTOS: - * This symbol, if defined, indicates that <netdb.h> includes - * prototypes for gethostent(), gethostbyname(), and - * gethostbyaddr(). Otherwise, it is up to the program to guess - * them. See netdbtype.U for probing for various Netdb_xxx_t types. - */ -#define HAS_GETHOST_PROTOS /**/ - /* HAS_GETLOGIN_R: * This symbol, if defined, indicates that the getlogin_r routine * is available to getlogin re-entrantly. @@ -1451,24 +1328,6 @@ /*#define HAS_GETLOGIN_R / **/ #define GETLOGIN_R_PROTO 0 /**/ -/* HAS_GETNETBYADDR: - * This symbol, if defined, indicates that the getnetbyaddr() routine is - * available to look up networks by their IP addresses. - */ -/*#define HAS_GETNETBYADDR / **/ - -/* HAS_GETNETBYNAME: - * This symbol, if defined, indicates that the getnetbyname() routine is - * available to look up networks by their names. - */ -/*#define HAS_GETNETBYNAME / **/ - -/* HAS_GETNETENT: - * This symbol, if defined, indicates that the getnetent() routine is - * available to look up network names in some data base or another. - */ -/*#define HAS_GETNETENT / **/ - /* HAS_GETNETBYADDR_R: * This symbol, if defined, indicates that the getnetbyaddr_r routine * is available to getnetbyaddr re-entrantly. @@ -1508,41 +1367,12 @@ /*#define HAS_GETNETENT_R / **/ #define GETNETENT_R_PROTO 0 /**/ -/* HAS_GETNET_PROTOS: - * This symbol, if defined, indicates that <netdb.h> includes - * prototypes for getnetent(), getnetbyname(), and - * getnetbyaddr(). Otherwise, it is up to the program to guess - * them. See netdbtype.U for probing for various Netdb_xxx_t types. - */ -/*#define HAS_GETNET_PROTOS / **/ - -/* HAS_GETPROTOENT: - * This symbol, if defined, indicates that the getprotoent() routine is - * available to look up protocols in some data base or another. - */ -/*#define HAS_GETPROTOENT / **/ - -/* HAS_GETPGRP: - * This symbol, if defined, indicates that the getpgrp routine is - * available to get the current process group. - */ -/* USE_BSD_GETPGRP: - * This symbol, if defined, indicates that getpgrp needs one - * arguments whereas USG one needs none. - */ -/*#define HAS_GETPGRP / **/ -/*#define USE_BSD_GETPGRP / **/ - -/* HAS_GETPROTOBYNAME: - * This symbol, if defined, indicates that the getprotobyname() - * routine is available to look up protocols by their name. - */ -/* HAS_GETPROTOBYNUMBER: - * This symbol, if defined, indicates that the getprotobynumber() - * routine is available to look up protocols by their number. +/* HAS_GETPAGESIZE: + * This symbol, if defined, indicates that the getpagesize system call + * is available to get system page size, which is the granularity of + * many memory management calls. */ -#define HAS_GETPROTOBYNAME /**/ -#define HAS_GETPROTOBYNUMBER /**/ +/*#define HAS_GETPAGESIZE / **/ /* HAS_GETPROTOBYNAME_R: * This symbol, if defined, indicates that the getprotobyname_r routine @@ -1583,21 +1413,6 @@ /*#define HAS_GETPROTOENT_R / **/ #define GETPROTOENT_R_PROTO 0 /**/ -/* HAS_GETPROTO_PROTOS: - * This symbol, if defined, indicates that <netdb.h> includes - * prototypes for getprotoent(), getprotobyname(), and - * getprotobyaddr(). Otherwise, it is up to the program to guess - * them. See netdbtype.U for probing for various Netdb_xxx_t types. - */ -#define HAS_GETPROTO_PROTOS /**/ - -/* HAS_GETPWENT: - * This symbol, if defined, indicates that the getpwent routine is - * available for sequential access of the passwd database. - * If this is not available, the older getpw() function may be available. - */ -/*#define HAS_GETPWENT / **/ - /* HAS_GETPWENT_R: * This symbol, if defined, indicates that the getpwent_r routine * is available to getpwent re-entrantly. @@ -1637,12 +1452,6 @@ /*#define HAS_GETPWUID_R / **/ #define GETPWUID_R_PROTO 0 /**/ -/* HAS_GETSERVENT: - * This symbol, if defined, indicates that the getservent() routine is - * available to look up network services in some data base or another. - */ -/*#define HAS_GETSERVENT / **/ - /* HAS_GETSERVBYNAME_R: * This symbol, if defined, indicates that the getservbyname_r routine * is available to getservbyname re-entrantly. @@ -1682,14 +1491,6 @@ /*#define HAS_GETSERVENT_R / **/ #define GETSERVENT_R_PROTO 0 /**/ -/* HAS_GETSERV_PROTOS: - * This symbol, if defined, indicates that <netdb.h> includes - * prototypes for getservent(), getservbyname(), and - * getservbyaddr(). Otherwise, it is up to the program to guess - * them. See netdbtype.U for probing for various Netdb_xxx_t types. - */ -#define HAS_GETSERV_PROTOS /**/ - /* HAS_GETSPNAM_R: * This symbol, if defined, indicates that the getspnam_r routine * is available to getspnam re-entrantly. @@ -1703,17 +1504,6 @@ /*#define HAS_GETSPNAM_R / **/ #define GETSPNAM_R_PROTO 0 /**/ -/* HAS_GETSERVBYNAME: - * This symbol, if defined, indicates that the getservbyname() - * routine is available to look up services by their name. - */ -/* HAS_GETSERVBYPORT: - * This symbol, if defined, indicates that the getservbyport() - * routine is available to look up services by their port. - */ -#define HAS_GETSERVBYNAME /**/ -#define HAS_GETSERVBYPORT /**/ - /* HAS_GMTIME_R: * This symbol, if defined, indicates that the gmtime_r routine * is available to gmtime re-entrantly. @@ -1727,30 +1517,28 @@ /*#define HAS_GMTIME_R / **/ #define GMTIME_R_PROTO 0 /**/ -/* HAS_HTONL: - * This symbol, if defined, indicates that the htonl() routine (and - * friends htons() ntohl() ntohs()) are available to do network - * order byte swapping. - */ -/* HAS_HTONS: - * This symbol, if defined, indicates that the htons() routine (and - * friends htonl() ntohl() ntohs()) are available to do network - * order byte swapping. +/* HAS_GNULIBC: + * This symbol, if defined, indicates to the C program that + * the GNU C library is being used. A better check is to use + * the __GLIBC__ and __GLIBC_MINOR__ symbols supplied with glibc. */ -/* HAS_NTOHL: - * This symbol, if defined, indicates that the ntohl() routine (and - * friends htonl() htons() ntohs()) are available to do network - * order byte swapping. +/*#define HAS_GNULIBC / **/ +#if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE) +# define _GNU_SOURCE +#endif + +/* HAS_ISASCII: + * This manifest constant lets the C program know that isascii + * is available. */ -/* HAS_NTOHS: - * This symbol, if defined, indicates that the ntohs() routine (and - * friends htonl() htons() ntohl()) are available to do network - * order byte swapping. +#define HAS_ISASCII /**/ + +/* HAS_LCHOWN: + * This symbol, if defined, indicates that the lchown routine is + * available to operate on a symbolic link (instead of following the + * link). */ -#define HAS_HTONL /**/ -#define HAS_HTONS /**/ -#define HAS_NTOHL /**/ -#define HAS_NTOHS /**/ +/*#define HAS_LCHOWN / **/ /* HAS_LOCALTIME_R: * This symbol, if defined, indicates that the localtime_r routine @@ -1778,71 +1566,11 @@ /*#define HAS_LOCALTIME_R / **/ #define LOCALTIME_R_PROTO 0 /**/ -/* HAS_LONG_DOUBLE: - * This symbol will be defined if the C compiler supports long - * doubles. - */ -/* LONG_DOUBLESIZE: - * This symbol contains the size of a long double, so that the - * C preprocessor can make decisions based on it. It is only - * defined if the system supports long doubles. - */ -#define HAS_LONG_DOUBLE /**/ -#ifdef HAS_LONG_DOUBLE -#define LONG_DOUBLESIZE 12 /**/ -#endif - -/* HAS_LONG_LONG: - * This symbol will be defined if the C compiler supports long long. - */ -/* LONGLONGSIZE: - * This symbol contains the size of a long long, so that the - * C preprocessor can make decisions based on it. It is only - * defined if the system supports long long. - */ -/*#define HAS_LONG_LONG / **/ -#ifdef HAS_LONG_LONG -#define LONGLONGSIZE 8 /**/ -#endif - -/* HAS_LSEEK_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the lseek() function. Otherwise, it is up - * to the program to supply one. A good guess is - * extern off_t lseek(int, off_t, int); - */ -#define HAS_LSEEK_PROTO /**/ - -/* HAS_MEMCHR: - * This symbol, if defined, indicates that the memchr routine is available - * to locate characters within a C string. - */ -#define HAS_MEMCHR /**/ - -/* HAS_MKSTEMP: - * This symbol, if defined, indicates that the mkstemp routine is - * available to exclusively create and open a uniquely named - * temporary file. - */ -/*#define HAS_MKSTEMP / **/ - -/* HAS_MMAP: - * This symbol, if defined, indicates that the mmap system call is - * available to map a file into memory. - */ -/* Mmap_t: - * This symbol holds the return type of the mmap() system call - * (and simultaneously the type of the first argument). - * Usually set to 'void *' or 'caddr_t'. - */ -/*#define HAS_MMAP / **/ -#define Mmap_t void * /**/ - -/* HAS_MSG: - * This symbol, if defined, indicates that the entire msg*(2) library is - * supported (IPC mechanism based on message queues). +/* HAS_OPEN3: + * This manifest constant lets the C program know that the three + * argument form of open(2) is available. */ -/*#define HAS_MSG / **/ +/*#define HAS_OPEN3 / **/ /* OLD_PTHREAD_CREATE_JOINABLE: * This symbol, if defined, indicates how to create pthread @@ -1918,17 +1646,28 @@ /*#define HAS_READDIR_R / **/ #define READDIR_R_PROTO 0 /**/ -/* HAS_SEM: - * This symbol, if defined, indicates that the entire sem*(2) library is - * supported. +/* HAS_SAFE_BCOPY: + * This symbol, if defined, indicates that the bcopy routine is available + * to copy potentially overlapping memory blocks. Normally, you should + * probably use memmove() or memcpy(). If neither is defined, roll your + * own version. */ -/*#define HAS_SEM / **/ +/*#define HAS_SAFE_BCOPY / **/ -/* HAS_SETGRENT: - * This symbol, if defined, indicates that the setgrent routine is - * available for initializing sequential access of the group database. +/* HAS_SAFE_MEMCPY: + * This symbol, if defined, indicates that the memcpy routine is available + * to copy potentially overlapping memory blocks. If you need to + * copy overlapping memory blocks, you should check HAS_MEMMOVE and + * use memmove() instead, if available. */ -/*#define HAS_SETGRENT / **/ +/*#define HAS_SAFE_MEMCPY / **/ + +/* HAS_SANE_MEMCMP: + * This symbol, if defined, indicates that the memcmp routine is available + * and can be used to compare relative magnitudes of chars with their high + * bits set. If it is not defined, roll your own version. + */ +#define HAS_SANE_MEMCMP /**/ /* HAS_SETGRENT_R: * This symbol, if defined, indicates that the setgrent_r routine @@ -1943,12 +1682,6 @@ /*#define HAS_SETGRENT_R / **/ #define SETGRENT_R_PROTO 0 /**/ -/* HAS_SETHOSTENT: - * This symbol, if defined, indicates that the sethostent() routine is - * available. - */ -/*#define HAS_SETHOSTENT / **/ - /* HAS_SETHOSTENT_R: * This symbol, if defined, indicates that the sethostent_r routine * is available to sethostent re-entrantly. @@ -1975,12 +1708,6 @@ /*#define HAS_SETLOCALE_R / **/ #define SETLOCALE_R_PROTO 0 /**/ -/* HAS_SETNETENT: - * This symbol, if defined, indicates that the setnetent() routine is - * available. - */ -/*#define HAS_SETNETENT / **/ - /* HAS_SETNETENT_R: * This symbol, if defined, indicates that the setnetent_r routine * is available to setnetent re-entrantly. @@ -1994,24 +1721,6 @@ /*#define HAS_SETNETENT_R / **/ #define SETNETENT_R_PROTO 0 /**/ -/* HAS_SETPROTOENT: - * This symbol, if defined, indicates that the setprotoent() routine is - * available. - */ -/*#define HAS_SETPROTOENT / **/ - -/* HAS_SETPGRP: - * This symbol, if defined, indicates that the setpgrp routine is - * available to set the current process group. - */ -/* USE_BSD_SETPGRP: - * This symbol, if defined, indicates that setpgrp needs two - * arguments whereas USG one needs none. See also HAS_SETPGID - * for a POSIX interface. - */ -/*#define HAS_SETPGRP / **/ -/*#define USE_BSD_SETPGRP / **/ - /* HAS_SETPROTOENT_R: * This symbol, if defined, indicates that the setprotoent_r routine * is available to setprotoent re-entrantly. @@ -2025,12 +1734,6 @@ /*#define HAS_SETPROTOENT_R / **/ #define SETPROTOENT_R_PROTO 0 /**/ -/* HAS_SETPWENT: - * This symbol, if defined, indicates that the setpwent routine is - * available for initializing sequential access of the passwd database. - */ -/*#define HAS_SETPWENT / **/ - /* HAS_SETPWENT_R: * This symbol, if defined, indicates that the setpwent_r routine * is available to setpwent re-entrantly. @@ -2044,12 +1747,6 @@ /*#define HAS_SETPWENT_R / **/ #define SETPWENT_R_PROTO 0 /**/ -/* HAS_SETSERVENT: - * This symbol, if defined, indicates that the setservent() routine is - * available. - */ -/*#define HAS_SETSERVENT / **/ - /* HAS_SETSERVENT_R: * This symbol, if defined, indicates that the setservent_r routine * is available to setservent re-entrantly. @@ -2063,6 +1760,933 @@ /*#define HAS_SETSERVENT_R / **/ #define SETSERVENT_R_PROTO 0 /**/ +/* HAS_SIGACTION: + * This symbol, if defined, indicates that Vr4's sigaction() routine + * is available. + */ +/*#define HAS_SIGACTION / **/ + +/* HAS_SIGSETJMP: + * This variable indicates to the C program that the sigsetjmp() + * routine is available to save the calling process's registers + * and stack environment for later use by siglongjmp(), and + * to optionally save the process's signal mask. See + * Sigjmp_buf, Sigsetjmp, and Siglongjmp. + */ +/* Sigjmp_buf: + * This is the buffer type to be used with Sigsetjmp and Siglongjmp. + */ +/* Sigsetjmp: + * This macro is used in the same way as sigsetjmp(), but will invoke + * traditional setjmp() if sigsetjmp isn't available. + * See HAS_SIGSETJMP. + */ +/* Siglongjmp: + * This macro is used in the same way as siglongjmp(), but will invoke + * traditional longjmp() if siglongjmp isn't available. + * See HAS_SIGSETJMP. + */ +/*#define HAS_SIGSETJMP / **/ +#ifdef HAS_SIGSETJMP +#define Sigjmp_buf sigjmp_buf +#define Sigsetjmp(buf,save_mask) sigsetjmp((buf),(save_mask)) +#define Siglongjmp(buf,retval) siglongjmp((buf),(retval)) +#else +#define Sigjmp_buf jmp_buf +#define Sigsetjmp(buf,save_mask) setjmp((buf)) +#define Siglongjmp(buf,retval) longjmp((buf),(retval)) +#endif + +/* HAS_SRAND48_R: + * This symbol, if defined, indicates that the srand48_r routine + * is available to srand48 re-entrantly. + */ +/* SRAND48_R_PROTO: + * This symbol encodes the prototype of srand48_r. + * It is zero if d_srand48_r is undef, and one of the + * REENTRANT_PROTO_T_ABC macros of reentr.h if d_srand48_r + * is defined. + */ +/*#define HAS_SRAND48_R / **/ +#define SRAND48_R_PROTO 0 /**/ + +/* HAS_SRANDOM_R: + * This symbol, if defined, indicates that the srandom_r routine + * is available to srandom re-entrantly. + */ +/* SRANDOM_R_PROTO: + * This symbol encodes the prototype of srandom_r. + * It is zero if d_srandom_r is undef, and one of the + * REENTRANT_PROTO_T_ABC macros of reentr.h if d_srandom_r + * is defined. + */ +/*#define HAS_SRANDOM_R / **/ +#define SRANDOM_R_PROTO 0 /**/ + +/* USE_STDIO_PTR: + * This symbol is defined if the _ptr and _cnt fields (or similar) + * of the stdio FILE structure can be used to access the stdio buffer + * for a file handle. If this is defined, then the FILE_ptr(fp) + * and FILE_cnt(fp) macros will also be defined and should be used + * to access these fields. + */ +/* FILE_ptr: + * This macro is used to access the _ptr field (or equivalent) of the + * FILE structure pointed to by its argument. This macro will always be + * defined if USE_STDIO_PTR is defined. + */ +/* STDIO_PTR_LVALUE: + * This symbol is defined if the FILE_ptr macro can be used as an + * lvalue. + */ +/* FILE_cnt: + * This macro is used to access the _cnt field (or equivalent) of the + * FILE structure pointed to by its argument. This macro will always be + * defined if USE_STDIO_PTR is defined. + */ +/* STDIO_CNT_LVALUE: + * This symbol is defined if the FILE_cnt macro can be used as an + * lvalue. + */ +/* STDIO_PTR_LVAL_SETS_CNT: + * This symbol is defined if using the FILE_ptr macro as an lvalue + * to increase the pointer by n has the side effect of decreasing the + * value of File_cnt(fp) by n. + */ +/* STDIO_PTR_LVAL_NOCHANGE_CNT: + * This symbol is defined if using the FILE_ptr macro as an lvalue + * to increase the pointer by n leaves File_cnt(fp) unchanged. + */ +#define USE_STDIO_PTR /**/ +#ifdef USE_STDIO_PTR +#define FILE_ptr(fp) ((fp)->_ptr) +#define STDIO_PTR_LVALUE /**/ +#define FILE_cnt(fp) ((fp)->_cnt) +#define STDIO_CNT_LVALUE /**/ +/*#define STDIO_PTR_LVAL_SETS_CNT / **/ +#define STDIO_PTR_LVAL_NOCHANGE_CNT /**/ +#endif + +/* USE_STDIO_BASE: + * This symbol is defined if the _base field (or similar) of the + * stdio FILE structure can be used to access the stdio buffer for + * a file handle. If this is defined, then the FILE_base(fp) macro + * will also be defined and should be used to access this field. + * Also, the FILE_bufsiz(fp) macro will be defined and should be used + * to determine the number of bytes in the buffer. USE_STDIO_BASE + * will never be defined unless USE_STDIO_PTR is. + */ +/* FILE_base: + * This macro is used to access the _base field (or equivalent) of the + * FILE structure pointed to by its argument. This macro will always be + * defined if USE_STDIO_BASE is defined. + */ +/* FILE_bufsiz: + * This macro is used to determine the number of bytes in the I/O + * buffer pointed to by _base field (or equivalent) of the FILE + * structure pointed to its argument. This macro will always be defined + * if USE_STDIO_BASE is defined. + */ +#define USE_STDIO_BASE /**/ +#ifdef USE_STDIO_BASE +#define FILE_base(fp) ((fp)->_base) +#define FILE_bufsiz(fp) ((fp)->_cnt + (fp)->_ptr - (fp)->_base) +#endif + +/* HAS_STRERROR_R: + * This symbol, if defined, indicates that the strerror_r routine + * is available to strerror re-entrantly. + */ +/* STRERROR_R_PROTO: + * This symbol encodes the prototype of strerror_r. + * It is zero if d_strerror_r is undef, and one of the + * REENTRANT_PROTO_T_ABC macros of reentr.h if d_strerror_r + * is defined. + */ +/*#define HAS_STRERROR_R / **/ +#define STRERROR_R_PROTO 0 /**/ + +/* HAS_TMPNAM_R: + * This symbol, if defined, indicates that the tmpnam_r routine + * is available to tmpnam re-entrantly. + */ +/* TMPNAM_R_PROTO: + * This symbol encodes the prototype of tmpnam_r. + * It is zero if d_tmpnam_r is undef, and one of the + * REENTRANT_PROTO_T_ABC macros of reentr.h if d_tmpnam_r + * is defined. + */ +/*#define HAS_TMPNAM_R / **/ +#define TMPNAM_R_PROTO 0 /**/ + +/* HAS_TTYNAME_R: + * This symbol, if defined, indicates that the ttyname_r routine + * is available to ttyname re-entrantly. + */ +/* TTYNAME_R_PROTO: + * This symbol encodes the prototype of ttyname_r. + * It is zero if d_ttyname_r is undef, and one of the + * REENTRANT_PROTO_T_ABC macros of reentr.h if d_ttyname_r + * is defined. + */ +/*#define HAS_TTYNAME_R / **/ +#define TTYNAME_R_PROTO 0 /**/ + +/* HAS_VPRINTF: + * This symbol, if defined, indicates that the vprintf routine is available + * to printf with a pointer to an argument list. If unavailable, you + * may need to write your own, probably in terms of _doprnt(). + */ +/* USE_CHAR_VSPRINTF: + * This symbol is defined if this system has vsprintf() returning type + * (char*). The trend seems to be to declare it as "int vsprintf()". It + * is up to the package author to declare vsprintf correctly based on the + * symbol. + */ +#define HAS_VPRINTF /**/ +/*#define USE_CHAR_VSPRINTF / **/ + +/* DOUBLESIZE: + * This symbol contains the size of a double, so that the C preprocessor + * can make decisions based on it. + */ +#define DOUBLESIZE 8 /**/ + +/* I_MACH_CTHREADS: + * This symbol, if defined, indicates to the C program that it should + * include <mach/cthreads.h>. + */ +/*#define I_MACH_CTHREADS / **/ + +/* I_PTHREAD: + * This symbol, if defined, indicates to the C program that it should + * include <pthread.h>. + */ +/*#define I_PTHREAD / **/ + +/* I_SYS_ACCESS: + * This symbol, if defined, indicates to the C program that it should + * include <sys/access.h>. + */ +/*#define I_SYS_ACCESS / **/ + +/* I_SYS_SECURITY: + * This symbol, if defined, indicates to the C program that it should + * include <sys/security.h>. + */ +/*#define I_SYS_SECURITY / **/ + +/* I_TIME: + * This symbol, if defined, indicates to the C program that it should + * include <time.h>. + */ +/* I_SYS_TIME: + * This symbol, if defined, indicates to the C program that it should + * include <sys/time.h>. + */ +/* I_SYS_TIME_KERNEL: + * This symbol, if defined, indicates to the C program that it should + * include <sys/time.h> with KERNEL defined. + */ +/* HAS_TM_TM_ZONE: + * This symbol, if defined, indicates to the C program that + * the struct tm has a tm_zone field. + */ +/* HAS_TM_TM_GMTOFF: + * This symbol, if defined, indicates to the C program that + * the struct tm has a tm_gmtoff field. + */ +#define I_TIME /**/ +/*#define I_SYS_TIME / **/ +/*#define I_SYS_TIME_KERNEL / **/ +/*#define HAS_TM_TM_ZONE / **/ +/*#define HAS_TM_TM_GMTOFF / **/ + +/* PERL_INC_VERSION_LIST: + * This variable specifies the list of subdirectories in over + * which perl.c:incpush() and lib/lib.pm will automatically + * search when adding directories to @INC, in a format suitable + * for a C initialization string. See the inc_version_list entry + * in Porting/Glossary for more details. + */ +/*#define PERL_INC_VERSION_LIST 0 / **/ + +/* INSTALL_USR_BIN_PERL: + * This symbol, if defined, indicates that Perl is to be installed + * also as /usr/bin/perl. + */ +/*#define INSTALL_USR_BIN_PERL / **/ + +/* VAL_O_NONBLOCK: + * This symbol is to be used during open() or fcntl(F_SETFL) to turn on + * non-blocking I/O for the file descriptor. Note that there is no way + * back, i.e. you cannot turn it blocking again this way. If you wish to + * alternatively switch between blocking and non-blocking, use the + * ioctl(FIOSNBIO) call instead, but that is not supported by all devices. + */ +/* VAL_EAGAIN: + * This symbol holds the errno error code set by read() when no data was + * present on the non-blocking file descriptor. + */ +/* RD_NODATA: + * This symbol holds the return code from read() when no data is present + * on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is + * not defined, then you can't distinguish between no data and EOF by + * issuing a read(). You'll have to find another way to tell for sure! + */ +/* EOF_NONBLOCK: + * This symbol, if defined, indicates to the C program that a read() on + * a non-blocking file descriptor will return 0 on EOF, and not the value + * held in RD_NODATA (-1 usually, in that case!). + */ +#define VAL_O_NONBLOCK O_NONBLOCK +#define VAL_EAGAIN EAGAIN +#define RD_NODATA -1 +#define EOF_NONBLOCK + +/* PERL_OTHERLIBDIRS: + * This variable contains a colon-separated set of paths for the perl + * binary to search for additional library files or modules. + * These directories will be tacked to the end of @INC. + * Perl will automatically search below each path for version- + * and architecture-specific directories. See PERL_INC_VERSION_LIST + * for more details. + */ +/*#define PERL_OTHERLIBDIRS "" / **/ + +/* PRIVLIB: + * This symbol contains the name of the private library for this package. + * The library is private in the sense that it needn't be in anyone's + * execution path, but it should be accessible by the world. The program + * should be prepared to do ~ expansion. + */ +/* PRIVLIB_EXP: + * This symbol contains the ~name expanded version of PRIVLIB, to be used + * in programs that are not prepared to deal with ~ expansion at run-time. + */ +#define PRIVLIB "x:\\tlperl\\lib" /**/ +#define PRIVLIB_EXP (win32_get_privlib(PERL_VERSION_STRING, NULL)) /**/ + +/* PTRSIZE: + * This symbol contains the size of a pointer, so that the C preprocessor + * can make decisions based on it. It will be sizeof(void *) if + * the compiler supports (void *); otherwise it will be + * sizeof(char *). + */ +#define PTRSIZE 4 /**/ + +/* Drand01: + * This macro is to be used to generate uniformly distributed + * random numbers over the range [0., 1.[. You may have to supply + * an 'extern double drand48();' in your program since SunOS 4.1.3 + * doesn't provide you with anything relevant in its headers. + * See HAS_DRAND48_PROTO. + */ +/* Rand_seed_t: + * This symbol defines the type of the argument of the + * random seed function. + */ +/* seedDrand01: + * This symbol defines the macro to be used in seeding the + * random number generator (see Drand01). + */ +/* RANDBITS: + * This symbol indicates how many bits are produced by the + * function used to generate normalized random numbers. + * Values include 15, 16, 31, and 48. + */ +#define Drand01() (rand()/(double)((unsigned)1<<RANDBITS)) /**/ +#define Rand_seed_t unsigned /**/ +#define seedDrand01(x) srand((Rand_seed_t)x) /**/ +#define RANDBITS 15 /**/ + +/* SITEARCH: + * This symbol contains the name of the private library for this package. + * The library is private in the sense that it needn't be in anyone's + * execution path, but it should be accessible by the world. The program + * should be prepared to do ~ expansion. + * The standard distribution will put nothing in this directory. + * After perl has been installed, users may install their own local + * architecture-dependent modules in this directory with + * MakeMaker Makefile.PL + * or equivalent. See INSTALL for details. + */ +/* SITEARCH_EXP: + * This symbol contains the ~name expanded version of SITEARCH, to be used + * in programs that are not prepared to deal with ~ expansion at run-time. + */ +#define SITEARCH "x:\\tlperl\\site\\lib" /**/ +/*#define SITEARCH_EXP "" / **/ + +/* SITELIB: + * This symbol contains the name of the private library for this package. + * The library is private in the sense that it needn't be in anyone's + * execution path, but it should be accessible by the world. The program + * should be prepared to do ~ expansion. + * The standard distribution will put nothing in this directory. + * After perl has been installed, users may install their own local + * architecture-independent modules in this directory with + * MakeMaker Makefile.PL + * or equivalent. See INSTALL for details. + */ +/* SITELIB_EXP: + * This symbol contains the ~name expanded version of SITELIB, to be used + * in programs that are not prepared to deal with ~ expansion at run-time. + */ +/* SITELIB_STEM: + * This define is SITELIB_EXP with any trailing version-specific component + * removed. The elements in inc_version_list (inc_version_list.U) can + * be tacked onto this variable to generate a list of directories to search. + */ +#define SITELIB "x:\\tlperl\\site\\lib" /**/ +#define SITELIB_EXP (win32_get_sitelib(PERL_VERSION_STRING, NULL)) /**/ +#define SITELIB_STEM "" /**/ + +/* SSize_t: + * This symbol holds the type used by functions that return + * a count of bytes or an error condition. It must be a signed type. + * It is usually ssize_t, but may be long or int, etc. + * It may be necessary to include <sys/types.h> or <unistd.h> + * to get any typedef'ed information. + * We will pick a type such that sizeof(SSize_t) == sizeof(Size_t). + */ +#define SSize_t int /* signed count of bytes */ + +/* USE_ITHREADS: + * This symbol, if defined, indicates that Perl should be built to + * use the interpreter-based threading implementation. + */ +/* USE_5005THREADS: + * This symbol, if defined, indicates that Perl should be built to + * use the 5.005-based threading implementation. + * Only valid up to 5.8.x. + */ +/* OLD_PTHREADS_API: + * This symbol, if defined, indicates that Perl should + * be built to use the old draft POSIX threads API. + */ +/* USE_REENTRANT_API: + * This symbol, if defined, indicates that Perl should + * try to use the various _r versions of library functions. + * This is extremely experimental. + */ +/*#define USE_5005THREADS / **/ +#define USE_ITHREADS /**/ +#if defined(USE_5005THREADS) && !defined(USE_ITHREADS) +#define USE_THREADS /* until src is revised*/ +#endif +/*#define OLD_PTHREADS_API / **/ +/*#define USE_REENTRANT_API / **/ + +/* PERL_VENDORARCH: + * If defined, this symbol contains the name of a private library. + * The library is private in the sense that it needn't be in anyone's + * execution path, but it should be accessible by the world. + * It may have a ~ on the front. + * The standard distribution will put nothing in this directory. + * Vendors who distribute perl may wish to place their own + * architecture-dependent modules and extensions in this directory with + * MakeMaker Makefile.PL INSTALLDIRS=vendor + * or equivalent. See INSTALL for details. + */ +/* PERL_VENDORARCH_EXP: + * This symbol contains the ~name expanded version of PERL_VENDORARCH, to be used + * in programs that are not prepared to deal with ~ expansion at run-time. + */ +/*#define PERL_VENDORARCH "" / **/ +/*#define PERL_VENDORARCH_EXP "" / **/ + +/* PERL_VENDORLIB_EXP: + * This symbol contains the ~name expanded version of VENDORLIB, to be used + * in programs that are not prepared to deal with ~ expansion at run-time. + */ +/* PERL_VENDORLIB_STEM: + * This define is PERL_VENDORLIB_EXP with any trailing version-specific component + * removed. The elements in inc_version_list (inc_version_list.U) can + * be tacked onto this variable to generate a list of directories to search. + */ +/*#define PERL_VENDORLIB_EXP "" / **/ +/*#define PERL_VENDORLIB_STEM "" / **/ + +/* HAS_STATIC_INLINE: + * This symbol, if defined, indicates that the C compiler supports + * C99-style static inline. That is, the function can't be called + * from another translation unit. + */ +/* PERL_STATIC_INLINE: + * This symbol gives the best-guess incantation to use for static + * inline functions. If HAS_STATIC_INLINE is defined, this will + * give C99-style inline. If HAS_STATIC_INLINE is not defined, + * this will give a plain 'static'. It will always be defined + * to something that gives static linkage. + * Possibilities include + * static inline (c99) + * static __inline__ (gcc -ansi) + * static __inline (MSVC) + * static _inline (older MSVC) + * static (c89 compilers) + */ +#define HAS_STATIC_INLINE /**/ +#define PERL_STATIC_INLINE static __inline__ /**/ + +/* EBCDIC: + * This symbol, if defined, indicates that this system uses + * EBCDIC encoding. + */ +/*#define EBCDIC / **/ + +/* OSNAME: + * This symbol contains the name of the operating system, as determined + * by Configure. You shouldn't rely on it too much; the specific + * feature tests from Configure are generally more reliable. + */ +/* OSVERS: + * This symbol contains the version of the operating system, as determined + * by Configure. You shouldn't rely on it too much; the specific + * feature tests from Configure are generally more reliable. + */ +#define OSNAME "MSWin32" /**/ +#define OSVERS "5.1" /**/ + +/* CAT2: + * This macro concatenates 2 tokens together. + */ +/* STRINGIFY: + * This macro surrounds its token with double quotes. + */ +#if 42 == 1 +#define CAT2(a,b) a/**/b +#define STRINGIFY(a) "a" +#endif +#if 42 == 42 +#define PeRl_CaTiFy(a, b) a ## b +#define PeRl_StGiFy(a) #a +#define CAT2(a,b) PeRl_CaTiFy(a,b) +#define StGiFy(a) PeRl_StGiFy(a) +#define STRINGIFY(a) PeRl_StGiFy(a) +#endif +#if 42 != 1 && 42 != 42 +#include "Bletch: How does this C preprocessor concatenate tokens?" +#endif + +/* CPPSTDIN: + * This symbol contains the first part of the string which will invoke + * the C preprocessor on the standard input and produce to standard + * output. Typical value of "cc -E" or "/lib/cpp", but it can also + * call a wrapper. See CPPRUN. + */ +/* CPPMINUS: + * This symbol contains the second part of the string which will invoke + * the C preprocessor on the standard input and produce to standard + * output. This symbol will have the value "-" if CPPSTDIN needs a minus + * to specify standard input, otherwise the value is "". + */ +/* CPPRUN: + * This symbol contains the string which will invoke a C preprocessor on + * the standard input and produce to standard output. It needs to end + * with CPPLAST, after all other preprocessor flags have been specified. + * The main difference with CPPSTDIN is that this program will never be a + * pointer to a shell wrapper, i.e. it will be empty if no preprocessor is + * available directly to the user. Note that it may well be different from + * the preprocessor used to compile the C program. + */ +/* CPPLAST: + * This symbol is intended to be used along with CPPRUN in the same manner + * symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "". + */ +#define CPPSTDIN "gcc -E" +#define CPPMINUS "-" +#define CPPRUN "gcc -E" +#define CPPLAST "" + +/* HAS_ACCESS: + * This manifest constant lets the C program know that the access() + * system call is available to check for accessibility using real UID/GID. + * (always present on UNIX.) + */ +#define HAS_ACCESS /**/ + +/* HASATTRIBUTE_FORMAT: + * Can we handle GCC attribute for checking printf-style formats + */ +/* PRINTF_FORMAT_NULL_OK: + * Allows __printf__ format to be null when checking printf-style + */ +/* HASATTRIBUTE_MALLOC: + * Can we handle GCC attribute for malloc-style functions. + */ +/* HASATTRIBUTE_NONNULL: + * Can we handle GCC attribute for nonnull function parms. + */ +/* HASATTRIBUTE_NORETURN: + * Can we handle GCC attribute for functions that do not return + */ +/* HASATTRIBUTE_PURE: + * Can we handle GCC attribute for pure functions + */ +/* HASATTRIBUTE_UNUSED: + * Can we handle GCC attribute for unused variables and arguments + */ +/* HASATTRIBUTE_DEPRECATED: + * Can we handle GCC attribute for marking deprecated APIs + */ +/* HASATTRIBUTE_WARN_UNUSED_RESULT: + * Can we handle GCC attribute for warning on unused results + */ +/*#define HASATTRIBUTE_DEPRECATED / **/ +/*#define HASATTRIBUTE_FORMAT / **/ +/*#define PRINTF_FORMAT_NULL_OK / **/ +/*#define HASATTRIBUTE_NORETURN / **/ +/*#define HASATTRIBUTE_MALLOC / **/ +/*#define HASATTRIBUTE_NONNULL / **/ +/*#define HASATTRIBUTE_PURE / **/ +/*#define HASATTRIBUTE_UNUSED / **/ +/*#define HASATTRIBUTE_WARN_UNUSED_RESULT / **/ + +/* HASCONST: + * This symbol, if defined, indicates that this C compiler knows about + * the const type. There is no need to actually test for that symbol + * within your programs. The mere use of the "const" keyword will + * trigger the necessary tests. + */ +#define HASCONST /**/ +#ifndef HASCONST +#define const +#endif + +/* HAS_CSH: + * This symbol, if defined, indicates that the C-shell exists. + */ +/* CSH: + * This symbol, if defined, contains the full pathname of csh. + */ +/*#define HAS_CSH / **/ +#ifdef HAS_CSH +#define CSH "" /**/ +#endif + +/* SETUID_SCRIPTS_ARE_SECURE_NOW: + * This symbol, if defined, indicates that the bug that prevents + * setuid scripts from being secure is not present in this kernel. + */ +/* DOSUID: + * This symbol, if defined, indicates that the C program should + * check the script that it is executing for setuid/setgid bits, and + * attempt to emulate setuid/setgid on systems that have disabled + * setuid #! scripts because the kernel can't do it securely. + * It is up to the package designer to make sure that this emulation + * is done securely. Among other things, it should do an fstat on + * the script it just opened to make sure it really is a setuid/setgid + * script, it should make sure the arguments passed correspond exactly + * to the argument on the #! line, and it should not trust any + * subprocesses to which it must pass the filename rather than the + * file descriptor of the script to be executed. + */ +/*#define SETUID_SCRIPTS_ARE_SECURE_NOW / **/ +/*#define DOSUID / **/ + +/* HAS_ENDGRENT: + * This symbol, if defined, indicates that the getgrent routine is + * available for finalizing sequential access of the group database. + */ +/*#define HAS_ENDGRENT / **/ + +/* HAS_ENDHOSTENT: + * This symbol, if defined, indicates that the endhostent() routine is + * available to close whatever was being used for host queries. + */ +/*#define HAS_ENDHOSTENT / **/ + +/* HAS_ENDNETENT: + * This symbol, if defined, indicates that the endnetent() routine is + * available to close whatever was being used for network queries. + */ +/*#define HAS_ENDNETENT / **/ + +/* HAS_ENDPROTOENT: + * This symbol, if defined, indicates that the endprotoent() routine is + * available to close whatever was being used for protocol queries. + */ +/*#define HAS_ENDPROTOENT / **/ + +/* HAS_ENDPWENT: + * This symbol, if defined, indicates that the getgrent routine is + * available for finalizing sequential access of the passwd database. + */ +/*#define HAS_ENDPWENT / **/ + +/* HAS_ENDSERVENT: + * This symbol, if defined, indicates that the endservent() routine is + * available to close whatever was being used for service queries. + */ +/*#define HAS_ENDSERVENT / **/ + +/* FLEXFILENAMES: + * This symbol, if defined, indicates that the system supports filenames + * longer than 14 characters. + */ +#define FLEXFILENAMES /**/ + +/* HAS_GETGRENT: + * This symbol, if defined, indicates that the getgrent routine is + * available for sequential access of the group database. + */ +/*#define HAS_GETGRENT / **/ + +/* HAS_GETHOSTBYADDR: + * This symbol, if defined, indicates that the gethostbyaddr() routine is + * available to look up hosts by their IP addresses. + */ +#define HAS_GETHOSTBYADDR /**/ + +/* HAS_GETHOSTBYNAME: + * This symbol, if defined, indicates that the gethostbyname() routine is + * available to look up host names in some data base or other. + */ +#define HAS_GETHOSTBYNAME /**/ + +/* HAS_GETHOSTENT: + * This symbol, if defined, indicates that the gethostent() routine is + * available to look up host names in some data base or another. + */ +/*#define HAS_GETHOSTENT / **/ + +/* HAS_GETHOSTNAME: + * This symbol, if defined, indicates that the C program may use the + * gethostname() routine to derive the host name. See also HAS_UNAME + * and PHOSTNAME. + */ +/* HAS_UNAME: + * This symbol, if defined, indicates that the C program may use the + * uname() routine to derive the host name. See also HAS_GETHOSTNAME + * and PHOSTNAME. + */ +/* PHOSTNAME: + * This symbol, if defined, indicates the command to feed to the + * popen() routine to derive the host name. See also HAS_GETHOSTNAME + * and HAS_UNAME. Note that the command uses a fully qualified path, + * so that it is safe even if used by a process with super-user + * privileges. + */ +/* HAS_PHOSTNAME: + * This symbol, if defined, indicates that the C program may use the + * contents of PHOSTNAME as a command to feed to the popen() routine + * to derive the host name. + */ +#define HAS_GETHOSTNAME /**/ +#define HAS_UNAME /**/ +/*#define HAS_PHOSTNAME / **/ +#ifdef HAS_PHOSTNAME +#define PHOSTNAME "" /* How to get the host name */ +#endif + +/* HAS_GETNETBYADDR: + * This symbol, if defined, indicates that the getnetbyaddr() routine is + * available to look up networks by their IP addresses. + */ +/*#define HAS_GETNETBYADDR / **/ + +/* HAS_GETNETBYNAME: + * This symbol, if defined, indicates that the getnetbyname() routine is + * available to look up networks by their names. + */ +/*#define HAS_GETNETBYNAME / **/ + +/* HAS_GETNETENT: + * This symbol, if defined, indicates that the getnetent() routine is + * available to look up network names in some data base or another. + */ +/*#define HAS_GETNETENT / **/ + +/* HAS_GETPROTOENT: + * This symbol, if defined, indicates that the getprotoent() routine is + * available to look up protocols in some data base or another. + */ +/*#define HAS_GETPROTOENT / **/ + +/* HAS_GETPGRP: + * This symbol, if defined, indicates that the getpgrp routine is + * available to get the current process group. + */ +/* USE_BSD_GETPGRP: + * This symbol, if defined, indicates that getpgrp needs one + * arguments whereas USG one needs none. + */ +/*#define HAS_GETPGRP / **/ +/*#define USE_BSD_GETPGRP / **/ + +/* HAS_GETPROTOBYNAME: + * This symbol, if defined, indicates that the getprotobyname() + * routine is available to look up protocols by their name. + */ +/* HAS_GETPROTOBYNUMBER: + * This symbol, if defined, indicates that the getprotobynumber() + * routine is available to look up protocols by their number. + */ +#define HAS_GETPROTOBYNAME /**/ +#define HAS_GETPROTOBYNUMBER /**/ + +/* HAS_GETPWENT: + * This symbol, if defined, indicates that the getpwent routine is + * available for sequential access of the passwd database. + * If this is not available, the older getpw() function may be available. + */ +/*#define HAS_GETPWENT / **/ + +/* HAS_GETSERVENT: + * This symbol, if defined, indicates that the getservent() routine is + * available to look up network services in some data base or another. + */ +/*#define HAS_GETSERVENT / **/ + +/* HAS_GETSERVBYNAME: + * This symbol, if defined, indicates that the getservbyname() + * routine is available to look up services by their name. + */ +/* HAS_GETSERVBYPORT: + * This symbol, if defined, indicates that the getservbyport() + * routine is available to look up services by their port. + */ +#define HAS_GETSERVBYNAME /**/ +#define HAS_GETSERVBYPORT /**/ + +/* HAS_HTONL: + * This symbol, if defined, indicates that the htonl() routine (and + * friends htons() ntohl() ntohs()) are available to do network + * order byte swapping. + */ +/* HAS_HTONS: + * This symbol, if defined, indicates that the htons() routine (and + * friends htonl() ntohl() ntohs()) are available to do network + * order byte swapping. + */ +/* HAS_NTOHL: + * This symbol, if defined, indicates that the ntohl() routine (and + * friends htonl() htons() ntohs()) are available to do network + * order byte swapping. + */ +/* HAS_NTOHS: + * This symbol, if defined, indicates that the ntohs() routine (and + * friends htonl() htons() ntohl()) are available to do network + * order byte swapping. + */ +#define HAS_HTONL /**/ +#define HAS_HTONS /**/ +#define HAS_NTOHL /**/ +#define HAS_NTOHS /**/ + +/* HAS_LONG_DOUBLE: + * This symbol will be defined if the C compiler supports long + * doubles. + */ +/* LONG_DOUBLESIZE: + * This symbol contains the size of a long double, so that the + * C preprocessor can make decisions based on it. It is only + * defined if the system supports long doubles. + */ +#define HAS_LONG_DOUBLE /**/ +#ifdef HAS_LONG_DOUBLE +#define LONG_DOUBLESIZE 12 /**/ +#endif + +/* HAS_LONG_LONG: + * This symbol will be defined if the C compiler supports long long. + */ +/* LONGLONGSIZE: + * This symbol contains the size of a long long, so that the + * C preprocessor can make decisions based on it. It is only + * defined if the system supports long long. + */ +/*#define HAS_LONG_LONG / **/ +#ifdef HAS_LONG_LONG +#define LONGLONGSIZE 8 /**/ +#endif + +/* HAS_MEMCHR: + * This symbol, if defined, indicates that the memchr routine is available + * to locate characters within a C string. + */ +#define HAS_MEMCHR /**/ + +/* HAS_MKSTEMP: + * This symbol, if defined, indicates that the mkstemp routine is + * available to exclusively create and open a uniquely named + * temporary file. + */ +/*#define HAS_MKSTEMP / **/ + +/* HAS_MMAP: + * This symbol, if defined, indicates that the mmap system call is + * available to map a file into memory. + */ +/* Mmap_t: + * This symbol holds the return type of the mmap() system call + * (and simultaneously the type of the first argument). + * Usually set to 'void *' or 'caddr_t'. + */ +/*#define HAS_MMAP / **/ +#define Mmap_t void * /**/ + +/* HAS_MSG: + * This symbol, if defined, indicates that the entire msg*(2) library is + * supported (IPC mechanism based on message queues). + */ +/*#define HAS_MSG / **/ + +/* HAS_SEM: + * This symbol, if defined, indicates that the entire sem*(2) library is + * supported. + */ +/*#define HAS_SEM / **/ + +/* HAS_SETGRENT: + * This symbol, if defined, indicates that the setgrent routine is + * available for initializing sequential access of the group database. + */ +/*#define HAS_SETGRENT / **/ + +/* HAS_SETHOSTENT: + * This symbol, if defined, indicates that the sethostent() routine is + * available. + */ +/*#define HAS_SETHOSTENT / **/ + +/* HAS_SETNETENT: + * This symbol, if defined, indicates that the setnetent() routine is + * available. + */ +/*#define HAS_SETNETENT / **/ + +/* HAS_SETPROTOENT: + * This symbol, if defined, indicates that the setprotoent() routine is + * available. + */ +/*#define HAS_SETPROTOENT / **/ + +/* HAS_SETPGRP: + * This symbol, if defined, indicates that the setpgrp routine is + * available to set the current process group. + */ +/* USE_BSD_SETPGRP: + * This symbol, if defined, indicates that setpgrp needs two + * arguments whereas USG one needs none. See also HAS_SETPGID + * for a POSIX interface. + */ +/*#define HAS_SETPGRP / **/ +/*#define USE_BSD_SETPGRP / **/ + +/* HAS_SETPWENT: + * This symbol, if defined, indicates that the setpwent routine is + * available for initializing sequential access of the passwd database. + */ +/*#define HAS_SETPWENT / **/ + +/* HAS_SETSERVENT: + * This symbol, if defined, indicates that the setservent() routine is + * available. + */ +/*#define HAS_SETSERVENT / **/ + /* HAS_SETVBUF: * This symbol, if defined, indicates that the setvbuf routine is * available to change buffering on an open stdio stream. @@ -2128,40 +2752,25 @@ * Checking just with #ifdef might not be enough because this symbol * has been known to be an enum. */ +/* HAS_SOCKADDR_SA_LEN: + * This symbol, if defined, indicates that the struct sockaddr + * structure has a member called sa_len, indicating the length of + * the structure. + */ +/* HAS_SIN6_SCOPE_ID: + * This symbol, if defined, indicates that the struct sockaddr_in6 + * structure has a member called sin6_scope_id. + */ #define HAS_SOCKET /**/ /*#define HAS_SOCKETPAIR / **/ +/*#define HAS_SOCKADDR_SA_LEN / **/ /*#define HAS_MSG_CTRUNC / **/ /*#define HAS_MSG_DONTROUTE / **/ /*#define HAS_MSG_OOB / **/ /*#define HAS_MSG_PEEK / **/ /*#define HAS_MSG_PROXY / **/ /*#define HAS_SCM_RIGHTS / **/ - -/* HAS_SRAND48_R: - * This symbol, if defined, indicates that the srand48_r routine - * is available to srand48 re-entrantly. - */ -/* SRAND48_R_PROTO: - * This symbol encodes the prototype of srand48_r. - * It is zero if d_srand48_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_srand48_r - * is defined. - */ -/*#define HAS_SRAND48_R / **/ -#define SRAND48_R_PROTO 0 /**/ - -/* HAS_SRANDOM_R: - * This symbol, if defined, indicates that the srandom_r routine - * is available to srandom re-entrantly. - */ -/* SRANDOM_R_PROTO: - * This symbol encodes the prototype of srandom_r. - * It is zero if d_srandom_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_srandom_r - * is defined. - */ -/*#define HAS_SRANDOM_R / **/ -#define SRANDOM_R_PROTO 0 /**/ +#define HAS_SIN6_SCOPE_ID /**/ /* USE_STAT_BLOCKS: * This symbol is defined if this system has a stat structure declaring @@ -2197,69 +2806,12 @@ #define HAS_SYS_ERRLIST /**/ #define Strerror(e) strerror(e) -/* HAS_STRERROR_R: - * This symbol, if defined, indicates that the strerror_r routine - * is available to strerror re-entrantly. - */ -/* STRERROR_R_PROTO: - * This symbol encodes the prototype of strerror_r. - * It is zero if d_strerror_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_strerror_r - * is defined. - */ -/*#define HAS_STRERROR_R / **/ -#define STRERROR_R_PROTO 0 /**/ - /* HAS_STRTOUL: * This symbol, if defined, indicates that the strtoul routine is * available to provide conversion of strings to unsigned long. */ #define HAS_STRTOUL /**/ -/* HAS_TIME: - * This symbol, if defined, indicates that the time() routine exists. - */ -/* Time_t: - * This symbol holds the type returned by time(). It can be long, - * or time_t on BSD sites (in which case <sys/types.h> should be - * included). - */ -#define HAS_TIME /**/ -#define Time_t time_t /* Time type */ - -/* HAS_TIMES: - * This symbol, if defined, indicates that the times() routine exists. - * Note that this became obsolete on some systems (SUNOS), which now - * use getrusage(). It may be necessary to include <sys/times.h>. - */ -#define HAS_TIMES /**/ - -/* HAS_TMPNAM_R: - * This symbol, if defined, indicates that the tmpnam_r routine - * is available to tmpnam re-entrantly. - */ -/* TMPNAM_R_PROTO: - * This symbol encodes the prototype of tmpnam_r. - * It is zero if d_tmpnam_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_tmpnam_r - * is defined. - */ -/*#define HAS_TMPNAM_R / **/ -#define TMPNAM_R_PROTO 0 /**/ - -/* HAS_TTYNAME_R: - * This symbol, if defined, indicates that the ttyname_r routine - * is available to ttyname re-entrantly. - */ -/* TTYNAME_R_PROTO: - * This symbol encodes the prototype of ttyname_r. - * It is zero if d_ttyname_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_ttyname_r - * is defined. - */ -/*#define HAS_TTYNAME_R / **/ -#define TTYNAME_R_PROTO 0 /**/ - /* HAS_UNION_SEMUN: * This symbol, if defined, indicates that the union semun is * defined by including <sys/sem.h>. If not, the user code @@ -2310,38 +2862,6 @@ #define volatile #endif -/* Fpos_t: - * This symbol holds the type used to declare file positions in libc. - * It can be fpos_t, long, uint, etc... It may be necessary to include - * <sys/types.h> to get any typedef'ed information. - */ -#define Fpos_t fpos_t /* File position type */ - -/* Gid_t_f: - * This symbol defines the format string used for printing a Gid_t. - */ -#define Gid_t_f "ld" /**/ - -/* Gid_t_sign: - * This symbol holds the signedess of a Gid_t. - * 1 for unsigned, -1 for signed. - */ -#define Gid_t_sign -1 /* GID sign */ - -/* Gid_t_size: - * This symbol holds the size of a Gid_t in bytes. - */ -#define Gid_t_size 4 /* GID size */ - -/* Gid_t: - * This symbol holds the return type of getgid() and the type of - * argument to setrgid() and related functions. Typically, - * it is the type of group ids in the kernel. It can be int, ushort, - * gid_t, etc... It may be necessary to include <sys/types.h> to get - * any typedef'ed information. - */ -#define Gid_t gid_t /* Type for getgid(), etc... */ - /* I_DIRENT: * This symbol, if defined, indicates to the C program that it should * include <dirent.h>. Using this symbol also triggers the definition @@ -2373,12 +2893,6 @@ /*#define I_GRP / **/ /*#define GRPASSWD / **/ -/* I_MACH_CTHREADS: - * This symbol, if defined, indicates to the C program that it should - * include <mach/cthreads.h>. - */ -/*#define I_MACH_CTHREADS / **/ - /* I_NDBM: * This symbol, if defined, indicates that <ndbm.h> exists and should * be included. @@ -2430,12 +2944,6 @@ */ /*#define I_NET_ERRNO / **/ -/* I_PTHREAD: - * This symbol, if defined, indicates to the C program that it should - * include <pthread.h>. - */ -/*#define I_PTHREAD / **/ - /* I_PWD: * This symbol, if defined, indicates to the C program that it should * include <pwd.h>. @@ -2482,18 +2990,6 @@ /*#define PWGECOS / **/ /*#define PWPASSWD / **/ -/* I_SYS_ACCESS: - * This symbol, if defined, indicates to the C program that it should - * include <sys/access.h>. - */ -/*#define I_SYS_ACCESS / **/ - -/* I_SYS_SECURITY: - * This symbol, if defined, indicates to the C program that it should - * include <sys/security.h>. - */ -/*#define I_SYS_SECURITY / **/ - /* I_SYSUIO: * This symbol, if defined, indicates that <sys/uio.h> exists and * should be included. @@ -2511,36 +3007,6 @@ #define I_STDARG /**/ /*#define I_VARARGS / **/ -/* PERL_INC_VERSION_LIST: - * This variable specifies the list of subdirectories in over - * which perl.c:incpush() and lib/lib.pm will automatically - * search when adding directories to @INC, in a format suitable - * for a C initialization string. See the inc_version_list entry - * in Porting/Glossary for more details. - */ -/*#define PERL_INC_VERSION_LIST 0 / **/ - -/* INSTALL_USR_BIN_PERL: - * This symbol, if defined, indicates that Perl is to be installed - * also as /usr/bin/perl. - */ -/*#define INSTALL_USR_BIN_PERL / **/ - -/* Off_t: - * This symbol holds the type used to declare offsets in the kernel. - * It can be int, long, off_t, etc... It may be necessary to include - * <sys/types.h> to get any typedef'ed information. - */ -/* LSEEKSIZE: - * This symbol holds the number of bytes used by the Off_t. - */ -/* Off_t_size: - * This symbol holds the number of bytes used by the Off_t. - */ -#define Off_t long long /* <offset> type */ -#define LSEEKSIZE 8 /* <offset> size */ -#define Off_t_size 8 /* <offset> size */ - /* Free_t: * This variable contains the return type of free(). It is usually * void, but occasionally int. @@ -2561,65 +3027,6 @@ */ /*#define MYMALLOC / **/ -/* Mode_t: - * This symbol holds the type used to declare file modes - * for systems calls. It is usually mode_t, but may be - * int or unsigned short. It may be necessary to include <sys/types.h> - * to get any typedef'ed information. - */ -#define Mode_t mode_t /* file mode parameter for system calls */ - -/* Netdb_host_t: - * This symbol holds the type used for the 1st argument - * to gethostbyaddr(). - */ -/* Netdb_hlen_t: - * This symbol holds the type used for the 2nd argument - * to gethostbyaddr(). - */ -/* Netdb_name_t: - * This symbol holds the type used for the argument to - * gethostbyname(). - */ -/* Netdb_net_t: - * This symbol holds the type used for the 1st argument to - * getnetbyaddr(). - */ -#define Netdb_host_t char * /**/ -#define Netdb_hlen_t int /**/ -#define Netdb_name_t char * /**/ -#define Netdb_net_t long /**/ - -/* PERL_OTHERLIBDIRS: - * This variable contains a colon-separated set of paths for the perl - * binary to search for additional library files or modules. - * These directories will be tacked to the end of @INC. - * Perl will automatically search below each path for version- - * and architecture-specific directories. See PERL_INC_VERSION_LIST - * for more details. - */ -/*#define PERL_OTHERLIBDIRS "" / **/ - -/* Pid_t: - * This symbol holds the type used to declare process ids in the kernel. - * It can be int, uint, pid_t, etc... It may be necessary to include - * <sys/types.h> to get any typedef'ed information. - */ -#define Pid_t int /* PID type */ - -/* PRIVLIB: - * This symbol contains the name of the private library for this package. - * The library is private in the sense that it needn't be in anyone's - * execution path, but it should be accessible by the world. The program - * should be prepared to do ~ expansion. - */ -/* PRIVLIB_EXP: - * This symbol contains the ~name expanded version of PRIVLIB, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -#define PRIVLIB "c:\\perl\\lib" /**/ -#define PRIVLIB_EXP (win32_get_privlib(PERL_VERSION_STRING, NULL)) /**/ - /* CAN_PROTOTYPE: * If defined, this macro indicates that the C compiler can handle * function prototypes. @@ -2638,14 +3045,6 @@ #define _(args) () #endif -/* Select_fd_set_t: - * This symbol holds the type used for the 2nd, 3rd, and 4th - * arguments to select. Usually, this is 'fd_set *', if HAS_FD_SET - * is defined, and 'int *' otherwise. This is only useful if you - * have select(), of course. - */ -#define Select_fd_set_t Perl_fd_set * /**/ - /* SH_PATH: * This symbol contains the full pathname to the shell used on this * on this system to execute Bourne shell scripts. Usually, this will be @@ -2695,152 +3094,12 @@ #define SIG_NUM 0, 1, 2, 21, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 20, 0 /**/ #define SIG_SIZE 27 /**/ -/* SITEARCH: - * This symbol contains the name of the private library for this package. - * The library is private in the sense that it needn't be in anyone's - * execution path, but it should be accessible by the world. The program - * should be prepared to do ~ expansion. - * The standard distribution will put nothing in this directory. - * After perl has been installed, users may install their own local - * architecture-dependent modules in this directory with - * MakeMaker Makefile.PL - * or equivalent. See INSTALL for details. - */ -/* SITEARCH_EXP: - * This symbol contains the ~name expanded version of SITEARCH, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -#define SITEARCH "c:\\perl\\site\\lib" /**/ -/*#define SITEARCH_EXP "" / **/ - -/* SITELIB: - * This symbol contains the name of the private library for this package. - * The library is private in the sense that it needn't be in anyone's - * execution path, but it should be accessible by the world. The program - * should be prepared to do ~ expansion. - * The standard distribution will put nothing in this directory. - * After perl has been installed, users may install their own local - * architecture-independent modules in this directory with - * MakeMaker Makefile.PL - * or equivalent. See INSTALL for details. - */ -/* SITELIB_EXP: - * This symbol contains the ~name expanded version of SITELIB, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -/* SITELIB_STEM: - * This define is SITELIB_EXP with any trailing version-specific component - * removed. The elements in inc_version_list (inc_version_list.U) can - * be tacked onto this variable to generate a list of directories to search. - */ -#define SITELIB "c:\\perl\\site\\lib" /**/ -#define SITELIB_EXP (win32_get_sitelib(PERL_VERSION_STRING, NULL)) /**/ -#define SITELIB_STEM "" /**/ - -/* Size_t_size: - * This symbol holds the size of a Size_t in bytes. - */ -#define Size_t_size 4 /**/ - -/* Size_t: - * This symbol holds the type used to declare length parameters - * for string functions. It is usually size_t, but may be - * unsigned long, int, etc. It may be necessary to include - * <sys/types.h> to get any typedef'ed information. - */ -#define Size_t size_t /* length paramater for string functions */ - -/* Sock_size_t: - * This symbol holds the type used for the size argument of - * various socket calls (just the base type, not the pointer-to). - */ -#define Sock_size_t int /**/ - /* STDCHAR: * This symbol is defined to be the type of char used in stdio.h. * It has the values "unsigned char" or "char". */ #define STDCHAR char /**/ -/* Uid_t_f: - * This symbol defines the format string used for printing a Uid_t. - */ -#define Uid_t_f "ld" /**/ - -/* Uid_t_sign: - * This symbol holds the signedess of a Uid_t. - * 1 for unsigned, -1 for signed. - */ -#define Uid_t_sign -1 /* UID sign */ - -/* Uid_t_size: - * This symbol holds the size of a Uid_t in bytes. - */ -#define Uid_t_size 4 /* UID size */ - -/* Uid_t: - * This symbol holds the type used to declare user ids in the kernel. - * It can be int, ushort, uid_t, etc... It may be necessary to include - * <sys/types.h> to get any typedef'ed information. - */ -#define Uid_t uid_t /* UID type */ - -/* USE_ITHREADS: - * This symbol, if defined, indicates that Perl should be built to - * use the interpreter-based threading implementation. - */ -/* USE_5005THREADS: - * This symbol, if defined, indicates that Perl should be built to - * use the 5.005-based threading implementation. - * Only valid up to 5.8.x. - */ -/* OLD_PTHREADS_API: - * This symbol, if defined, indicates that Perl should - * be built to use the old draft POSIX threads API. - */ -/* USE_REENTRANT_API: - * This symbol, if defined, indicates that Perl should - * try to use the various _r versions of library functions. - * This is extremely experimental. - */ -/*#define USE_5005THREADS / **/ -#define USE_ITHREADS /**/ -#if defined(USE_5005THREADS) && !defined(USE_ITHREADS) -#define USE_THREADS /* until src is revised*/ -#endif -/*#define OLD_PTHREADS_API / **/ -/*#define USE_REENTRANT_API / **/ - -/* PERL_VENDORARCH: - * If defined, this symbol contains the name of a private library. - * The library is private in the sense that it needn't be in anyone's - * execution path, but it should be accessible by the world. - * It may have a ~ on the front. - * The standard distribution will put nothing in this directory. - * Vendors who distribute perl may wish to place their own - * architecture-dependent modules and extensions in this directory with - * MakeMaker Makefile.PL INSTALLDIRS=vendor - * or equivalent. See INSTALL for details. - */ -/* PERL_VENDORARCH_EXP: - * This symbol contains the ~name expanded version of PERL_VENDORARCH, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -/*#define PERL_VENDORARCH "" / **/ -/*#define PERL_VENDORARCH_EXP "" / **/ - -/* PERL_VENDORLIB_EXP: - * This symbol contains the ~name expanded version of VENDORLIB, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -/* PERL_VENDORLIB_STEM: - * This define is PERL_VENDORLIB_EXP with any trailing version-specific component - * removed. The elements in inc_version_list (inc_version_list.U) can - * be tacked onto this variable to generate a list of directories to search. - */ -/*#define PERL_VENDORLIB_EXP "" / **/ -/*#define PERL_VENDORLIB_STEM "" / **/ - /* VOIDFLAGS: * This symbol indicates how much support of the void type is given by this * compiler. What various bits mean: @@ -2849,7 +3108,7 @@ * 2 = supports arrays of pointers to functions returning void * 4 = supports comparisons between pointers to void functions and * addresses of void functions - * 8 = suports declaration of generic void pointers + * 8 = supports declaration of generic void pointers * * The package designer should define VOIDUSED to indicate the requirements * of the package. This can be done either by #defining VOIDUSED before @@ -2866,436 +3125,6 @@ #define M_VOID /* Xenix strikes again */ #endif -/* USE_CROSS_COMPILE: - * This symbol, if defined, indicates that Perl is being cross-compiled. - */ -/* PERL_TARGETARCH: - * This symbol, if defined, indicates the target architecture - * Perl has been cross-compiled to. Undefined if not a cross-compile. - */ -#ifndef USE_CROSS_COMPILE -/*#define USE_CROSS_COMPILE / **/ -#define PERL_TARGETARCH "" /**/ -#endif - -/* MEM_ALIGNBYTES: - * This symbol contains the number of bytes required to align a - * double, or a long double when applicable. Usual values are 2, - * 4 and 8. The default is eight, for safety. - */ -#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH) -# define MEM_ALIGNBYTES 8 -#else -#define MEM_ALIGNBYTES 8 -#endif - -/* BYTEORDER: - * This symbol holds the hexadecimal constant defined in byteorder, - * in a UV, i.e. 0x1234 or 0x4321 or 0x12345678, etc... - * If the compiler supports cross-compiling or multiple-architecture - * binaries (eg. on NeXT systems), use compiler-defined macros to - * determine the byte order. - * On NeXT 3.2 (and greater), you can build "Fat" Multiple Architecture - * Binaries (MAB) on either big endian or little endian machines. - * The endian-ness is available at compile-time. This only matters - * for perl, where the config.h can be generated and installed on - * one system, and used by a different architecture to build an - * extension. Older versions of NeXT that might not have - * defined either *_ENDIAN__ were all on Motorola 680x0 series, - * so the default case (for NeXT) is big endian to catch them. - * This might matter for NeXT 3.0. - */ -#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH) -# ifdef __LITTLE_ENDIAN__ -# if LONGSIZE == 4 -# define BYTEORDER 0x1234 -# else -# if LONGSIZE == 8 -# define BYTEORDER 0x12345678 -# endif -# endif -# else -# ifdef __BIG_ENDIAN__ -# if LONGSIZE == 4 -# define BYTEORDER 0x4321 -# else -# if LONGSIZE == 8 -# define BYTEORDER 0x87654321 -# endif -# endif -# endif -# endif -# if !defined(BYTEORDER) && (defined(NeXT) || defined(__NeXT__)) -# define BYTEORDER 0x4321 -# endif -#else -#define BYTEORDER 0x1234 /* large digits for MSB */ -#endif /* NeXT */ - -/* CHARBITS: - * This symbol contains the size of a char, so that the C preprocessor - * can make decisions based on it. - */ -#define CHARBITS 8 /**/ - -/* CASTI32: - * This symbol is defined if the C compiler can cast negative - * or large floating point numbers to 32-bit ints. - */ -#define CASTI32 /**/ - -/* CASTNEGFLOAT: - * This symbol is defined if the C compiler can cast negative - * numbers to unsigned longs, ints and shorts. - */ -/* CASTFLAGS: - * This symbol contains flags that say what difficulties the compiler - * has casting odd floating values to unsigned long: - * 0 = ok - * 1 = couldn't cast < 0 - * 2 = couldn't cast >= 0x80000000 - * 4 = couldn't cast in argument expression list - */ -#define CASTNEGFLOAT /**/ -#define CASTFLAGS 0 /**/ - -/* VOID_CLOSEDIR: - * This symbol, if defined, indicates that the closedir() routine - * does not return a value. - */ -/*#define VOID_CLOSEDIR / **/ - -/* HAS_FD_SET: - * This symbol, when defined, indicates presence of the fd_set typedef - * in <sys/types.h> - */ -#define HAS_FD_SET /**/ - -/* Gconvert: - * This preprocessor macro is defined to convert a floating point - * number to a string without a trailing decimal point. This - * emulates the behavior of sprintf("%g"), but is sometimes much more - * efficient. If gconvert() is not available, but gcvt() drops the - * trailing decimal point, then gcvt() is used. If all else fails, - * a macro using sprintf("%g") is used. Arguments for the Gconvert - * macro are: value, number of digits, whether trailing zeros should - * be retained, and the output buffer. - * The usual values are: - * d_Gconvert='gconvert((x),(n),(t),(b))' - * d_Gconvert='gcvt((x),(n),(b))' - * d_Gconvert='sprintf((b),"%.*g",(n),(x))' - * The last two assume trailing zeros should not be kept. - */ -#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x)) - -/* HAS_GETPAGESIZE: - * This symbol, if defined, indicates that the getpagesize system call - * is available to get system page size, which is the granularity of - * many memory management calls. - */ -/*#define HAS_GETPAGESIZE / **/ - -/* HAS_GNULIBC: - * This symbol, if defined, indicates to the C program that - * the GNU C library is being used. A better check is to use - * the __GLIBC__ and __GLIBC_MINOR__ symbols supplied with glibc. - */ -/*#define HAS_GNULIBC / **/ -#if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE) -# define _GNU_SOURCE -#endif - -/* HAS_ISASCII: - * This manifest constant lets the C program know that isascii - * is available. - */ -#define HAS_ISASCII /**/ - -/* HAS_LCHOWN: - * This symbol, if defined, indicates that the lchown routine is - * available to operate on a symbolic link (instead of following the - * link). - */ -/*#define HAS_LCHOWN / **/ - -/* HAS_OPEN3: - * This manifest constant lets the C program know that the three - * argument form of open(2) is available. - */ -/*#define HAS_OPEN3 / **/ - -/* HAS_SAFE_BCOPY: - * This symbol, if defined, indicates that the bcopy routine is available - * to copy potentially overlapping memory blocks. Normally, you should - * probably use memmove() or memcpy(). If neither is defined, roll your - * own version. - */ -/*#define HAS_SAFE_BCOPY / **/ - -/* HAS_SAFE_MEMCPY: - * This symbol, if defined, indicates that the memcpy routine is available - * to copy potentially overlapping memory blocks. If you need to - * copy overlapping memory blocks, you should check HAS_MEMMOVE and - * use memmove() instead, if available. - */ -/*#define HAS_SAFE_MEMCPY / **/ - -/* HAS_SANE_MEMCMP: - * This symbol, if defined, indicates that the memcmp routine is available - * and can be used to compare relative magnitudes of chars with their high - * bits set. If it is not defined, roll your own version. - */ -#define HAS_SANE_MEMCMP /**/ - -/* HAS_SIGACTION: - * This symbol, if defined, indicates that Vr4's sigaction() routine - * is available. - */ -/*#define HAS_SIGACTION / **/ - -/* HAS_SIGSETJMP: - * This variable indicates to the C program that the sigsetjmp() - * routine is available to save the calling process's registers - * and stack environment for later use by siglongjmp(), and - * to optionally save the process's signal mask. See - * Sigjmp_buf, Sigsetjmp, and Siglongjmp. - */ -/* Sigjmp_buf: - * This is the buffer type to be used with Sigsetjmp and Siglongjmp. - */ -/* Sigsetjmp: - * This macro is used in the same way as sigsetjmp(), but will invoke - * traditional setjmp() if sigsetjmp isn't available. - * See HAS_SIGSETJMP. - */ -/* Siglongjmp: - * This macro is used in the same way as siglongjmp(), but will invoke - * traditional longjmp() if siglongjmp isn't available. - * See HAS_SIGSETJMP. - */ -/*#define HAS_SIGSETJMP / **/ -#ifdef HAS_SIGSETJMP -#define Sigjmp_buf sigjmp_buf -#define Sigsetjmp(buf,save_mask) sigsetjmp((buf),(save_mask)) -#define Siglongjmp(buf,retval) siglongjmp((buf),(retval)) -#else -#define Sigjmp_buf jmp_buf -#define Sigsetjmp(buf,save_mask) setjmp((buf)) -#define Siglongjmp(buf,retval) longjmp((buf),(retval)) -#endif - -/* USE_STDIO_PTR: - * This symbol is defined if the _ptr and _cnt fields (or similar) - * of the stdio FILE structure can be used to access the stdio buffer - * for a file handle. If this is defined, then the FILE_ptr(fp) - * and FILE_cnt(fp) macros will also be defined and should be used - * to access these fields. - */ -/* FILE_ptr: - * This macro is used to access the _ptr field (or equivalent) of the - * FILE structure pointed to by its argument. This macro will always be - * defined if USE_STDIO_PTR is defined. - */ -/* STDIO_PTR_LVALUE: - * This symbol is defined if the FILE_ptr macro can be used as an - * lvalue. - */ -/* FILE_cnt: - * This macro is used to access the _cnt field (or equivalent) of the - * FILE structure pointed to by its argument. This macro will always be - * defined if USE_STDIO_PTR is defined. - */ -/* STDIO_CNT_LVALUE: - * This symbol is defined if the FILE_cnt macro can be used as an - * lvalue. - */ -/* STDIO_PTR_LVAL_SETS_CNT: - * This symbol is defined if using the FILE_ptr macro as an lvalue - * to increase the pointer by n has the side effect of decreasing the - * value of File_cnt(fp) by n. - */ -/* STDIO_PTR_LVAL_NOCHANGE_CNT: - * This symbol is defined if using the FILE_ptr macro as an lvalue - * to increase the pointer by n leaves File_cnt(fp) unchanged. - */ -#define USE_STDIO_PTR /**/ -#ifdef USE_STDIO_PTR -#define FILE_ptr(fp) ((fp)->_ptr) -#define STDIO_PTR_LVALUE /**/ -#define FILE_cnt(fp) ((fp)->_cnt) -#define STDIO_CNT_LVALUE /**/ -/*#define STDIO_PTR_LVAL_SETS_CNT / **/ -#define STDIO_PTR_LVAL_NOCHANGE_CNT /**/ -#endif - -/* USE_STDIO_BASE: - * This symbol is defined if the _base field (or similar) of the - * stdio FILE structure can be used to access the stdio buffer for - * a file handle. If this is defined, then the FILE_base(fp) macro - * will also be defined and should be used to access this field. - * Also, the FILE_bufsiz(fp) macro will be defined and should be used - * to determine the number of bytes in the buffer. USE_STDIO_BASE - * will never be defined unless USE_STDIO_PTR is. - */ -/* FILE_base: - * This macro is used to access the _base field (or equivalent) of the - * FILE structure pointed to by its argument. This macro will always be - * defined if USE_STDIO_BASE is defined. - */ -/* FILE_bufsiz: - * This macro is used to determine the number of bytes in the I/O - * buffer pointed to by _base field (or equivalent) of the FILE - * structure pointed to its argument. This macro will always be defined - * if USE_STDIO_BASE is defined. - */ -#define USE_STDIO_BASE /**/ -#ifdef USE_STDIO_BASE -#define FILE_base(fp) ((fp)->_base) -#define FILE_bufsiz(fp) ((fp)->_cnt + (fp)->_ptr - (fp)->_base) -#endif - -/* HAS_VPRINTF: - * This symbol, if defined, indicates that the vprintf routine is available - * to printf with a pointer to an argument list. If unavailable, you - * may need to write your own, probably in terms of _doprnt(). - */ -/* USE_CHAR_VSPRINTF: - * This symbol is defined if this system has vsprintf() returning type - * (char*). The trend seems to be to declare it as "int vsprintf()". It - * is up to the package author to declare vsprintf correctly based on the - * symbol. - */ -#define HAS_VPRINTF /**/ -/*#define USE_CHAR_VSPRINTF / **/ - -/* DOUBLESIZE: - * This symbol contains the size of a double, so that the C preprocessor - * can make decisions based on it. - */ -#define DOUBLESIZE 8 /**/ - -/* I_TIME: - * This symbol, if defined, indicates to the C program that it should - * include <time.h>. - */ -/* I_SYS_TIME: - * This symbol, if defined, indicates to the C program that it should - * include <sys/time.h>. - */ -/* I_SYS_TIME_KERNEL: - * This symbol, if defined, indicates to the C program that it should - * include <sys/time.h> with KERNEL defined. - */ -/* HAS_TM_TM_ZONE: - * This symbol, if defined, indicates to the C program that - * the struct tm has a tm_zone field. - */ -/* HAS_TM_TM_GMTOFF: - * This symbol, if defined, indicates to the C program that - * the struct tm has a tm_gmtoff field. - */ -#define I_TIME /**/ -/*#define I_SYS_TIME / **/ -/*#define I_SYS_TIME_KERNEL / **/ -/*#define HAS_TM_TM_ZONE / **/ -/*#define HAS_TM_TM_GMTOFF / **/ - -/* VAL_O_NONBLOCK: - * This symbol is to be used during open() or fcntl(F_SETFL) to turn on - * non-blocking I/O for the file descriptor. Note that there is no way - * back, i.e. you cannot turn it blocking again this way. If you wish to - * alternatively switch between blocking and non-blocking, use the - * ioctl(FIOSNBIO) call instead, but that is not supported by all devices. - */ -/* VAL_EAGAIN: - * This symbol holds the errno error code set by read() when no data was - * present on the non-blocking file descriptor. - */ -/* RD_NODATA: - * This symbol holds the return code from read() when no data is present - * on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is - * not defined, then you can't distinguish between no data and EOF by - * issuing a read(). You'll have to find another way to tell for sure! - */ -/* EOF_NONBLOCK: - * This symbol, if defined, indicates to the C program that a read() on - * a non-blocking file descriptor will return 0 on EOF, and not the value - * held in RD_NODATA (-1 usually, in that case!). - */ -#define VAL_O_NONBLOCK O_NONBLOCK -#define VAL_EAGAIN EAGAIN -#define RD_NODATA -1 -#define EOF_NONBLOCK - -/* PTRSIZE: - * This symbol contains the size of a pointer, so that the C preprocessor - * can make decisions based on it. It will be sizeof(void *) if - * the compiler supports (void *); otherwise it will be - * sizeof(char *). - */ -#define PTRSIZE 4 /**/ - -/* Drand01: - * This macro is to be used to generate uniformly distributed - * random numbers over the range [0., 1.[. You may have to supply - * an 'extern double drand48();' in your program since SunOS 4.1.3 - * doesn't provide you with anything relevant in its headers. - * See HAS_DRAND48_PROTO. - */ -/* Rand_seed_t: - * This symbol defines the type of the argument of the - * random seed function. - */ -/* seedDrand01: - * This symbol defines the macro to be used in seeding the - * random number generator (see Drand01). - */ -/* RANDBITS: - * This symbol indicates how many bits are produced by the - * function used to generate normalized random numbers. - * Values include 15, 16, 31, and 48. - */ -#define Drand01() (rand()/(double)((unsigned)1<<RANDBITS)) /**/ -#define Rand_seed_t unsigned /**/ -#define seedDrand01(x) srand((Rand_seed_t)x) /**/ -#define RANDBITS 15 /**/ - -/* SSize_t: - * This symbol holds the type used by functions that return - * a count of bytes or an error condition. It must be a signed type. - * It is usually ssize_t, but may be long or int, etc. - * It may be necessary to include <sys/types.h> or <unistd.h> - * to get any typedef'ed information. - * We will pick a type such that sizeof(SSize_t) == sizeof(Size_t). - */ -#define SSize_t int /* signed count of bytes */ - -/* EBCDIC: - * This symbol, if defined, indicates that this system uses - * EBCDIC encoding. - */ -/*#define EBCDIC / **/ - -/* SETUID_SCRIPTS_ARE_SECURE_NOW: - * This symbol, if defined, indicates that the bug that prevents - * setuid scripts from being secure is not present in this kernel. - */ -/* DOSUID: - * This symbol, if defined, indicates that the C program should - * check the script that it is executing for setuid/setgid bits, and - * attempt to emulate setuid/setgid on systems that have disabled - * setuid #! scripts because the kernel can't do it securely. - * It is up to the package designer to make sure that this emulation - * is done securely. Among other things, it should do an fstat on - * the script it just opened to make sure it really is a setuid/setgid - * script, it should make sure the arguments passed correspond exactly - * to the argument on the #! line, and it should not trust any - * subprocesses to which it must pass the filename rather than the - * file descriptor of the script to be executed. - */ -/*#define SETUID_SCRIPTS_ARE_SECURE_NOW / **/ -/*#define DOSUID / **/ - /* PERL_USE_DEVEL: * This symbol, if defined, indicates that Perl was configured with * -Dusedevel, to enable development features. This should not be @@ -3583,7 +3412,7 @@ /* HAS_GETESPWNAM: * This symbol, if defined, indicates that the getespwnam system call is - * available to retrieve enchanced (shadow) password entries by name. + * available to retrieve enhanced (shadow) password entries by name. */ /*#define HAS_GETESPWNAM / **/ @@ -3724,7 +3553,7 @@ /* HAS_MKSTEMPS: * This symbol, if defined, indicates that the mkstemps routine is - * available to excluslvely create and open a uniquely named + * available to exclusively create and open a uniquely named * (with a suffix) temporary file. */ /*#define HAS_MKSTEMPS / **/ @@ -3774,6 +3603,17 @@ */ /*#define HAS_OFF64_T / **/ +/* HAS_PRCTL: + * This symbol, if defined, indicates that the prctl routine is + * available to set process title. + */ +/* HAS_PRCTL_SET_NAME: + * This symbol, if defined, indicates that the prctl routine is + * available to set process title and supports PR_SET_NAME. + */ +/*#define HAS_PRCTL / **/ +/*#define HAS_PRCTL_SET_NAME / **/ + /* HAS_PROCSELFEXE: * This symbol is defined if PROCSELFEXE_PATH is a symlink * to the absolute pathname of the executing program. @@ -4413,7 +4253,7 @@ /* NV_OVERFLOWS_INTEGERS_AT: * This symbol gives the largest integer value that NVs can hold. This * value + 1.0 cannot be stored accurately. It is expressed as constant - * floating point expression to reduce the chance of decimale/binary + * floating point expression to reduce the chance of decimal/binary * conversion issues. If it can not be determined, the value 0 is given. */ /* NV_ZERO_IS_ALLBITS_ZERO: @@ -4644,4 +4484,203 @@ /*#define USE_SOCKS / **/ #endif +/* HAS_DRAND48_PROTO: + * This symbol, if defined, indicates that the system provides + * a prototype for the drand48() function. Otherwise, it is up + * to the program to supply one. A good guess is + * extern double drand48(void); + */ +/*#define HAS_DRAND48_PROTO / **/ + +/* HAS_GETHOST_PROTOS: + * This symbol, if defined, indicates that <netdb.h> includes + * prototypes for gethostent(), gethostbyname(), and + * gethostbyaddr(). Otherwise, it is up to the program to guess + * them. See netdbtype.U for probing for various Netdb_xxx_t types. + */ +#define HAS_GETHOST_PROTOS /**/ + +/* HAS_GETNET_PROTOS: + * This symbol, if defined, indicates that <netdb.h> includes + * prototypes for getnetent(), getnetbyname(), and + * getnetbyaddr(). Otherwise, it is up to the program to guess + * them. See netdbtype.U for probing for various Netdb_xxx_t types. + */ +/*#define HAS_GETNET_PROTOS / **/ + +/* HAS_GETPROTO_PROTOS: + * This symbol, if defined, indicates that <netdb.h> includes + * prototypes for getprotoent(), getprotobyname(), and + * getprotobyaddr(). Otherwise, it is up to the program to guess + * them. See netdbtype.U for probing for various Netdb_xxx_t types. + */ +#define HAS_GETPROTO_PROTOS /**/ + +/* HAS_GETSERV_PROTOS: + * This symbol, if defined, indicates that <netdb.h> includes + * prototypes for getservent(), getservbyname(), and + * getservbyaddr(). Otherwise, it is up to the program to guess + * them. See netdbtype.U for probing for various Netdb_xxx_t types. + */ +#define HAS_GETSERV_PROTOS /**/ + +/* HAS_LSEEK_PROTO: + * This symbol, if defined, indicates that the system provides + * a prototype for the lseek() function. Otherwise, it is up + * to the program to supply one. A good guess is + * extern off_t lseek(int, off_t, int); + */ +#define HAS_LSEEK_PROTO /**/ + +/* Netdb_host_t: + * This symbol holds the type used for the 1st argument + * to gethostbyaddr(). + */ +/* Netdb_hlen_t: + * This symbol holds the type used for the 2nd argument + * to gethostbyaddr(). + */ +/* Netdb_name_t: + * This symbol holds the type used for the argument to + * gethostbyname(). + */ +/* Netdb_net_t: + * This symbol holds the type used for the 1st argument to + * getnetbyaddr(). + */ +#define Netdb_host_t char * /**/ +#define Netdb_hlen_t int /**/ +#define Netdb_name_t char * /**/ +#define Netdb_net_t long /**/ + +/* Select_fd_set_t: + * This symbol holds the type used for the 2nd, 3rd, and 4th + * arguments to select. Usually, this is 'fd_set *', if HAS_FD_SET + * is defined, and 'int *' otherwise. This is only useful if you + * have select(), of course. + */ +#define Select_fd_set_t Perl_fd_set * /**/ + +/* Sock_size_t: + * This symbol holds the type used for the size argument of + * various socket calls (just the base type, not the pointer-to). + */ +#define Sock_size_t int /**/ + +/* HAS_TIME: + * This symbol, if defined, indicates that the time() routine exists. + */ +/* Time_t: + * This symbol holds the type returned by time(). It can be long, + * or time_t on BSD sites (in which case <sys/types.h> should be + * included). + */ +#define HAS_TIME /**/ +#define Time_t time_t /* Time type */ + +/* HAS_TIMES: + * This symbol, if defined, indicates that the times() routine exists. + * Note that this became obsolete on some systems (SUNOS), which now + * use getrusage(). It may be necessary to include <sys/times.h>. + */ +#define HAS_TIMES /**/ + +/* Fpos_t: + * This symbol holds the type used to declare file positions in libc. + * It can be fpos_t, long, uint, etc... It may be necessary to include + * <sys/types.h> to get any typedef'ed information. + */ +#define Fpos_t fpos_t /* File position type */ + +/* Gid_t_f: + * This symbol defines the format string used for printing a Gid_t. + */ +#define Gid_t_f "ld" /**/ + +/* Gid_t_sign: + * This symbol holds the signedess of a Gid_t. + * 1 for unsigned, -1 for signed. + */ +#define Gid_t_sign -1 /* GID sign */ + +/* Gid_t_size: + * This symbol holds the size of a Gid_t in bytes. + */ +#define Gid_t_size 4 /* GID size */ + +/* Gid_t: + * This symbol holds the return type of getgid() and the type of + * argument to setrgid() and related functions. Typically, + * it is the type of group ids in the kernel. It can be int, ushort, + * gid_t, etc... It may be necessary to include <sys/types.h> to get + * any typedef'ed information. + */ +#define Gid_t gid_t /* Type for getgid(), etc... */ + +/* Off_t: + * This symbol holds the type used to declare offsets in the kernel. + * It can be int, long, off_t, etc... It may be necessary to include + * <sys/types.h> to get any typedef'ed information. + */ +/* LSEEKSIZE: + * This symbol holds the number of bytes used by the Off_t. + */ +/* Off_t_size: + * This symbol holds the number of bytes used by the Off_t. + */ +#define Off_t long long /* <offset> type */ +#define LSEEKSIZE 8 /* <offset> size */ +#define Off_t_size 8 /* <offset> size */ + +/* Mode_t: + * This symbol holds the type used to declare file modes + * for systems calls. It is usually mode_t, but may be + * int or unsigned short. It may be necessary to include <sys/types.h> + * to get any typedef'ed information. + */ +#define Mode_t mode_t /* file mode parameter for system calls */ + +/* Pid_t: + * This symbol holds the type used to declare process ids in the kernel. + * It can be int, uint, pid_t, etc... It may be necessary to include + * <sys/types.h> to get any typedef'ed information. + */ +#define Pid_t int /* PID type */ + +/* Size_t_size: + * This symbol holds the size of a Size_t in bytes. + */ +#define Size_t_size 4 /**/ + +/* Size_t: + * This symbol holds the type used to declare length parameters + * for string functions. It is usually size_t, but may be + * unsigned long, int, etc. It may be necessary to include + * <sys/types.h> to get any typedef'ed information. + */ +#define Size_t size_t /* length parameter for string functions */ + +/* Uid_t_f: + * This symbol defines the format string used for printing a Uid_t. + */ +#define Uid_t_f "ld" /**/ + +/* Uid_t_sign: + * This symbol holds the signedess of a Uid_t. + * 1 for unsigned, -1 for signed. + */ +#define Uid_t_sign -1 /* UID sign */ + +/* Uid_t_size: + * This symbol holds the size of a Uid_t in bytes. + */ +#define Uid_t_size 4 /* UID size */ + +/* Uid_t: + * This symbol holds the type used to declare user ids in the kernel. + * It can be int, ushort, uid_t, etc... It may be necessary to include + * <sys/types.h> to get any typedef'ed information. + */ +#define Uid_t uid_t /* UID type */ + #endif diff --git a/Master/tlpkg/tlperl/lib/CORE/cop.h b/Master/tlpkg/tlperl/lib/CORE/cop.h index 13ce794ce20..ad0ee9b7239 100644 --- a/Master/tlpkg/tlperl/lib/CORE/cop.h +++ b/Master/tlpkg/tlperl/lib/CORE/cop.h @@ -14,11 +14,12 @@ */ /* A jmpenv packages the state required to perform a proper non-local jump. - * Note that there is a start_env initialized when perl starts, and top_env - * points to this initially, so top_env should always be non-null. + * Note that there is a PL_start_env initialized when perl starts, and + * PL_top_env points to this initially, so PL_top_env should always be + * non-null. * - * Existence of a non-null top_env->je_prev implies it is valid to call - * longjmp() at that runlevel (we make sure start_env.je_prev is always + * Existence of a non-null PL_top_env->je_prev implies it is valid to call + * longjmp() at that runlevel (we make sure PL_start_env.je_prev is always * null to ensure this). * * je_mustcatch, when set at any runlevel to TRUE, means eval ops must @@ -91,17 +92,20 @@ typedef struct jmpenv JMPENV; * * The original patches that introduces flexible exceptions were: * - * http://public.activestate.com/cgi-bin/perlbrowse?patch=3386 - * http://public.activestate.com/cgi-bin/perlbrowse?patch=5162 + * http://perl5.git.perl.org/perl.git/commit/312caa8e97f1c7ee342a9895c2f0e749625b4929 + * http://perl5.git.perl.org/perl.git/commit/14dd3ad8c9bf82cf09798a22cc89a9862dfd6d1a + * */ #define dJMPENV JMPENV cur_env #define JMPENV_PUSH(v) \ STMT_START { \ - DEBUG_l(Perl_deb(aTHX_ "Setting up jumplevel %p, was %p at %s:%d\n", \ - (void*)&cur_env, (void*)PL_top_env, \ - __FILE__, __LINE__)); \ + DEBUG_l({ \ + int i = 0; JMPENV *p = PL_top_env; \ + while (p) { i++; p = p->je_prev; } \ + Perl_deb(aTHX_ "JUMPENV_PUSH level=%d at %s:%d\n", \ + i, __FILE__, __LINE__);}) \ cur_env.je_prev = PL_top_env; \ OP_REG_TO_MEM; \ cur_env.je_ret = PerlProc_setjmp(cur_env.je_buf, SCOPE_SAVES_SIGNAL_MASK); \ @@ -113,15 +117,22 @@ typedef struct jmpenv JMPENV; #define JMPENV_POP \ STMT_START { \ - DEBUG_l(Perl_deb(aTHX_ "popping jumplevel was %p, now %p at %s:%d\n", \ - (void*)PL_top_env, (void*)cur_env.je_prev, \ - __FILE__, __LINE__)); \ + DEBUG_l({ \ + int i = -1; JMPENV *p = PL_top_env; \ + while (p) { i++; p = p->je_prev; } \ + Perl_deb(aTHX_ "JUMPENV_POP level=%d at %s:%d\n", \ + i, __FILE__, __LINE__);}) \ assert(PL_top_env == &cur_env); \ PL_top_env = cur_env.je_prev; \ } STMT_END #define JMPENV_JUMP(v) \ STMT_START { \ + DEBUG_l({ \ + int i = -1; JMPENV *p = PL_top_env; \ + while (p) { i++; p = p->je_prev; } \ + Perl_deb(aTHX_ "JUMPENV_JUMP(%d) level=%d at %s:%d\n", \ + (int)v, i, __FILE__, __LINE__);}) \ OP_REG_TO_MEM; \ if (PL_top_env->je_prev) \ PerlProc_longjmp(PL_top_env->je_buf, (v)); \ @@ -132,8 +143,240 @@ typedef struct jmpenv JMPENV; } STMT_END #define CATCH_GET (PL_top_env->je_mustcatch) -#define CATCH_SET(v) (PL_top_env->je_mustcatch = (v)) +#define CATCH_SET(v) \ + STMT_START { \ + DEBUG_l( \ + Perl_deb(aTHX_ \ + "JUMPLEVEL set catch %d => %d (for %p) at %s:%d\n", \ + PL_top_env->je_mustcatch, v, (void*)PL_top_env, \ + __FILE__, __LINE__);) \ + PL_top_env->je_mustcatch = (v); \ + } STMT_END + +/* +=head1 COP Hint Hashes +*/ + +typedef struct refcounted_he COPHH; + +#define COPHH_KEY_UTF8 REFCOUNTED_HE_KEY_UTF8 + +/* +=for apidoc Amx|SV *|cophh_fetch_pvn|const COPHH *cophh|const char *keypv|STRLEN keylen|U32 hash|U32 flags + +Look up the entry in the cop hints hash I<cophh> with the key specified by +I<keypv> and I<keylen>. If I<flags> has the C<COPHH_KEY_UTF8> bit set, +the key octets are interpreted as UTF-8, otherwise they are interpreted +as Latin-1. I<hash> is a precomputed hash of the key string, or zero if +it has not been precomputed. Returns a mortal scalar copy of the value +associated with the key, or C<&PL_sv_placeholder> if there is no value +associated with the key. + +=cut +*/ + +#define cophh_fetch_pvn(cophh, keypv, keylen, hash, flags) \ + Perl_refcounted_he_fetch_pvn(aTHX_ cophh, keypv, keylen, hash, flags) + +/* +=for apidoc Amx|SV *|cophh_fetch_pvs|const COPHH *cophh|const char *key|U32 flags + +Like L</cophh_fetch_pvn>, but takes a literal string instead of a +string/length pair, and no precomputed hash. + +=cut +*/ + +#define cophh_fetch_pvs(cophh, key, flags) \ + Perl_refcounted_he_fetch_pvn(aTHX_ cophh, STR_WITH_LEN(key), 0, flags) + +/* +=for apidoc Amx|SV *|cophh_fetch_pv|const COPHH *cophh|const char *key|U32 hash|U32 flags +Like L</cophh_fetch_pvn>, but takes a nul-terminated string instead of +a string/length pair. + +=cut +*/ + +#define cophh_fetch_pv(cophh, key, hash, flags) \ + Perl_refcounted_he_fetch_pv(aTHX_ cophh, key, hash, flags) + +/* +=for apidoc Amx|SV *|cophh_fetch_sv|const COPHH *cophh|SV *key|U32 hash|U32 flags + +Like L</cophh_fetch_pvn>, but takes a Perl scalar instead of a +string/length pair. + +=cut +*/ + +#define cophh_fetch_sv(cophh, key, hash, flags) \ + Perl_refcounted_he_fetch_sv(aTHX_ cophh, key, hash, flags) + +/* +=for apidoc Amx|HV *|cophh_2hv|const COPHH *cophh|U32 flags + +Generates and returns a standard Perl hash representing the full set of +key/value pairs in the cop hints hash I<cophh>. I<flags> is currently +unused and must be zero. + +=cut +*/ + +#define cophh_2hv(cophh, flags) \ + Perl_refcounted_he_chain_2hv(aTHX_ cophh, flags) + +/* +=for apidoc Amx|COPHH *|cophh_copy|COPHH *cophh + +Make and return a complete copy of the cop hints hash I<cophh>. + +=cut +*/ + +#define cophh_copy(cophh) Perl_refcounted_he_inc(aTHX_ cophh) + +/* +=for apidoc Amx|void|cophh_free|COPHH *cophh + +Discard the cop hints hash I<cophh>, freeing all resources associated +with it. + +=cut +*/ + +#define cophh_free(cophh) Perl_refcounted_he_free(aTHX_ cophh) + +/* +=for apidoc Amx|COPHH *|cophh_new_empty + +Generate and return a fresh cop hints hash containing no entries. + +=cut +*/ + +#define cophh_new_empty() ((COPHH *)NULL) + +/* +=for apidoc Amx|COPHH *|cophh_store_pvn|COPHH *cophh|const char *keypv|STRLEN keylen|U32 hash|SV *value|U32 flags + +Stores a value, associated with a key, in the cop hints hash I<cophh>, +and returns the modified hash. The returned hash pointer is in general +not the same as the hash pointer that was passed in. The input hash is +consumed by the function, and the pointer to it must not be subsequently +used. Use L</cophh_copy> if you need both hashes. + +The key is specified by I<keypv> and I<keylen>. If I<flags> has the +C<COPHH_KEY_UTF8> bit set, the key octets are interpreted as UTF-8, +otherwise they are interpreted as Latin-1. I<hash> is a precomputed +hash of the key string, or zero if it has not been precomputed. + +I<value> is the scalar value to store for this key. I<value> is copied +by this function, which thus does not take ownership of any reference +to it, and later changes to the scalar will not be reflected in the +value visible in the cop hints hash. Complex types of scalar will not +be stored with referential integrity, but will be coerced to strings. + +=cut +*/ + +#define cophh_store_pvn(cophh, keypv, keylen, hash, value, flags) \ + Perl_refcounted_he_new_pvn(aTHX_ cophh, keypv, keylen, hash, value, flags) + +/* +=for apidoc Amx|COPHH *|cophh_store_pvs|const COPHH *cophh|const char *key|SV *value|U32 flags + +Like L</cophh_store_pvn>, but takes a literal string instead of a +string/length pair, and no precomputed hash. + +=cut +*/ + +#define cophh_store_pvs(cophh, key, value, flags) \ + Perl_refcounted_he_new_pvn(aTHX_ cophh, STR_WITH_LEN(key), 0, value, flags) + +/* +=for apidoc Amx|COPHH *|cophh_store_pv|const COPHH *cophh|const char *key|U32 hash|SV *value|U32 flags + +Like L</cophh_store_pvn>, but takes a nul-terminated string instead of +a string/length pair. + +=cut +*/ + +#define cophh_store_pv(cophh, key, hash, value, flags) \ + Perl_refcounted_he_new_pv(aTHX_ cophh, key, hash, value, flags) + +/* +=for apidoc Amx|COPHH *|cophh_store_sv|const COPHH *cophh|SV *key|U32 hash|SV *value|U32 flags + +Like L</cophh_store_pvn>, but takes a Perl scalar instead of a +string/length pair. + +=cut +*/ + +#define cophh_store_sv(cophh, key, hash, value, flags) \ + Perl_refcounted_he_new_sv(aTHX_ cophh, key, hash, value, flags) + +/* +=for apidoc Amx|COPHH *|cophh_delete_pvn|COPHH *cophh|const char *keypv|STRLEN keylen|U32 hash|U32 flags + +Delete a key and its associated value from the cop hints hash I<cophh>, +and returns the modified hash. The returned hash pointer is in general +not the same as the hash pointer that was passed in. The input hash is +consumed by the function, and the pointer to it must not be subsequently +used. Use L</cophh_copy> if you need both hashes. + +The key is specified by I<keypv> and I<keylen>. If I<flags> has the +C<COPHH_KEY_UTF8> bit set, the key octets are interpreted as UTF-8, +otherwise they are interpreted as Latin-1. I<hash> is a precomputed +hash of the key string, or zero if it has not been precomputed. + +=cut +*/ + +#define cophh_delete_pvn(cophh, keypv, keylen, hash, flags) \ + Perl_refcounted_he_new_pvn(aTHX_ cophh, keypv, keylen, hash, \ + (SV *)NULL, flags) + +/* +=for apidoc Amx|COPHH *|cophh_delete_pvs|const COPHH *cophh|const char *key|U32 flags + +Like L</cophh_delete_pvn>, but takes a literal string instead of a +string/length pair, and no precomputed hash. + +=cut +*/ + +#define cophh_delete_pvs(cophh, key, flags) \ + Perl_refcounted_he_new_pvn(aTHX_ cophh, STR_WITH_LEN(key), 0, \ + (SV *)NULL, flags) + +/* +=for apidoc Amx|COPHH *|cophh_delete_pv|const COPHH *cophh|const char *key|U32 hash|U32 flags + +Like L</cophh_delete_pvn>, but takes a nul-terminated string instead of +a string/length pair. + +=cut +*/ + +#define cophh_delete_pv(cophh, key, hash, flags) \ + Perl_refcounted_he_new_pv(aTHX_ cophh, key, hash, (SV *)NULL, flags) + +/* +=for apidoc Amx|COPHH *|cophh_delete_sv|const COPHH *cophh|SV *key|U32 hash|U32 flags + +Like L</cophh_delete_pvn>, but takes a Perl scalar instead of a +string/length pair. + +=cut +*/ + +#define cophh_delete_sv(cophh, key, hash, flags) \ + Perl_refcounted_he_new_sv(aTHX_ cophh, key, hash, (SV *)NULL, flags) #include "mydtrace.h" @@ -156,7 +399,7 @@ struct cop { STRLEN * cop_warnings; /* lexical warnings bitmask */ /* compile time state of %^H. See the comment in op.c for how this is used to recreate a hash to return from caller. */ - struct refcounted_he * cop_hints_hash; + COPHH * cop_hints_hash; }; #ifdef USE_ITHREADS @@ -225,7 +468,81 @@ struct cop { # define CopFILE_free(c) (SvREFCNT_dec(CopFILEGV(c)),(CopFILEGV(c) = NULL)) #endif /* USE_ITHREADS */ -#define CopLABEL(c) Perl_fetch_cop_label(aTHX_ (c)->cop_hints_hash, NULL, NULL) + +#define CopHINTHASH_get(c) ((COPHH*)((c)->cop_hints_hash)) +#define CopHINTHASH_set(c,h) ((c)->cop_hints_hash = (h)) + +/* +=head1 COP Hint Reading +*/ + +/* +=for apidoc Am|SV *|cop_hints_fetch_pvn|const COP *cop|const char *keypv|STRLEN keylen|U32 hash|U32 flags + +Look up the hint entry in the cop I<cop> with the key specified by +I<keypv> and I<keylen>. If I<flags> has the C<COPHH_KEY_UTF8> bit set, +the key octets are interpreted as UTF-8, otherwise they are interpreted +as Latin-1. I<hash> is a precomputed hash of the key string, or zero if +it has not been precomputed. Returns a mortal scalar copy of the value +associated with the key, or C<&PL_sv_placeholder> if there is no value +associated with the key. + +=cut +*/ + +#define cop_hints_fetch_pvn(cop, keypv, keylen, hash, flags) \ + cophh_fetch_pvn(CopHINTHASH_get(cop), keypv, keylen, hash, flags) + +/* +=for apidoc Am|SV *|cop_hints_fetch_pvs|const COP *cop|const char *key|U32 flags + +Like L</cop_hints_fetch_pvn>, but takes a literal string instead of a +string/length pair, and no precomputed hash. + +=cut +*/ + +#define cop_hints_fetch_pvs(cop, key, flags) \ + cophh_fetch_pvs(CopHINTHASH_get(cop), key, flags) + +/* +=for apidoc Am|SV *|cop_hints_fetch_pv|const COP *cop|const char *key|U32 hash|U32 flags + +Like L</cop_hints_fetch_pvn>, but takes a nul-terminated string instead +of a string/length pair. + +=cut +*/ + +#define cop_hints_fetch_pv(cop, key, hash, flags) \ + cophh_fetch_pv(CopHINTHASH_get(cop), key, hash, flags) + +/* +=for apidoc Am|SV *|cop_hints_fetch_sv|const COP *cop|SV *key|U32 hash|U32 flags + +Like L</cop_hints_fetch_pvn>, but takes a Perl scalar instead of a +string/length pair. + +=cut +*/ + +#define cop_hints_fetch_sv(cop, key, hash, flags) \ + cophh_fetch_sv(CopHINTHASH_get(cop), key, hash, flags) + +/* +=for apidoc Am|HV *|cop_hints_2hv|const COP *cop|U32 flags + +Generates and returns a standard Perl hash representing the full set of +hint entries in the cop I<cop>. I<flags> is currently unused and must +be zero. + +=cut +*/ + +#define cop_hints_2hv(cop, flags) \ + cophh_2hv(CopHINTHASH_get(cop), flags) + +#define CopLABEL(c) Perl_fetch_cop_label(aTHX_ (c), NULL, NULL) #define CopLABEL_alloc(pv) ((pv)?savepv(pv):NULL) #define CopSTASH_ne(c,hv) (!CopSTASH_eq(c,hv)) @@ -239,12 +556,11 @@ struct cop { /* If $[ is non-zero, it's stored in cop_hints under the key "$[", and HINT_ARYBASE is set to indicate this. - Setting it is ineficient due to the need to create 2 mortal SVs, but as + Setting it is inefficient due to the need to create 2 mortal SVs, but as using $[ is highly discouraged, no sane Perl code will be using it. */ #define CopARYBASE_get(c) \ ((CopHINTS_get(c) & HINT_ARYBASE) \ - ? SvIV(Perl_refcounted_he_fetch(aTHX_ (c)->cop_hints_hash, 0, \ - "$[", 2, 0, 0)) \ + ? SvIV(cop_hints_fetch_pvs((c), "$[", 0)) \ : 0) #define CopARYBASE_set(c, b) STMT_START { \ if (b || ((c)->cop_hints & HINT_ARYBASE)) { \ @@ -255,10 +571,9 @@ struct cop { mg_set(val); \ PL_hints |= HINT_ARYBASE; \ } else { \ - (c)->cop_hints_hash \ - = Perl_refcounted_he_new(aTHX_ (c)->cop_hints_hash, \ - newSVpvs_flags("$[", SVs_TEMP), \ - sv_2mortal(newSViv(b))); \ + CopHINTHASH_set((c), \ + cophh_store_pvs(CopHINTHASH_get((c)), "$[", \ + sv_2mortal(newSViv(b)), 0)); \ } \ } \ } STMT_END @@ -303,7 +618,8 @@ struct block_format { #define PUSHSUB_BASE(cx) \ ENTRY_PROBE(GvENAME(CvGV(cv)), \ CopFILE((const COP *)CvSTART(cv)), \ - CopLINE((const COP *)CvSTART(cv))); \ + CopLINE((const COP *)CvSTART(cv)), \ + CopSTASHPV((const COP *)CvSTART(cv))); \ \ cx->blk_sub.cv = cv; \ cx->blk_sub.olddepth = CvDEPTH(cv); \ @@ -353,7 +669,8 @@ struct block_format { STMT_START { \ RETURN_PROBE(GvENAME(CvGV((const CV*)cx->blk_sub.cv)), \ CopFILE((COP*)CvSTART((const CV*)cx->blk_sub.cv)), \ - CopLINE((COP*)CvSTART((const CV*)cx->blk_sub.cv))); \ + CopLINE((COP*)CvSTART((const CV*)cx->blk_sub.cv)), \ + CopSTASHPV((COP*)CvSTART((const CV*)cx->blk_sub.cv))); \ \ if (CxHASARGS(cx)) { \ POP_SAVEARRAY(); \ @@ -429,16 +746,11 @@ struct block_eval { struct block_loop { I32 resetsp; LOOP * my_op; /* My op, that contains redo, next and last ops. */ - /* (except for non_ithreads we need to modify next_op in pp_ctl.c, hence - why next_op is conditionally defined below.) */ -#ifdef USE_ITHREADS - PAD *oldcomppad; /* Also used for the GV, if targoffset is 0 */ - /* This is also accesible via cx->blk_loop.my_op->op_targ */ - PADOFFSET targoffset; -#else - OP * next_op; - SV ** itervar; -#endif + union { /* different ways of locating the iteration variable */ + SV **svp; + GV *gv; + PAD *oldcomppad; /* only used in ITHREADS */ + } itervar_u; union { struct { /* valid if type is LOOP_FOR or LOOP_PLAIN (but {NULL,0})*/ AV * ary; /* use the stack if this is NULL */ @@ -456,49 +768,36 @@ struct block_loop { }; #ifdef USE_ITHREADS -# define CxITERVAR(c) \ - ((c)->blk_loop.oldcomppad \ - ? (CxPADLOOP(c) \ - ? &CX_CURPAD_SV( (c)->blk_loop, (c)->blk_loop.targoffset ) \ - : &GvSV((GV*)(c)->blk_loop.oldcomppad)) \ - : (SV**)NULL) -# define CX_ITERDATA_SET(cx,idata,o) \ - if ((cx->blk_loop.targoffset = (o))) \ - CX_CURPAD_SAVE(cx->blk_loop); \ - else \ - cx->blk_loop.oldcomppad = (idata); +# define CxITERVAR_PADSV(c) \ + &CX_CURPAD_SV( (c)->blk_loop.itervar_u, (c)->blk_loop.my_op->op_targ) #else -# define CxITERVAR(c) ((c)->blk_loop.itervar) -# define CX_ITERDATA_SET(cx,ivar,o) \ - cx->blk_loop.itervar = (SV**)(ivar); +# define CxITERVAR_PADSV(c) ((c)->blk_loop.itervar_u.svp) #endif + +#define CxITERVAR(c) \ + ((c)->blk_loop.itervar_u.oldcomppad \ + ? (CxPADLOOP(c) \ + ? CxITERVAR_PADSV(c) \ + : &GvSV((c)->blk_loop.itervar_u.gv)) \ + : (SV**)NULL) + #define CxLABEL(c) (0 + CopLABEL((c)->blk_oldcop)) #define CxHASARGS(c) (((c)->cx_type & CXp_HASARGS) == CXp_HASARGS) #define CxLVAL(c) (0 + (c)->blk_u16) -#ifdef USE_ITHREADS -# define PUSHLOOP_OP_NEXT /* No need to do anything. */ -# define CX_LOOP_NEXTOP_GET(cx) ((cx)->blk_loop.my_op->op_nextop + 0) -#else -# define PUSHLOOP_OP_NEXT cx->blk_loop.next_op = cLOOP->op_nextop -# define CX_LOOP_NEXTOP_GET(cx) ((cx)->blk_loop.next_op + 0) -#endif - #define PUSHLOOP_PLAIN(cx, s) \ cx->blk_loop.resetsp = s - PL_stack_base; \ cx->blk_loop.my_op = cLOOP; \ - PUSHLOOP_OP_NEXT; \ cx->blk_loop.state_u.ary.ary = NULL; \ cx->blk_loop.state_u.ary.ix = 0; \ - CX_ITERDATA_SET(cx, NULL, 0); + cx->blk_loop.itervar_u.svp = NULL; -#define PUSHLOOP_FOR(cx, dat, s, offset) \ +#define PUSHLOOP_FOR(cx, ivar, s) \ cx->blk_loop.resetsp = s - PL_stack_base; \ cx->blk_loop.my_op = cLOOP; \ - PUSHLOOP_OP_NEXT; \ cx->blk_loop.state_u.ary.ary = NULL; \ cx->blk_loop.state_u.ary.ix = 0; \ - CX_ITERDATA_SET(cx, dat, offset); + cx->blk_loop.itervar_u.svp = (SV**)(ivar); #define POPLOOP(cx) \ if (CxTYPE(cx) == CXt_LOOP_LAZYSV) { \ @@ -550,6 +849,16 @@ struct block { #define blk_loop cx_u.cx_blk.blk_u.blku_loop #define blk_givwhen cx_u.cx_blk.blk_u.blku_givwhen +#define DEBUG_CX(action) \ + DEBUG_l( \ + Perl_deb(aTHX_ "CX %ld %s %s (scope %ld,%ld) at %s:%d\n", \ + (long)cxstack_ix, \ + action, \ + PL_block_type[CxTYPE(&cxstack[cxstack_ix])], \ + (long)PL_scopestack_ix, \ + (long)(cxstack[cxstack_ix].blk_oldscopesp), \ + __FILE__, __LINE__)); + /* Enter a block. */ #define PUSHBLOCK(cx,t,sp) CXINC, cx = &cxstack[cxstack_ix], \ cx->cx_type = t, \ @@ -559,28 +868,27 @@ struct block { cx->blk_oldscopesp = PL_scopestack_ix, \ cx->blk_oldpm = PL_curpm, \ cx->blk_gimme = (U8)gimme; \ - DEBUG_l( PerlIO_printf(Perl_debug_log, "Entering block %ld, type %s\n", \ - (long)cxstack_ix, PL_block_type[CxTYPE(cx)]); ) + DEBUG_CX("PUSH"); /* Exit a block (RETURN and LAST). */ -#define POPBLOCK(cx,pm) cx = &cxstack[cxstack_ix--], \ +#define POPBLOCK(cx,pm) \ + DEBUG_CX("POP"); \ + cx = &cxstack[cxstack_ix--], \ newsp = PL_stack_base + cx->blk_oldsp, \ PL_curcop = cx->blk_oldcop, \ PL_markstack_ptr = PL_markstack + cx->blk_oldmarksp, \ PL_scopestack_ix = cx->blk_oldscopesp, \ pm = cx->blk_oldpm, \ - gimme = cx->blk_gimme; \ - DEBUG_SCOPE("POPBLOCK"); \ - DEBUG_l( PerlIO_printf(Perl_debug_log, "Leaving block %ld, type %s\n", \ - (long)cxstack_ix+1,PL_block_type[CxTYPE(cx)]); ) + gimme = cx->blk_gimme; /* Continue a block elsewhere (NEXT and REDO). */ -#define TOPBLOCK(cx) cx = &cxstack[cxstack_ix], \ +#define TOPBLOCK(cx) \ + DEBUG_CX("TOP"); \ + cx = &cxstack[cxstack_ix], \ PL_stack_sp = PL_stack_base + cx->blk_oldsp, \ PL_markstack_ptr = PL_markstack + cx->blk_oldmarksp, \ PL_scopestack_ix = cx->blk_oldscopesp, \ - PL_curpm = cx->blk_oldpm; \ - DEBUG_SCOPE("TOPBLOCK"); + PL_curpm = cx->blk_oldpm; /* substitution context */ struct subst { @@ -603,7 +911,6 @@ struct subst { #define sb_maxiters cx_u.cx_subst.sbu_maxiters #define sb_rflags cx_u.cx_subst.sbu_rflags #define sb_oldsave cx_u.cx_subst.sbu_oldsave -#define sb_once cx_u.cx_subst.sbu_once #define sb_rxtainted cx_u.cx_subst.sbu_rxtainted #define sb_orig cx_u.cx_subst.sbu_orig #define sb_dstr cx_u.cx_subst.sbu_dstr @@ -686,9 +993,7 @@ struct context { /* private flags for CXt_LOOP */ #define CXp_FOR_DEF 0x10 /* foreach using $_ */ -#ifdef USE_ITHREADS -# define CxPADLOOP(c) ((c)->blk_loop.targoffset) -#endif +#define CxPADLOOP(c) ((c)->blk_loop.my_op->op_targ) /* private flags for CXt_SUBST */ #define CXp_ONCE 0x10 /* What was sbu_once in struct subst */ @@ -751,11 +1056,16 @@ L<perlcall>. hash actions codes defined in hv.h */ #define G_EVAL 8 /* Assume eval {} around subroutine call. */ #define G_NOARGS 16 /* Don't construct a @_ array. */ -#define G_KEEPERR 32 /* Append errors to $@, don't overwrite it */ +#define G_KEEPERR 32 /* Warn for errors, don't overwrite $@ */ #define G_NODEBUG 64 /* Disable debugging at toplevel. */ #define G_METHOD 128 /* Calling method. */ #define G_FAKINGEVAL 256 /* Faking an eval context for call_sv or fold_constants. */ +#define G_UNDEF_FILL 512 /* Fill the stack with &PL_sv_undef + A special case for UNSHIFT in + Perl_magic_methcall(). */ +#define G_WRITING_TO_STDERR 1024 /* Perl_write_to_stderr() is calling + Perl_magic_methcall(). */ /* flag bits for PL_in_eval */ #define EVAL_NULL 0 /* not in an eval */ @@ -809,6 +1119,11 @@ typedef struct stackinfo PERL_SI; #define PUSHSTACKi(type) \ STMT_START { \ PERL_SI *next = PL_curstackinfo->si_next; \ + DEBUG_l({ \ + int i = 0; PERL_SI *p = PL_curstackinfo; \ + while (p) { i++; p = p->si_prev; } \ + Perl_deb(aTHX_ "push STACKINFO %d at %s:%d\n", \ + i, __FILE__, __LINE__);}) \ if (!next) { \ next = new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1); \ next->si_prev = PL_curstackinfo; \ @@ -830,6 +1145,11 @@ typedef struct stackinfo PERL_SI; STMT_START { \ dSP; \ PERL_SI * const prev = PL_curstackinfo->si_prev; \ + DEBUG_l({ \ + int i = -1; PERL_SI *p = PL_curstackinfo; \ + while (p) { i++; p = p->si_prev; } \ + Perl_deb(aTHX_ "pop STACKINFO %d at %s:%d\n", \ + i, __FILE__, __LINE__);}) \ if (!prev) { \ PerlIO_printf(Perl_error_log, "panic: POPSTACK\n"); \ my_exit(1); \ @@ -908,8 +1228,8 @@ See L<perlcall/Lightweight Callbacks>. #define POP_MULTICALL \ STMT_START { \ - LEAVESUB(multicall_cv); \ - CvDEPTH(multicall_cv)--; \ + if (! --CvDEPTH(multicall_cv)) \ + LEAVESUB(multicall_cv); \ POPBLOCK(cx,PL_curpm); \ POPSTACK; \ CATCH_SET(multicall_oldcatch); \ diff --git a/Master/tlpkg/tlperl/lib/CORE/cv.h b/Master/tlpkg/tlperl/lib/CORE/cv.h index 290019d9add..6fdf5cbaf2a 100644 --- a/Master/tlpkg/tlperl/lib/CORE/cv.h +++ b/Master/tlpkg/tlperl/lib/CORE/cv.h @@ -12,8 +12,8 @@ struct xpvcv { _XPV_HEAD; - _XPVMG_HEAD; _XPVCV_COMMON; + I32 xcv_depth; /* >= 2 indicates recursive call */ }; /* @@ -36,12 +36,14 @@ Returns the stash of the CV. # define Nullcv Null(CV*) #endif -#define CvSTASH(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_stash +#define CvSTASH(sv) (0+((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_stash) +#define CvSTASH_set(cv,st) Perl_cvstash_set(aTHX_ cv, st) #define CvSTART(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_start_u.xcv_start #define CvROOT(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_root_u.xcv_root #define CvXSUB(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_root_u.xcv_xsub #define CvXSUBANY(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_start_u.xcv_xsubany -#define CvGV(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_gv +#define CvGV(sv) (0+((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_gv) +#define CvGV_set(cv,gv) Perl_cvgv_set(aTHX_ cv, gv) #define CvFILE(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_file #ifdef USE_ITHREADS # define CvFILE_set_from_cop(sv, cop) (CvFILE(sv) = savepv(CopFILE(cop))) @@ -52,10 +54,10 @@ Returns the stash of the CV. #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) # define CvDEPTH(sv) (*({const CV *const _cvdepth = (const CV *)sv; \ assert(SvTYPE(_cvdepth) == SVt_PVCV); \ - &((XPVCV*)SvANY(_cvdepth))->xiv_u.xivu_i32; \ + &((XPVCV*)SvANY(_cvdepth))->xcv_depth; \ })) #else -# define CvDEPTH(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xiv_u.xivu_i32 +# define CvDEPTH(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_depth #endif #define CvPADLIST(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_padlist #define CvOUTSIDE(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_outside @@ -63,18 +65,19 @@ Returns the stash of the CV. #define CvOUTSIDE_SEQ(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_outside_seq #define CVf_METHOD 0x0001 /* CV is explicitly marked as a method */ -#define CVf_LVALUE 0x0004 /* CV return value can be used as lvalue */ +#define CVf_LVALUE 0x0002 /* CV return value can be used as lvalue */ +#define CVf_CONST 0x0004 /* inlinable sub */ +#define CVf_ISXSUB 0x0008 /* CV is an XSUB, not pure perl. */ #define CVf_WEAKOUTSIDE 0x0010 /* CvOUTSIDE isn't ref counted */ #define CVf_CLONE 0x0020 /* anon CV uses external lexicals */ #define CVf_CLONED 0x0040 /* a clone of one of those */ -#define CVf_ANON 0x0080 /* CvGV() can't be trusted */ +#define CVf_ANON 0x0080 /* CV is not pointed to by a GV */ #define CVf_UNIQUE 0x0100 /* sub is only called once (eg PL_main_cv, * require, eval). */ #define CVf_NODEBUG 0x0200 /* no DB::sub indirection for this CV (esp. useful for special XSUBs) */ -#define CVf_CONST 0x0400 /* inlinable sub */ -#define CVf_ISXSUB 0x0800 /* CV is an XSUB, not pure perl. */ +#define CVf_CVGV_RC 0x0400 /* CvGV is reference counted */ /* This symbol for optimised communication between toke.c and op.c: */ #define CVf_BUILTIN_ATTRS (CVf_METHOD|CVf_LVALUE) @@ -128,6 +131,10 @@ Returns the stash of the CV. #define CvISXSUB_on(cv) (CvFLAGS(cv) |= CVf_ISXSUB) #define CvISXSUB_off(cv) (CvFLAGS(cv) &= ~CVf_ISXSUB) +#define CvCVGV_RC(cv) (CvFLAGS(cv) & CVf_CVGV_RC) +#define CvCVGV_RC_on(cv) (CvFLAGS(cv) |= CVf_CVGV_RC) +#define CvCVGV_RC_off(cv) (CvFLAGS(cv) &= ~CVf_CVGV_RC) + /* Flags for newXS_flags */ #define XS_DYNAMIC_FILENAME 0x01 /* The filename isn't static */ @@ -186,6 +193,8 @@ should print 123: =cut */ +typedef OP *(*Perl_call_checker)(pTHX_ OP *, GV *, SV *); + /* * Local variables: * c-indentation-style: bsd diff --git a/Master/tlpkg/tlperl/lib/CORE/embed.h b/Master/tlpkg/tlperl/lib/CORE/embed.h index 2b80af0458a..04b32d18089 100644 --- a/Master/tlpkg/tlperl/lib/CORE/embed.h +++ b/Master/tlpkg/tlperl/lib/CORE/embed.h @@ -1,16 +1,16 @@ -/* -*- buffer-read-only: t -*- +/* -*- buffer-read-only: t -*- * * embed.h * - * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, - * 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, by Larry Wall and others + * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, + * 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - * This file is built by embed.pl from data in embed.fnc, embed.pl, - * pp.sym, intrpvar.h, and perlvars.h. + * This file is built by regen/embed.pl from data in embed.fnc, + * regen/embed.pl, regen/opcodes, intrpvar.h and perlvars.h. * Any changes made here will be lost! * * Edit those files and run 'make regen_headers' to effect changes. @@ -26,2454 +26,14 @@ /* Hide global symbols */ -#if !defined(PERL_IMPLICIT_CONTEXT) - -#if defined(PERL_IMPLICIT_SYS) -#endif -#define doing_taint Perl_doing_taint -#if defined(USE_ITHREADS) -# if defined(PERL_IMPLICIT_SYS) -# endif -#endif -#if defined(MYMALLOC) -#ifdef PERL_CORE -#define malloced_size Perl_malloced_size -#define malloc_good_size Perl_malloc_good_size -#endif -#endif -#define get_context Perl_get_context -#define set_context Perl_set_context -#if defined(PERL_CORE) || defined(PERL_EXT) -#define regcurly Perl_regcurly -#endif -#define amagic_call Perl_amagic_call -#define Gv_AMupdate Perl_Gv_AMupdate -#define gv_handler Perl_gv_handler -#ifdef PERL_CORE -#define append_elem Perl_append_elem -#define append_list Perl_append_list -#define apply Perl_apply -#endif -#define apply_attrs_string Perl_apply_attrs_string -#define av_clear Perl_av_clear -#define av_delete Perl_av_delete -#define av_exists Perl_av_exists -#define av_extend Perl_av_extend -#define av_fetch Perl_av_fetch -#define av_fill Perl_av_fill -#define av_len Perl_av_len -#define av_make Perl_av_make -#define av_pop Perl_av_pop -#define av_push Perl_av_push -#if defined(PERL_CORE) || defined(PERL_EXT) -#define av_reify Perl_av_reify -#endif -#define av_shift Perl_av_shift -#define av_store Perl_av_store -#define av_undef Perl_av_undef -#define av_unshift Perl_av_unshift -#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define get_aux_mg S_get_aux_mg -#endif -#endif -#ifdef PERL_CORE -#define bind_match Perl_bind_match -#define block_end Perl_block_end -#endif -#define block_gimme Perl_block_gimme -#ifdef PERL_CORE -#define block_start Perl_block_start -#define boot_core_UNIVERSAL Perl_boot_core_UNIVERSAL -#define boot_core_PerlIO Perl_boot_core_PerlIO -#endif -#define call_list Perl_call_list -#ifdef PERL_CORE -#define cando Perl_cando -#endif -#define cast_ulong Perl_cast_ulong -#define cast_i32 Perl_cast_i32 -#define cast_iv Perl_cast_iv -#define cast_uv Perl_cast_uv -#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) -#define my_chsize Perl_my_chsize -#endif -#ifdef PERL_CORE -#define convert Perl_convert -#define create_eval_scope Perl_create_eval_scope -#endif -#define croak Perl_croak -#define vcroak Perl_vcroak -#define croak_xs_usage Perl_croak_xs_usage -#if defined(PERL_IMPLICIT_CONTEXT) -#define croak_nocontext Perl_croak_nocontext -#define die_nocontext Perl_die_nocontext -#define deb_nocontext Perl_deb_nocontext -#define form_nocontext Perl_form_nocontext -#define load_module_nocontext Perl_load_module_nocontext -#define mess_nocontext Perl_mess_nocontext -#define warn_nocontext Perl_warn_nocontext -#define warner_nocontext Perl_warner_nocontext -#define newSVpvf_nocontext Perl_newSVpvf_nocontext -#define sv_catpvf_nocontext Perl_sv_catpvf_nocontext -#define sv_setpvf_nocontext Perl_sv_setpvf_nocontext -#define sv_catpvf_mg_nocontext Perl_sv_catpvf_mg_nocontext -#define sv_setpvf_mg_nocontext Perl_sv_setpvf_mg_nocontext -#define fprintf_nocontext Perl_fprintf_nocontext -#define printf_nocontext Perl_printf_nocontext -#endif -#ifdef PERL_CORE -#define cv_ckproto_len Perl_cv_ckproto_len -#define cv_clone Perl_cv_clone -#endif -#define gv_const_sv Perl_gv_const_sv -#define cv_const_sv Perl_cv_const_sv -#ifdef PERL_CORE -#define op_const_sv Perl_op_const_sv -#endif -#define cv_undef Perl_cv_undef -#define cx_dump Perl_cx_dump -#define filter_add Perl_filter_add -#define filter_del Perl_filter_del -#define filter_read Perl_filter_read -#define get_op_descs Perl_get_op_descs -#define get_op_names Perl_get_op_names -#ifdef PERL_CORE -#define get_no_modify Perl_get_no_modify -#define get_opargs Perl_get_opargs -#endif -#define get_ppaddr Perl_get_ppaddr -#define cxinc Perl_cxinc -#define deb Perl_deb -#define vdeb Perl_vdeb -#define debprofdump Perl_debprofdump -#define debop Perl_debop -#define debstack Perl_debstack -#define debstackptrs Perl_debstackptrs -#define delimcpy Perl_delimcpy -#ifdef PERL_CORE -#define delete_eval_scope Perl_delete_eval_scope -#endif -#define die Perl_die -#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define vdie S_vdie -#endif -#endif -#ifdef PERL_CORE -#define die_where Perl_die_where -#endif -#define dounwind Perl_dounwind -#ifdef PERL_CORE -#define do_aexec5 Perl_do_aexec5 -#endif -#define do_binmode Perl_do_binmode -#ifdef PERL_CORE -#define do_chop Perl_do_chop -#endif -#define do_close Perl_do_close -#ifdef PERL_CORE -#define do_eof Perl_do_eof -#endif -#ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION -#else -#ifdef PERL_CORE -#define do_exec Perl_do_exec -#endif -#endif -#if defined(WIN32) || defined(__SYMBIAN32__) || defined(VMS) -#define do_aspawn Perl_do_aspawn -#define do_spawn Perl_do_spawn -#define do_spawn_nowait Perl_do_spawn_nowait -#endif -#if !defined(WIN32) -#ifdef PERL_CORE -#define do_exec3 Perl_do_exec3 -#endif -#endif -#ifdef PERL_CORE -#define do_execfree Perl_do_execfree -#endif -#if defined(PERL_IN_DOIO_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define exec_failed S_exec_failed -#endif -#endif -#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) -#ifdef PERL_CORE -#define do_ipcctl Perl_do_ipcctl -#define do_ipcget Perl_do_ipcget -#define do_msgrcv Perl_do_msgrcv -#define do_msgsnd Perl_do_msgsnd -#define do_semop Perl_do_semop -#define do_shmio Perl_do_shmio -#endif -#endif -#define do_join Perl_do_join -#ifdef PERL_CORE -#define do_kv Perl_do_kv -#endif -#define do_open9 Perl_do_open9 -#define do_openn Perl_do_openn -#ifdef PERL_CORE -#define do_print Perl_do_print -#define do_readline Perl_do_readline -#define do_chomp Perl_do_chomp -#define do_seek Perl_do_seek -#endif -#define do_sprintf Perl_do_sprintf -#ifdef PERL_CORE -#define do_sysseek Perl_do_sysseek -#define do_tell Perl_do_tell -#define do_trans Perl_do_trans -#define do_vecget Perl_do_vecget -#define do_vecset Perl_do_vecset -#define do_vop Perl_do_vop -#define dofile Perl_dofile -#endif -#define dowantarray Perl_dowantarray -#define dump_all Perl_dump_all -#ifdef PERL_CORE -#define dump_all_perl Perl_dump_all_perl -#endif -#define dump_eval Perl_dump_eval -#if defined(DUMP_FDS) -#define dump_fds Perl_dump_fds -#endif -#define dump_form Perl_dump_form -#define gv_dump Perl_gv_dump -#define op_dump Perl_op_dump -#define pmop_dump Perl_pmop_dump -#define dump_packsubs Perl_dump_packsubs -#ifdef PERL_CORE -#define dump_packsubs_perl Perl_dump_packsubs_perl -#endif -#define dump_sub Perl_dump_sub -#ifdef PERL_CORE -#define dump_sub_perl Perl_dump_sub_perl -#endif -#define fbm_compile Perl_fbm_compile -#define fbm_instr Perl_fbm_instr -#ifdef PERL_CORE -#define find_script Perl_find_script -#endif -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define force_list S_force_list -#define fold_constants S_fold_constants -#endif -#endif -#define form Perl_form -#define vform Perl_vform -#define free_tmps Perl_free_tmps -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define gen_constant_list S_gen_constant_list -#endif -#endif -#if !defined(HAS_GETENV_LEN) -#ifdef PERL_CORE -#define getenv_len Perl_getenv_len -#endif -#endif -#define gp_free Perl_gp_free -#define gp_ref Perl_gp_ref -#define gv_add_by_type Perl_gv_add_by_type -#define gv_autoload4 Perl_gv_autoload4 -#define gv_check Perl_gv_check -#define gv_efullname Perl_gv_efullname -#define gv_efullname4 Perl_gv_efullname4 -#define gv_fetchfile Perl_gv_fetchfile -#define gv_fetchfile_flags Perl_gv_fetchfile_flags -#define gv_fetchmeth Perl_gv_fetchmeth -#define gv_fetchmeth_autoload Perl_gv_fetchmeth_autoload -#define gv_fetchmethod_autoload Perl_gv_fetchmethod_autoload -#define gv_fetchmethod_flags Perl_gv_fetchmethod_flags -#define gv_fetchpv Perl_gv_fetchpv -#define gv_fullname Perl_gv_fullname -#define gv_fullname4 Perl_gv_fullname4 -#define gv_init Perl_gv_init -#define gv_name_set Perl_gv_name_set -#ifdef PERL_CORE -#define gv_try_downgrade Perl_gv_try_downgrade -#endif -#define gv_stashpv Perl_gv_stashpv -#define gv_stashpvn Perl_gv_stashpvn -#define gv_stashsv Perl_gv_stashsv -#define hv_clear Perl_hv_clear -#define hv_delayfree_ent Perl_hv_delayfree_ent -#define hv_common Perl_hv_common -#define hv_common_key_len Perl_hv_common_key_len -#define hv_free_ent Perl_hv_free_ent -#define hv_iterinit Perl_hv_iterinit -#define hv_iterkey Perl_hv_iterkey -#define hv_iterkeysv Perl_hv_iterkeysv -#define hv_iternextsv Perl_hv_iternextsv -#define hv_iternext_flags Perl_hv_iternext_flags -#define hv_iterval Perl_hv_iterval -#define hv_ksplit Perl_hv_ksplit -#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define refcounted_he_new_common S_refcounted_he_new_common -#endif -#endif -#define hv_undef Perl_hv_undef -#define ibcmp Perl_ibcmp -#define ibcmp_locale Perl_ibcmp_locale -#define ibcmp_utf8 Perl_ibcmp_utf8 -#if defined(PERL_IN_DOIO_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define ingroup S_ingroup -#endif -#endif -#ifdef PERL_CORE -#define init_argv_symbols Perl_init_argv_symbols -#endif -#ifdef PERL_CORE -#define init_debugger Perl_init_debugger -#endif -#define init_stacks Perl_init_stacks -#define init_tm Perl_init_tm -#ifdef PERL_CORE -#define intro_my Perl_intro_my -#endif -#define instr Perl_instr -#ifdef PERL_CORE -#define io_close Perl_io_close -#define invert Perl_invert -#endif -#define is_lvalue_sub Perl_is_lvalue_sub -#define to_uni_upper_lc Perl_to_uni_upper_lc -#define to_uni_title_lc Perl_to_uni_title_lc -#define to_uni_lower_lc Perl_to_uni_lower_lc -#define is_uni_alnum Perl_is_uni_alnum -#define is_uni_idfirst Perl_is_uni_idfirst -#define is_uni_alpha Perl_is_uni_alpha -#define is_uni_ascii Perl_is_uni_ascii -#define is_uni_space Perl_is_uni_space -#define is_uni_cntrl Perl_is_uni_cntrl -#define is_uni_graph Perl_is_uni_graph -#define is_uni_digit Perl_is_uni_digit -#define is_uni_upper Perl_is_uni_upper -#define is_uni_lower Perl_is_uni_lower -#define is_uni_print Perl_is_uni_print -#define is_uni_punct Perl_is_uni_punct -#define is_uni_xdigit Perl_is_uni_xdigit -#define to_uni_upper Perl_to_uni_upper -#define to_uni_title Perl_to_uni_title -#define to_uni_lower Perl_to_uni_lower -#define to_uni_fold Perl_to_uni_fold -#define is_uni_alnum_lc Perl_is_uni_alnum_lc -#define is_uni_idfirst_lc Perl_is_uni_idfirst_lc -#define is_uni_alpha_lc Perl_is_uni_alpha_lc -#define is_uni_ascii_lc Perl_is_uni_ascii_lc -#define is_uni_space_lc Perl_is_uni_space_lc -#define is_uni_cntrl_lc Perl_is_uni_cntrl_lc -#define is_uni_graph_lc Perl_is_uni_graph_lc -#define is_uni_digit_lc Perl_is_uni_digit_lc -#define is_uni_upper_lc Perl_is_uni_upper_lc -#define is_uni_lower_lc Perl_is_uni_lower_lc -#define is_uni_print_lc Perl_is_uni_print_lc -#define is_uni_punct_lc Perl_is_uni_punct_lc -#define is_uni_xdigit_lc Perl_is_uni_xdigit_lc -#define is_ascii_string Perl_is_ascii_string -#define is_utf8_char Perl_is_utf8_char -#define is_utf8_string Perl_is_utf8_string -#define is_utf8_string_loclen Perl_is_utf8_string_loclen -#define is_utf8_alnum Perl_is_utf8_alnum -#define is_utf8_idfirst Perl_is_utf8_idfirst -#define is_utf8_idcont Perl_is_utf8_idcont -#define is_utf8_alpha Perl_is_utf8_alpha -#define is_utf8_ascii Perl_is_utf8_ascii -#define is_utf8_space Perl_is_utf8_space -#define is_utf8_perl_space Perl_is_utf8_perl_space -#define is_utf8_perl_word Perl_is_utf8_perl_word -#define is_utf8_cntrl Perl_is_utf8_cntrl -#define is_utf8_digit Perl_is_utf8_digit -#define is_utf8_posix_digit Perl_is_utf8_posix_digit -#define is_utf8_graph Perl_is_utf8_graph -#define is_utf8_upper Perl_is_utf8_upper -#define is_utf8_lower Perl_is_utf8_lower -#define is_utf8_print Perl_is_utf8_print -#define is_utf8_punct Perl_is_utf8_punct -#define is_utf8_xdigit Perl_is_utf8_xdigit -#define is_utf8_mark Perl_is_utf8_mark -#if defined(PERL_CORE) || defined(PERL_EXT) -#define is_utf8_X_begin Perl_is_utf8_X_begin -#define is_utf8_X_extend Perl_is_utf8_X_extend -#define is_utf8_X_prepend Perl_is_utf8_X_prepend -#define is_utf8_X_non_hangul Perl_is_utf8_X_non_hangul -#define is_utf8_X_L Perl_is_utf8_X_L -#define is_utf8_X_LV Perl_is_utf8_X_LV -#define is_utf8_X_LVT Perl_is_utf8_X_LVT -#define is_utf8_X_LV_LVT_V Perl_is_utf8_X_LV_LVT_V -#define is_utf8_X_T Perl_is_utf8_X_T -#define is_utf8_X_V Perl_is_utf8_X_V -#endif -#ifdef PERL_CORE -#define jmaybe Perl_jmaybe -#define keyword Perl_keyword -#endif -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define opt_scalarhv S_opt_scalarhv -#define is_inplace_av S_is_inplace_av -#endif -#endif -#define leave_scope Perl_leave_scope -#if defined(PERL_CORE) || defined(PERL_EXT) -#define lex_end Perl_lex_end -#endif -#ifdef PERL_CORE -#define lex_start Perl_lex_start -#endif -#define lex_bufutf8 Perl_lex_bufutf8 -#define lex_grow_linestr Perl_lex_grow_linestr -#define lex_stuff_pvn Perl_lex_stuff_pvn -#define lex_stuff_sv Perl_lex_stuff_sv -#define lex_unstuff Perl_lex_unstuff -#define lex_read_to Perl_lex_read_to -#define lex_discard_to Perl_lex_discard_to -#define lex_next_chunk Perl_lex_next_chunk -#define lex_peek_unichar Perl_lex_peek_unichar -#define lex_read_unichar Perl_lex_read_unichar -#define lex_read_space Perl_lex_read_space -#define op_null Perl_op_null -#if defined(PERL_CORE) || defined(PERL_EXT) -#define op_clear Perl_op_clear -#endif -#define op_refcnt_lock Perl_op_refcnt_lock -#define op_refcnt_unlock Perl_op_refcnt_unlock -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define linklist S_linklist -#define listkids S_listkids -#endif -#endif -#ifdef PERL_CORE -#define list Perl_list -#endif -#define load_module Perl_load_module -#define vload_module Perl_vload_module -#ifdef PERL_CORE -#define localize Perl_localize -#endif -#define looks_like_number Perl_looks_like_number -#define grok_bin Perl_grok_bin -#define grok_hex Perl_grok_hex -#define grok_number Perl_grok_number -#define grok_numeric_radix Perl_grok_numeric_radix -#define grok_oct Perl_grok_oct -#ifdef PERL_CORE -#define magic_clearenv Perl_magic_clearenv -#define magic_clear_all_env Perl_magic_clear_all_env -#define magic_clearhint Perl_magic_clearhint -#define magic_clearhints Perl_magic_clearhints -#define magic_clearisa Perl_magic_clearisa -#define magic_clearpack Perl_magic_clearpack -#define magic_clearsig Perl_magic_clearsig -#define magic_existspack Perl_magic_existspack -#define magic_freeovrld Perl_magic_freeovrld -#define magic_get Perl_magic_get -#define magic_getarylen Perl_magic_getarylen -#define magic_getdefelem Perl_magic_getdefelem -#define magic_getnkeys Perl_magic_getnkeys -#define magic_getpack Perl_magic_getpack -#define magic_getpos Perl_magic_getpos -#define magic_getsig Perl_magic_getsig -#define magic_getsubstr Perl_magic_getsubstr -#define magic_gettaint Perl_magic_gettaint -#define magic_getuvar Perl_magic_getuvar -#define magic_getvec Perl_magic_getvec -#define magic_len Perl_magic_len -#define magic_nextpack Perl_magic_nextpack -#define magic_regdata_cnt Perl_magic_regdata_cnt -#define magic_regdatum_get Perl_magic_regdatum_get -#define magic_regdatum_set Perl_magic_regdatum_set -#define magic_set Perl_magic_set -#define magic_setamagic Perl_magic_setamagic -#define magic_setarylen Perl_magic_setarylen -#define magic_freearylen_p Perl_magic_freearylen_p -#define magic_setdbline Perl_magic_setdbline -#define magic_setdefelem Perl_magic_setdefelem -#define magic_setenv Perl_magic_setenv -#define magic_sethint Perl_magic_sethint -#define magic_setisa Perl_magic_setisa -#define magic_setmglob Perl_magic_setmglob -#define magic_setnkeys Perl_magic_setnkeys -#define magic_setpack Perl_magic_setpack -#define magic_setpos Perl_magic_setpos -#define magic_setregexp Perl_magic_setregexp -#define magic_setsig Perl_magic_setsig -#define magic_setsubstr Perl_magic_setsubstr -#define magic_settaint Perl_magic_settaint -#define magic_setuvar Perl_magic_setuvar -#define magic_setvec Perl_magic_setvec -#define magic_setutf8 Perl_magic_setutf8 -#define magic_set_all_env Perl_magic_set_all_env -#define magic_sizepack Perl_magic_sizepack -#define magic_wipepack Perl_magic_wipepack -#endif -#define markstack_grow Perl_markstack_grow -#if defined(USE_LOCALE_COLLATE) -#ifdef PERL_CORE -#define magic_setcollxfrm Perl_magic_setcollxfrm -#define mem_collxfrm Perl_mem_collxfrm -#endif -#endif -#define mess Perl_mess -#define vmess Perl_vmess -#if defined(PERL_CORE) || defined(PERL_EXT) -#define qerror Perl_qerror -#endif -#define sortsv Perl_sortsv -#define sortsv_flags Perl_sortsv_flags -#define mg_clear Perl_mg_clear -#define mg_copy Perl_mg_copy -#ifdef PERL_CORE -#define mg_localize Perl_mg_localize -#endif -#define mg_find Perl_mg_find -#define mg_free Perl_mg_free -#define mg_get Perl_mg_get -#define mg_length Perl_mg_length -#define mg_magical Perl_mg_magical -#define mg_set Perl_mg_set -#define mg_size Perl_mg_size -#define mini_mktime Perl_mini_mktime -#if defined(PERL_CORE) || defined(PERL_EXT) -#define mod Perl_mod -#endif -#ifdef PERL_CORE -#define mode_from_discipline Perl_mode_from_discipline -#endif -#define moreswitches Perl_moreswitches -#define my_atof Perl_my_atof -#if (!defined(HAS_MEMCPY) && !defined(HAS_BCOPY)) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY) && !defined(HAS_SAFE_BCOPY)) -#define my_bcopy Perl_my_bcopy -#endif -#if !defined(HAS_BZERO) && !defined(HAS_MEMSET) -#define my_bzero Perl_my_bzero -#endif -#define my_exit Perl_my_exit -#define my_failure_exit Perl_my_failure_exit -#define my_fflush_all Perl_my_fflush_all -#define my_fork Perl_my_fork -#define atfork_lock Perl_atfork_lock -#define atfork_unlock Perl_atfork_unlock -#define my_lstat Perl_my_lstat -#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) -#define my_memcmp Perl_my_memcmp -#endif -#if !defined(HAS_MEMSET) -#define my_memset Perl_my_memset -#endif -#define my_pclose Perl_my_pclose -#define my_popen Perl_my_popen -#define my_popen_list Perl_my_popen_list -#define my_setenv Perl_my_setenv -#define my_stat Perl_my_stat -#define my_strftime Perl_my_strftime -#if defined(MYSWAP) -#define my_swap Perl_my_swap -#define my_htonl Perl_my_htonl -#define my_ntohl Perl_my_ntohl -#endif -#ifdef PERL_CORE -#define my_unexec Perl_my_unexec -#endif -#define newANONLIST Perl_newANONLIST -#define newANONHASH Perl_newANONHASH -#define newANONSUB Perl_newANONSUB -#define newASSIGNOP Perl_newASSIGNOP -#define newCONDOP Perl_newCONDOP -#define newCONSTSUB Perl_newCONSTSUB -#ifdef PERL_MAD -#define newFORM Perl_newFORM -#else -#define newFORM Perl_newFORM -#endif -#define newFOROP Perl_newFOROP -#define newGIVENOP Perl_newGIVENOP -#define newLOGOP Perl_newLOGOP -#define newLOOPEX Perl_newLOOPEX -#define newLOOPOP Perl_newLOOPOP -#define newNULLLIST Perl_newNULLLIST -#define newOP Perl_newOP -#define newPROG Perl_newPROG -#define newRANGE Perl_newRANGE -#define newSLICEOP Perl_newSLICEOP -#define newSTATEOP Perl_newSTATEOP -#define newSUB Perl_newSUB -#define newXS_flags Perl_newXS_flags -#define newXS Perl_newXS -#define newAVREF Perl_newAVREF -#define newBINOP Perl_newBINOP -#define newCVREF Perl_newCVREF -#define newGVOP Perl_newGVOP -#define newGVgen Perl_newGVgen -#define newGVREF Perl_newGVREF -#define newHVREF Perl_newHVREF -#define newHVhv Perl_newHVhv -#define newLISTOP Perl_newLISTOP -#ifdef USE_ITHREADS -#define newPADOP Perl_newPADOP -#endif -#define newPMOP Perl_newPMOP -#define newPVOP Perl_newPVOP -#define newRV Perl_newRV -#define newRV_noinc Perl_newRV_noinc -#define newSV Perl_newSV -#define newSVREF Perl_newSVREF -#define newSVOP Perl_newSVOP -#define newSViv Perl_newSViv -#define newSVuv Perl_newSVuv -#define newSVnv Perl_newSVnv -#define newSVpv Perl_newSVpv -#define newSVpvn Perl_newSVpvn -#define newSVpvn_flags Perl_newSVpvn_flags -#define newSVhek Perl_newSVhek -#define newSVpvn_share Perl_newSVpvn_share -#define newSVpvf Perl_newSVpvf -#define vnewSVpvf Perl_vnewSVpvf -#define newSVrv Perl_newSVrv -#define newSVsv Perl_newSVsv -#define newSV_type Perl_newSV_type -#define newUNOP Perl_newUNOP -#define newWHENOP Perl_newWHENOP -#define newWHILEOP Perl_newWHILEOP -#define new_stackinfo Perl_new_stackinfo -#define scan_vstring Perl_scan_vstring -#define scan_version Perl_scan_version -#define prescan_version Perl_prescan_version -#define new_version Perl_new_version -#define upg_version Perl_upg_version -#define vverify Perl_vverify -#define vnumify Perl_vnumify -#define vnormal Perl_vnormal -#define vstringify Perl_vstringify -#define vcmp Perl_vcmp -#ifdef PERL_CORE -#define nextargv Perl_nextargv -#endif -#define ninstr Perl_ninstr -#define op_free Perl_op_free -#ifdef PERL_MAD -#ifdef PERL_CORE -#define package Perl_package -#endif -#else -#ifdef PERL_CORE -#define package Perl_package -#endif -#endif -#ifdef PERL_CORE -#define package_version Perl_package_version -#define pad_alloc Perl_pad_alloc -#define allocmy Perl_allocmy -#endif -#define pad_findmy Perl_pad_findmy -#define find_rundefsvoffset Perl_find_rundefsvoffset -#ifdef PERL_CORE -#define oopsAV Perl_oopsAV -#define oopsHV Perl_oopsHV -#define pad_leavemy Perl_pad_leavemy -#endif -#ifdef DEBUGGING -#define pad_sv Perl_pad_sv -#endif -#ifdef PERL_CORE -#define pad_free Perl_pad_free -#endif -#if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define pad_reset S_pad_reset -#endif -#endif -#ifdef PERL_CORE -#define pad_swipe Perl_pad_swipe -#define peep Perl_peep -#endif -#if defined(USE_REENTRANT_API) -#define reentrant_size Perl_reentrant_size -#define reentrant_init Perl_reentrant_init -#define reentrant_free Perl_reentrant_free -#define reentrant_retry Perl_reentrant_retry -#endif -#define call_atexit Perl_call_atexit -#define call_argv Perl_call_argv -#define call_method Perl_call_method -#define call_pv Perl_call_pv -#define call_sv Perl_call_sv -#define despatch_signals Perl_despatch_signals -#define doref Perl_doref -#define eval_pv Perl_eval_pv -#define eval_sv Perl_eval_sv -#define get_sv Perl_get_sv -#define get_av Perl_get_av -#define get_hv Perl_get_hv -#define get_cv Perl_get_cv -#define get_cvn_flags Perl_get_cvn_flags -#define init_i18nl10n Perl_init_i18nl10n -#define init_i18nl14n Perl_init_i18nl14n -#define new_collate Perl_new_collate -#define new_ctype Perl_new_ctype -#define new_numeric Perl_new_numeric -#define set_numeric_local Perl_set_numeric_local -#define set_numeric_radix Perl_set_numeric_radix -#define set_numeric_standard Perl_set_numeric_standard -#define require_pv Perl_require_pv -#define pack_cat Perl_pack_cat -#define packlist Perl_packlist -#if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C) -#ifdef PERL_CORE -#define pidgone S_pidgone -#endif -#endif -#ifdef PERL_CORE -#define pmruntime Perl_pmruntime -#endif -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define pmtrans S_pmtrans -#endif -#endif -#define pop_scope Perl_pop_scope -#ifdef PERL_CORE -#define prepend_elem Perl_prepend_elem -#endif -#define push_scope Perl_push_scope -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define refkids S_refkids -#endif -#endif -#define regdump Perl_regdump -#define regdump Perl_regdump -#define regclass_swash Perl_regclass_swash -#define pregexec Perl_pregexec -#define pregfree Perl_pregfree -#define pregfree2 Perl_pregfree2 -#if defined(PERL_CORE) || defined(PERL_EXT) -#define reg_temp_copy Perl_reg_temp_copy -#endif -#define regfree_internal Perl_regfree_internal -#if defined(USE_ITHREADS) -#define regdupe_internal Perl_regdupe_internal -#endif -#define pregcomp Perl_pregcomp -#define re_compile Perl_re_compile -#define re_intuit_start Perl_re_intuit_start -#define re_intuit_string Perl_re_intuit_string -#define regexec_flags Perl_regexec_flags -#define regnext Perl_regnext -#if defined(PERL_CORE) || defined(PERL_EXT) -#define reg_named_buff Perl_reg_named_buff -#define reg_named_buff_iter Perl_reg_named_buff_iter -#endif -#define reg_named_buff_fetch Perl_reg_named_buff_fetch -#define reg_named_buff_exists Perl_reg_named_buff_exists -#define reg_named_buff_firstkey Perl_reg_named_buff_firstkey -#define reg_named_buff_nextkey Perl_reg_named_buff_nextkey -#define reg_named_buff_scalar Perl_reg_named_buff_scalar -#define reg_named_buff_all Perl_reg_named_buff_all -#if defined(PERL_CORE) || defined(PERL_EXT) -#define reg_numbered_buff_fetch Perl_reg_numbered_buff_fetch -#define reg_numbered_buff_store Perl_reg_numbered_buff_store -#define reg_numbered_buff_length Perl_reg_numbered_buff_length -#endif -#if defined(PERL_CORE) || defined(PERL_EXT) -#define reg_qr_package Perl_reg_qr_package -#endif -#if defined(PERL_CORE) || defined(PERL_EXT) -#define regprop Perl_regprop -#endif -#define repeatcpy Perl_repeatcpy -#define rninstr Perl_rninstr -#define rsignal Perl_rsignal -#ifdef PERL_CORE -#define rsignal_restore Perl_rsignal_restore -#define rsignal_save Perl_rsignal_save -#endif -#define rsignal_state Perl_rsignal_state -#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define rxres_free S_rxres_free -#define rxres_restore S_rxres_restore -#endif -#endif -#ifdef PERL_CORE -#define rxres_save Perl_rxres_save -#endif -#if !defined(HAS_RENAME) -#ifdef PERL_CORE -#define same_dirent Perl_same_dirent -#endif -#endif -#define savepv Perl_savepv -#define savepvn Perl_savepvn -#define savesharedpv Perl_savesharedpv -#define savesharedpvn Perl_savesharedpvn -#define savesvpv Perl_savesvpv -#define savestack_grow Perl_savestack_grow -#define savestack_grow_cnt Perl_savestack_grow_cnt -#define save_aelem_flags Perl_save_aelem_flags -#define save_alloc Perl_save_alloc -#define save_aptr Perl_save_aptr -#define save_ary Perl_save_ary -#define save_bool Perl_save_bool -#define save_clearsv Perl_save_clearsv -#define save_delete Perl_save_delete -#define save_hdelete Perl_save_hdelete -#define save_adelete Perl_save_adelete -#define save_destructor Perl_save_destructor -#define save_destructor_x Perl_save_destructor_x -#define save_generic_svref Perl_save_generic_svref -#define save_generic_pvref Perl_save_generic_pvref -#define save_shared_pvref Perl_save_shared_pvref -#define save_gp Perl_save_gp -#define save_hash Perl_save_hash -#ifdef PERL_CORE -#define save_hints Perl_save_hints -#endif -#define save_helem_flags Perl_save_helem_flags -#define save_hptr Perl_save_hptr -#define save_I16 Perl_save_I16 -#define save_I32 Perl_save_I32 -#define save_I8 Perl_save_I8 -#define save_int Perl_save_int -#define save_item Perl_save_item -#define save_iv Perl_save_iv -#define save_list Perl_save_list -#define save_long Perl_save_long -#define save_nogv Perl_save_nogv -#define save_scalar Perl_save_scalar -#define save_pptr Perl_save_pptr -#define save_vptr Perl_save_vptr -#define save_re_context Perl_save_re_context -#define save_padsv_and_mortalize Perl_save_padsv_and_mortalize -#define save_sptr Perl_save_sptr -#define save_svref Perl_save_svref -#define save_pushptr Perl_save_pushptr -#ifdef PERL_CORE -#define save_pushi32ptr Perl_save_pushi32ptr -#define save_pushptrptr Perl_save_pushptrptr -#endif -#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define save_pushptri32ptr S_save_pushptri32ptr -#endif -#endif -#ifdef PERL_CORE -#define sawparens Perl_sawparens -#define scalar Perl_scalar -#endif -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define scalarkids S_scalarkids -#define scalarseq S_scalarseq -#endif -#endif -#ifdef PERL_CORE -#define scalarvoid Perl_scalarvoid -#endif -#define scan_bin Perl_scan_bin -#define scan_hex Perl_scan_hex -#define scan_num Perl_scan_num -#define scan_oct Perl_scan_oct -#ifdef PERL_CORE -#define scope Perl_scope -#endif -#define screaminstr Perl_screaminstr -#define setdefout Perl_setdefout -#define share_hek Perl_share_hek -#if defined(HAS_SIGACTION) && defined(SA_SIGINFO) -#ifdef PERL_CORE -#define sighandler Perl_sighandler -#endif -#define csighandler Perl_csighandler -#else -#ifdef PERL_CORE -#define sighandler Perl_sighandler -#endif -#define csighandler Perl_csighandler -#endif -#define stack_grow Perl_stack_grow -#define start_subparse Perl_start_subparse -#ifdef PERL_CORE -#define sub_crush_depth Perl_sub_crush_depth -#endif -#define sv_2bool Perl_sv_2bool -#define sv_2cv Perl_sv_2cv -#define sv_2io Perl_sv_2io -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define glob_2number S_glob_2number -#endif -#endif -#define sv_2iv_flags Perl_sv_2iv_flags -#define sv_2mortal Perl_sv_2mortal -#define sv_2nv Perl_sv_2nv -#ifdef PERL_CORE -#define sv_2num Perl_sv_2num -#endif -#define sv_2pv_flags Perl_sv_2pv_flags -#define sv_2pvutf8 Perl_sv_2pvutf8 -#define sv_2pvbyte Perl_sv_2pvbyte -#define sv_pvn_nomg Perl_sv_pvn_nomg -#define sv_2uv_flags Perl_sv_2uv_flags -#define sv_iv Perl_sv_iv -#define sv_uv Perl_sv_uv -#define sv_nv Perl_sv_nv -#define sv_pvn Perl_sv_pvn -#define sv_pvutf8n Perl_sv_pvutf8n -#define sv_pvbyten Perl_sv_pvbyten -#define sv_true Perl_sv_true -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define sv_add_arena S_sv_add_arena -#endif -#endif -#define sv_backoff Perl_sv_backoff -#define sv_bless Perl_sv_bless -#define sv_catpvf Perl_sv_catpvf -#define sv_vcatpvf Perl_sv_vcatpvf -#define sv_catpv Perl_sv_catpv -#define sv_chop Perl_sv_chop -#ifdef PERL_CORE -#define sv_clean_all Perl_sv_clean_all -#define sv_clean_objs Perl_sv_clean_objs -#endif -#define sv_clear Perl_sv_clear -#define sv_cmp Perl_sv_cmp -#define sv_cmp_locale Perl_sv_cmp_locale -#if defined(USE_LOCALE_COLLATE) -#define sv_collxfrm Perl_sv_collxfrm -#endif -#define sv_compile_2op Perl_sv_compile_2op -#define getcwd_sv Perl_getcwd_sv -#define sv_dec Perl_sv_dec -#define sv_dump Perl_sv_dump -#define sv_derived_from Perl_sv_derived_from -#define sv_does Perl_sv_does -#define sv_eq Perl_sv_eq -#define sv_free Perl_sv_free -#ifdef PERL_CORE -#define sv_free_arenas Perl_sv_free_arenas -#endif -#define sv_gets Perl_sv_gets -#define sv_grow Perl_sv_grow -#define sv_inc Perl_sv_inc -#define sv_insert_flags Perl_sv_insert_flags -#define sv_isa Perl_sv_isa -#define sv_isobject Perl_sv_isobject -#define sv_len Perl_sv_len -#define sv_len_utf8 Perl_sv_len_utf8 -#define sv_magic Perl_sv_magic -#define sv_magicext Perl_sv_magicext -#define sv_mortalcopy Perl_sv_mortalcopy -#define sv_newmortal Perl_sv_newmortal -#define sv_newref Perl_sv_newref -#define sv_peek Perl_sv_peek -#define sv_pos_u2b Perl_sv_pos_u2b -#define sv_pos_u2b_flags Perl_sv_pos_u2b_flags -#define sv_pos_b2u Perl_sv_pos_b2u -#define sv_pvutf8n_force Perl_sv_pvutf8n_force -#define sv_pvbyten_force Perl_sv_pvbyten_force -#define sv_recode_to_utf8 Perl_sv_recode_to_utf8 -#define sv_cat_decode Perl_sv_cat_decode -#define sv_reftype Perl_sv_reftype -#define sv_replace Perl_sv_replace -#define sv_report_used Perl_sv_report_used -#define sv_reset Perl_sv_reset -#define sv_setpvf Perl_sv_setpvf -#define sv_vsetpvf Perl_sv_vsetpvf -#define sv_setiv Perl_sv_setiv -#define sv_setpviv Perl_sv_setpviv -#define sv_setuv Perl_sv_setuv -#define sv_setnv Perl_sv_setnv -#define sv_setref_iv Perl_sv_setref_iv -#define sv_setref_uv Perl_sv_setref_uv -#define sv_setref_nv Perl_sv_setref_nv -#define sv_setref_pv Perl_sv_setref_pv -#define sv_setref_pvn Perl_sv_setref_pvn -#define sv_setpv Perl_sv_setpv -#define sv_setpvn Perl_sv_setpvn -#define sv_tainted Perl_sv_tainted -#define sv_unmagic Perl_sv_unmagic -#define sv_unref_flags Perl_sv_unref_flags -#define sv_untaint Perl_sv_untaint -#define sv_upgrade Perl_sv_upgrade -#define sv_usepvn_flags Perl_sv_usepvn_flags -#define sv_vcatpvfn Perl_sv_vcatpvfn -#define sv_vsetpvfn Perl_sv_vsetpvfn -#define str_to_version Perl_str_to_version -#define swash_init Perl_swash_init -#define swash_fetch Perl_swash_fetch -#define taint_env Perl_taint_env -#define taint_proper Perl_taint_proper -#define to_utf8_case Perl_to_utf8_case -#define to_utf8_lower Perl_to_utf8_lower -#define to_utf8_upper Perl_to_utf8_upper -#define to_utf8_title Perl_to_utf8_title -#define to_utf8_fold Perl_to_utf8_fold -#if defined(UNLINK_ALL_VERSIONS) -#define unlnk Perl_unlnk -#endif -#define unpack_str Perl_unpack_str -#define unpackstring Perl_unpackstring -#define unsharepvn Perl_unsharepvn -#ifdef PERL_CORE -#define unshare_hek Perl_unshare_hek -#endif -#ifdef PERL_MAD -#ifdef PERL_CORE -#define utilize Perl_utilize -#endif -#else -#ifdef PERL_CORE -#define utilize Perl_utilize -#endif -#endif -#define utf16_to_utf8 Perl_utf16_to_utf8 -#define utf16_to_utf8_reversed Perl_utf16_to_utf8_reversed -#define utf8_length Perl_utf8_length -#define utf8_distance Perl_utf8_distance -#define utf8_hop Perl_utf8_hop -#define utf8_to_bytes Perl_utf8_to_bytes -#define bytes_from_utf8 Perl_bytes_from_utf8 -#define bytes_to_utf8 Perl_bytes_to_utf8 -#define utf8_to_uvchr Perl_utf8_to_uvchr -#define utf8_to_uvuni Perl_utf8_to_uvuni -#ifdef EBCDIC -#define utf8n_to_uvchr Perl_utf8n_to_uvchr -#else -#endif -#define utf8n_to_uvuni Perl_utf8n_to_uvuni -#ifdef EBCDIC -#define uvchr_to_utf8 Perl_uvchr_to_utf8 -#else -#endif -#define uvchr_to_utf8_flags Perl_uvchr_to_utf8_flags -#define uvuni_to_utf8_flags Perl_uvuni_to_utf8_flags -#define pv_uni_display Perl_pv_uni_display -#define sv_uni_display Perl_sv_uni_display -#if defined(PERL_CORE) || defined(PERL_EXT) -#define vivify_defelem Perl_vivify_defelem -#endif -#ifdef PERL_CORE -#define vivify_ref Perl_vivify_ref -#define wait4pid Perl_wait4pid -#define parse_unicode_opts Perl_parse_unicode_opts -#endif -#define seed Perl_seed -#ifdef PERL_CORE -#define get_hash_seed Perl_get_hash_seed -#define report_evil_fh Perl_report_evil_fh -#endif -#if defined(PERL_CORE) || defined(PERL_EXT) -#define report_uninit Perl_report_uninit -#endif -#define warn Perl_warn -#define vwarn Perl_vwarn -#define warner Perl_warner -#define ck_warner Perl_ck_warner -#define ck_warner_d Perl_ck_warner_d -#define vwarner Perl_vwarner -#ifdef PERL_CORE -#define watch Perl_watch -#endif -#define whichsig Perl_whichsig -#ifdef PERL_CORE -#define write_to_stderr Perl_write_to_stderr -#define yyerror Perl_yyerror -#endif -#if defined(PERL_CORE) || defined(PERL_EXT) -#define yylex Perl_yylex -#endif -#ifdef PERL_CORE -#define yyparse Perl_yyparse -#define parser_free Perl_parser_free -#endif -#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define yywarn S_yywarn -#endif -#endif -#if defined(MYMALLOC) -#define dump_mstats Perl_dump_mstats -#define get_mstats Perl_get_mstats -#endif -#define safesysmalloc Perl_safesysmalloc -#define safesyscalloc Perl_safesyscalloc -#define safesysrealloc Perl_safesysrealloc -#define safesysfree Perl_safesysfree -#if defined(PERL_GLOBAL_STRUCT) -#define GetVars Perl_GetVars -#define init_global_struct Perl_init_global_struct -#define free_global_struct Perl_free_global_struct -#endif -#define runops_standard Perl_runops_standard -#define runops_debug Perl_runops_debug -#define sv_catpvf_mg Perl_sv_catpvf_mg -#define sv_vcatpvf_mg Perl_sv_vcatpvf_mg -#define sv_catpv_mg Perl_sv_catpv_mg -#define sv_setpvf_mg Perl_sv_setpvf_mg -#define sv_vsetpvf_mg Perl_sv_vsetpvf_mg -#define sv_setiv_mg Perl_sv_setiv_mg -#define sv_setpviv_mg Perl_sv_setpviv_mg -#define sv_setuv_mg Perl_sv_setuv_mg -#define sv_setnv_mg Perl_sv_setnv_mg -#define sv_setpv_mg Perl_sv_setpv_mg -#define sv_setpvn_mg Perl_sv_setpvn_mg -#define sv_setsv_mg Perl_sv_setsv_mg -#define get_vtbl Perl_get_vtbl -#define pv_display Perl_pv_display -#define pv_escape Perl_pv_escape -#define pv_pretty Perl_pv_pretty -#define dump_indent Perl_dump_indent -#define dump_vindent Perl_dump_vindent -#define do_gv_dump Perl_do_gv_dump -#define do_gvgv_dump Perl_do_gvgv_dump -#define do_hv_dump Perl_do_hv_dump -#define do_magic_dump Perl_do_magic_dump -#define do_op_dump Perl_do_op_dump -#define do_pmop_dump Perl_do_pmop_dump -#define do_sv_dump Perl_do_sv_dump -#define magic_dump Perl_magic_dump -#define reginitcolors Perl_reginitcolors -#define sv_utf8_downgrade Perl_sv_utf8_downgrade -#define sv_utf8_encode Perl_sv_utf8_encode -#define sv_utf8_decode Perl_sv_utf8_decode -#define sv_force_normal_flags Perl_sv_force_normal_flags -#define tmps_grow Perl_tmps_grow -#define sv_rvweaken Perl_sv_rvweaken -#ifdef PERL_CORE -#define magic_killbackrefs Perl_magic_killbackrefs -#endif -#define newANONATTRSUB Perl_newANONATTRSUB -#define newATTRSUB Perl_newATTRSUB -#ifdef PERL_MAD -#define newMYSUB Perl_newMYSUB -#else -#define newMYSUB Perl_newMYSUB -#endif -#ifdef PERL_CORE -#define my_attrs Perl_my_attrs -#endif -#if defined(USE_ITHREADS) -#define cx_dup Perl_cx_dup -#define si_dup Perl_si_dup -#define ss_dup Perl_ss_dup -#define any_dup Perl_any_dup -#define he_dup Perl_he_dup -#define hek_dup Perl_hek_dup -#define re_dup_guts Perl_re_dup_guts -#define fp_dup Perl_fp_dup -#define dirp_dup Perl_dirp_dup -#define gp_dup Perl_gp_dup -#define mg_dup Perl_mg_dup -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define sv_dup_inc_multiple S_sv_dup_inc_multiple -#endif -#endif -#define sv_dup Perl_sv_dup -#define rvpv_dup Perl_rvpv_dup -#define parser_dup Perl_parser_dup -#endif -#define ptr_table_new Perl_ptr_table_new -#define ptr_table_fetch Perl_ptr_table_fetch -#define ptr_table_store Perl_ptr_table_store -#define ptr_table_split Perl_ptr_table_split -#define ptr_table_clear Perl_ptr_table_clear -#define ptr_table_free Perl_ptr_table_free -#if defined(USE_ITHREADS) -# if defined(HAVE_INTERP_INTERN) -#define sys_intern_dup Perl_sys_intern_dup -# endif -#endif -#if defined(HAVE_INTERP_INTERN) -#define sys_intern_clear Perl_sys_intern_clear -#define sys_intern_init Perl_sys_intern_init -#endif -#define custom_op_name Perl_custom_op_name -#define custom_op_desc Perl_custom_op_desc -#define sv_nosharing Perl_sv_nosharing -#define sv_destroyable Perl_sv_destroyable -#ifdef NO_MATHOMS -#else -#define sv_nounlocking Perl_sv_nounlocking -#endif -#define nothreadhook Perl_nothreadhook -#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define do_trans_simple S_do_trans_simple -#define do_trans_count S_do_trans_count -#define do_trans_complex S_do_trans_complex -#define do_trans_simple_utf8 S_do_trans_simple_utf8 -#define do_trans_count_utf8 S_do_trans_count_utf8 -#define do_trans_complex_utf8 S_do_trans_complex_utf8 -#endif -#endif -#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define gv_init_sv S_gv_init_sv -#define gv_get_super_pkg S_gv_get_super_pkg -#define require_tie_mod S_require_tie_mod -#endif -#endif -#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define hsplit S_hsplit -#define hfreeentries S_hfreeentries -#define anonymise_cv S_anonymise_cv -#define new_he S_new_he -#define save_hek_flags S_save_hek_flags -#define hv_magic_check S_hv_magic_check -#define unshare_hek_or_pvn S_unshare_hek_or_pvn -#define share_hek_flags S_share_hek_flags -#define hv_notallowed S_hv_notallowed -#define hv_auxinit S_hv_auxinit -#define hv_delete_common S_hv_delete_common -#define clear_placeholders S_clear_placeholders -#define refcounted_he_value S_refcounted_he_value -#endif -#endif -#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define save_magic S_save_magic -#define magic_methpack S_magic_methpack -#define magic_methcall S_magic_methcall -#define restore_magic S_restore_magic -#define unwind_handler_stack S_unwind_handler_stack -#endif -#endif -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define ck_anoncode Perl_ck_anoncode -#define ck_bitop Perl_ck_bitop -#define ck_concat Perl_ck_concat -#define ck_defined Perl_ck_defined -#define ck_delete Perl_ck_delete -#define ck_die Perl_ck_die -#define ck_eof Perl_ck_eof -#define ck_eval Perl_ck_eval -#define ck_exec Perl_ck_exec -#define ck_exists Perl_ck_exists -#define ck_exit Perl_ck_exit -#define ck_ftst Perl_ck_ftst -#define ck_fun Perl_ck_fun -#define ck_glob Perl_ck_glob -#define ck_grep Perl_ck_grep -#define ck_index Perl_ck_index -#define ck_join Perl_ck_join -#define ck_lfun Perl_ck_lfun -#define ck_listiob Perl_ck_listiob -#define ck_match Perl_ck_match -#define ck_method Perl_ck_method -#define ck_null Perl_ck_null -#define ck_open Perl_ck_open -#define ck_readline Perl_ck_readline -#define ck_repeat Perl_ck_repeat -#define ck_require Perl_ck_require -#define ck_return Perl_ck_return -#define ck_rfun Perl_ck_rfun -#define ck_rvconst Perl_ck_rvconst -#define ck_sassign Perl_ck_sassign -#define ck_select Perl_ck_select -#define ck_shift Perl_ck_shift -#define ck_sort Perl_ck_sort -#define ck_spair Perl_ck_spair -#define ck_split Perl_ck_split -#define ck_subr Perl_ck_subr -#define ck_substr Perl_ck_substr -#define ck_svconst Perl_ck_svconst -#define ck_trunc Perl_ck_trunc -#define ck_unpack Perl_ck_unpack -#define ck_each Perl_ck_each -#define is_handle_constructor S_is_handle_constructor -#define is_list_assignment S_is_list_assignment -#endif -# ifdef USE_ITHREADS -# else -# endif -#ifdef PERL_CORE -#define find_and_forget_pmops S_find_and_forget_pmops -#define cop_free S_cop_free -#define modkids S_modkids -#define scalarboolean S_scalarboolean -#define newDEFSVOP S_newDEFSVOP -#define search_const S_search_const -#define new_logop S_new_logop -#define simplify_sort S_simplify_sort -#define gv_ename S_gv_ename -#define scalar_mod_type S_scalar_mod_type -#define my_kid S_my_kid -#define dup_attrlist S_dup_attrlist -#define apply_attrs S_apply_attrs -#define apply_attrs_my S_apply_attrs_my -#define bad_type S_bad_type -#define no_bareword_allowed S_no_bareword_allowed -#define no_fh_allowed S_no_fh_allowed -#define too_few_arguments S_too_few_arguments -#define too_many_arguments S_too_many_arguments -#define looks_like_bool S_looks_like_bool -#define newGIVWHENOP S_newGIVWHENOP -#define ref_array_or_hash S_ref_array_or_hash -#define process_special_blocks S_process_special_blocks -#endif -#endif -#if defined(PL_OP_SLAB_ALLOC) -#define Slab_Alloc Perl_Slab_Alloc -#define Slab_Free Perl_Slab_Free -# if defined(PERL_DEBUG_READONLY_OPS) -# if defined(PERL_IN_OP_C) -#ifdef PERL_CORE -#define Slab_to_rw S_Slab_to_rw -#endif -# endif -# endif -#endif -#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define find_beginning S_find_beginning -#define forbid_setid S_forbid_setid -#define incpush S_incpush -#define incpush_use_sep S_incpush_use_sep -#define init_interp S_init_interp -#define init_ids S_init_ids -#define init_main_stash S_init_main_stash -#define init_perllib S_init_perllib -#define init_postdump_symbols S_init_postdump_symbols -#define init_predump_symbols S_init_predump_symbols -#define my_exit_jump S_my_exit_jump -#define nuke_stacks S_nuke_stacks -#define open_script S_open_script -#define usage S_usage -#endif -#ifndef SETUID_SCRIPTS_ARE_SECURE_NOW -#endif -#ifdef PERL_CORE -#define parse_body S_parse_body -#define run_body S_run_body -#define incpush_if_exists S_incpush_if_exists -#endif -#endif -#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define do_delete_local S_do_delete_local -#define refto S_refto -#endif -#endif -#if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) -#endif -#if defined(PERL_IN_PP_PACK_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define unpack_rec S_unpack_rec -#define pack_rec S_pack_rec -#define mul128 S_mul128 -#define measure_struct S_measure_struct -#define next_symbol S_next_symbol -#define is_an_int S_is_an_int -#define div128 S_div128 -#define group_end S_group_end -#define get_num S_get_num -#define need_utf8 S_need_utf8 -#define first_symbol S_first_symbol -#define sv_exp_grow S_sv_exp_grow -#define bytes_to_uni S_bytes_to_uni -#endif -#endif -#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define docatch S_docatch -#define dofindlabel S_dofindlabel -#define doparseform S_doparseform -#define num_overflow S_num_overflow -#define dopoptoeval S_dopoptoeval -#define dopoptogiven S_dopoptogiven -#define dopoptolabel S_dopoptolabel -#define dopoptoloop S_dopoptoloop -#define dopoptosub_at S_dopoptosub_at -#define dopoptowhen S_dopoptowhen -#define save_lines S_save_lines -#define doeval S_doeval -#define check_type_and_open S_check_type_and_open -#endif -#ifndef PERL_DISABLE_PMC -#ifdef PERL_CORE -#define doopen_pm S_doopen_pm -#endif -#endif -#ifdef PERL_CORE -#define path_is_absolute S_path_is_absolute -#define run_user_filter S_run_user_filter -#define make_matcher S_make_matcher -#define matcher_matches_sv S_matcher_matches_sv -#define destroy_matcher S_destroy_matcher -#define do_smartmatch S_do_smartmatch -#endif -#endif -#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define do_oddball S_do_oddball -#define method_common S_method_common -#endif -#endif -#if defined(PERL_IN_PP_SORT_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define sv_ncmp S_sv_ncmp -#define sv_i_ncmp S_sv_i_ncmp -#define amagic_ncmp S_amagic_ncmp -#define amagic_i_ncmp S_amagic_i_ncmp -#define amagic_cmp S_amagic_cmp -#define amagic_cmp_locale S_amagic_cmp_locale -#define sortcv S_sortcv -#define sortcv_xsub S_sortcv_xsub -#define sortcv_stacked S_sortcv_stacked -#define qsortsvu S_qsortsvu -#endif -#endif -#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define doform S_doform -#endif -# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) -#ifdef PERL_CORE -#define dooneliner S_dooneliner -#endif -# endif -#ifdef PERL_CORE -#define space_join_names_mortal S_space_join_names_mortal -#endif -#endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) -#if defined(PERL_CORE) || defined(PERL_EXT) -#define reg S_reg -#define reganode S_reganode -#define regatom S_regatom -#define regbranch S_regbranch -#define reguni S_reguni -#define regclass S_regclass -#define reg_node S_reg_node -#define reg_recode S_reg_recode -#define regpiece S_regpiece -#define reg_namedseq S_reg_namedseq -#define reginsert S_reginsert -#define regtail S_regtail -#define reg_scan_name S_reg_scan_name -#define join_exact S_join_exact -#define regwhite S_regwhite -#define nextchar S_nextchar -#define reg_skipcomment S_reg_skipcomment -#define scan_commit S_scan_commit -#define cl_anything S_cl_anything -#define cl_is_anything S_cl_is_anything -#define cl_init S_cl_init -#define cl_init_zero S_cl_init_zero -#define cl_and S_cl_and -#define cl_or S_cl_or -#define study_chunk S_study_chunk -#define add_data S_add_data -#endif -#ifdef PERL_CORE -#define re_croak2 S_re_croak2 -#endif -#if defined(PERL_CORE) || defined(PERL_EXT) -#define regpposixcc S_regpposixcc -#define checkposixcc S_checkposixcc -#define make_trie S_make_trie -#define make_trie_failtable S_make_trie_failtable -#endif -# ifdef DEBUGGING -#if defined(PERL_CORE) || defined(PERL_EXT) -#define regdump_extflags S_regdump_extflags -#define dumpuntil S_dumpuntil -#define put_byte S_put_byte -#define dump_trie S_dump_trie -#define dump_trie_interim_list S_dump_trie_interim_list -#define dump_trie_interim_table S_dump_trie_interim_table -#define regtail_study S_regtail_study -#endif -# endif -#endif -#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) -#if defined(PERL_CORE) || defined(PERL_EXT) -#define regmatch S_regmatch -#define regrepeat S_regrepeat -#define regtry S_regtry -#define reginclass S_reginclass -#define regcppush S_regcppush -#define regcppop S_regcppop -#define reghop3 S_reghop3 -#endif -#ifdef XXX_dmq -#if defined(PERL_CORE) || defined(PERL_EXT) -#define reghop4 S_reghop4 -#endif -#endif -#if defined(PERL_CORE) || defined(PERL_EXT) -#define reghopmaybe3 S_reghopmaybe3 -#define find_byclass S_find_byclass -#define to_utf8_substr S_to_utf8_substr -#define to_byte_substr S_to_byte_substr -#define reg_check_named_buff_matched S_reg_check_named_buff_matched -#endif -# ifdef DEBUGGING -#if defined(PERL_CORE) || defined(PERL_EXT) -#define dump_exec_pos S_dump_exec_pos -#define debug_start_match S_debug_start_match -#endif -# endif -#endif -#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define deb_curcv S_deb_curcv -#define debprof S_debprof -#define sequence S_sequence -#define sequence_tail S_sequence_tail -#define sequence_num S_sequence_num -#define pm_description S_pm_description -#endif -#endif -#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define save_scalar_at S_save_scalar_at -#endif -#endif -#if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) -#endif -#if defined(PERL_IN_HV_C) || defined(PERL_IN_MG_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -#endif -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define uiv_2buf S_uiv_2buf -#define sv_unglob S_sv_unglob -#define not_a_number S_not_a_number -#define visit S_visit -#define sv_del_backref S_sv_del_backref -#define varname S_varname -#endif -# ifdef DEBUGGING -#ifdef PERL_CORE -#define del_sv S_del_sv -#endif -# endif -# if !defined(NV_PRESERVES_UV) -# ifdef DEBUGGING -#ifdef PERL_CORE -#define sv_2iuv_non_preserve S_sv_2iuv_non_preserve -#endif -# else -#ifdef PERL_CORE -#define sv_2iuv_non_preserve S_sv_2iuv_non_preserve -#endif -# endif -# endif -#ifdef PERL_CORE -#define expect_number S_expect_number -#endif -#ifdef PERL_CORE -#define sv_pos_u2b_forwards S_sv_pos_u2b_forwards -#define sv_pos_u2b_midway S_sv_pos_u2b_midway -#define sv_pos_u2b_cached S_sv_pos_u2b_cached -#define utf8_mg_pos_cache_update S_utf8_mg_pos_cache_update -#define sv_pos_b2u_midway S_sv_pos_b2u_midway -#define F0convert S_F0convert -#endif -# if defined(PERL_OLD_COPY_ON_WRITE) -#ifdef PERL_CORE -#define sv_release_COW S_sv_release_COW -#endif -# endif -#ifdef PERL_CORE -#define more_sv S_more_sv -#define more_bodies S_more_bodies -#define sv_2iuv_common S_sv_2iuv_common -#define glob_assign_glob S_glob_assign_glob -#define glob_assign_ref S_glob_assign_ref -#define ptr_table_find S_ptr_table_find -#endif -#endif -#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define check_uni S_check_uni -#define force_next S_force_next -#define force_version S_force_version -#define force_strict_version S_force_strict_version -#define force_word S_force_word -#define tokeq S_tokeq -#define readpipe_override S_readpipe_override -#define scan_const S_scan_const -#define scan_formline S_scan_formline -#define scan_heredoc S_scan_heredoc -#define scan_ident S_scan_ident -#define scan_inputsymbol S_scan_inputsymbol -#define scan_pat S_scan_pat -#define scan_str S_scan_str -#define scan_subst S_scan_subst -#define scan_trans S_scan_trans -#define scan_word S_scan_word -#define update_debugger_info S_update_debugger_info -#define skipspace S_skipspace -#define swallow_bom S_swallow_bom -#endif -#ifndef PERL_NO_UTF16_FILTER -#ifdef PERL_CORE -#define utf16_textfilter S_utf16_textfilter -#define add_utf16_textfilter S_add_utf16_textfilter -#endif -#endif -#ifdef PERL_CORE -#define checkcomma S_checkcomma -#define feature_is_enabled S_feature_is_enabled -#define force_ident S_force_ident -#define incline S_incline -#define intuit_method S_intuit_method -#define intuit_more S_intuit_more -#define lop S_lop -#define missingterm S_missingterm -#define no_op S_no_op -#define sublex_done S_sublex_done -#define sublex_push S_sublex_push -#define sublex_start S_sublex_start -#define filter_gets S_filter_gets -#define find_in_my_stash S_find_in_my_stash -#define tokenize_use S_tokenize_use -#endif -#ifdef PERL_CORE -#define deprecate_commaless_var_list S_deprecate_commaless_var_list -#define ao S_ao -#endif -# if defined(PERL_CR_FILTER) -#ifdef PERL_CORE -#define cr_textfilter S_cr_textfilter -#define strip_return S_strip_return -#endif -# endif -# if defined(DEBUGGING) -#ifdef PERL_CORE -#define tokereport S_tokereport -#define printbuf S_printbuf -#endif -# endif -#endif -#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define isa_lookup S_isa_lookup -#endif -#endif -#if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT) -#if defined(USE_LOCALE_NUMERIC) || defined(USE_LOCALE_COLLATE) -#ifdef PERL_CORE -#define stdize_locale S_stdize_locale -#endif -#endif -#endif -#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define closest_cop S_closest_cop -#define mess_alloc S_mess_alloc -#define vdie_croak_common S_vdie_croak_common -#define vdie_common S_vdie_common -#define write_no_mem S_write_no_mem -#endif -#if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL) -#ifdef PERL_CORE -#define mem_log_common S_mem_log_common -#endif -#endif -#endif -#if defined(PERL_IN_NUMERIC_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define mulexp10 S_mulexp10 -#endif -#endif -#if defined(PERL_IN_UTF8_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define is_utf8_char_slow S_is_utf8_char_slow -#define is_utf8_common S_is_utf8_common -#define swash_get S_swash_get -#endif -#endif -#define sv_setsv_flags Perl_sv_setsv_flags -#define sv_catpvn_flags Perl_sv_catpvn_flags -#define sv_catsv_flags Perl_sv_catsv_flags -#define sv_utf8_upgrade_flags_grow Perl_sv_utf8_upgrade_flags_grow -#define sv_pvn_force_flags Perl_sv_pvn_force_flags -#define sv_copypv Perl_sv_copypv -#define my_atof2 Perl_my_atof2 -#define my_socketpair Perl_my_socketpair -#define my_dirfd Perl_my_dirfd -#ifdef PERL_OLD_COPY_ON_WRITE -#if defined(PERL_CORE) || defined(PERL_EXT) -#define sv_setsv_cow Perl_sv_setsv_cow -#endif -#endif -#if defined(USE_PERLIO) && !defined(USE_SFIO) -#define PerlIO_close Perl_PerlIO_close -#define PerlIO_fill Perl_PerlIO_fill -#define PerlIO_fileno Perl_PerlIO_fileno -#define PerlIO_eof Perl_PerlIO_eof -#define PerlIO_error Perl_PerlIO_error -#define PerlIO_flush Perl_PerlIO_flush -#define PerlIO_clearerr Perl_PerlIO_clearerr -#define PerlIO_set_cnt Perl_PerlIO_set_cnt -#define PerlIO_set_ptrcnt Perl_PerlIO_set_ptrcnt -#define PerlIO_setlinebuf Perl_PerlIO_setlinebuf -#define PerlIO_read Perl_PerlIO_read -#define PerlIO_write Perl_PerlIO_write -#define PerlIO_unread Perl_PerlIO_unread -#define PerlIO_tell Perl_PerlIO_tell -#define PerlIO_seek Perl_PerlIO_seek -#define PerlIO_get_base Perl_PerlIO_get_base -#define PerlIO_get_ptr Perl_PerlIO_get_ptr -#define PerlIO_get_bufsiz Perl_PerlIO_get_bufsiz -#define PerlIO_get_cnt Perl_PerlIO_get_cnt -#define PerlIO_stdin Perl_PerlIO_stdin -#define PerlIO_stdout Perl_PerlIO_stdout -#define PerlIO_stderr Perl_PerlIO_stderr -#endif /* PERLIO_LAYERS */ -#ifdef PERL_CORE -#define deb_stack_all Perl_deb_stack_all -#endif -#if defined(PERL_IN_DEB_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define deb_stack_n S_deb_stack_n -#endif -#endif -#ifdef PERL_CORE -#define pad_new Perl_pad_new -#define pad_undef Perl_pad_undef -#define pad_add_name Perl_pad_add_name -#define pad_add_anon Perl_pad_add_anon -#endif -#if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define pad_check_dup S_pad_check_dup -#endif -#endif -#ifdef DEBUGGING -#ifdef PERL_CORE -#define pad_setsv Perl_pad_setsv -#endif -#endif -#ifdef PERL_CORE -#define pad_block_start Perl_pad_block_start -#define pad_tidy Perl_pad_tidy -#define do_dump_pad Perl_do_dump_pad -#define pad_fixup_inner_anons Perl_pad_fixup_inner_anons -#endif -#ifdef PERL_CORE -#define pad_push Perl_pad_push -#define pad_compname_type Perl_pad_compname_type -#endif -#if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define pad_findlex S_pad_findlex -#define pad_add_name_sv S_pad_add_name_sv -#endif -# if defined(DEBUGGING) -#ifdef PERL_CORE -#define cv_dump S_cv_dump -#endif -# endif -#endif -#define find_runcv Perl_find_runcv -#ifdef PERL_CORE -#define free_tied_hv_pool Perl_free_tied_hv_pool -#endif -#if defined(DEBUGGING) -#ifdef PERL_CORE -#define get_debug_opts Perl_get_debug_opts -#endif -#endif -#define save_set_svflags Perl_save_set_svflags -#ifdef DEBUGGING -#endif -#define hv_scalar Perl_hv_scalar -#define hv_name_set Perl_hv_name_set -#if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -#endif -#define hv_clear_placeholders Perl_hv_clear_placeholders -#ifdef PERL_CORE -#define magic_scalarpack Perl_magic_scalarpack -#endif -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define find_hash_subscript S_find_hash_subscript -#define find_array_subscript S_find_array_subscript -#define find_uninit_var S_find_uninit_var -#endif -#endif -#ifdef PERL_NEED_MY_HTOLE16 -#ifdef PERL_CORE -#define my_htole16 Perl_my_htole16 -#endif -#endif -#ifdef PERL_NEED_MY_LETOH16 -#ifdef PERL_CORE -#define my_letoh16 Perl_my_letoh16 -#endif -#endif -#ifdef PERL_NEED_MY_HTOBE16 -#ifdef PERL_CORE -#define my_htobe16 Perl_my_htobe16 -#endif -#endif -#ifdef PERL_NEED_MY_BETOH16 -#ifdef PERL_CORE -#define my_betoh16 Perl_my_betoh16 -#endif -#endif -#ifdef PERL_NEED_MY_HTOLE32 -#ifdef PERL_CORE -#define my_htole32 Perl_my_htole32 -#endif -#endif -#ifdef PERL_NEED_MY_LETOH32 -#ifdef PERL_CORE -#define my_letoh32 Perl_my_letoh32 -#endif -#endif -#ifdef PERL_NEED_MY_HTOBE32 -#ifdef PERL_CORE -#define my_htobe32 Perl_my_htobe32 -#endif -#endif -#ifdef PERL_NEED_MY_BETOH32 -#ifdef PERL_CORE -#define my_betoh32 Perl_my_betoh32 -#endif -#endif -#ifdef PERL_NEED_MY_HTOLE64 -#ifdef PERL_CORE -#define my_htole64 Perl_my_htole64 -#endif -#endif -#ifdef PERL_NEED_MY_LETOH64 -#ifdef PERL_CORE -#define my_letoh64 Perl_my_letoh64 -#endif -#endif -#ifdef PERL_NEED_MY_HTOBE64 -#ifdef PERL_CORE -#define my_htobe64 Perl_my_htobe64 -#endif -#endif -#ifdef PERL_NEED_MY_BETOH64 -#ifdef PERL_CORE -#define my_betoh64 Perl_my_betoh64 -#endif -#endif -#ifdef PERL_NEED_MY_HTOLES -#ifdef PERL_CORE -#define my_htoles Perl_my_htoles -#endif -#endif -#ifdef PERL_NEED_MY_LETOHS -#ifdef PERL_CORE -#define my_letohs Perl_my_letohs -#endif -#endif -#ifdef PERL_NEED_MY_HTOBES -#ifdef PERL_CORE -#define my_htobes Perl_my_htobes -#endif -#endif -#ifdef PERL_NEED_MY_BETOHS -#ifdef PERL_CORE -#define my_betohs Perl_my_betohs -#endif -#endif -#ifdef PERL_NEED_MY_HTOLEI -#ifdef PERL_CORE -#define my_htolei Perl_my_htolei -#endif -#endif -#ifdef PERL_NEED_MY_LETOHI -#ifdef PERL_CORE -#define my_letohi Perl_my_letohi -#endif -#endif -#ifdef PERL_NEED_MY_HTOBEI -#ifdef PERL_CORE -#define my_htobei Perl_my_htobei -#endif -#endif -#ifdef PERL_NEED_MY_BETOHI -#ifdef PERL_CORE -#define my_betohi Perl_my_betohi -#endif -#endif -#ifdef PERL_NEED_MY_HTOLEL -#ifdef PERL_CORE -#define my_htolel Perl_my_htolel -#endif -#endif -#ifdef PERL_NEED_MY_LETOHL -#ifdef PERL_CORE -#define my_letohl Perl_my_letohl -#endif -#endif -#ifdef PERL_NEED_MY_HTOBEL -#ifdef PERL_CORE -#define my_htobel Perl_my_htobel -#endif -#endif -#ifdef PERL_NEED_MY_BETOHL -#ifdef PERL_CORE -#define my_betohl Perl_my_betohl -#endif -#endif -#ifdef PERL_CORE -#define my_swabn Perl_my_swabn -#endif -#define gv_fetchpvn_flags Perl_gv_fetchpvn_flags -#define gv_fetchsv Perl_gv_fetchsv -#ifdef PERL_CORE -#define is_gv_magical_sv Perl_is_gv_magical_sv -#endif -#define stashpv_hvname_match Perl_stashpv_hvname_match -#ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP -#ifdef PERL_CORE -#define dump_sv_child Perl_dump_sv_child -#endif -#endif -#ifdef PERL_DONT_CREATE_GVSV -#endif -#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define ckwarn_common S_ckwarn_common -#endif -#endif -#ifdef PERL_CORE -#define offer_nice_chunk Perl_offer_nice_chunk -#endif -#ifndef SPRINTF_RETURNS_STRLEN -#endif -#ifdef PERL_CORE -#define my_clearenv Perl_my_clearenv -#endif -#ifdef PERL_IMPLICIT_CONTEXT -#ifdef PERL_GLOBAL_STRUCT_PRIVATE -#else -#endif -#endif -#ifndef HAS_STRLCAT -#endif -#ifndef HAS_STRLCPY -#endif -#ifdef PERL_MAD -#ifdef PERL_CORE -#define pad_peg Perl_pad_peg -#endif -#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define xmldump_attr S_xmldump_attr -#endif -#endif -#ifdef PERL_CORE -#define xmldump_indent Perl_xmldump_indent -#define xmldump_vindent Perl_xmldump_vindent -#define xmldump_all Perl_xmldump_all -#define xmldump_all_perl Perl_xmldump_all_perl -#define xmldump_packsubs Perl_xmldump_packsubs -#define xmldump_packsubs_perl Perl_xmldump_packsubs_perl -#define xmldump_sub Perl_xmldump_sub -#define xmldump_sub_perl Perl_xmldump_sub_perl -#define xmldump_form Perl_xmldump_form -#define xmldump_eval Perl_xmldump_eval -#define sv_catxmlsv Perl_sv_catxmlsv -#define sv_catxmlpvn Perl_sv_catxmlpvn -#define sv_xmlpeek Perl_sv_xmlpeek -#define do_pmop_xmldump Perl_do_pmop_xmldump -#define pmop_xmldump Perl_pmop_xmldump -#define do_op_xmldump Perl_do_op_xmldump -#define op_xmldump Perl_op_xmldump -#endif -#ifdef PERL_CORE -#define newTOKEN Perl_newTOKEN -#define token_free Perl_token_free -#define token_getmad Perl_token_getmad -#define op_getmad_weak Perl_op_getmad_weak -#define op_getmad Perl_op_getmad -#define prepend_madprops Perl_prepend_madprops -#define append_madprops Perl_append_madprops -#define addmad Perl_addmad -#define newMADsv Perl_newMADsv -#define newMADPROP Perl_newMADPROP -#define mad_free Perl_mad_free -#endif -# if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define skipspace0 S_skipspace0 -#define skipspace1 S_skipspace1 -#define skipspace2 S_skipspace2 -#define start_force S_start_force -#define curmad S_curmad -#endif -# endif -#ifdef PERL_CORE -#define madlex Perl_madlex -#define madparse Perl_madparse -#endif -#endif -#if !defined(HAS_SIGNBIT) -#endif -#if defined(USE_ITHREADS) -#ifdef PERL_CORE -#define mro_meta_dup Perl_mro_meta_dup -#endif -#endif -#define mro_get_linear_isa Perl_mro_get_linear_isa -#if defined(PERL_IN_MRO_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define mro_get_linear_isa_dfs S_mro_get_linear_isa_dfs -#endif -#endif -#ifdef PERL_CORE -#define mro_isa_changed_in Perl_mro_isa_changed_in -#endif -#define mro_method_changed_in Perl_mro_method_changed_in -#ifdef PERL_CORE -#define boot_core_mro Perl_boot_core_mro -#endif -#define ck_anoncode Perl_ck_anoncode -#define ck_bitop Perl_ck_bitop -#define ck_chdir Perl_ck_chdir -#define ck_concat Perl_ck_concat -#define ck_defined Perl_ck_defined -#define ck_delete Perl_ck_delete -#define ck_die Perl_ck_die -#define ck_each Perl_ck_each -#define ck_eof Perl_ck_eof -#define ck_eval Perl_ck_eval -#define ck_exec Perl_ck_exec -#define ck_exists Perl_ck_exists -#define ck_exit Perl_ck_exit -#define ck_ftst Perl_ck_ftst -#define ck_fun Perl_ck_fun -#define ck_glob Perl_ck_glob -#define ck_grep Perl_ck_grep -#define ck_index Perl_ck_index -#define ck_join Perl_ck_join -#define ck_lfun Perl_ck_lfun -#define ck_listiob Perl_ck_listiob -#define ck_match Perl_ck_match -#define ck_method Perl_ck_method -#define ck_null Perl_ck_null -#define ck_open Perl_ck_open -#define ck_readline Perl_ck_readline -#define ck_repeat Perl_ck_repeat -#define ck_require Perl_ck_require -#define ck_return Perl_ck_return -#define ck_rfun Perl_ck_rfun -#define ck_rvconst Perl_ck_rvconst -#define ck_sassign Perl_ck_sassign -#define ck_select Perl_ck_select -#define ck_shift Perl_ck_shift -#define ck_smartmatch Perl_ck_smartmatch -#define ck_sort Perl_ck_sort -#define ck_spair Perl_ck_spair -#define ck_split Perl_ck_split -#define ck_subr Perl_ck_subr -#define ck_substr Perl_ck_substr -#define ck_svconst Perl_ck_svconst -#define ck_trunc Perl_ck_trunc -#define ck_unpack Perl_ck_unpack -#define pp_aassign Perl_pp_aassign -#define pp_abs Perl_pp_abs -#define pp_accept Perl_pp_accept -#define pp_add Perl_pp_add -#define pp_aeach Perl_pp_aeach -#define pp_aelem Perl_pp_aelem -#define pp_aelemfast Perl_pp_aelemfast -#define pp_akeys Perl_pp_akeys -#define pp_alarm Perl_pp_alarm -#define pp_and Perl_pp_and -#define pp_andassign Perl_pp_andassign -#define pp_anoncode Perl_pp_anoncode -#define pp_anonhash Perl_pp_anonhash -#define pp_anonlist Perl_pp_anonlist -#define pp_aslice Perl_pp_aslice -#define pp_atan2 Perl_pp_atan2 -#define pp_av2arylen Perl_pp_av2arylen -#define pp_avalues Perl_pp_avalues -#define pp_backtick Perl_pp_backtick -#define pp_bind Perl_pp_bind -#define pp_binmode Perl_pp_binmode -#define pp_bit_and Perl_pp_bit_and -#define pp_bit_or Perl_pp_bit_or -#define pp_bit_xor Perl_pp_bit_xor -#define pp_bless Perl_pp_bless -#define pp_boolkeys Perl_pp_boolkeys -#define pp_break Perl_pp_break -#define pp_caller Perl_pp_caller -#define pp_chdir Perl_pp_chdir -#define pp_chmod Perl_pp_chmod -#define pp_chomp Perl_pp_chomp -#define pp_chop Perl_pp_chop -#define pp_chown Perl_pp_chown -#define pp_chr Perl_pp_chr -#define pp_chroot Perl_pp_chroot -#define pp_close Perl_pp_close -#define pp_closedir Perl_pp_closedir -#define pp_complement Perl_pp_complement -#define pp_concat Perl_pp_concat -#define pp_cond_expr Perl_pp_cond_expr -#define pp_connect Perl_pp_connect -#define pp_const Perl_pp_const -#define pp_continue Perl_pp_continue -#define pp_cos Perl_pp_cos -#define pp_crypt Perl_pp_crypt -#define pp_dbmclose Perl_pp_dbmclose -#define pp_dbmopen Perl_pp_dbmopen -#define pp_dbstate Perl_pp_dbstate -#define pp_defined Perl_pp_defined -#define pp_delete Perl_pp_delete -#define pp_die Perl_pp_die -#define pp_divide Perl_pp_divide -#define pp_dofile Perl_pp_dofile -#define pp_dor Perl_pp_dor -#define pp_dorassign Perl_pp_dorassign -#define pp_dump Perl_pp_dump -#define pp_each Perl_pp_each -#define pp_egrent Perl_pp_egrent -#define pp_ehostent Perl_pp_ehostent -#define pp_enetent Perl_pp_enetent -#define pp_enter Perl_pp_enter -#define pp_entereval Perl_pp_entereval -#define pp_entergiven Perl_pp_entergiven -#define pp_enteriter Perl_pp_enteriter -#define pp_enterloop Perl_pp_enterloop -#define pp_entersub Perl_pp_entersub -#define pp_entertry Perl_pp_entertry -#define pp_enterwhen Perl_pp_enterwhen -#define pp_enterwrite Perl_pp_enterwrite -#define pp_eof Perl_pp_eof -#define pp_eprotoent Perl_pp_eprotoent -#define pp_epwent Perl_pp_epwent -#define pp_eq Perl_pp_eq -#define pp_eservent Perl_pp_eservent -#define pp_exec Perl_pp_exec -#define pp_exists Perl_pp_exists -#define pp_exit Perl_pp_exit -#define pp_exp Perl_pp_exp -#define pp_fcntl Perl_pp_fcntl -#define pp_fileno Perl_pp_fileno -#define pp_flip Perl_pp_flip -#define pp_flock Perl_pp_flock -#define pp_flop Perl_pp_flop -#define pp_fork Perl_pp_fork -#define pp_formline Perl_pp_formline -#define pp_ftatime Perl_pp_ftatime -#define pp_ftbinary Perl_pp_ftbinary -#define pp_ftblk Perl_pp_ftblk -#define pp_ftchr Perl_pp_ftchr -#define pp_ftctime Perl_pp_ftctime -#define pp_ftdir Perl_pp_ftdir -#define pp_fteexec Perl_pp_fteexec -#define pp_fteowned Perl_pp_fteowned -#define pp_fteread Perl_pp_fteread -#define pp_ftewrite Perl_pp_ftewrite -#define pp_ftfile Perl_pp_ftfile -#define pp_ftis Perl_pp_ftis -#define pp_ftlink Perl_pp_ftlink -#define pp_ftmtime Perl_pp_ftmtime -#define pp_ftpipe Perl_pp_ftpipe -#define pp_ftrexec Perl_pp_ftrexec -#define pp_ftrowned Perl_pp_ftrowned -#define pp_ftrread Perl_pp_ftrread -#define pp_ftrwrite Perl_pp_ftrwrite -#define pp_ftsgid Perl_pp_ftsgid -#define pp_ftsize Perl_pp_ftsize -#define pp_ftsock Perl_pp_ftsock -#define pp_ftsuid Perl_pp_ftsuid -#define pp_ftsvtx Perl_pp_ftsvtx -#define pp_fttext Perl_pp_fttext -#define pp_fttty Perl_pp_fttty -#define pp_ftzero Perl_pp_ftzero -#define pp_ge Perl_pp_ge -#define pp_gelem Perl_pp_gelem -#define pp_getc Perl_pp_getc -#define pp_getlogin Perl_pp_getlogin -#define pp_getpeername Perl_pp_getpeername -#define pp_getpgrp Perl_pp_getpgrp -#define pp_getppid Perl_pp_getppid -#define pp_getpriority Perl_pp_getpriority -#define pp_getsockname Perl_pp_getsockname -#define pp_ggrent Perl_pp_ggrent -#define pp_ggrgid Perl_pp_ggrgid -#define pp_ggrnam Perl_pp_ggrnam -#define pp_ghbyaddr Perl_pp_ghbyaddr -#define pp_ghbyname Perl_pp_ghbyname -#define pp_ghostent Perl_pp_ghostent -#define pp_glob Perl_pp_glob -#define pp_gmtime Perl_pp_gmtime -#define pp_gnbyaddr Perl_pp_gnbyaddr -#define pp_gnbyname Perl_pp_gnbyname -#define pp_gnetent Perl_pp_gnetent -#define pp_goto Perl_pp_goto -#define pp_gpbyname Perl_pp_gpbyname -#define pp_gpbynumber Perl_pp_gpbynumber -#define pp_gprotoent Perl_pp_gprotoent -#define pp_gpwent Perl_pp_gpwent -#define pp_gpwnam Perl_pp_gpwnam -#define pp_gpwuid Perl_pp_gpwuid -#define pp_grepstart Perl_pp_grepstart -#define pp_grepwhile Perl_pp_grepwhile -#define pp_gsbyname Perl_pp_gsbyname -#define pp_gsbyport Perl_pp_gsbyport -#define pp_gservent Perl_pp_gservent -#define pp_gsockopt Perl_pp_gsockopt -#define pp_gt Perl_pp_gt -#define pp_gv Perl_pp_gv -#define pp_gvsv Perl_pp_gvsv -#define pp_helem Perl_pp_helem -#define pp_hex Perl_pp_hex -#define pp_hintseval Perl_pp_hintseval -#define pp_hslice Perl_pp_hslice -#define pp_i_add Perl_pp_i_add -#define pp_i_divide Perl_pp_i_divide -#define pp_i_eq Perl_pp_i_eq -#define pp_i_ge Perl_pp_i_ge -#define pp_i_gt Perl_pp_i_gt -#define pp_i_le Perl_pp_i_le -#define pp_i_lt Perl_pp_i_lt -#define pp_i_modulo Perl_pp_i_modulo -#define pp_i_multiply Perl_pp_i_multiply -#define pp_i_ncmp Perl_pp_i_ncmp -#define pp_i_ne Perl_pp_i_ne -#define pp_i_negate Perl_pp_i_negate -#define pp_i_subtract Perl_pp_i_subtract -#define pp_index Perl_pp_index -#define pp_int Perl_pp_int -#define pp_ioctl Perl_pp_ioctl -#define pp_iter Perl_pp_iter -#define pp_join Perl_pp_join -#define pp_keys Perl_pp_keys -#define pp_kill Perl_pp_kill -#define pp_last Perl_pp_last -#define pp_lc Perl_pp_lc -#define pp_lcfirst Perl_pp_lcfirst -#define pp_le Perl_pp_le -#define pp_leave Perl_pp_leave -#define pp_leaveeval Perl_pp_leaveeval -#define pp_leavegiven Perl_pp_leavegiven -#define pp_leaveloop Perl_pp_leaveloop -#define pp_leavesub Perl_pp_leavesub -#define pp_leavesublv Perl_pp_leavesublv -#define pp_leavetry Perl_pp_leavetry -#define pp_leavewhen Perl_pp_leavewhen -#define pp_leavewrite Perl_pp_leavewrite -#define pp_left_shift Perl_pp_left_shift -#define pp_length Perl_pp_length -#define pp_lineseq Perl_pp_lineseq -#define pp_link Perl_pp_link -#define pp_list Perl_pp_list -#define pp_listen Perl_pp_listen -#define pp_localtime Perl_pp_localtime -#define pp_lock Perl_pp_lock -#define pp_log Perl_pp_log -#define pp_lslice Perl_pp_lslice -#define pp_lstat Perl_pp_lstat -#define pp_lt Perl_pp_lt -#define pp_mapstart Perl_pp_mapstart -#define pp_mapwhile Perl_pp_mapwhile -#define pp_match Perl_pp_match -#define pp_method Perl_pp_method -#define pp_method_named Perl_pp_method_named -#define pp_mkdir Perl_pp_mkdir -#define pp_modulo Perl_pp_modulo -#define pp_msgctl Perl_pp_msgctl -#define pp_msgget Perl_pp_msgget -#define pp_msgrcv Perl_pp_msgrcv -#define pp_msgsnd Perl_pp_msgsnd -#define pp_multiply Perl_pp_multiply -#define pp_ncmp Perl_pp_ncmp -#define pp_ne Perl_pp_ne -#define pp_negate Perl_pp_negate -#define pp_next Perl_pp_next -#define pp_nextstate Perl_pp_nextstate -#define pp_not Perl_pp_not -#define pp_null Perl_pp_null -#define pp_oct Perl_pp_oct -#define pp_once Perl_pp_once -#define pp_open Perl_pp_open -#define pp_open_dir Perl_pp_open_dir -#define pp_or Perl_pp_or -#define pp_orassign Perl_pp_orassign -#define pp_ord Perl_pp_ord -#define pp_pack Perl_pp_pack -#define pp_padany Perl_pp_padany -#define pp_padav Perl_pp_padav -#define pp_padhv Perl_pp_padhv -#define pp_padsv Perl_pp_padsv -#define pp_pipe_op Perl_pp_pipe_op -#define pp_pop Perl_pp_pop -#define pp_pos Perl_pp_pos -#define pp_postdec Perl_pp_postdec -#define pp_postinc Perl_pp_postinc -#define pp_pow Perl_pp_pow -#define pp_predec Perl_pp_predec -#define pp_preinc Perl_pp_preinc -#define pp_print Perl_pp_print -#define pp_prototype Perl_pp_prototype -#define pp_prtf Perl_pp_prtf -#define pp_push Perl_pp_push -#define pp_pushmark Perl_pp_pushmark -#define pp_pushre Perl_pp_pushre -#define pp_qr Perl_pp_qr -#define pp_quotemeta Perl_pp_quotemeta -#define pp_rand Perl_pp_rand -#define pp_range Perl_pp_range -#define pp_rcatline Perl_pp_rcatline -#define pp_read Perl_pp_read -#define pp_readdir Perl_pp_readdir -#define pp_readline Perl_pp_readline -#define pp_readlink Perl_pp_readlink -#define pp_recv Perl_pp_recv -#define pp_redo Perl_pp_redo -#define pp_ref Perl_pp_ref -#define pp_refgen Perl_pp_refgen -#define pp_regcmaybe Perl_pp_regcmaybe -#define pp_regcomp Perl_pp_regcomp -#define pp_regcreset Perl_pp_regcreset -#define pp_rename Perl_pp_rename -#define pp_repeat Perl_pp_repeat -#define pp_require Perl_pp_require -#define pp_reset Perl_pp_reset -#define pp_return Perl_pp_return -#define pp_reverse Perl_pp_reverse -#define pp_rewinddir Perl_pp_rewinddir -#define pp_right_shift Perl_pp_right_shift -#define pp_rindex Perl_pp_rindex -#define pp_rmdir Perl_pp_rmdir -#define pp_rv2av Perl_pp_rv2av -#define pp_rv2cv Perl_pp_rv2cv -#define pp_rv2gv Perl_pp_rv2gv -#define pp_rv2hv Perl_pp_rv2hv -#define pp_rv2sv Perl_pp_rv2sv -#define pp_sassign Perl_pp_sassign -#define pp_say Perl_pp_say -#define pp_scalar Perl_pp_scalar -#define pp_schomp Perl_pp_schomp -#define pp_schop Perl_pp_schop -#define pp_scmp Perl_pp_scmp -#define pp_scope Perl_pp_scope -#define pp_seek Perl_pp_seek -#define pp_seekdir Perl_pp_seekdir -#define pp_select Perl_pp_select -#define pp_semctl Perl_pp_semctl -#define pp_semget Perl_pp_semget -#define pp_semop Perl_pp_semop -#define pp_send Perl_pp_send -#define pp_seq Perl_pp_seq -#define pp_setpgrp Perl_pp_setpgrp -#define pp_setpriority Perl_pp_setpriority -#define pp_sge Perl_pp_sge -#define pp_sgrent Perl_pp_sgrent -#define pp_sgt Perl_pp_sgt -#define pp_shift Perl_pp_shift -#define pp_shmctl Perl_pp_shmctl -#define pp_shmget Perl_pp_shmget -#define pp_shmread Perl_pp_shmread -#define pp_shmwrite Perl_pp_shmwrite -#define pp_shostent Perl_pp_shostent -#define pp_shutdown Perl_pp_shutdown -#define pp_sin Perl_pp_sin -#define pp_sle Perl_pp_sle -#define pp_sleep Perl_pp_sleep -#define pp_slt Perl_pp_slt -#define pp_smartmatch Perl_pp_smartmatch -#define pp_sne Perl_pp_sne -#define pp_snetent Perl_pp_snetent -#define pp_socket Perl_pp_socket -#define pp_sockpair Perl_pp_sockpair -#define pp_sort Perl_pp_sort -#define pp_splice Perl_pp_splice -#define pp_split Perl_pp_split -#define pp_sprintf Perl_pp_sprintf -#define pp_sprotoent Perl_pp_sprotoent -#define pp_spwent Perl_pp_spwent -#define pp_sqrt Perl_pp_sqrt -#define pp_srand Perl_pp_srand -#define pp_srefgen Perl_pp_srefgen -#define pp_sselect Perl_pp_sselect -#define pp_sservent Perl_pp_sservent -#define pp_ssockopt Perl_pp_ssockopt -#define pp_stat Perl_pp_stat -#define pp_stringify Perl_pp_stringify -#define pp_stub Perl_pp_stub -#define pp_study Perl_pp_study -#define pp_subst Perl_pp_subst -#define pp_substcont Perl_pp_substcont -#define pp_substr Perl_pp_substr -#define pp_subtract Perl_pp_subtract -#define pp_symlink Perl_pp_symlink -#define pp_syscall Perl_pp_syscall -#define pp_sysopen Perl_pp_sysopen -#define pp_sysread Perl_pp_sysread -#define pp_sysseek Perl_pp_sysseek -#define pp_system Perl_pp_system -#define pp_syswrite Perl_pp_syswrite -#define pp_tell Perl_pp_tell -#define pp_telldir Perl_pp_telldir -#define pp_tie Perl_pp_tie -#define pp_tied Perl_pp_tied -#define pp_time Perl_pp_time -#define pp_tms Perl_pp_tms -#define pp_trans Perl_pp_trans -#define pp_truncate Perl_pp_truncate -#define pp_uc Perl_pp_uc -#define pp_ucfirst Perl_pp_ucfirst -#define pp_umask Perl_pp_umask -#define pp_undef Perl_pp_undef -#define pp_unlink Perl_pp_unlink -#define pp_unpack Perl_pp_unpack -#define pp_unshift Perl_pp_unshift -#define pp_unstack Perl_pp_unstack -#define pp_untie Perl_pp_untie -#define pp_utime Perl_pp_utime -#define pp_values Perl_pp_values -#define pp_vec Perl_pp_vec -#define pp_wait Perl_pp_wait -#define pp_waitpid Perl_pp_waitpid -#define pp_wantarray Perl_pp_wantarray -#define pp_warn Perl_pp_warn -#define pp_xor Perl_pp_xor - -#else /* PERL_IMPLICIT_CONTEXT */ - -#if defined(PERL_IMPLICIT_SYS) -#endif -#define doing_taint Perl_doing_taint -#if defined(USE_ITHREADS) -# if defined(PERL_IMPLICIT_SYS) -# endif -#endif -#if defined(MYMALLOC) -#ifdef PERL_CORE -#define malloced_size Perl_malloced_size -#define malloc_good_size Perl_malloc_good_size -#endif -#endif -#define get_context Perl_get_context -#define set_context Perl_set_context -#if defined(PERL_CORE) || defined(PERL_EXT) -#define regcurly Perl_regcurly -#endif -#define amagic_call(a,b,c,d) Perl_amagic_call(aTHX_ a,b,c,d) #define Gv_AMupdate(a,b) Perl_Gv_AMupdate(aTHX_ a,b) -#define gv_handler(a,b) Perl_gv_handler(aTHX_ a,b) -#ifdef PERL_CORE -#define append_elem(a,b,c) Perl_append_elem(aTHX_ a,b,c) -#define append_list(a,b,c) Perl_append_list(aTHX_ a,b,c) -#define apply(a,b,c) Perl_apply(aTHX_ a,b,c) -#endif +#define _to_uni_fold_flags(a,b,c,d) Perl__to_uni_fold_flags(aTHX_ a,b,c,d) +#define _to_utf8_fold_flags(a,b,c,d) Perl__to_utf8_fold_flags(aTHX_ a,b,c,d) +#define amagic_call(a,b,c,d) Perl_amagic_call(aTHX_ a,b,c,d) +#define amagic_deref_call(a,b) Perl_amagic_deref_call(aTHX_ a,b) #define apply_attrs_string(a,b,c,d) Perl_apply_attrs_string(aTHX_ a,b,c,d) +#define atfork_lock Perl_atfork_lock +#define atfork_unlock Perl_atfork_unlock #define av_clear(a) Perl_av_clear(aTHX_ a) #define av_delete(a,b,c) Perl_av_delete(aTHX_ a,b,c) #define av_exists(a,b) Perl_av_exists(aTHX_ a,b) @@ -2484,207 +44,126 @@ #define av_make(a,b) Perl_av_make(aTHX_ a,b) #define av_pop(a) Perl_av_pop(aTHX_ a) #define av_push(a,b) Perl_av_push(aTHX_ a,b) -#if defined(PERL_CORE) || defined(PERL_EXT) -#define av_reify(a) Perl_av_reify(aTHX_ a) -#endif #define av_shift(a) Perl_av_shift(aTHX_ a) #define av_store(a,b,c) Perl_av_store(aTHX_ a,b,c) #define av_undef(a) Perl_av_undef(aTHX_ a) #define av_unshift(a,b) Perl_av_unshift(aTHX_ a,b) -#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define get_aux_mg(a) S_get_aux_mg(aTHX_ a) -#endif -#endif -#ifdef PERL_CORE -#define bind_match(a,b,c) Perl_bind_match(aTHX_ a,b,c) -#define block_end(a,b) Perl_block_end(aTHX_ a,b) -#endif #define block_gimme() Perl_block_gimme(aTHX) -#ifdef PERL_CORE -#define block_start(a) Perl_block_start(aTHX_ a) -#define boot_core_UNIVERSAL() Perl_boot_core_UNIVERSAL(aTHX) -#define boot_core_PerlIO() Perl_boot_core_PerlIO(aTHX) -#endif +#define bytes_cmp_utf8(a,b,c,d) Perl_bytes_cmp_utf8(aTHX_ a,b,c,d) +#define bytes_from_utf8(a,b,c) Perl_bytes_from_utf8(aTHX_ a,b,c) +#define bytes_to_utf8(a,b) Perl_bytes_to_utf8(aTHX_ a,b) +#define call_argv(a,b,c) Perl_call_argv(aTHX_ a,b,c) +#define call_atexit(a,b) Perl_call_atexit(aTHX_ a,b) #define call_list(a,b) Perl_call_list(aTHX_ a,b) -#ifdef PERL_CORE -#define cando(a,b,c) Perl_cando(aTHX_ a,b,c) -#endif -#define cast_ulong(a) Perl_cast_ulong(aTHX_ a) +#define call_method(a,b) Perl_call_method(aTHX_ a,b) +#define call_pv(a,b) Perl_call_pv(aTHX_ a,b) +#define call_sv(a,b) Perl_call_sv(aTHX_ a,b) +#define caller_cx(a,b) Perl_caller_cx(aTHX_ a,b) #define cast_i32(a) Perl_cast_i32(aTHX_ a) #define cast_iv(a) Perl_cast_iv(aTHX_ a) +#define cast_ulong(a) Perl_cast_ulong(aTHX_ a) #define cast_uv(a) Perl_cast_uv(aTHX_ a) -#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) -#define my_chsize(a,b) Perl_my_chsize(aTHX_ a,b) +#define ck_entersub_args_list(a) Perl_ck_entersub_args_list(aTHX_ a) +#define ck_entersub_args_proto(a,b,c) Perl_ck_entersub_args_proto(aTHX_ a,b,c) +#define ck_entersub_args_proto_or_list(a,b,c) Perl_ck_entersub_args_proto_or_list(aTHX_ a,b,c) +#ifndef PERL_IMPLICIT_CONTEXT +#define ck_warner Perl_ck_warner +#define ck_warner_d Perl_ck_warner_d #endif -#ifdef PERL_CORE -#define convert(a,b,c) Perl_convert(aTHX_ a,b,c) -#define create_eval_scope(a) Perl_create_eval_scope(aTHX_ a) +#ifndef PERL_IMPLICIT_CONTEXT +#define croak Perl_croak #endif -#define vcroak(a,b) Perl_vcroak(aTHX_ a,b) +#define croak_no_modify() Perl_croak_no_modify(aTHX) +#define croak_sv(a) Perl_croak_sv(aTHX_ a) #define croak_xs_usage(a,b) Perl_croak_xs_usage(aTHX_ a,b) -#if defined(PERL_IMPLICIT_CONTEXT) -#endif -#ifdef PERL_CORE -#define cv_ckproto_len(a,b,c,d) Perl_cv_ckproto_len(aTHX_ a,b,c,d) -#define cv_clone(a) Perl_cv_clone(aTHX_ a) -#endif -#define gv_const_sv(a) Perl_gv_const_sv(aTHX_ a) +#define custom_op_desc(a) Perl_custom_op_desc(aTHX_ a) +#define custom_op_name(a) Perl_custom_op_name(aTHX_ a) #define cv_const_sv(a) Perl_cv_const_sv(aTHX_ a) -#ifdef PERL_CORE -#define op_const_sv(a,b) Perl_op_const_sv(aTHX_ a,b) -#endif +#define cv_get_call_checker(a,b,c) Perl_cv_get_call_checker(aTHX_ a,b,c) +#define cv_set_call_checker(a,b,c) Perl_cv_set_call_checker(aTHX_ a,b,c) #define cv_undef(a) Perl_cv_undef(aTHX_ a) #define cx_dump(a) Perl_cx_dump(aTHX_ a) -#define filter_add(a,b) Perl_filter_add(aTHX_ a,b) -#define filter_del(a) Perl_filter_del(aTHX_ a) -#define filter_read(a,b,c) Perl_filter_read(aTHX_ a,b,c) -#define get_op_descs() Perl_get_op_descs(aTHX) -#define get_op_names() Perl_get_op_names(aTHX) -#ifdef PERL_CORE -#define get_no_modify() Perl_get_no_modify(aTHX) -#define get_opargs() Perl_get_opargs(aTHX) -#endif -#define get_ppaddr() Perl_get_ppaddr(aTHX) #define cxinc() Perl_cxinc(aTHX) -#define vdeb(a,b) Perl_vdeb(aTHX_ a,b) -#define debprofdump() Perl_debprofdump(aTHX) +#ifndef PERL_IMPLICIT_CONTEXT +#define deb Perl_deb +#endif #define debop(a) Perl_debop(aTHX_ a) +#define debprofdump() Perl_debprofdump(aTHX) #define debstack() Perl_debstack(aTHX) #define debstackptrs() Perl_debstackptrs(aTHX) #define delimcpy Perl_delimcpy -#ifdef PERL_CORE -#define delete_eval_scope() Perl_delete_eval_scope(aTHX) -#endif -#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define vdie(a,b) S_vdie(aTHX_ a,b) -#endif -#endif -#ifdef PERL_CORE -#define die_where(a) Perl_die_where(aTHX_ a) -#endif -#define dounwind(a) Perl_dounwind(aTHX_ a) -#ifdef PERL_CORE -#define do_aexec5(a,b,c,d,e) Perl_do_aexec5(aTHX_ a,b,c,d,e) +#define despatch_signals() Perl_despatch_signals(aTHX) +#ifndef PERL_IMPLICIT_CONTEXT +#define die Perl_die #endif +#define die_sv(a) Perl_die_sv(aTHX_ a) #define do_binmode(a,b,c) Perl_do_binmode(aTHX_ a,b,c) -#ifdef PERL_CORE -#define do_chop(a,b) Perl_do_chop(aTHX_ a,b) -#endif #define do_close(a,b) Perl_do_close(aTHX_ a,b) -#ifdef PERL_CORE -#define do_eof(a) Perl_do_eof(aTHX_ a) -#endif -#ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION -#ifdef PERL_CORE -#endif -#else -#ifdef PERL_CORE -#define do_exec(a) Perl_do_exec(aTHX_ a) -#endif -#endif -#if defined(WIN32) || defined(__SYMBIAN32__) || defined(VMS) -#define do_aspawn(a,b,c) Perl_do_aspawn(aTHX_ a,b,c) -#define do_spawn(a) Perl_do_spawn(aTHX_ a) -#define do_spawn_nowait(a) Perl_do_spawn_nowait(aTHX_ a) -#endif -#if !defined(WIN32) -#ifdef PERL_CORE -#define do_exec3(a,b,c) Perl_do_exec3(aTHX_ a,b,c) -#endif -#endif -#ifdef PERL_CORE -#define do_execfree() Perl_do_execfree(aTHX) -#endif -#if defined(PERL_IN_DOIO_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define exec_failed(a,b,c) S_exec_failed(aTHX_ a,b,c) -#endif -#endif -#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) -#ifdef PERL_CORE -#define do_ipcctl(a,b,c) Perl_do_ipcctl(aTHX_ a,b,c) -#define do_ipcget(a,b,c) Perl_do_ipcget(aTHX_ a,b,c) -#define do_msgrcv(a,b) Perl_do_msgrcv(aTHX_ a,b) -#define do_msgsnd(a,b) Perl_do_msgsnd(aTHX_ a,b) -#define do_semop(a,b) Perl_do_semop(aTHX_ a,b) -#define do_shmio(a,b,c) Perl_do_shmio(aTHX_ a,b,c) -#endif -#endif +#define do_gv_dump(a,b,c,d) Perl_do_gv_dump(aTHX_ a,b,c,d) +#define do_gvgv_dump(a,b,c,d) Perl_do_gvgv_dump(aTHX_ a,b,c,d) +#define do_hv_dump(a,b,c,d) Perl_do_hv_dump(aTHX_ a,b,c,d) #define do_join(a,b,c,d) Perl_do_join(aTHX_ a,b,c,d) -#ifdef PERL_CORE -#define do_kv() Perl_do_kv(aTHX) -#endif +#define do_magic_dump(a,b,c,d,e,f,g) Perl_do_magic_dump(aTHX_ a,b,c,d,e,f,g) +#define do_op_dump(a,b,c) Perl_do_op_dump(aTHX_ a,b,c) #define do_open9(a,b,c,d,e,f,g,h,i) Perl_do_open9(aTHX_ a,b,c,d,e,f,g,h,i) #define do_openn(a,b,c,d,e,f,g,h,i) Perl_do_openn(aTHX_ a,b,c,d,e,f,g,h,i) -#ifdef PERL_CORE -#define do_print(a,b) Perl_do_print(aTHX_ a,b) -#define do_readline() Perl_do_readline(aTHX) -#define do_chomp(a) Perl_do_chomp(aTHX_ a) -#define do_seek(a,b,c) Perl_do_seek(aTHX_ a,b,c) -#endif +#define do_pmop_dump(a,b,c) Perl_do_pmop_dump(aTHX_ a,b,c) #define do_sprintf(a,b,c) Perl_do_sprintf(aTHX_ a,b,c) -#ifdef PERL_CORE -#define do_sysseek(a,b,c) Perl_do_sysseek(aTHX_ a,b,c) -#define do_tell(a) Perl_do_tell(aTHX_ a) -#define do_trans(a) Perl_do_trans(aTHX_ a) -#define do_vecget(a,b,c) Perl_do_vecget(aTHX_ a,b,c) -#define do_vecset(a) Perl_do_vecset(aTHX_ a) -#define do_vop(a,b,c,d) Perl_do_vop(aTHX_ a,b,c,d) -#define dofile(a,b) Perl_dofile(aTHX_ a,b) -#endif +#define do_sv_dump(a,b,c,d,e,f,g) Perl_do_sv_dump(aTHX_ a,b,c,d,e,f,g) +#define doing_taint Perl_doing_taint +#define doref(a,b,c) Perl_doref(aTHX_ a,b,c) +#define dounwind(a) Perl_dounwind(aTHX_ a) #define dowantarray() Perl_dowantarray(aTHX) #define dump_all() Perl_dump_all(aTHX) -#ifdef PERL_CORE -#define dump_all_perl(a) Perl_dump_all_perl(aTHX_ a) -#endif #define dump_eval() Perl_dump_eval(aTHX) -#if defined(DUMP_FDS) -#define dump_fds(a) Perl_dump_fds(aTHX_ a) -#endif #define dump_form(a) Perl_dump_form(aTHX_ a) -#define gv_dump(a) Perl_gv_dump(aTHX_ a) -#define op_dump(a) Perl_op_dump(aTHX_ a) -#define pmop_dump(a) Perl_pmop_dump(aTHX_ a) -#define dump_packsubs(a) Perl_dump_packsubs(aTHX_ a) -#ifdef PERL_CORE -#define dump_packsubs_perl(a,b) Perl_dump_packsubs_perl(aTHX_ a,b) +#ifndef PERL_IMPLICIT_CONTEXT +#define dump_indent Perl_dump_indent #endif +#define dump_packsubs(a) Perl_dump_packsubs(aTHX_ a) #define dump_sub(a) Perl_dump_sub(aTHX_ a) -#ifdef PERL_CORE -#define dump_sub_perl(a,b) Perl_dump_sub_perl(aTHX_ a,b) -#endif +#define dump_vindent(a,b,c,d) Perl_dump_vindent(aTHX_ a,b,c,d) +#define eval_pv(a,b) Perl_eval_pv(aTHX_ a,b) +#define eval_sv(a,b) Perl_eval_sv(aTHX_ a,b) #define fbm_compile(a,b) Perl_fbm_compile(aTHX_ a,b) #define fbm_instr(a,b,c,d) Perl_fbm_instr(aTHX_ a,b,c,d) -#ifdef PERL_CORE -#define find_script(a,b,c,d) Perl_find_script(aTHX_ a,b,c,d) -#endif -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define force_list(a) S_force_list(aTHX_ a) -#define fold_constants(a) S_fold_constants(aTHX_ a) -#endif +#define filter_add(a,b) Perl_filter_add(aTHX_ a,b) +#define filter_del(a) Perl_filter_del(aTHX_ a) +#define filter_read(a,b,c) Perl_filter_read(aTHX_ a,b,c) +#define find_runcv(a) Perl_find_runcv(aTHX_ a) +#define find_rundefsv() Perl_find_rundefsv(aTHX) +#define find_rundefsvoffset() Perl_find_rundefsvoffset(aTHX) +#define foldEQ Perl_foldEQ +#define foldEQ_latin1 Perl_foldEQ_latin1 +#define foldEQ_locale Perl_foldEQ_locale +#define foldEQ_utf8_flags(a,b,c,d,e,f,g,h,i) Perl_foldEQ_utf8_flags(aTHX_ a,b,c,d,e,f,g,h,i) +#ifndef PERL_IMPLICIT_CONTEXT +#define form Perl_form #endif -#define vform(a,b) Perl_vform(aTHX_ a,b) #define free_tmps() Perl_free_tmps(aTHX) -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define gen_constant_list(a) S_gen_constant_list(aTHX_ a) -#endif -#endif -#if !defined(HAS_GETENV_LEN) -#ifdef PERL_CORE -#define getenv_len(a,b) Perl_getenv_len(aTHX_ a,b) -#endif -#endif -#ifdef PERL_CORE -#endif +#define get_av(a,b) Perl_get_av(aTHX_ a,b) +#define get_context Perl_get_context +#define get_cv(a,b) Perl_get_cv(aTHX_ a,b) +#define get_cvn_flags(a,b,c) Perl_get_cvn_flags(aTHX_ a,b,c) +#define get_hv(a,b) Perl_get_hv(aTHX_ a,b) +#define get_op_descs() Perl_get_op_descs(aTHX) +#define get_op_names() Perl_get_op_names(aTHX) +#define get_ppaddr() Perl_get_ppaddr(aTHX) +#define get_sv(a,b) Perl_get_sv(aTHX_ a,b) +#define get_vtbl(a) Perl_get_vtbl(aTHX_ a) +#define getcwd_sv(a) Perl_getcwd_sv(aTHX_ a) #define gp_free(a) Perl_gp_free(aTHX_ a) #define gp_ref(a) Perl_gp_ref(aTHX_ a) +#define grok_bin(a,b,c,d) Perl_grok_bin(aTHX_ a,b,c,d) +#define grok_hex(a,b,c,d) Perl_grok_hex(aTHX_ a,b,c,d) +#define grok_number(a,b,c) Perl_grok_number(aTHX_ a,b,c) +#define grok_numeric_radix(a,b) Perl_grok_numeric_radix(aTHX_ a,b) +#define grok_oct(a,b,c,d) Perl_grok_oct(aTHX_ a,b,c,d) #define gv_add_by_type(a,b) Perl_gv_add_by_type(aTHX_ a,b) #define gv_autoload4(a,b,c,d) Perl_gv_autoload4(aTHX_ a,b,c,d) #define gv_check(a) Perl_gv_check(aTHX_ a) +#define gv_const_sv(a) Perl_gv_const_sv(aTHX_ a) +#define gv_dump(a) Perl_gv_dump(aTHX_ a) #define gv_efullname(a,b) Perl_gv_efullname(aTHX_ a,b) #define gv_efullname4(a,b,c,d) Perl_gv_efullname4(aTHX_ a,b,c,d) #define gv_fetchfile(a) Perl_gv_fetchfile(aTHX_ a) @@ -2694,537 +173,276 @@ #define gv_fetchmethod_autoload(a,b,c) Perl_gv_fetchmethod_autoload(aTHX_ a,b,c) #define gv_fetchmethod_flags(a,b,c) Perl_gv_fetchmethod_flags(aTHX_ a,b,c) #define gv_fetchpv(a,b,c) Perl_gv_fetchpv(aTHX_ a,b,c) +#define gv_fetchpvn_flags(a,b,c,d) Perl_gv_fetchpvn_flags(aTHX_ a,b,c,d) +#define gv_fetchsv(a,b,c) Perl_gv_fetchsv(aTHX_ a,b,c) #define gv_fullname(a,b) Perl_gv_fullname(aTHX_ a,b) #define gv_fullname4(a,b,c,d) Perl_gv_fullname4(aTHX_ a,b,c,d) -#ifdef PERL_CORE -#endif +#define gv_handler(a,b) Perl_gv_handler(aTHX_ a,b) #define gv_init(a,b,c,d,e) Perl_gv_init(aTHX_ a,b,c,d,e) #define gv_name_set(a,b,c,d) Perl_gv_name_set(aTHX_ a,b,c,d) -#ifdef PERL_CORE -#define gv_try_downgrade(a) Perl_gv_try_downgrade(aTHX_ a) -#endif #define gv_stashpv(a,b) Perl_gv_stashpv(aTHX_ a,b) #define gv_stashpvn(a,b,c) Perl_gv_stashpvn(aTHX_ a,b,c) #define gv_stashsv(a,b) Perl_gv_stashsv(aTHX_ a,b) #define hv_clear(a) Perl_hv_clear(aTHX_ a) -#ifdef PERL_CORE -#endif -#define hv_delayfree_ent(a,b) Perl_hv_delayfree_ent(aTHX_ a,b) +#define hv_clear_placeholders(a) Perl_hv_clear_placeholders(aTHX_ a) #define hv_common(a,b,c,d,e,f,g,h) Perl_hv_common(aTHX_ a,b,c,d,e,f,g,h) #define hv_common_key_len(a,b,c,d,e,f) Perl_hv_common_key_len(aTHX_ a,b,c,d,e,f) +#define hv_copy_hints_hv(a) Perl_hv_copy_hints_hv(aTHX_ a) +#define hv_delayfree_ent(a,b) Perl_hv_delayfree_ent(aTHX_ a,b) #define hv_free_ent(a,b) Perl_hv_free_ent(aTHX_ a,b) #define hv_iterinit(a) Perl_hv_iterinit(aTHX_ a) #define hv_iterkey(a,b) Perl_hv_iterkey(aTHX_ a,b) #define hv_iterkeysv(a) Perl_hv_iterkeysv(aTHX_ a) -#define hv_iternextsv(a,b,c) Perl_hv_iternextsv(aTHX_ a,b,c) #define hv_iternext_flags(a,b) Perl_hv_iternext_flags(aTHX_ a,b) +#define hv_iternextsv(a,b,c) Perl_hv_iternextsv(aTHX_ a,b,c) #define hv_iterval(a,b) Perl_hv_iterval(aTHX_ a,b) #define hv_ksplit(a,b) Perl_hv_ksplit(aTHX_ a,b) -#if defined(PERL_CORE) || defined(PERL_EXT) -#endif -#ifdef PERL_CORE -#endif -#if defined(PERL_CORE) || defined(PERL_EXT) -#endif -#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define refcounted_he_new_common(a,b,c,d,e,f,g) S_refcounted_he_new_common(aTHX_ a,b,c,d,e,f,g) -#endif -#endif -#define hv_undef(a) Perl_hv_undef(aTHX_ a) -#define ibcmp Perl_ibcmp -#define ibcmp_locale Perl_ibcmp_locale -#define ibcmp_utf8(a,b,c,d,e,f,g,h) Perl_ibcmp_utf8(aTHX_ a,b,c,d,e,f,g,h) -#if defined(PERL_IN_DOIO_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define ingroup(a,b) S_ingroup(aTHX_ a,b) -#endif -#endif -#ifdef PERL_CORE -#define init_argv_symbols(a,b) Perl_init_argv_symbols(aTHX_ a,b) -#define init_debugger() Perl_init_debugger(aTHX) -#endif +#define hv_name_set(a,b,c,d) Perl_hv_name_set(aTHX_ a,b,c,d) +#define hv_scalar(a) Perl_hv_scalar(aTHX_ a) +#define init_i18nl10n(a) Perl_init_i18nl10n(aTHX_ a) +#define init_i18nl14n(a) Perl_init_i18nl14n(aTHX_ a) #define init_stacks() Perl_init_stacks(aTHX) #define init_tm(a) Perl_init_tm(aTHX_ a) -#ifdef PERL_CORE -#define intro_my() Perl_intro_my(aTHX) -#endif #define instr Perl_instr -#ifdef PERL_CORE -#define io_close(a,b) Perl_io_close(aTHX_ a,b) -#define invert(a) Perl_invert(aTHX_ a) -#endif +#define is_ascii_string Perl_is_ascii_string #define is_lvalue_sub() Perl_is_lvalue_sub(aTHX) -#define to_uni_upper_lc(a) Perl_to_uni_upper_lc(aTHX_ a) -#define to_uni_title_lc(a) Perl_to_uni_title_lc(aTHX_ a) -#define to_uni_lower_lc(a) Perl_to_uni_lower_lc(aTHX_ a) #define is_uni_alnum(a) Perl_is_uni_alnum(aTHX_ a) -#define is_uni_idfirst(a) Perl_is_uni_idfirst(aTHX_ a) +#define is_uni_alnum_lc(a) Perl_is_uni_alnum_lc(aTHX_ a) #define is_uni_alpha(a) Perl_is_uni_alpha(aTHX_ a) +#define is_uni_alpha_lc(a) Perl_is_uni_alpha_lc(aTHX_ a) #define is_uni_ascii(a) Perl_is_uni_ascii(aTHX_ a) -#define is_uni_space(a) Perl_is_uni_space(aTHX_ a) +#define is_uni_ascii_lc(a) Perl_is_uni_ascii_lc(aTHX_ a) #define is_uni_cntrl(a) Perl_is_uni_cntrl(aTHX_ a) -#define is_uni_graph(a) Perl_is_uni_graph(aTHX_ a) +#define is_uni_cntrl_lc(a) Perl_is_uni_cntrl_lc(aTHX_ a) #define is_uni_digit(a) Perl_is_uni_digit(aTHX_ a) -#define is_uni_upper(a) Perl_is_uni_upper(aTHX_ a) +#define is_uni_digit_lc(a) Perl_is_uni_digit_lc(aTHX_ a) +#define is_uni_graph(a) Perl_is_uni_graph(aTHX_ a) +#define is_uni_graph_lc(a) Perl_is_uni_graph_lc(aTHX_ a) +#define is_uni_idfirst(a) Perl_is_uni_idfirst(aTHX_ a) +#define is_uni_idfirst_lc(a) Perl_is_uni_idfirst_lc(aTHX_ a) #define is_uni_lower(a) Perl_is_uni_lower(aTHX_ a) +#define is_uni_lower_lc(a) Perl_is_uni_lower_lc(aTHX_ a) #define is_uni_print(a) Perl_is_uni_print(aTHX_ a) +#define is_uni_print_lc(a) Perl_is_uni_print_lc(aTHX_ a) #define is_uni_punct(a) Perl_is_uni_punct(aTHX_ a) -#define is_uni_xdigit(a) Perl_is_uni_xdigit(aTHX_ a) -#define to_uni_upper(a,b,c) Perl_to_uni_upper(aTHX_ a,b,c) -#define to_uni_title(a,b,c) Perl_to_uni_title(aTHX_ a,b,c) -#define to_uni_lower(a,b,c) Perl_to_uni_lower(aTHX_ a,b,c) -#define to_uni_fold(a,b,c) Perl_to_uni_fold(aTHX_ a,b,c) -#define is_uni_alnum_lc(a) Perl_is_uni_alnum_lc(aTHX_ a) -#define is_uni_idfirst_lc(a) Perl_is_uni_idfirst_lc(aTHX_ a) -#define is_uni_alpha_lc(a) Perl_is_uni_alpha_lc(aTHX_ a) -#define is_uni_ascii_lc(a) Perl_is_uni_ascii_lc(aTHX_ a) +#define is_uni_punct_lc(a) Perl_is_uni_punct_lc(aTHX_ a) +#define is_uni_space(a) Perl_is_uni_space(aTHX_ a) #define is_uni_space_lc(a) Perl_is_uni_space_lc(aTHX_ a) -#define is_uni_cntrl_lc(a) Perl_is_uni_cntrl_lc(aTHX_ a) -#define is_uni_graph_lc(a) Perl_is_uni_graph_lc(aTHX_ a) -#define is_uni_digit_lc(a) Perl_is_uni_digit_lc(aTHX_ a) +#define is_uni_upper(a) Perl_is_uni_upper(aTHX_ a) #define is_uni_upper_lc(a) Perl_is_uni_upper_lc(aTHX_ a) -#define is_uni_lower_lc(a) Perl_is_uni_lower_lc(aTHX_ a) -#define is_uni_print_lc(a) Perl_is_uni_print_lc(aTHX_ a) -#define is_uni_punct_lc(a) Perl_is_uni_punct_lc(aTHX_ a) +#define is_uni_xdigit(a) Perl_is_uni_xdigit(aTHX_ a) #define is_uni_xdigit_lc(a) Perl_is_uni_xdigit_lc(aTHX_ a) -#define is_ascii_string Perl_is_ascii_string -#define is_utf8_char Perl_is_utf8_char -#define is_utf8_string Perl_is_utf8_string -#define is_utf8_string_loclen Perl_is_utf8_string_loclen #define is_utf8_alnum(a) Perl_is_utf8_alnum(aTHX_ a) -#define is_utf8_idfirst(a) Perl_is_utf8_idfirst(aTHX_ a) -#define is_utf8_idcont(a) Perl_is_utf8_idcont(aTHX_ a) #define is_utf8_alpha(a) Perl_is_utf8_alpha(aTHX_ a) #define is_utf8_ascii(a) Perl_is_utf8_ascii(aTHX_ a) -#define is_utf8_space(a) Perl_is_utf8_space(aTHX_ a) -#define is_utf8_perl_space(a) Perl_is_utf8_perl_space(aTHX_ a) -#define is_utf8_perl_word(a) Perl_is_utf8_perl_word(aTHX_ a) +#define is_utf8_char Perl_is_utf8_char #define is_utf8_cntrl(a) Perl_is_utf8_cntrl(aTHX_ a) #define is_utf8_digit(a) Perl_is_utf8_digit(aTHX_ a) -#define is_utf8_posix_digit(a) Perl_is_utf8_posix_digit(aTHX_ a) #define is_utf8_graph(a) Perl_is_utf8_graph(aTHX_ a) -#define is_utf8_upper(a) Perl_is_utf8_upper(aTHX_ a) +#define is_utf8_idcont(a) Perl_is_utf8_idcont(aTHX_ a) +#define is_utf8_idfirst(a) Perl_is_utf8_idfirst(aTHX_ a) #define is_utf8_lower(a) Perl_is_utf8_lower(aTHX_ a) +#define is_utf8_mark(a) Perl_is_utf8_mark(aTHX_ a) +#define is_utf8_perl_space(a) Perl_is_utf8_perl_space(aTHX_ a) +#define is_utf8_perl_word(a) Perl_is_utf8_perl_word(aTHX_ a) +#define is_utf8_posix_digit(a) Perl_is_utf8_posix_digit(aTHX_ a) #define is_utf8_print(a) Perl_is_utf8_print(aTHX_ a) #define is_utf8_punct(a) Perl_is_utf8_punct(aTHX_ a) +#define is_utf8_space(a) Perl_is_utf8_space(aTHX_ a) +#define is_utf8_string Perl_is_utf8_string +#define is_utf8_string_loclen Perl_is_utf8_string_loclen +#define is_utf8_upper(a) Perl_is_utf8_upper(aTHX_ a) #define is_utf8_xdigit(a) Perl_is_utf8_xdigit(aTHX_ a) -#define is_utf8_mark(a) Perl_is_utf8_mark(aTHX_ a) -#if defined(PERL_CORE) || defined(PERL_EXT) -#define is_utf8_X_begin(a) Perl_is_utf8_X_begin(aTHX_ a) -#define is_utf8_X_extend(a) Perl_is_utf8_X_extend(aTHX_ a) -#define is_utf8_X_prepend(a) Perl_is_utf8_X_prepend(aTHX_ a) -#define is_utf8_X_non_hangul(a) Perl_is_utf8_X_non_hangul(aTHX_ a) -#define is_utf8_X_L(a) Perl_is_utf8_X_L(aTHX_ a) -#define is_utf8_X_LV(a) Perl_is_utf8_X_LV(aTHX_ a) -#define is_utf8_X_LVT(a) Perl_is_utf8_X_LVT(aTHX_ a) -#define is_utf8_X_LV_LVT_V(a) Perl_is_utf8_X_LV_LVT_V(aTHX_ a) -#define is_utf8_X_T(a) Perl_is_utf8_X_T(aTHX_ a) -#define is_utf8_X_V(a) Perl_is_utf8_X_V(aTHX_ a) -#endif -#ifdef PERL_CORE -#define jmaybe(a) Perl_jmaybe(aTHX_ a) -#define keyword(a,b,c) Perl_keyword(aTHX_ a,b,c) -#endif -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define opt_scalarhv(a) S_opt_scalarhv(aTHX_ a) -#define is_inplace_av(a,b) S_is_inplace_av(aTHX_ a,b) -#endif -#endif +#define is_utf8_xidcont(a) Perl_is_utf8_xidcont(aTHX_ a) +#define is_utf8_xidfirst(a) Perl_is_utf8_xidfirst(aTHX_ a) #define leave_scope(a) Perl_leave_scope(aTHX_ a) -#if defined(PERL_CORE) || defined(PERL_EXT) -#define lex_end() Perl_lex_end(aTHX) -#endif -#ifdef PERL_CORE -#define lex_start(a,b,c) Perl_lex_start(aTHX_ a,b,c) -#endif #define lex_bufutf8() Perl_lex_bufutf8(aTHX) -#define lex_grow_linestr(a) Perl_lex_grow_linestr(aTHX_ a) -#define lex_stuff_pvn(a,b,c) Perl_lex_stuff_pvn(aTHX_ a,b,c) -#define lex_stuff_sv(a,b) Perl_lex_stuff_sv(aTHX_ a,b) -#define lex_unstuff(a) Perl_lex_unstuff(aTHX_ a) -#define lex_read_to(a) Perl_lex_read_to(aTHX_ a) #define lex_discard_to(a) Perl_lex_discard_to(aTHX_ a) +#define lex_grow_linestr(a) Perl_lex_grow_linestr(aTHX_ a) #define lex_next_chunk(a) Perl_lex_next_chunk(aTHX_ a) #define lex_peek_unichar(a) Perl_lex_peek_unichar(aTHX_ a) -#define lex_read_unichar(a) Perl_lex_read_unichar(aTHX_ a) #define lex_read_space(a) Perl_lex_read_space(aTHX_ a) -#define op_null(a) Perl_op_null(aTHX_ a) -#if defined(PERL_CORE) || defined(PERL_EXT) -#define op_clear(a) Perl_op_clear(aTHX_ a) -#endif -#define op_refcnt_lock() Perl_op_refcnt_lock(aTHX) -#define op_refcnt_unlock() Perl_op_refcnt_unlock(aTHX) -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define linklist(a) S_linklist(aTHX_ a) -#define listkids(a) S_listkids(aTHX_ a) -#endif -#endif -#ifdef PERL_CORE -#define list(a) Perl_list(aTHX_ a) -#endif -#define vload_module(a,b,c,d) Perl_vload_module(aTHX_ a,b,c,d) -#ifdef PERL_CORE -#define localize(a,b) Perl_localize(aTHX_ a,b) +#define lex_read_to(a) Perl_lex_read_to(aTHX_ a) +#define lex_read_unichar(a) Perl_lex_read_unichar(aTHX_ a) +#define lex_start(a,b,c) Perl_lex_start(aTHX_ a,b,c) +#define lex_stuff_pv(a,b) Perl_lex_stuff_pv(aTHX_ a,b) +#define lex_stuff_pvn(a,b,c) Perl_lex_stuff_pvn(aTHX_ a,b,c) +#define lex_stuff_sv(a,b) Perl_lex_stuff_sv(aTHX_ a,b) +#define lex_unstuff(a) Perl_lex_unstuff(aTHX_ a) +#ifndef PERL_IMPLICIT_CONTEXT +#define load_module Perl_load_module #endif #define looks_like_number(a) Perl_looks_like_number(aTHX_ a) -#define grok_bin(a,b,c,d) Perl_grok_bin(aTHX_ a,b,c,d) -#define grok_hex(a,b,c,d) Perl_grok_hex(aTHX_ a,b,c,d) -#define grok_number(a,b,c) Perl_grok_number(aTHX_ a,b,c) -#define grok_numeric_radix(a,b) Perl_grok_numeric_radix(aTHX_ a,b) -#define grok_oct(a,b,c,d) Perl_grok_oct(aTHX_ a,b,c,d) -#ifdef PERL_CORE -#define magic_clearenv(a,b) Perl_magic_clearenv(aTHX_ a,b) -#define magic_clear_all_env(a,b) Perl_magic_clear_all_env(aTHX_ a,b) -#define magic_clearhint(a,b) Perl_magic_clearhint(aTHX_ a,b) -#define magic_clearhints(a,b) Perl_magic_clearhints(aTHX_ a,b) -#define magic_clearisa(a,b) Perl_magic_clearisa(aTHX_ a,b) -#define magic_clearpack(a,b) Perl_magic_clearpack(aTHX_ a,b) -#define magic_clearsig(a,b) Perl_magic_clearsig(aTHX_ a,b) -#define magic_existspack(a,b) Perl_magic_existspack(aTHX_ a,b) -#define magic_freeovrld(a,b) Perl_magic_freeovrld(aTHX_ a,b) -#define magic_get(a,b) Perl_magic_get(aTHX_ a,b) -#define magic_getarylen(a,b) Perl_magic_getarylen(aTHX_ a,b) -#define magic_getdefelem(a,b) Perl_magic_getdefelem(aTHX_ a,b) -#define magic_getnkeys(a,b) Perl_magic_getnkeys(aTHX_ a,b) -#define magic_getpack(a,b) Perl_magic_getpack(aTHX_ a,b) -#define magic_getpos(a,b) Perl_magic_getpos(aTHX_ a,b) -#define magic_getsig(a,b) Perl_magic_getsig(aTHX_ a,b) -#define magic_getsubstr(a,b) Perl_magic_getsubstr(aTHX_ a,b) -#define magic_gettaint(a,b) Perl_magic_gettaint(aTHX_ a,b) -#define magic_getuvar(a,b) Perl_magic_getuvar(aTHX_ a,b) -#define magic_getvec(a,b) Perl_magic_getvec(aTHX_ a,b) -#define magic_len(a,b) Perl_magic_len(aTHX_ a,b) -#define magic_nextpack(a,b,c) Perl_magic_nextpack(aTHX_ a,b,c) -#define magic_regdata_cnt(a,b) Perl_magic_regdata_cnt(aTHX_ a,b) -#define magic_regdatum_get(a,b) Perl_magic_regdatum_get(aTHX_ a,b) -#define magic_regdatum_set(a,b) Perl_magic_regdatum_set(aTHX_ a,b) -#define magic_set(a,b) Perl_magic_set(aTHX_ a,b) -#define magic_setamagic(a,b) Perl_magic_setamagic(aTHX_ a,b) -#define magic_setarylen(a,b) Perl_magic_setarylen(aTHX_ a,b) -#define magic_freearylen_p(a,b) Perl_magic_freearylen_p(aTHX_ a,b) -#define magic_setdbline(a,b) Perl_magic_setdbline(aTHX_ a,b) -#define magic_setdefelem(a,b) Perl_magic_setdefelem(aTHX_ a,b) -#define magic_setenv(a,b) Perl_magic_setenv(aTHX_ a,b) -#define magic_sethint(a,b) Perl_magic_sethint(aTHX_ a,b) -#define magic_setisa(a,b) Perl_magic_setisa(aTHX_ a,b) -#define magic_setmglob(a,b) Perl_magic_setmglob(aTHX_ a,b) -#define magic_setnkeys(a,b) Perl_magic_setnkeys(aTHX_ a,b) -#define magic_setpack(a,b) Perl_magic_setpack(aTHX_ a,b) -#define magic_setpos(a,b) Perl_magic_setpos(aTHX_ a,b) -#define magic_setregexp(a,b) Perl_magic_setregexp(aTHX_ a,b) -#define magic_setsig(a,b) Perl_magic_setsig(aTHX_ a,b) -#define magic_setsubstr(a,b) Perl_magic_setsubstr(aTHX_ a,b) -#define magic_settaint(a,b) Perl_magic_settaint(aTHX_ a,b) -#define magic_setuvar(a,b) Perl_magic_setuvar(aTHX_ a,b) -#define magic_setvec(a,b) Perl_magic_setvec(aTHX_ a,b) -#define magic_setutf8(a,b) Perl_magic_setutf8(aTHX_ a,b) -#define magic_set_all_env(a,b) Perl_magic_set_all_env(aTHX_ a,b) -#define magic_sizepack(a,b) Perl_magic_sizepack(aTHX_ a,b) -#define magic_wipepack(a,b) Perl_magic_wipepack(aTHX_ a,b) -#endif +#define magic_dump(a) Perl_magic_dump(aTHX_ a) #define markstack_grow() Perl_markstack_grow(aTHX) -#if defined(USE_LOCALE_COLLATE) -#ifdef PERL_CORE -#define magic_setcollxfrm(a,b) Perl_magic_setcollxfrm(aTHX_ a,b) -#define mem_collxfrm(a,b,c) Perl_mem_collxfrm(aTHX_ a,b,c) -#endif -#endif -#define vmess(a,b) Perl_vmess(aTHX_ a,b) -#if defined(PERL_CORE) || defined(PERL_EXT) -#define qerror(a) Perl_qerror(aTHX_ a) +#ifndef PERL_IMPLICIT_CONTEXT +#define mess Perl_mess #endif -#define sortsv(a,b,c) Perl_sortsv(aTHX_ a,b,c) -#define sortsv_flags(a,b,c,d) Perl_sortsv_flags(aTHX_ a,b,c,d) +#define mess_sv(a,b) Perl_mess_sv(aTHX_ a,b) #define mg_clear(a) Perl_mg_clear(aTHX_ a) #define mg_copy(a,b,c,d) Perl_mg_copy(aTHX_ a,b,c,d) -#ifdef PERL_CORE -#define mg_localize(a,b,c) Perl_mg_localize(aTHX_ a,b,c) -#endif #define mg_find(a,b) Perl_mg_find(aTHX_ a,b) +#define mg_findext(a,b,c) Perl_mg_findext(aTHX_ a,b,c) #define mg_free(a) Perl_mg_free(aTHX_ a) +#define mg_free_type(a,b) Perl_mg_free_type(aTHX_ a,b) #define mg_get(a) Perl_mg_get(aTHX_ a) #define mg_length(a) Perl_mg_length(aTHX_ a) #define mg_magical(a) Perl_mg_magical(aTHX_ a) #define mg_set(a) Perl_mg_set(aTHX_ a) #define mg_size(a) Perl_mg_size(aTHX_ a) #define mini_mktime(a) Perl_mini_mktime(aTHX_ a) -#if defined(PERL_CORE) || defined(PERL_EXT) -#define mod(a,b) Perl_mod(aTHX_ a,b) -#endif -#ifdef PERL_CORE -#define mode_from_discipline(a,b) Perl_mode_from_discipline(aTHX_ a,b) -#endif #define moreswitches(a) Perl_moreswitches(aTHX_ a) +#define mro_get_linear_isa(a) Perl_mro_get_linear_isa(aTHX_ a) +#define mro_method_changed_in(a) Perl_mro_method_changed_in(aTHX_ a) #define my_atof(a) Perl_my_atof(aTHX_ a) -#if (!defined(HAS_MEMCPY) && !defined(HAS_BCOPY)) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY) && !defined(HAS_SAFE_BCOPY)) -#define my_bcopy Perl_my_bcopy -#endif -#if !defined(HAS_BZERO) && !defined(HAS_MEMSET) -#define my_bzero Perl_my_bzero -#endif +#define my_atof2(a,b) Perl_my_atof2(aTHX_ a,b) +#define my_dirfd(a) Perl_my_dirfd(aTHX_ a) #define my_exit(a) Perl_my_exit(aTHX_ a) #define my_failure_exit() Perl_my_failure_exit(aTHX) #define my_fflush_all() Perl_my_fflush_all(aTHX) #define my_fork Perl_my_fork -#define atfork_lock Perl_atfork_lock -#define atfork_unlock Perl_atfork_unlock -#define my_lstat() Perl_my_lstat(aTHX) -#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) -#define my_memcmp Perl_my_memcmp -#endif -#if !defined(HAS_MEMSET) -#define my_memset Perl_my_memset -#endif #define my_pclose(a) Perl_my_pclose(aTHX_ a) #define my_popen(a,b) Perl_my_popen(aTHX_ a,b) #define my_popen_list(a,b,c) Perl_my_popen_list(aTHX_ a,b,c) #define my_setenv(a,b) Perl_my_setenv(aTHX_ a,b) -#define my_stat() Perl_my_stat(aTHX) +#define my_socketpair Perl_my_socketpair #define my_strftime(a,b,c,d,e,f,g,h,i,j) Perl_my_strftime(aTHX_ a,b,c,d,e,f,g,h,i,j) -#if defined(MYSWAP) -#define my_swap(a) Perl_my_swap(aTHX_ a) -#define my_htonl(a) Perl_my_htonl(aTHX_ a) -#define my_ntohl(a) Perl_my_ntohl(aTHX_ a) -#endif -#ifdef PERL_CORE -#define my_unexec() Perl_my_unexec(aTHX) -#endif -#define newANONLIST(a) Perl_newANONLIST(aTHX_ a) +#define newANONATTRSUB(a,b,c,d) Perl_newANONATTRSUB(aTHX_ a,b,c,d) #define newANONHASH(a) Perl_newANONHASH(aTHX_ a) +#define newANONLIST(a) Perl_newANONLIST(aTHX_ a) #define newANONSUB(a,b,c) Perl_newANONSUB(aTHX_ a,b,c) #define newASSIGNOP(a,b,c,d) Perl_newASSIGNOP(aTHX_ a,b,c,d) -#define newCONDOP(a,b,c,d) Perl_newCONDOP(aTHX_ a,b,c,d) -#define newCONSTSUB(a,b,c) Perl_newCONSTSUB(aTHX_ a,b,c) -#ifdef PERL_MAD -#define newFORM(a,b,c) Perl_newFORM(aTHX_ a,b,c) -#else -#define newFORM(a,b,c) Perl_newFORM(aTHX_ a,b,c) -#endif -#define newFOROP(a,b,c,d,e,f,g) Perl_newFOROP(aTHX_ a,b,c,d,e,f,g) -#define newGIVENOP(a,b,c) Perl_newGIVENOP(aTHX_ a,b,c) -#define newLOGOP(a,b,c,d) Perl_newLOGOP(aTHX_ a,b,c,d) -#define newLOOPEX(a,b) Perl_newLOOPEX(aTHX_ a,b) -#define newLOOPOP(a,b,c,d) Perl_newLOOPOP(aTHX_ a,b,c,d) -#define newNULLLIST() Perl_newNULLLIST(aTHX) -#define newOP(a,b) Perl_newOP(aTHX_ a,b) -#define newPROG(a) Perl_newPROG(aTHX_ a) -#define newRANGE(a,b,c) Perl_newRANGE(aTHX_ a,b,c) -#define newSLICEOP(a,b,c) Perl_newSLICEOP(aTHX_ a,b,c) -#define newSTATEOP(a,b,c) Perl_newSTATEOP(aTHX_ a,b,c) -#define newSUB(a,b,c,d) Perl_newSUB(aTHX_ a,b,c,d) -#define newXS_flags(a,b,c,d,e) Perl_newXS_flags(aTHX_ a,b,c,d,e) -#define newXS(a,b,c) Perl_newXS(aTHX_ a,b,c) +#define newATTRSUB(a,b,c,d,e) Perl_newATTRSUB(aTHX_ a,b,c,d,e) #define newAVREF(a) Perl_newAVREF(aTHX_ a) #define newBINOP(a,b,c,d) Perl_newBINOP(aTHX_ a,b,c,d) +#define newCONDOP(a,b,c,d) Perl_newCONDOP(aTHX_ a,b,c,d) +#define newCONSTSUB(a,b,c) Perl_newCONSTSUB(aTHX_ a,b,c) #define newCVREF(a,b) Perl_newCVREF(aTHX_ a,b) +#define newFOROP(a,b,c,d,e) Perl_newFOROP(aTHX_ a,b,c,d,e) +#define newGIVENOP(a,b,c) Perl_newGIVENOP(aTHX_ a,b,c) #define newGVOP(a,b,c) Perl_newGVOP(aTHX_ a,b,c) -#define newGVgen(a) Perl_newGVgen(aTHX_ a) #define newGVREF(a,b) Perl_newGVREF(aTHX_ a,b) +#define newGVgen(a) Perl_newGVgen(aTHX_ a) #define newHVREF(a) Perl_newHVREF(aTHX_ a) #define newHVhv(a) Perl_newHVhv(aTHX_ a) #define newLISTOP(a,b,c,d) Perl_newLISTOP(aTHX_ a,b,c,d) -#ifdef USE_ITHREADS -#define newPADOP(a,b,c) Perl_newPADOP(aTHX_ a,b,c) -#endif +#define newLOGOP(a,b,c,d) Perl_newLOGOP(aTHX_ a,b,c,d) +#define newLOOPEX(a,b) Perl_newLOOPEX(aTHX_ a,b) +#define newLOOPOP(a,b,c,d) Perl_newLOOPOP(aTHX_ a,b,c,d) +#define newNULLLIST() Perl_newNULLLIST(aTHX) +#define newOP(a,b) Perl_newOP(aTHX_ a,b) #define newPMOP(a,b) Perl_newPMOP(aTHX_ a,b) +#define newPROG(a) Perl_newPROG(aTHX_ a) #define newPVOP(a,b,c) Perl_newPVOP(aTHX_ a,b,c) +#define newRANGE(a,b,c) Perl_newRANGE(aTHX_ a,b,c) #define newRV(a) Perl_newRV(aTHX_ a) #define newRV_noinc(a) Perl_newRV_noinc(aTHX_ a) +#define newSLICEOP(a,b,c) Perl_newSLICEOP(aTHX_ a,b,c) +#define newSTATEOP(a,b,c) Perl_newSTATEOP(aTHX_ a,b,c) #define newSV(a) Perl_newSV(aTHX_ a) -#define newSVREF(a) Perl_newSVREF(aTHX_ a) #define newSVOP(a,b,c) Perl_newSVOP(aTHX_ a,b,c) +#define newSVREF(a) Perl_newSVREF(aTHX_ a) +#define newSV_type(a) Perl_newSV_type(aTHX_ a) +#define newSVhek(a) Perl_newSVhek(aTHX_ a) #define newSViv(a) Perl_newSViv(aTHX_ a) -#define newSVuv(a) Perl_newSVuv(aTHX_ a) #define newSVnv(a) Perl_newSVnv(aTHX_ a) #define newSVpv(a,b) Perl_newSVpv(aTHX_ a,b) +#define newSVpv_share(a,b) Perl_newSVpv_share(aTHX_ a,b) +#ifndef PERL_IMPLICIT_CONTEXT +#define newSVpvf Perl_newSVpvf +#endif #define newSVpvn(a,b) Perl_newSVpvn(aTHX_ a,b) #define newSVpvn_flags(a,b,c) Perl_newSVpvn_flags(aTHX_ a,b,c) -#define newSVhek(a) Perl_newSVhek(aTHX_ a) #define newSVpvn_share(a,b,c) Perl_newSVpvn_share(aTHX_ a,b,c) -#define vnewSVpvf(a,b) Perl_vnewSVpvf(aTHX_ a,b) #define newSVrv(a,b) Perl_newSVrv(aTHX_ a,b) #define newSVsv(a) Perl_newSVsv(aTHX_ a) -#define newSV_type(a) Perl_newSV_type(aTHX_ a) +#define newSVuv(a) Perl_newSVuv(aTHX_ a) #define newUNOP(a,b,c) Perl_newUNOP(aTHX_ a,b,c) #define newWHENOP(a,b) Perl_newWHENOP(aTHX_ a,b) -#define newWHILEOP(a,b,c,d,e,f,g,h) Perl_newWHILEOP(aTHX_ a,b,c,d,e,f,g,h) +#define newWHILEOP(a,b,c,d,e,f,g) Perl_newWHILEOP(aTHX_ a,b,c,d,e,f,g) +#define newXS(a,b,c) Perl_newXS(aTHX_ a,b,c) +#define newXS_flags(a,b,c,d,e) Perl_newXS_flags(aTHX_ a,b,c,d,e) +#define new_collate(a) Perl_new_collate(aTHX_ a) +#define new_ctype(a) Perl_new_ctype(aTHX_ a) +#define new_numeric(a) Perl_new_numeric(aTHX_ a) #define new_stackinfo(a,b) Perl_new_stackinfo(aTHX_ a,b) -#define scan_vstring(a,b,c) Perl_scan_vstring(aTHX_ a,b,c) -#define scan_version(a,b,c) Perl_scan_version(aTHX_ a,b,c) -#define prescan_version(a,b,c,d,e,f,g) Perl_prescan_version(aTHX_ a,b,c,d,e,f,g) #define new_version(a) Perl_new_version(aTHX_ a) -#define upg_version(a,b) Perl_upg_version(aTHX_ a,b) -#define vverify(a) Perl_vverify(aTHX_ a) -#define vnumify(a) Perl_vnumify(aTHX_ a) -#define vnormal(a) Perl_vnormal(aTHX_ a) -#define vstringify(a) Perl_vstringify(aTHX_ a) -#define vcmp(a,b) Perl_vcmp(aTHX_ a,b) -#ifdef PERL_CORE -#define nextargv(a) Perl_nextargv(aTHX_ a) -#endif #define ninstr Perl_ninstr +#define nothreadhook() Perl_nothreadhook(aTHX) +#define op_append_elem(a,b,c) Perl_op_append_elem(aTHX_ a,b,c) +#define op_append_list(a,b,c) Perl_op_append_list(aTHX_ a,b,c) +#define op_contextualize(a,b) Perl_op_contextualize(aTHX_ a,b) +#define op_dump(a) Perl_op_dump(aTHX_ a) #define op_free(a) Perl_op_free(aTHX_ a) -#ifdef PERL_MAD -#ifdef PERL_CORE -#define package(a) Perl_package(aTHX_ a) -#endif -#else -#ifdef PERL_CORE -#define package(a) Perl_package(aTHX_ a) -#endif -#endif -#ifdef PERL_CORE -#define package_version(a) Perl_package_version(aTHX_ a) -#define pad_alloc(a,b) Perl_pad_alloc(aTHX_ a,b) -#define allocmy(a,b,c) Perl_allocmy(aTHX_ a,b,c) -#endif -#define pad_findmy(a,b,c) Perl_pad_findmy(aTHX_ a,b,c) -#define find_rundefsvoffset() Perl_find_rundefsvoffset(aTHX) -#ifdef PERL_CORE -#define oopsAV(a) Perl_oopsAV(aTHX_ a) -#define oopsHV(a) Perl_oopsHV(aTHX_ a) -#define pad_leavemy() Perl_pad_leavemy(aTHX) -#endif -#ifdef DEBUGGING -#define pad_sv(a) Perl_pad_sv(aTHX_ a) -#endif -#ifdef PERL_CORE -#define pad_free(a) Perl_pad_free(aTHX_ a) -#endif -#if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define pad_reset() S_pad_reset(aTHX) -#endif -#endif -#ifdef PERL_CORE -#define pad_swipe(a,b) Perl_pad_swipe(aTHX_ a,b) -#define peep(a) Perl_peep(aTHX_ a) -#endif -#if defined(USE_REENTRANT_API) -#define reentrant_size() Perl_reentrant_size(aTHX) -#define reentrant_init() Perl_reentrant_init(aTHX) -#define reentrant_free() Perl_reentrant_free(aTHX) -#endif -#define call_atexit(a,b) Perl_call_atexit(aTHX_ a,b) -#define call_argv(a,b,c) Perl_call_argv(aTHX_ a,b,c) -#define call_method(a,b) Perl_call_method(aTHX_ a,b) -#define call_pv(a,b) Perl_call_pv(aTHX_ a,b) -#define call_sv(a,b) Perl_call_sv(aTHX_ a,b) -#define despatch_signals() Perl_despatch_signals(aTHX) -#define doref(a,b,c) Perl_doref(aTHX_ a,b,c) -#define eval_pv(a,b) Perl_eval_pv(aTHX_ a,b) -#define eval_sv(a,b) Perl_eval_sv(aTHX_ a,b) -#define get_sv(a,b) Perl_get_sv(aTHX_ a,b) -#define get_av(a,b) Perl_get_av(aTHX_ a,b) -#define get_hv(a,b) Perl_get_hv(aTHX_ a,b) -#define get_cv(a,b) Perl_get_cv(aTHX_ a,b) -#define get_cvn_flags(a,b,c) Perl_get_cvn_flags(aTHX_ a,b,c) -#define init_i18nl10n(a) Perl_init_i18nl10n(aTHX_ a) -#define init_i18nl14n(a) Perl_init_i18nl14n(aTHX_ a) -#define new_collate(a) Perl_new_collate(aTHX_ a) -#define new_ctype(a) Perl_new_ctype(aTHX_ a) -#define new_numeric(a) Perl_new_numeric(aTHX_ a) -#define set_numeric_local() Perl_set_numeric_local(aTHX) -#define set_numeric_radix() Perl_set_numeric_radix(aTHX) -#define set_numeric_standard() Perl_set_numeric_standard(aTHX) -#define require_pv(a) Perl_require_pv(aTHX_ a) +#define op_linklist(a) Perl_op_linklist(aTHX_ a) +#define op_lvalue(a,b) Perl_op_lvalue(aTHX_ a,b) +#define op_null(a) Perl_op_null(aTHX_ a) +#define op_prepend_elem(a,b,c) Perl_op_prepend_elem(aTHX_ a,b,c) +#define op_refcnt_lock() Perl_op_refcnt_lock(aTHX) +#define op_refcnt_unlock() Perl_op_refcnt_unlock(aTHX) +#define op_scope(a) Perl_op_scope(aTHX_ a) #define pack_cat(a,b,c,d,e,f,g) Perl_pack_cat(aTHX_ a,b,c,d,e,f,g) #define packlist(a,b,c,d,e) Perl_packlist(aTHX_ a,b,c,d,e) -#if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C) -#ifdef PERL_CORE -#define pidgone(a,b) S_pidgone(aTHX_ a,b) -#endif -#endif -#ifdef PERL_CORE -#define pmruntime(a,b,c) Perl_pmruntime(aTHX_ a,b,c) -#endif -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define pmtrans(a,b,c) S_pmtrans(aTHX_ a,b,c) -#endif -#endif +#define pad_findmy(a,b,c) Perl_pad_findmy(aTHX_ a,b,c) +#define parse_arithexpr(a) Perl_parse_arithexpr(aTHX_ a) +#define parse_barestmt(a) Perl_parse_barestmt(aTHX_ a) +#define parse_block(a) Perl_parse_block(aTHX_ a) +#define parse_fullexpr(a) Perl_parse_fullexpr(aTHX_ a) +#define parse_fullstmt(a) Perl_parse_fullstmt(aTHX_ a) +#define parse_label(a) Perl_parse_label(aTHX_ a) +#define parse_listexpr(a) Perl_parse_listexpr(aTHX_ a) +#define parse_stmtseq(a) Perl_parse_stmtseq(aTHX_ a) +#define parse_termexpr(a) Perl_parse_termexpr(aTHX_ a) +#define pmop_dump(a) Perl_pmop_dump(aTHX_ a) #define pop_scope() Perl_pop_scope(aTHX) -#ifdef PERL_CORE -#define prepend_elem(a,b,c) Perl_prepend_elem(aTHX_ a,b,c) -#endif -#define push_scope() Perl_push_scope(aTHX) -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define refkids(a,b) S_refkids(aTHX_ a,b) -#endif -#endif -#define regdump(a) Perl_regdump(aTHX_ a) -#define regdump(a) Perl_regdump(aTHX_ a) -#define regclass_swash(a,b,c,d,e) Perl_regclass_swash(aTHX_ a,b,c,d,e) +#define pregcomp(a,b) Perl_pregcomp(aTHX_ a,b) #define pregexec(a,b,c,d,e,f,g) Perl_pregexec(aTHX_ a,b,c,d,e,f,g) #define pregfree(a) Perl_pregfree(aTHX_ a) #define pregfree2(a) Perl_pregfree2(aTHX_ a) -#if defined(PERL_CORE) || defined(PERL_EXT) -#define reg_temp_copy(a,b) Perl_reg_temp_copy(aTHX_ a,b) -#endif -#define regfree_internal(a) Perl_regfree_internal(aTHX_ a) -#if defined(USE_ITHREADS) -#define regdupe_internal(a,b) Perl_regdupe_internal(aTHX_ a,b) -#endif -#define pregcomp(a,b) Perl_pregcomp(aTHX_ a,b) +#define prescan_version(a,b,c,d,e,f,g) Perl_prescan_version(aTHX_ a,b,c,d,e,f,g) +#define ptr_table_clear(a) Perl_ptr_table_clear(aTHX_ a) +#define ptr_table_fetch(a,b) Perl_ptr_table_fetch(aTHX_ a,b) +#define ptr_table_free(a) Perl_ptr_table_free(aTHX_ a) +#define ptr_table_new() Perl_ptr_table_new(aTHX) +#define ptr_table_split(a) Perl_ptr_table_split(aTHX_ a) +#define ptr_table_store(a,b,c) Perl_ptr_table_store(aTHX_ a,b,c) +#define push_scope() Perl_push_scope(aTHX) +#define pv_display(a,b,c,d,e) Perl_pv_display(aTHX_ a,b,c,d,e) +#define pv_escape(a,b,c,d,e,f) Perl_pv_escape(aTHX_ a,b,c,d,e,f) +#define pv_pretty(a,b,c,d,e,f,g) Perl_pv_pretty(aTHX_ a,b,c,d,e,f,g) +#define pv_uni_display(a,b,c,d,e) Perl_pv_uni_display(aTHX_ a,b,c,d,e) #define re_compile(a,b) Perl_re_compile(aTHX_ a,b) #define re_intuit_start(a,b,c,d,e,f) Perl_re_intuit_start(aTHX_ a,b,c,d,e,f) #define re_intuit_string(a) Perl_re_intuit_string(aTHX_ a) -#define regexec_flags(a,b,c,d,e,f,g,h) Perl_regexec_flags(aTHX_ a,b,c,d,e,f,g,h) -#define regnext(a) Perl_regnext(aTHX_ a) -#if defined(PERL_CORE) || defined(PERL_EXT) -#define reg_named_buff(a,b,c,d) Perl_reg_named_buff(aTHX_ a,b,c,d) -#define reg_named_buff_iter(a,b,c) Perl_reg_named_buff_iter(aTHX_ a,b,c) -#endif -#define reg_named_buff_fetch(a,b,c) Perl_reg_named_buff_fetch(aTHX_ a,b,c) +#define reg_named_buff_all(a,b) Perl_reg_named_buff_all(aTHX_ a,b) #define reg_named_buff_exists(a,b,c) Perl_reg_named_buff_exists(aTHX_ a,b,c) +#define reg_named_buff_fetch(a,b,c) Perl_reg_named_buff_fetch(aTHX_ a,b,c) #define reg_named_buff_firstkey(a,b) Perl_reg_named_buff_firstkey(aTHX_ a,b) #define reg_named_buff_nextkey(a,b) Perl_reg_named_buff_nextkey(aTHX_ a,b) #define reg_named_buff_scalar(a,b) Perl_reg_named_buff_scalar(aTHX_ a,b) -#define reg_named_buff_all(a,b) Perl_reg_named_buff_all(aTHX_ a,b) -#if defined(PERL_CORE) || defined(PERL_EXT) -#define reg_numbered_buff_fetch(a,b,c) Perl_reg_numbered_buff_fetch(aTHX_ a,b,c) -#define reg_numbered_buff_store(a,b,c) Perl_reg_numbered_buff_store(aTHX_ a,b,c) -#define reg_numbered_buff_length(a,b,c) Perl_reg_numbered_buff_length(aTHX_ a,b,c) -#endif -#if defined(PERL_CORE) || defined(PERL_EXT) -#define reg_qr_package(a) Perl_reg_qr_package(aTHX_ a) -#endif -#if defined(PERL_CORE) || defined(PERL_EXT) -#define regprop(a,b,c) Perl_regprop(aTHX_ a,b,c) -#endif +#define regclass_swash(a,b,c,d,e) Perl_regclass_swash(aTHX_ a,b,c,d,e) +#define regdump(a) Perl_regdump(aTHX_ a) +#define regdump(a) Perl_regdump(aTHX_ a) +#define regexec_flags(a,b,c,d,e,f,g,h) Perl_regexec_flags(aTHX_ a,b,c,d,e,f,g,h) +#define regfree_internal(a) Perl_regfree_internal(aTHX_ a) +#define reginitcolors() Perl_reginitcolors(aTHX) +#define regnext(a) Perl_regnext(aTHX_ a) #define repeatcpy Perl_repeatcpy +#define require_pv(a) Perl_require_pv(aTHX_ a) #define rninstr Perl_rninstr #define rsignal(a,b) Perl_rsignal(aTHX_ a,b) -#ifdef PERL_CORE -#define rsignal_restore(a,b) Perl_rsignal_restore(aTHX_ a,b) -#define rsignal_save(a,b,c) Perl_rsignal_save(aTHX_ a,b,c) -#endif #define rsignal_state(a) Perl_rsignal_state(aTHX_ a) -#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define rxres_free(a) S_rxres_free(aTHX_ a) -#define rxres_restore(a,b) S_rxres_restore(aTHX_ a,b) -#endif -#endif -#ifdef PERL_CORE -#define rxres_save(a,b) Perl_rxres_save(aTHX_ a,b) -#endif -#if !defined(HAS_RENAME) -#ifdef PERL_CORE -#define same_dirent(a,b) Perl_same_dirent(aTHX_ a,b) -#endif -#endif -#define savepv(a) Perl_savepv(aTHX_ a) -#define savepvn(a,b) Perl_savepvn(aTHX_ a,b) -#define savesharedpv(a) Perl_savesharedpv(aTHX_ a) -#define savesharedpvn(a,b) Perl_savesharedpvn(aTHX_ a,b) -#define savesvpv(a) Perl_savesvpv(aTHX_ a) -#define savestack_grow() Perl_savestack_grow(aTHX) -#define savestack_grow_cnt(a) Perl_savestack_grow_cnt(aTHX_ a) +#define runops_debug() Perl_runops_debug(aTHX) +#define runops_standard() Perl_runops_standard(aTHX) +#define rv2cv_op_cv(a,b) Perl_rv2cv_op_cv(aTHX_ a,b) +#define safesyscalloc Perl_safesyscalloc +#define safesysfree Perl_safesysfree +#define safesysmalloc Perl_safesysmalloc +#define safesysrealloc Perl_safesysrealloc +#define save_I16(a) Perl_save_I16(aTHX_ a) +#define save_I32(a) Perl_save_I32(aTHX_ a) +#define save_I8(a) Perl_save_I8(aTHX_ a) +#define save_adelete(a,b) Perl_save_adelete(aTHX_ a,b) #define save_aelem_flags(a,b,c,d) Perl_save_aelem_flags(aTHX_ a,b,c,d) #define save_alloc(a,b) Perl_save_alloc(aTHX_ a,b) #define save_aptr(a) Perl_save_aptr(aTHX_ a) @@ -3232,152 +450,107 @@ #define save_bool(a) Perl_save_bool(aTHX_ a) #define save_clearsv(a) Perl_save_clearsv(aTHX_ a) #define save_delete(a,b,c) Perl_save_delete(aTHX_ a,b,c) -#define save_hdelete(a,b) Perl_save_hdelete(aTHX_ a,b) -#define save_adelete(a,b) Perl_save_adelete(aTHX_ a,b) #define save_destructor(a,b) Perl_save_destructor(aTHX_ a,b) #define save_destructor_x(a,b) Perl_save_destructor_x(aTHX_ a,b) -#ifdef PERL_CORE -#endif -#define save_generic_svref(a) Perl_save_generic_svref(aTHX_ a) #define save_generic_pvref(a) Perl_save_generic_pvref(aTHX_ a) -#define save_shared_pvref(a) Perl_save_shared_pvref(aTHX_ a) +#define save_generic_svref(a) Perl_save_generic_svref(aTHX_ a) #define save_gp(a,b) Perl_save_gp(aTHX_ a,b) #define save_hash(a) Perl_save_hash(aTHX_ a) -#ifdef PERL_CORE -#define save_hints() Perl_save_hints(aTHX) -#endif +#define save_hdelete(a,b) Perl_save_hdelete(aTHX_ a,b) #define save_helem_flags(a,b,c,d) Perl_save_helem_flags(aTHX_ a,b,c,d) +#define save_hints() Perl_save_hints(aTHX) #define save_hptr(a) Perl_save_hptr(aTHX_ a) -#define save_I16(a) Perl_save_I16(aTHX_ a) -#define save_I32(a) Perl_save_I32(aTHX_ a) -#define save_I8(a) Perl_save_I8(aTHX_ a) #define save_int(a) Perl_save_int(aTHX_ a) #define save_item(a) Perl_save_item(aTHX_ a) #define save_iv(a) Perl_save_iv(aTHX_ a) #define save_list(a,b) Perl_save_list(aTHX_ a,b) #define save_long(a) Perl_save_long(aTHX_ a) #define save_nogv(a) Perl_save_nogv(aTHX_ a) -#ifdef PERL_CORE -#endif -#define save_scalar(a) Perl_save_scalar(aTHX_ a) +#define save_padsv_and_mortalize(a) Perl_save_padsv_and_mortalize(aTHX_ a) #define save_pptr(a) Perl_save_pptr(aTHX_ a) -#define save_vptr(a) Perl_save_vptr(aTHX_ a) +#define save_pushi32ptr(a,b,c) Perl_save_pushi32ptr(aTHX_ a,b,c) +#define save_pushptr(a,b) Perl_save_pushptr(aTHX_ a,b) +#define save_pushptrptr(a,b,c) Perl_save_pushptrptr(aTHX_ a,b,c) #define save_re_context() Perl_save_re_context(aTHX) -#define save_padsv_and_mortalize(a) Perl_save_padsv_and_mortalize(aTHX_ a) +#define save_scalar(a) Perl_save_scalar(aTHX_ a) +#define save_set_svflags(a,b,c) Perl_save_set_svflags(aTHX_ a,b,c) +#define save_shared_pvref(a) Perl_save_shared_pvref(aTHX_ a) #define save_sptr(a) Perl_save_sptr(aTHX_ a) #define save_svref(a) Perl_save_svref(aTHX_ a) -#define save_pushptr(a,b) Perl_save_pushptr(aTHX_ a,b) -#ifdef PERL_CORE -#define save_pushi32ptr(a,b,c) Perl_save_pushi32ptr(aTHX_ a,b,c) -#define save_pushptrptr(a,b,c) Perl_save_pushptrptr(aTHX_ a,b,c) -#endif -#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define save_pushptri32ptr(a,b,c,d) S_save_pushptri32ptr(aTHX_ a,b,c,d) -#endif -#endif -#ifdef PERL_CORE -#define sawparens(a) Perl_sawparens(aTHX_ a) -#define scalar(a) Perl_scalar(aTHX_ a) -#endif -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define scalarkids(a) S_scalarkids(aTHX_ a) -#define scalarseq(a) S_scalarseq(aTHX_ a) -#endif -#endif -#ifdef PERL_CORE -#define scalarvoid(a) Perl_scalarvoid(aTHX_ a) -#endif +#define save_vptr(a) Perl_save_vptr(aTHX_ a) +#define savepv(a) Perl_savepv(aTHX_ a) +#define savepvn(a,b) Perl_savepvn(aTHX_ a,b) +#define savesharedpv(a) Perl_savesharedpv(aTHX_ a) +#define savesharedpvn(a,b) Perl_savesharedpvn(aTHX_ a,b) +#define savesharedsvpv(a) Perl_savesharedsvpv(aTHX_ a) +#define savestack_grow() Perl_savestack_grow(aTHX) +#define savestack_grow_cnt(a) Perl_savestack_grow_cnt(aTHX_ a) +#define savesvpv(a) Perl_savesvpv(aTHX_ a) #define scan_bin(a,b,c) Perl_scan_bin(aTHX_ a,b,c) #define scan_hex(a,b,c) Perl_scan_hex(aTHX_ a,b,c) #define scan_num(a,b) Perl_scan_num(aTHX_ a,b) #define scan_oct(a,b,c) Perl_scan_oct(aTHX_ a,b,c) -#ifdef PERL_CORE -#define scope(a) Perl_scope(aTHX_ a) -#endif +#define scan_version(a,b,c) Perl_scan_version(aTHX_ a,b,c) +#define scan_vstring(a,b,c) Perl_scan_vstring(aTHX_ a,b,c) #define screaminstr(a,b,c,d,e,f) Perl_screaminstr(aTHX_ a,b,c,d,e,f) +#define seed() Perl_seed(aTHX) +#define set_context Perl_set_context +#define set_numeric_local() Perl_set_numeric_local(aTHX) +#define set_numeric_radix() Perl_set_numeric_radix(aTHX) +#define set_numeric_standard() Perl_set_numeric_standard(aTHX) #define setdefout(a) Perl_setdefout(aTHX_ a) #define share_hek(a,b,c) Perl_share_hek(aTHX_ a,b,c) -#if defined(HAS_SIGACTION) && defined(SA_SIGINFO) -#ifdef PERL_CORE -#define sighandler Perl_sighandler -#endif -#define csighandler Perl_csighandler -#else -#ifdef PERL_CORE -#define sighandler Perl_sighandler -#endif -#define csighandler Perl_csighandler -#endif +#define sortsv(a,b,c) Perl_sortsv(aTHX_ a,b,c) +#define sortsv_flags(a,b,c,d) Perl_sortsv_flags(aTHX_ a,b,c,d) #define stack_grow(a,b,c) Perl_stack_grow(aTHX_ a,b,c) #define start_subparse(a,b) Perl_start_subparse(aTHX_ a,b) -#ifdef PERL_CORE -#define sub_crush_depth(a) Perl_sub_crush_depth(aTHX_ a) -#endif -#define sv_2bool(a) Perl_sv_2bool(aTHX_ a) +#define stashpv_hvname_match(a,b) Perl_stashpv_hvname_match(aTHX_ a,b) +#define str_to_version(a) Perl_str_to_version(aTHX_ a) +#define sv_2bool_flags(a,b) Perl_sv_2bool_flags(aTHX_ a,b) #define sv_2cv(a,b,c,d) Perl_sv_2cv(aTHX_ a,b,c,d) #define sv_2io(a) Perl_sv_2io(aTHX_ a) -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define glob_2number(a) S_glob_2number(aTHX_ a) -#endif -#endif #define sv_2iv_flags(a,b) Perl_sv_2iv_flags(aTHX_ a,b) #define sv_2mortal(a) Perl_sv_2mortal(aTHX_ a) -#define sv_2nv(a) Perl_sv_2nv(aTHX_ a) -#ifdef PERL_CORE -#define sv_2num(a) Perl_sv_2num(aTHX_ a) -#endif +#define sv_2nv_flags(a,b) Perl_sv_2nv_flags(aTHX_ a,b) #define sv_2pv_flags(a,b,c) Perl_sv_2pv_flags(aTHX_ a,b,c) -#define sv_2pvutf8(a,b) Perl_sv_2pvutf8(aTHX_ a,b) #define sv_2pvbyte(a,b) Perl_sv_2pvbyte(aTHX_ a,b) -#define sv_pvn_nomg(a,b) Perl_sv_pvn_nomg(aTHX_ a,b) +#define sv_2pvutf8(a,b) Perl_sv_2pvutf8(aTHX_ a,b) #define sv_2uv_flags(a,b) Perl_sv_2uv_flags(aTHX_ a,b) -#define sv_iv(a) Perl_sv_iv(aTHX_ a) -#define sv_uv(a) Perl_sv_uv(aTHX_ a) -#define sv_nv(a) Perl_sv_nv(aTHX_ a) -#define sv_pvn(a,b) Perl_sv_pvn(aTHX_ a,b) -#define sv_pvutf8n(a,b) Perl_sv_pvutf8n(aTHX_ a,b) -#define sv_pvbyten(a,b) Perl_sv_pvbyten(aTHX_ a,b) -#define sv_true(a) Perl_sv_true(aTHX_ a) -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define sv_add_arena(a,b,c) S_sv_add_arena(aTHX_ a,b,c) -#endif -#endif #define sv_backoff(a) Perl_sv_backoff(aTHX_ a) #define sv_bless(a,b) Perl_sv_bless(aTHX_ a,b) -#define sv_vcatpvf(a,b,c) Perl_sv_vcatpvf(aTHX_ a,b,c) +#define sv_cat_decode(a,b,c,d,e,f) Perl_sv_cat_decode(aTHX_ a,b,c,d,e,f) #define sv_catpv(a,b) Perl_sv_catpv(aTHX_ a,b) -#define sv_chop(a,b) Perl_sv_chop(aTHX_ a,b) -#ifdef PERL_CORE -#define sv_clean_all() Perl_sv_clean_all(aTHX) -#define sv_clean_objs() Perl_sv_clean_objs(aTHX) +#define sv_catpv_flags(a,b,c) Perl_sv_catpv_flags(aTHX_ a,b,c) +#define sv_catpv_mg(a,b) Perl_sv_catpv_mg(aTHX_ a,b) +#ifndef PERL_IMPLICIT_CONTEXT +#define sv_catpvf Perl_sv_catpvf +#define sv_catpvf_mg Perl_sv_catpvf_mg #endif +#define sv_catpvn_flags(a,b,c,d) Perl_sv_catpvn_flags(aTHX_ a,b,c,d) +#define sv_catsv_flags(a,b,c) Perl_sv_catsv_flags(aTHX_ a,b,c) +#define sv_chop(a,b) Perl_sv_chop(aTHX_ a,b) #define sv_clear(a) Perl_sv_clear(aTHX_ a) -#define sv_cmp(a,b) Perl_sv_cmp(aTHX_ a,b) -#define sv_cmp_locale(a,b) Perl_sv_cmp_locale(aTHX_ a,b) -#if defined(USE_LOCALE_COLLATE) -#define sv_collxfrm(a,b) Perl_sv_collxfrm(aTHX_ a,b) -#endif +#define sv_cmp_flags(a,b,c) Perl_sv_cmp_flags(aTHX_ a,b,c) +#define sv_cmp_locale_flags(a,b,c) Perl_sv_cmp_locale_flags(aTHX_ a,b,c) #define sv_compile_2op(a,b,c,d) Perl_sv_compile_2op(aTHX_ a,b,c,d) -#define getcwd_sv(a) Perl_getcwd_sv(aTHX_ a) +#define sv_copypv(a,b) Perl_sv_copypv(aTHX_ a,b) #define sv_dec(a) Perl_sv_dec(aTHX_ a) -#define sv_dump(a) Perl_sv_dump(aTHX_ a) +#define sv_dec_nomg(a) Perl_sv_dec_nomg(aTHX_ a) #define sv_derived_from(a,b) Perl_sv_derived_from(aTHX_ a,b) +#define sv_destroyable(a) Perl_sv_destroyable(aTHX_ a) #define sv_does(a,b) Perl_sv_does(aTHX_ a,b) -#define sv_eq(a,b) Perl_sv_eq(aTHX_ a,b) +#define sv_dump(a) Perl_sv_dump(aTHX_ a) +#define sv_eq_flags(a,b,c) Perl_sv_eq_flags(aTHX_ a,b,c) +#define sv_force_normal_flags(a,b) Perl_sv_force_normal_flags(aTHX_ a,b) #define sv_free(a) Perl_sv_free(aTHX_ a) -#ifdef PERL_CORE -#define sv_free_arenas() Perl_sv_free_arenas(aTHX) -#endif #define sv_gets(a,b,c) Perl_sv_gets(aTHX_ a,b,c) #define sv_grow(a,b) Perl_sv_grow(aTHX_ a,b) #define sv_inc(a) Perl_sv_inc(aTHX_ a) +#define sv_inc_nomg(a) Perl_sv_inc_nomg(aTHX_ a) #define sv_insert_flags(a,b,c,d,e,f) Perl_sv_insert_flags(aTHX_ a,b,c,d,e,f) #define sv_isa(a,b) Perl_sv_isa(aTHX_ a,b) #define sv_isobject(a) Perl_sv_isobject(aTHX_ a) +#define sv_iv(a) Perl_sv_iv(aTHX_ a) #define sv_len(a) Perl_sv_len(aTHX_ a) #define sv_len_utf8(a) Perl_sv_len_utf8(aTHX_ a) #define sv_magic(a,b,c,d,e) Perl_sv_magic(aTHX_ a,b,c,d,e) @@ -3385,283 +558,399 @@ #define sv_mortalcopy(a) Perl_sv_mortalcopy(aTHX_ a) #define sv_newmortal() Perl_sv_newmortal(aTHX) #define sv_newref(a) Perl_sv_newref(aTHX_ a) +#define sv_nosharing(a) Perl_sv_nosharing(aTHX_ a) +#define sv_nv(a) Perl_sv_nv(aTHX_ a) #define sv_peek(a) Perl_sv_peek(aTHX_ a) +#define sv_pos_b2u(a,b) Perl_sv_pos_b2u(aTHX_ a,b) #define sv_pos_u2b(a,b,c) Perl_sv_pos_u2b(aTHX_ a,b,c) #define sv_pos_u2b_flags(a,b,c,d) Perl_sv_pos_u2b_flags(aTHX_ a,b,c,d) -#define sv_pos_b2u(a,b) Perl_sv_pos_b2u(aTHX_ a,b) -#define sv_pvutf8n_force(a,b) Perl_sv_pvutf8n_force(aTHX_ a,b) +#define sv_pvbyten(a,b) Perl_sv_pvbyten(aTHX_ a,b) #define sv_pvbyten_force(a,b) Perl_sv_pvbyten_force(aTHX_ a,b) +#define sv_pvn(a,b) Perl_sv_pvn(aTHX_ a,b) +#define sv_pvn_force_flags(a,b,c) Perl_sv_pvn_force_flags(aTHX_ a,b,c) +#define sv_pvn_nomg(a,b) Perl_sv_pvn_nomg(aTHX_ a,b) +#define sv_pvutf8n(a,b) Perl_sv_pvutf8n(aTHX_ a,b) +#define sv_pvutf8n_force(a,b) Perl_sv_pvutf8n_force(aTHX_ a,b) #define sv_recode_to_utf8(a,b) Perl_sv_recode_to_utf8(aTHX_ a,b) -#define sv_cat_decode(a,b,c,d,e,f) Perl_sv_cat_decode(aTHX_ a,b,c,d,e,f) #define sv_reftype(a,b) Perl_sv_reftype(aTHX_ a,b) #define sv_replace(a,b) Perl_sv_replace(aTHX_ a,b) #define sv_report_used() Perl_sv_report_used(aTHX) #define sv_reset(a,b) Perl_sv_reset(aTHX_ a,b) -#define sv_vsetpvf(a,b,c) Perl_sv_vsetpvf(aTHX_ a,b,c) +#define sv_rvweaken(a) Perl_sv_rvweaken(aTHX_ a) #define sv_setiv(a,b) Perl_sv_setiv(aTHX_ a,b) -#define sv_setpviv(a,b) Perl_sv_setpviv(aTHX_ a,b) -#define sv_setuv(a,b) Perl_sv_setuv(aTHX_ a,b) +#define sv_setiv_mg(a,b) Perl_sv_setiv_mg(aTHX_ a,b) #define sv_setnv(a,b) Perl_sv_setnv(aTHX_ a,b) +#define sv_setnv_mg(a,b) Perl_sv_setnv_mg(aTHX_ a,b) +#define sv_setpv(a,b) Perl_sv_setpv(aTHX_ a,b) +#define sv_setpv_mg(a,b) Perl_sv_setpv_mg(aTHX_ a,b) +#ifndef PERL_IMPLICIT_CONTEXT +#define sv_setpvf Perl_sv_setpvf +#define sv_setpvf_mg Perl_sv_setpvf_mg +#endif +#define sv_setpviv(a,b) Perl_sv_setpviv(aTHX_ a,b) +#define sv_setpviv_mg(a,b) Perl_sv_setpviv_mg(aTHX_ a,b) +#define sv_setpvn(a,b,c) Perl_sv_setpvn(aTHX_ a,b,c) +#define sv_setpvn_mg(a,b,c) Perl_sv_setpvn_mg(aTHX_ a,b,c) #define sv_setref_iv(a,b,c) Perl_sv_setref_iv(aTHX_ a,b,c) -#define sv_setref_uv(a,b,c) Perl_sv_setref_uv(aTHX_ a,b,c) #define sv_setref_nv(a,b,c) Perl_sv_setref_nv(aTHX_ a,b,c) #define sv_setref_pv(a,b,c) Perl_sv_setref_pv(aTHX_ a,b,c) #define sv_setref_pvn(a,b,c,d) Perl_sv_setref_pvn(aTHX_ a,b,c,d) -#define sv_setpv(a,b) Perl_sv_setpv(aTHX_ a,b) -#define sv_setpvn(a,b,c) Perl_sv_setpvn(aTHX_ a,b,c) +#define sv_setref_uv(a,b,c) Perl_sv_setref_uv(aTHX_ a,b,c) +#define sv_setsv_flags(a,b,c) Perl_sv_setsv_flags(aTHX_ a,b,c) +#define sv_setsv_mg(a,b) Perl_sv_setsv_mg(aTHX_ a,b) +#define sv_setuv(a,b) Perl_sv_setuv(aTHX_ a,b) +#define sv_setuv_mg(a,b) Perl_sv_setuv_mg(aTHX_ a,b) #define sv_tainted(a) Perl_sv_tainted(aTHX_ a) +#define sv_true(a) Perl_sv_true(aTHX_ a) +#define sv_uni_display(a,b,c,d) Perl_sv_uni_display(aTHX_ a,b,c,d) #define sv_unmagic(a,b) Perl_sv_unmagic(aTHX_ a,b) +#define sv_unmagicext(a,b,c) Perl_sv_unmagicext(aTHX_ a,b,c) #define sv_unref_flags(a,b) Perl_sv_unref_flags(aTHX_ a,b) #define sv_untaint(a) Perl_sv_untaint(aTHX_ a) #define sv_upgrade(a,b) Perl_sv_upgrade(aTHX_ a,b) #define sv_usepvn_flags(a,b,c,d) Perl_sv_usepvn_flags(aTHX_ a,b,c,d) +#define sv_utf8_decode(a) Perl_sv_utf8_decode(aTHX_ a) +#define sv_utf8_downgrade(a,b) Perl_sv_utf8_downgrade(aTHX_ a,b) +#define sv_utf8_encode(a) Perl_sv_utf8_encode(aTHX_ a) +#define sv_utf8_upgrade_flags_grow(a,b,c) Perl_sv_utf8_upgrade_flags_grow(aTHX_ a,b,c) +#define sv_uv(a) Perl_sv_uv(aTHX_ a) +#define sv_vcatpvf(a,b,c) Perl_sv_vcatpvf(aTHX_ a,b,c) +#define sv_vcatpvf_mg(a,b,c) Perl_sv_vcatpvf_mg(aTHX_ a,b,c) #define sv_vcatpvfn(a,b,c,d,e,f,g) Perl_sv_vcatpvfn(aTHX_ a,b,c,d,e,f,g) +#define sv_vsetpvf(a,b,c) Perl_sv_vsetpvf(aTHX_ a,b,c) +#define sv_vsetpvf_mg(a,b,c) Perl_sv_vsetpvf_mg(aTHX_ a,b,c) #define sv_vsetpvfn(a,b,c,d,e,f,g) Perl_sv_vsetpvfn(aTHX_ a,b,c,d,e,f,g) -#define str_to_version(a) Perl_str_to_version(aTHX_ a) -#define swash_init(a,b,c,d,e) Perl_swash_init(aTHX_ a,b,c,d,e) #define swash_fetch(a,b,c) Perl_swash_fetch(aTHX_ a,b,c) +#define swash_init(a,b,c,d,e) Perl_swash_init(aTHX_ a,b,c,d,e) #define taint_env() Perl_taint_env(aTHX) #define taint_proper(a,b) Perl_taint_proper(aTHX_ a,b) +#define tmps_grow(a) Perl_tmps_grow(aTHX_ a) +#define to_uni_lower(a,b,c) Perl_to_uni_lower(aTHX_ a,b,c) +#define to_uni_lower_lc(a) Perl_to_uni_lower_lc(aTHX_ a) +#define to_uni_title(a,b,c) Perl_to_uni_title(aTHX_ a,b,c) +#define to_uni_title_lc(a) Perl_to_uni_title_lc(aTHX_ a) +#define to_uni_upper(a,b,c) Perl_to_uni_upper(aTHX_ a,b,c) +#define to_uni_upper_lc(a) Perl_to_uni_upper_lc(aTHX_ a) #define to_utf8_case(a,b,c,d,e,f) Perl_to_utf8_case(aTHX_ a,b,c,d,e,f) #define to_utf8_lower(a,b,c) Perl_to_utf8_lower(aTHX_ a,b,c) -#define to_utf8_upper(a,b,c) Perl_to_utf8_upper(aTHX_ a,b,c) #define to_utf8_title(a,b,c) Perl_to_utf8_title(aTHX_ a,b,c) -#define to_utf8_fold(a,b,c) Perl_to_utf8_fold(aTHX_ a,b,c) -#if defined(UNLINK_ALL_VERSIONS) -#define unlnk(a) Perl_unlnk(aTHX_ a) -#endif +#define to_utf8_upper(a,b,c) Perl_to_utf8_upper(aTHX_ a,b,c) #define unpack_str(a,b,c,d,e,f,g,h) Perl_unpack_str(aTHX_ a,b,c,d,e,f,g,h) #define unpackstring(a,b,c,d,e) Perl_unpackstring(aTHX_ a,b,c,d,e) #define unsharepvn(a,b,c) Perl_unsharepvn(aTHX_ a,b,c) -#ifdef PERL_CORE -#define unshare_hek(a) Perl_unshare_hek(aTHX_ a) -#endif -#ifdef PERL_MAD -#ifdef PERL_CORE -#define utilize(a,b,c,d,e) Perl_utilize(aTHX_ a,b,c,d,e) -#endif -#else -#ifdef PERL_CORE -#define utilize(a,b,c,d,e) Perl_utilize(aTHX_ a,b,c,d,e) -#endif -#endif +#define upg_version(a,b) Perl_upg_version(aTHX_ a,b) #define utf16_to_utf8(a,b,c,d) Perl_utf16_to_utf8(aTHX_ a,b,c,d) #define utf16_to_utf8_reversed(a,b,c,d) Perl_utf16_to_utf8_reversed(aTHX_ a,b,c,d) -#define utf8_length(a,b) Perl_utf8_length(aTHX_ a,b) #define utf8_distance(a,b) Perl_utf8_distance(aTHX_ a,b) #define utf8_hop(a,b) Perl_utf8_hop(aTHX_ a,b) +#define utf8_length(a,b) Perl_utf8_length(aTHX_ a,b) #define utf8_to_bytes(a,b) Perl_utf8_to_bytes(aTHX_ a,b) -#define bytes_from_utf8(a,b,c) Perl_bytes_from_utf8(aTHX_ a,b,c) -#define bytes_to_utf8(a,b) Perl_bytes_to_utf8(aTHX_ a,b) #define utf8_to_uvchr(a,b) Perl_utf8_to_uvchr(aTHX_ a,b) #define utf8_to_uvuni(a,b) Perl_utf8_to_uvuni(aTHX_ a,b) -#ifdef EBCDIC -#define utf8n_to_uvchr(a,b,c,d) Perl_utf8n_to_uvchr(aTHX_ a,b,c,d) -#else -#endif #define utf8n_to_uvuni(a,b,c,d) Perl_utf8n_to_uvuni(aTHX_ a,b,c,d) -#ifdef EBCDIC -#define uvchr_to_utf8(a,b) Perl_uvchr_to_utf8(aTHX_ a,b) -#else -#endif #define uvchr_to_utf8_flags(a,b,c) Perl_uvchr_to_utf8_flags(aTHX_ a,b,c) #define uvuni_to_utf8_flags(a,b,c) Perl_uvuni_to_utf8_flags(aTHX_ a,b,c) -#define pv_uni_display(a,b,c,d,e) Perl_pv_uni_display(aTHX_ a,b,c,d,e) -#define sv_uni_display(a,b,c,d) Perl_sv_uni_display(aTHX_ a,b,c,d) -#if defined(PERL_CORE) || defined(PERL_EXT) -#define vivify_defelem(a) Perl_vivify_defelem(aTHX_ a) +#define vcmp(a,b) Perl_vcmp(aTHX_ a,b) +#define vcroak(a,b) Perl_vcroak(aTHX_ a,b) +#define vdeb(a,b) Perl_vdeb(aTHX_ a,b) +#define vform(a,b) Perl_vform(aTHX_ a,b) +#define vload_module(a,b,c,d) Perl_vload_module(aTHX_ a,b,c,d) +#define vmess(a,b) Perl_vmess(aTHX_ a,b) +#define vnewSVpvf(a,b) Perl_vnewSVpvf(aTHX_ a,b) +#define vnormal(a) Perl_vnormal(aTHX_ a) +#define vnumify(a) Perl_vnumify(aTHX_ a) +#define vstringify(a) Perl_vstringify(aTHX_ a) +#define vverify(a) Perl_vverify(aTHX_ a) +#define vwarn(a,b) Perl_vwarn(aTHX_ a,b) +#define vwarner(a,b,c) Perl_vwarner(aTHX_ a,b,c) +#ifndef PERL_IMPLICIT_CONTEXT +#define warn Perl_warn #endif -#ifdef PERL_CORE -#define vivify_ref(a,b) Perl_vivify_ref(aTHX_ a,b) -#define wait4pid(a,b,c) Perl_wait4pid(aTHX_ a,b,c) -#define parse_unicode_opts(a) Perl_parse_unicode_opts(aTHX_ a) +#define warn_sv(a) Perl_warn_sv(aTHX_ a) +#ifndef PERL_IMPLICIT_CONTEXT +#define warner Perl_warner #endif -#define seed() Perl_seed(aTHX) -#ifdef PERL_CORE -#define get_hash_seed() Perl_get_hash_seed(aTHX) -#define report_evil_fh(a,b,c) Perl_report_evil_fh(aTHX_ a,b,c) +#define whichsig(a) Perl_whichsig(aTHX_ a) +#if !(defined(HAS_SIGACTION) && defined(SA_SIGINFO)) +#define csighandler Perl_csighandler #endif -#if defined(PERL_CORE) || defined(PERL_EXT) -#define report_uninit(a) Perl_report_uninit(aTHX_ a) +#if !(defined(NO_MATHOMS)) +#define sv_nounlocking(a) Perl_sv_nounlocking(aTHX_ a) #endif -#define vwarn(a,b) Perl_vwarn(aTHX_ a,b) -#define vwarner(a,b,c) Perl_vwarner(aTHX_ a,b,c) -#ifdef PERL_CORE -#define watch(a) Perl_watch(aTHX_ a) +#if !(defined(PERL_MAD)) +#define newFORM(a,b,c) Perl_newFORM(aTHX_ a,b,c) +#define newMYSUB(a,b,c,d,e) Perl_newMYSUB(aTHX_ a,b,c,d,e) #endif -#define whichsig(a) Perl_whichsig(aTHX_ a) -#ifdef PERL_CORE -#define write_to_stderr(a) Perl_write_to_stderr(aTHX_ a) -#define yyerror(a) Perl_yyerror(aTHX_ a) +#if !defined(HAS_BZERO) && !defined(HAS_MEMSET) +#define my_bzero Perl_my_bzero #endif -#if defined(PERL_CORE) || defined(PERL_EXT) -#define yylex() Perl_yylex(aTHX) +#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) +#define my_memcmp Perl_my_memcmp #endif -#ifdef PERL_CORE -#define yyparse() Perl_yyparse(aTHX) -#define parser_free(a) Perl_parser_free(aTHX_ a) +#if !defined(HAS_MEMSET) +#define my_memset Perl_my_memset #endif -#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define yywarn(a) S_yywarn(aTHX_ a) +#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) +#define my_chsize(a,b) Perl_my_chsize(aTHX_ a,b) +#endif +#if (!defined(HAS_MEMCPY) && !defined(HAS_BCOPY)) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY) && !defined(HAS_SAFE_BCOPY)) +#define my_bcopy Perl_my_bcopy +#endif +#if defined(DEBUGGING) +#define pad_sv(a) Perl_pad_sv(aTHX_ a) +#endif +#if defined(DUMP_FDS) +#define dump_fds(a) Perl_dump_fds(aTHX_ a) +#endif +#if defined(EBCDIC) +#define utf8n_to_uvchr(a,b,c,d) Perl_utf8n_to_uvchr(aTHX_ a,b,c,d) +#define uvchr_to_utf8(a,b) Perl_uvchr_to_utf8(aTHX_ a,b) +#endif +#if defined(HAS_SIGACTION) && defined(SA_SIGINFO) +#define csighandler Perl_csighandler #endif +#if defined(HAVE_INTERP_INTERN) +#define sys_intern_clear() Perl_sys_intern_clear(aTHX) +#define sys_intern_init() Perl_sys_intern_init(aTHX) +# if defined(USE_ITHREADS) +#define sys_intern_dup(a,b) Perl_sys_intern_dup(aTHX_ a,b) +# endif #endif #if defined(MYMALLOC) #define dump_mstats(a) Perl_dump_mstats(aTHX_ a) #define get_mstats(a,b,c) Perl_get_mstats(aTHX_ a,b,c) #endif -#define safesysmalloc Perl_safesysmalloc -#define safesyscalloc Perl_safesyscalloc -#define safesysrealloc Perl_safesysrealloc -#define safesysfree Perl_safesysfree +#if defined(MYSWAP) +#define my_htonl(a) Perl_my_htonl(aTHX_ a) +#define my_ntohl(a) Perl_my_ntohl(aTHX_ a) +#define my_swap(a) Perl_my_swap(aTHX_ a) +#endif #if defined(PERL_GLOBAL_STRUCT) #define GetVars() Perl_GetVars(aTHX) -#define init_global_struct() Perl_init_global_struct(aTHX) #define free_global_struct(a) Perl_free_global_struct(aTHX_ a) +#define init_global_struct() Perl_init_global_struct(aTHX) #endif -#define runops_standard() Perl_runops_standard(aTHX) -#define runops_debug() Perl_runops_debug(aTHX) -#define sv_vcatpvf_mg(a,b,c) Perl_sv_vcatpvf_mg(aTHX_ a,b,c) -#define sv_catpv_mg(a,b) Perl_sv_catpv_mg(aTHX_ a,b) -#define sv_vsetpvf_mg(a,b,c) Perl_sv_vsetpvf_mg(aTHX_ a,b,c) -#define sv_setiv_mg(a,b) Perl_sv_setiv_mg(aTHX_ a,b) -#define sv_setpviv_mg(a,b) Perl_sv_setpviv_mg(aTHX_ a,b) -#define sv_setuv_mg(a,b) Perl_sv_setuv_mg(aTHX_ a,b) -#define sv_setnv_mg(a,b) Perl_sv_setnv_mg(aTHX_ a,b) -#define sv_setpv_mg(a,b) Perl_sv_setpv_mg(aTHX_ a,b) -#define sv_setpvn_mg(a,b,c) Perl_sv_setpvn_mg(aTHX_ a,b,c) -#define sv_setsv_mg(a,b) Perl_sv_setsv_mg(aTHX_ a,b) -#define get_vtbl(a) Perl_get_vtbl(aTHX_ a) -#define pv_display(a,b,c,d,e) Perl_pv_display(aTHX_ a,b,c,d,e) -#define pv_escape(a,b,c,d,e,f) Perl_pv_escape(aTHX_ a,b,c,d,e,f) -#define pv_pretty(a,b,c,d,e,f,g) Perl_pv_pretty(aTHX_ a,b,c,d,e,f,g) -#define dump_vindent(a,b,c,d) Perl_dump_vindent(aTHX_ a,b,c,d) -#define do_gv_dump(a,b,c,d) Perl_do_gv_dump(aTHX_ a,b,c,d) -#define do_gvgv_dump(a,b,c,d) Perl_do_gvgv_dump(aTHX_ a,b,c,d) -#define do_hv_dump(a,b,c,d) Perl_do_hv_dump(aTHX_ a,b,c,d) -#define do_magic_dump(a,b,c,d,e,f,g) Perl_do_magic_dump(aTHX_ a,b,c,d,e,f,g) -#define do_op_dump(a,b,c) Perl_do_op_dump(aTHX_ a,b,c) -#define do_pmop_dump(a,b,c) Perl_do_pmop_dump(aTHX_ a,b,c) -#define do_sv_dump(a,b,c,d,e,f,g) Perl_do_sv_dump(aTHX_ a,b,c,d,e,f,g) -#define magic_dump(a) Perl_magic_dump(aTHX_ a) -#define reginitcolors() Perl_reginitcolors(aTHX) -#define sv_utf8_downgrade(a,b) Perl_sv_utf8_downgrade(aTHX_ a,b) -#define sv_utf8_encode(a) Perl_sv_utf8_encode(aTHX_ a) -#define sv_utf8_decode(a) Perl_sv_utf8_decode(aTHX_ a) -#define sv_force_normal_flags(a,b) Perl_sv_force_normal_flags(aTHX_ a,b) -#define tmps_grow(a) Perl_tmps_grow(aTHX_ a) -#define sv_rvweaken(a) Perl_sv_rvweaken(aTHX_ a) -#ifdef PERL_CORE -#define magic_killbackrefs(a,b) Perl_magic_killbackrefs(aTHX_ a,b) +#if defined(PERL_IMPLICIT_CONTEXT) +#define croak_nocontext Perl_croak_nocontext +#define deb_nocontext Perl_deb_nocontext +#define die_nocontext Perl_die_nocontext +#define form_nocontext Perl_form_nocontext +#define fprintf_nocontext Perl_fprintf_nocontext +#define load_module_nocontext Perl_load_module_nocontext +#define mess_nocontext Perl_mess_nocontext +#define newSVpvf_nocontext Perl_newSVpvf_nocontext +#define printf_nocontext Perl_printf_nocontext +#define sv_catpvf_mg_nocontext Perl_sv_catpvf_mg_nocontext +#define sv_catpvf_nocontext Perl_sv_catpvf_nocontext +#define sv_setpvf_mg_nocontext Perl_sv_setpvf_mg_nocontext +#define sv_setpvf_nocontext Perl_sv_setpvf_nocontext +#define warn_nocontext Perl_warn_nocontext +#define warner_nocontext Perl_warner_nocontext #endif -#define newANONATTRSUB(a,b,c,d) Perl_newANONATTRSUB(aTHX_ a,b,c,d) -#define newATTRSUB(a,b,c,d,e) Perl_newATTRSUB(aTHX_ a,b,c,d,e) -#ifdef PERL_MAD -#define newMYSUB(a,b,c,d,e) Perl_newMYSUB(aTHX_ a,b,c,d,e) -#else +#if defined(PERL_MAD) +#define newFORM(a,b,c) Perl_newFORM(aTHX_ a,b,c) #define newMYSUB(a,b,c,d,e) Perl_newMYSUB(aTHX_ a,b,c,d,e) #endif -#ifdef PERL_CORE -#define my_attrs(a,b) Perl_my_attrs(aTHX_ a,b) +#if defined(PL_OP_SLAB_ALLOC) +#define Slab_Alloc(a) Perl_Slab_Alloc(aTHX_ a) +#define Slab_Free(a) Perl_Slab_Free(aTHX_ a) +#endif +#if defined(UNLINK_ALL_VERSIONS) +#define unlnk(a) Perl_unlnk(aTHX_ a) #endif #if defined(USE_ITHREADS) -#define cx_dup(a,b,c,d) Perl_cx_dup(aTHX_ a,b,c,d) -#define si_dup(a,b) Perl_si_dup(aTHX_ a,b) -#define ss_dup(a,b) Perl_ss_dup(aTHX_ a,b) #define any_dup(a,b) Perl_any_dup(aTHX_ a,b) -#define he_dup(a,b,c) Perl_he_dup(aTHX_ a,b,c) -#define hek_dup(a,b) Perl_hek_dup(aTHX_ a,b) -#define re_dup_guts(a,b,c) Perl_re_dup_guts(aTHX_ a,b,c) +#define cx_dup(a,b,c,d) Perl_cx_dup(aTHX_ a,b,c,d) +#define dirp_dup(a,b) Perl_dirp_dup(aTHX_ a,b) #define fp_dup(a,b,c) Perl_fp_dup(aTHX_ a,b,c) -#define dirp_dup(a) Perl_dirp_dup(aTHX_ a) #define gp_dup(a,b) Perl_gp_dup(aTHX_ a,b) +#define he_dup(a,b,c) Perl_he_dup(aTHX_ a,b,c) +#define hek_dup(a,b) Perl_hek_dup(aTHX_ a,b) #define mg_dup(a,b) Perl_mg_dup(aTHX_ a,b) -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define sv_dup_inc_multiple(a,b,c,d) S_sv_dup_inc_multiple(aTHX_ a,b,c,d) -#endif -#endif -#define sv_dup(a,b) Perl_sv_dup(aTHX_ a,b) -#define rvpv_dup(a,b,c) Perl_rvpv_dup(aTHX_ a,b,c) +#define newPADOP(a,b,c) Perl_newPADOP(aTHX_ a,b,c) #define parser_dup(a,b) Perl_parser_dup(aTHX_ a,b) +#define re_dup_guts(a,b,c) Perl_re_dup_guts(aTHX_ a,b,c) +#define regdupe_internal(a,b) Perl_regdupe_internal(aTHX_ a,b) +#define rvpv_dup(a,b,c) Perl_rvpv_dup(aTHX_ a,b,c) +#define si_dup(a,b) Perl_si_dup(aTHX_ a,b) +#define ss_dup(a,b) Perl_ss_dup(aTHX_ a,b) +#define sv_dup(a,b) Perl_sv_dup(aTHX_ a,b) +#define sv_dup_inc(a,b) Perl_sv_dup_inc(aTHX_ a,b) #endif -#define ptr_table_new() Perl_ptr_table_new(aTHX) -#define ptr_table_fetch(a,b) Perl_ptr_table_fetch(aTHX_ a,b) -#define ptr_table_store(a,b,c) Perl_ptr_table_store(aTHX_ a,b,c) -#define ptr_table_split(a) Perl_ptr_table_split(aTHX_ a) -#define ptr_table_clear(a) Perl_ptr_table_clear(aTHX_ a) -#define ptr_table_free(a) Perl_ptr_table_free(aTHX_ a) -#if defined(USE_ITHREADS) -# if defined(HAVE_INTERP_INTERN) -#define sys_intern_dup(a,b) Perl_sys_intern_dup(aTHX_ a,b) -# endif -#endif -#if defined(HAVE_INTERP_INTERN) -#define sys_intern_clear() Perl_sys_intern_clear(aTHX) -#define sys_intern_init() Perl_sys_intern_init(aTHX) -#endif -#define custom_op_name(a) Perl_custom_op_name(aTHX_ a) -#define custom_op_desc(a) Perl_custom_op_desc(aTHX_ a) -#define sv_nosharing(a) Perl_sv_nosharing(aTHX_ a) -#define sv_destroyable(a) Perl_sv_destroyable(aTHX_ a) -#ifdef NO_MATHOMS -#else -#define sv_nounlocking(a) Perl_sv_nounlocking(aTHX_ a) -#endif -#define nothreadhook() Perl_nothreadhook(aTHX) -#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define do_trans_simple(a) S_do_trans_simple(aTHX_ a) -#define do_trans_count(a) S_do_trans_count(aTHX_ a) -#define do_trans_complex(a) S_do_trans_complex(aTHX_ a) -#define do_trans_simple_utf8(a) S_do_trans_simple_utf8(aTHX_ a) -#define do_trans_count_utf8(a) S_do_trans_count_utf8(aTHX_ a) -#define do_trans_complex_utf8(a) S_do_trans_complex_utf8(aTHX_ a) -#endif -#endif -#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define gv_init_sv(a,b) S_gv_init_sv(aTHX_ a,b) -#define gv_get_super_pkg(a,b) S_gv_get_super_pkg(aTHX_ a,b) -#define require_tie_mod(a,b,c,d,e) S_require_tie_mod(aTHX_ a,b,c,d,e) -#endif -#endif -#ifdef PERL_CORE +#if defined(USE_LOCALE_COLLATE) +#define sv_collxfrm_flags(a,b,c) Perl_sv_collxfrm_flags(aTHX_ a,b,c) #endif -#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define hsplit(a) S_hsplit(aTHX_ a) -#define hfreeentries(a) S_hfreeentries(aTHX_ a) -#define anonymise_cv(a,b) S_anonymise_cv(aTHX_ a,b) -#define new_he() S_new_he(aTHX) -#define save_hek_flags S_save_hek_flags -#define hv_magic_check S_hv_magic_check -#define unshare_hek_or_pvn(a,b,c,d) S_unshare_hek_or_pvn(aTHX_ a,b,c,d) -#define share_hek_flags(a,b,c,d) S_share_hek_flags(aTHX_ a,b,c,d) -#define hv_notallowed(a,b,c,d) S_hv_notallowed(aTHX_ a,b,c,d) -#define hv_auxinit S_hv_auxinit -#define hv_delete_common(a,b,c,d,e,f,g) S_hv_delete_common(aTHX_ a,b,c,d,e,f,g) -#define clear_placeholders(a,b) S_clear_placeholders(aTHX_ a,b) -#define refcounted_he_value(a) S_refcounted_he_value(aTHX_ a) +#if defined(USE_PERLIO) && !defined(USE_SFIO) +#define PerlIO_clearerr(a) Perl_PerlIO_clearerr(aTHX_ a) +#define PerlIO_close(a) Perl_PerlIO_close(aTHX_ a) +#define PerlIO_eof(a) Perl_PerlIO_eof(aTHX_ a) +#define PerlIO_error(a) Perl_PerlIO_error(aTHX_ a) +#define PerlIO_fileno(a) Perl_PerlIO_fileno(aTHX_ a) +#define PerlIO_fill(a) Perl_PerlIO_fill(aTHX_ a) +#define PerlIO_flush(a) Perl_PerlIO_flush(aTHX_ a) +#define PerlIO_get_base(a) Perl_PerlIO_get_base(aTHX_ a) +#define PerlIO_get_bufsiz(a) Perl_PerlIO_get_bufsiz(aTHX_ a) +#define PerlIO_get_cnt(a) Perl_PerlIO_get_cnt(aTHX_ a) +#define PerlIO_get_ptr(a) Perl_PerlIO_get_ptr(aTHX_ a) +#define PerlIO_read(a,b,c) Perl_PerlIO_read(aTHX_ a,b,c) +#define PerlIO_seek(a,b,c) Perl_PerlIO_seek(aTHX_ a,b,c) +#define PerlIO_set_cnt(a,b) Perl_PerlIO_set_cnt(aTHX_ a,b) +#define PerlIO_set_ptrcnt(a,b,c) Perl_PerlIO_set_ptrcnt(aTHX_ a,b,c) +#define PerlIO_setlinebuf(a) Perl_PerlIO_setlinebuf(aTHX_ a) +#define PerlIO_stderr() Perl_PerlIO_stderr(aTHX) +#define PerlIO_stdin() Perl_PerlIO_stdin(aTHX) +#define PerlIO_stdout() Perl_PerlIO_stdout(aTHX) +#define PerlIO_tell(a) Perl_PerlIO_tell(aTHX_ a) +#define PerlIO_unread(a,b,c) Perl_PerlIO_unread(aTHX_ a,b,c) +#define PerlIO_write(a,b,c) Perl_PerlIO_write(aTHX_ a,b,c) #endif +#if defined(USE_REENTRANT_API) +#define reentrant_free() Perl_reentrant_free(aTHX) +#define reentrant_init() Perl_reentrant_init(aTHX) +#define reentrant_retry Perl_reentrant_retry +#define reentrant_size() Perl_reentrant_size(aTHX) #endif -#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define save_magic(a,b) S_save_magic(aTHX_ a,b) -#define magic_methpack(a,b,c) S_magic_methpack(aTHX_ a,b,c) -#define magic_methcall(a,b,c,d,e,f) S_magic_methcall(aTHX_ a,b,c,d,e,f) -#define restore_magic(a) S_restore_magic(aTHX_ a) -#define unwind_handler_stack(a) S_unwind_handler_stack(aTHX_ a) +#if defined(WIN32) || defined(__SYMBIAN32__) || defined(VMS) +#define do_aspawn(a,b,c) Perl_do_aspawn(aTHX_ a,b,c) +#define do_spawn(a) Perl_do_spawn(aTHX_ a) +#define do_spawn_nowait(a) Perl_do_spawn_nowait(aTHX_ a) #endif +#if defined(PERL_CORE) || defined(PERL_EXT) +#define _append_range_to_invlist(a,b,c) Perl__append_range_to_invlist(aTHX_ a,b,c) +#define _new_invlist(a) Perl__new_invlist(aTHX_ a) +#define _swash_inversion_hash(a) Perl__swash_inversion_hash(aTHX_ a) +#define _swash_to_invlist(a) Perl__swash_to_invlist(aTHX_ a) +#define av_reify(a) Perl_av_reify(aTHX_ a) +#define is_utf8_X_L(a) Perl_is_utf8_X_L(aTHX_ a) +#define is_utf8_X_LV(a) Perl_is_utf8_X_LV(aTHX_ a) +#define is_utf8_X_LVT(a) Perl_is_utf8_X_LVT(aTHX_ a) +#define is_utf8_X_LV_LVT_V(a) Perl_is_utf8_X_LV_LVT_V(aTHX_ a) +#define is_utf8_X_T(a) Perl_is_utf8_X_T(aTHX_ a) +#define is_utf8_X_V(a) Perl_is_utf8_X_V(aTHX_ a) +#define is_utf8_X_begin(a) Perl_is_utf8_X_begin(aTHX_ a) +#define is_utf8_X_extend(a) Perl_is_utf8_X_extend(aTHX_ a) +#define is_utf8_X_non_hangul(a) Perl_is_utf8_X_non_hangul(aTHX_ a) +#define is_utf8_X_prepend(a) Perl_is_utf8_X_prepend(aTHX_ a) +#define mod(a,b) Perl_mod(aTHX_ a,b) +#define op_clear(a) Perl_op_clear(aTHX_ a) +#define qerror(a) Perl_qerror(aTHX_ a) +#define reg_named_buff(a,b,c,d) Perl_reg_named_buff(aTHX_ a,b,c,d) +#define reg_named_buff_iter(a,b,c) Perl_reg_named_buff_iter(aTHX_ a,b,c) +#define reg_numbered_buff_fetch(a,b,c) Perl_reg_numbered_buff_fetch(aTHX_ a,b,c) +#define reg_numbered_buff_length(a,b,c) Perl_reg_numbered_buff_length(aTHX_ a,b,c) +#define reg_numbered_buff_store(a,b,c) Perl_reg_numbered_buff_store(aTHX_ a,b,c) +#define reg_qr_package(a) Perl_reg_qr_package(aTHX_ a) +#define reg_temp_copy(a,b) Perl_reg_temp_copy(aTHX_ a,b) +#define regprop(a,b,c) Perl_regprop(aTHX_ a,b,c) +#define report_uninit(a) Perl_report_uninit(aTHX_ a) +#define vivify_defelem(a) Perl_vivify_defelem(aTHX_ a) +#define yylex() Perl_yylex(aTHX) +# if defined(DEBUGGING) +# if defined(PERL_IN_REGCOMP_C) +#define dump_trie(a,b,c,d) S_dump_trie(aTHX_ a,b,c,d) +#define dump_trie_interim_list(a,b,c,d,e) S_dump_trie_interim_list(aTHX_ a,b,c,d,e) +#define dump_trie_interim_table(a,b,c,d,e) S_dump_trie_interim_table(aTHX_ a,b,c,d,e) +#define dumpuntil(a,b,c,d,e,f,g,h) S_dumpuntil(aTHX_ a,b,c,d,e,f,g,h) +#define put_byte(a,b) S_put_byte(aTHX_ a,b) +#define regdump_extflags(a,b) S_regdump_extflags(aTHX_ a,b) +#define regtail_study(a,b,c,d) S_regtail_study(aTHX_ a,b,c,d) +# endif +# if defined(PERL_IN_REGEXEC_C) +#define debug_start_match(a,b,c,d,e) S_debug_start_match(aTHX_ a,b,c,d,e) +#define dump_exec_pos(a,b,c,d,e,f) S_dump_exec_pos(aTHX_ a,b,c,d,e,f) +# endif +# endif +# if defined(PERL_IN_DQUOTE_STATIC_C) +#define grok_bslash_c(a,b,c) S_grok_bslash_c(aTHX_ a,b,c) +#define grok_bslash_o(a,b,c,d,e) S_grok_bslash_o(aTHX_ a,b,c,d,e) +#define regcurly(a) S_regcurly(aTHX_ a) +# endif +# if defined(PERL_IN_REGCOMP_C) +#define add_alternate(a,b,c) S_add_alternate(aTHX_ a,b,c) +#define add_cp_to_invlist(a,b) S_add_cp_to_invlist(aTHX_ a,b) +#define add_data S_add_data +#define add_range_to_invlist(a,b,c) S_add_range_to_invlist(aTHX_ a,b,c) +#define checkposixcc(a) S_checkposixcc(aTHX_ a) +#define cl_and S_cl_and +#define cl_anything S_cl_anything +#define cl_init S_cl_init +#define cl_is_anything S_cl_is_anything +#define cl_or S_cl_or +#define invlist_array(a) S_invlist_array(aTHX_ a) +#define invlist_destroy(a) S_invlist_destroy(aTHX_ a) +#define invlist_extend(a,b) S_invlist_extend(aTHX_ a,b) +#define invlist_intersection(a,b) S_invlist_intersection(aTHX_ a,b) +#define invlist_len(a) S_invlist_len(aTHX_ a) +#define invlist_max(a) S_invlist_max(aTHX_ a) +#define invlist_set_len(a,b) S_invlist_set_len(aTHX_ a,b) +#define invlist_set_max(a,b) S_invlist_set_max(aTHX_ a,b) +#define invlist_trim(a) S_invlist_trim(aTHX_ a) +#define invlist_union(a,b) S_invlist_union(aTHX_ a,b) +#define join_exact(a,b,c,d,e,f) S_join_exact(aTHX_ a,b,c,d,e,f) +#define make_trie(a,b,c,d,e,f,g,h) S_make_trie(aTHX_ a,b,c,d,e,f,g,h) +#define make_trie_failtable(a,b,c,d) S_make_trie_failtable(aTHX_ a,b,c,d) +#define nextchar(a) S_nextchar(aTHX_ a) +#define reg(a,b,c,d) S_reg(aTHX_ a,b,c,d) +#define reg_namedseq(a,b,c,d) S_reg_namedseq(aTHX_ a,b,c,d) +#define reg_node(a,b) S_reg_node(aTHX_ a,b) +#define reg_recode(a,b) S_reg_recode(aTHX_ a,b) +#define reg_scan_name(a,b) S_reg_scan_name(aTHX_ a,b) +#define reg_skipcomment(a) S_reg_skipcomment(aTHX_ a) +#define reganode(a,b,c) S_reganode(aTHX_ a,b,c) +#define regatom(a,b,c) S_regatom(aTHX_ a,b,c) +#define regbranch(a,b,c,d) S_regbranch(aTHX_ a,b,c,d) +#define regclass(a,b) S_regclass(aTHX_ a,b) +#define reginsert(a,b,c,d) S_reginsert(aTHX_ a,b,c,d) +#define regpiece(a,b,c) S_regpiece(aTHX_ a,b,c) +#define regpposixcc(a,b) S_regpposixcc(aTHX_ a,b) +#define regtail(a,b,c,d) S_regtail(aTHX_ a,b,c,d) +#define reguni(a,b,c) S_reguni(aTHX_ a,b,c) +#define regwhite S_regwhite +#define scan_commit(a,b,c,d) S_scan_commit(aTHX_ a,b,c,d) +#define set_regclass_bit(a,b,c,d,e) S_set_regclass_bit(aTHX_ a,b,c,d,e) +#define set_regclass_bit_fold(a,b,c,d,e) S_set_regclass_bit_fold(aTHX_ a,b,c,d,e) +#define study_chunk(a,b,c,d,e,f,g,h,i,j,k) S_study_chunk(aTHX_ a,b,c,d,e,f,g,h,i,j,k) +# endif +# if defined(PERL_IN_REGEXEC_C) +#define find_byclass(a,b,c,d,e) S_find_byclass(aTHX_ a,b,c,d,e) +#define reg_check_named_buff_matched(a,b) S_reg_check_named_buff_matched(aTHX_ a,b) +#define regcppop(a) S_regcppop(aTHX_ a) +#define regcppush(a) S_regcppush(aTHX_ a) +#define reghop3 S_reghop3 +#define reghopmaybe3 S_reghopmaybe3 +#define reginclass(a,b,c,d,e) S_reginclass(aTHX_ a,b,c,d,e) +#define regmatch(a,b) S_regmatch(aTHX_ a,b) +#define regrepeat(a,b,c,d) S_regrepeat(aTHX_ a,b,c,d) +#define regtry(a,b) S_regtry(aTHX_ a,b) +#define to_byte_substr(a) S_to_byte_substr(aTHX_ a) +#define to_utf8_substr(a) S_to_utf8_substr(aTHX_ a) +# if defined(XXX_dmq) +#define reghop4 S_reghop4 +# endif +# endif +# if defined(PERL_OLD_COPY_ON_WRITE) +#define sv_setsv_cow(a,b) Perl_sv_setsv_cow(aTHX_ a,b) +# endif #endif -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE +#define allocmy(a,b,c) Perl_allocmy(aTHX_ a,b,c) +#define apply(a,b,c) Perl_apply(aTHX_ a,b,c) +#define bind_match(a,b,c) Perl_bind_match(aTHX_ a,b,c) +#define block_end(a,b) Perl_block_end(aTHX_ a,b) +#define block_start(a) Perl_block_start(aTHX_ a) +#define boot_core_PerlIO() Perl_boot_core_PerlIO(aTHX) +#define boot_core_UNIVERSAL() Perl_boot_core_UNIVERSAL(aTHX) +#define boot_core_mro() Perl_boot_core_mro(aTHX) +#define cando(a,b,c) Perl_cando(aTHX_ a,b,c) +#define check_utf8_print(a,b) Perl_check_utf8_print(aTHX_ a,b) #define ck_anoncode(a) Perl_ck_anoncode(aTHX_ a) #define ck_bitop(a) Perl_ck_bitop(aTHX_ a) +#define ck_chdir(a) Perl_ck_chdir(aTHX_ a) #define ck_concat(a) Perl_ck_concat(aTHX_ a) #define ck_defined(a) Perl_ck_defined(aTHX_ a) #define ck_delete(a) Perl_ck_delete(aTHX_ a) #define ck_die(a) Perl_ck_die(aTHX_ a) +#define ck_each(a) Perl_ck_each(aTHX_ a) #define ck_eof(a) Perl_ck_eof(aTHX_ a) #define ck_eval(a) Perl_ck_eval(aTHX_ a) #define ck_exec(a) Perl_ck_exec(aTHX_ a) @@ -3688,6 +977,7 @@ #define ck_sassign(a) Perl_ck_sassign(aTHX_ a) #define ck_select(a) Perl_ck_select(aTHX_ a) #define ck_shift(a) Perl_ck_shift(aTHX_ a) +#define ck_smartmatch(a) Perl_ck_smartmatch(aTHX_ a) #define ck_sort(a) Perl_ck_sort(aTHX_ a) #define ck_spair(a) Perl_ck_spair(aTHX_ a) #define ck_split(a) Perl_ck_split(aTHX_ a) @@ -3696,64 +986,383 @@ #define ck_svconst(a) Perl_ck_svconst(aTHX_ a) #define ck_trunc(a) Perl_ck_trunc(aTHX_ a) #define ck_unpack(a) Perl_ck_unpack(aTHX_ a) -#define ck_each(a) Perl_ck_each(aTHX_ a) -#define is_handle_constructor S_is_handle_constructor -#define is_list_assignment(a) S_is_list_assignment(aTHX_ a) -#endif -# ifdef USE_ITHREADS -#ifdef PERL_CORE -#endif -# else -#ifdef PERL_CORE +#define convert(a,b,c) Perl_convert(aTHX_ a,b,c) +#define create_eval_scope(a) Perl_create_eval_scope(aTHX_ a) +#define cv_ckproto_len(a,b,c,d) Perl_cv_ckproto_len(aTHX_ a,b,c,d) +#define cv_clone(a) Perl_cv_clone(aTHX_ a) +#define cvgv_set(a,b) Perl_cvgv_set(aTHX_ a,b) +#define cvstash_set(a,b) Perl_cvstash_set(aTHX_ a,b) +#define deb_stack_all() Perl_deb_stack_all(aTHX) +#define delete_eval_scope() Perl_delete_eval_scope(aTHX) +#define die_unwind(a) Perl_die_unwind(aTHX_ a) +#define do_aexec5(a,b,c,d,e) Perl_do_aexec5(aTHX_ a,b,c,d,e) +#define do_dump_pad(a,b,c,d) Perl_do_dump_pad(aTHX_ a,b,c,d) +#define do_eof(a) Perl_do_eof(aTHX_ a) +#define do_execfree() Perl_do_execfree(aTHX) +#define do_print(a,b) Perl_do_print(aTHX_ a,b) +#define do_readline() Perl_do_readline(aTHX) +#define do_seek(a,b,c) Perl_do_seek(aTHX_ a,b,c) +#define do_sysseek(a,b,c) Perl_do_sysseek(aTHX_ a,b,c) +#define do_tell(a) Perl_do_tell(aTHX_ a) +#define do_trans(a) Perl_do_trans(aTHX_ a) +#define do_vecget(a,b,c) Perl_do_vecget(aTHX_ a,b,c) +#define do_vecset(a) Perl_do_vecset(aTHX_ a) +#define do_vop(a,b,c,d) Perl_do_vop(aTHX_ a,b,c,d) +#define dofile(a,b) Perl_dofile(aTHX_ a,b) +#define dump_all_perl(a) Perl_dump_all_perl(aTHX_ a) +#define dump_packsubs_perl(a,b) Perl_dump_packsubs_perl(aTHX_ a,b) +#define dump_sub_perl(a,b) Perl_dump_sub_perl(aTHX_ a,b) +#define find_script(a,b,c,d) Perl_find_script(aTHX_ a,b,c,d) +#define free_tied_hv_pool() Perl_free_tied_hv_pool(aTHX) +#define get_hash_seed() Perl_get_hash_seed(aTHX) +#define get_no_modify() Perl_get_no_modify(aTHX) +#define get_opargs() Perl_get_opargs(aTHX) +#define gv_try_downgrade(a) Perl_gv_try_downgrade(aTHX_ a) +#define hv_ename_add(a,b,c,d) Perl_hv_ename_add(aTHX_ a,b,c,d) +#define hv_ename_delete(a,b,c,d) Perl_hv_ename_delete(aTHX_ a,b,c,d) +#define init_argv_symbols(a,b) Perl_init_argv_symbols(aTHX_ a,b) +#define init_debugger() Perl_init_debugger(aTHX) +#define intro_my() Perl_intro_my(aTHX) +#define invert(a) Perl_invert(aTHX_ a) +#define io_close(a,b) Perl_io_close(aTHX_ a,b) +#define is_gv_magical_sv(a,b) Perl_is_gv_magical_sv(aTHX_ a,b) +#define jmaybe(a) Perl_jmaybe(aTHX_ a) +#define keyword(a,b,c) Perl_keyword(aTHX_ a,b,c) +#define list(a) Perl_list(aTHX_ a) +#define localize(a,b) Perl_localize(aTHX_ a,b) +#define magic_clear_all_env(a,b) Perl_magic_clear_all_env(aTHX_ a,b) +#define magic_clearenv(a,b) Perl_magic_clearenv(aTHX_ a,b) +#define magic_clearhint(a,b) Perl_magic_clearhint(aTHX_ a,b) +#define magic_clearhints(a,b) Perl_magic_clearhints(aTHX_ a,b) +#define magic_clearisa(a,b) Perl_magic_clearisa(aTHX_ a,b) +#define magic_clearpack(a,b) Perl_magic_clearpack(aTHX_ a,b) +#define magic_clearsig(a,b) Perl_magic_clearsig(aTHX_ a,b) +#define magic_existspack(a,b) Perl_magic_existspack(aTHX_ a,b) +#define magic_freearylen_p(a,b) Perl_magic_freearylen_p(aTHX_ a,b) +#define magic_freeovrld(a,b) Perl_magic_freeovrld(aTHX_ a,b) +#define magic_get(a,b) Perl_magic_get(aTHX_ a,b) +#define magic_getarylen(a,b) Perl_magic_getarylen(aTHX_ a,b) +#define magic_getdefelem(a,b) Perl_magic_getdefelem(aTHX_ a,b) +#define magic_getnkeys(a,b) Perl_magic_getnkeys(aTHX_ a,b) +#define magic_getpack(a,b) Perl_magic_getpack(aTHX_ a,b) +#define magic_getpos(a,b) Perl_magic_getpos(aTHX_ a,b) +#define magic_getsig(a,b) Perl_magic_getsig(aTHX_ a,b) +#define magic_getsubstr(a,b) Perl_magic_getsubstr(aTHX_ a,b) +#define magic_gettaint(a,b) Perl_magic_gettaint(aTHX_ a,b) +#define magic_getuvar(a,b) Perl_magic_getuvar(aTHX_ a,b) +#define magic_getvec(a,b) Perl_magic_getvec(aTHX_ a,b) +#define magic_killbackrefs(a,b) Perl_magic_killbackrefs(aTHX_ a,b) +#define magic_len(a,b) Perl_magic_len(aTHX_ a,b) +#define magic_nextpack(a,b,c) Perl_magic_nextpack(aTHX_ a,b,c) +#define magic_regdata_cnt(a,b) Perl_magic_regdata_cnt(aTHX_ a,b) +#define magic_regdatum_get(a,b) Perl_magic_regdatum_get(aTHX_ a,b) +#define magic_regdatum_set(a,b) Perl_magic_regdatum_set(aTHX_ a,b) +#define magic_scalarpack(a,b) Perl_magic_scalarpack(aTHX_ a,b) +#define magic_set(a,b) Perl_magic_set(aTHX_ a,b) +#define magic_set_all_env(a,b) Perl_magic_set_all_env(aTHX_ a,b) +#define magic_setamagic(a,b) Perl_magic_setamagic(aTHX_ a,b) +#define magic_setarylen(a,b) Perl_magic_setarylen(aTHX_ a,b) +#define magic_setdbline(a,b) Perl_magic_setdbline(aTHX_ a,b) +#define magic_setdefelem(a,b) Perl_magic_setdefelem(aTHX_ a,b) +#define magic_setenv(a,b) Perl_magic_setenv(aTHX_ a,b) +#define magic_sethint(a,b) Perl_magic_sethint(aTHX_ a,b) +#define magic_setisa(a,b) Perl_magic_setisa(aTHX_ a,b) +#define magic_setmglob(a,b) Perl_magic_setmglob(aTHX_ a,b) +#define magic_setnkeys(a,b) Perl_magic_setnkeys(aTHX_ a,b) +#define magic_setpack(a,b) Perl_magic_setpack(aTHX_ a,b) +#define magic_setpos(a,b) Perl_magic_setpos(aTHX_ a,b) +#define magic_setregexp(a,b) Perl_magic_setregexp(aTHX_ a,b) +#define magic_setsig(a,b) Perl_magic_setsig(aTHX_ a,b) +#define magic_setsubstr(a,b) Perl_magic_setsubstr(aTHX_ a,b) +#define magic_settaint(a,b) Perl_magic_settaint(aTHX_ a,b) +#define magic_setutf8(a,b) Perl_magic_setutf8(aTHX_ a,b) +#define magic_setuvar(a,b) Perl_magic_setuvar(aTHX_ a,b) +#define magic_setvec(a,b) Perl_magic_setvec(aTHX_ a,b) +#define magic_sizepack(a,b) Perl_magic_sizepack(aTHX_ a,b) +#define magic_wipepack(a,b) Perl_magic_wipepack(aTHX_ a,b) +#define mg_localize(a,b,c) Perl_mg_localize(aTHX_ a,b,c) +#define mode_from_discipline(a,b) Perl_mode_from_discipline(aTHX_ a,b) +#define mro_isa_changed_in(a) Perl_mro_isa_changed_in(aTHX_ a) +#define mro_package_moved(a,b,c,d) Perl_mro_package_moved(aTHX_ a,b,c,d) +#define munge_qwlist_to_paren_list(a) Perl_munge_qwlist_to_paren_list(aTHX_ a) +#define my_attrs(a,b) Perl_my_attrs(aTHX_ a,b) +#define my_clearenv() Perl_my_clearenv(aTHX) +#define my_lstat_flags(a) Perl_my_lstat_flags(aTHX_ a) +#define my_stat_flags(a) Perl_my_stat_flags(aTHX_ a) +#define my_swabn Perl_my_swabn +#define my_unexec() Perl_my_unexec(aTHX) +#define nextargv(a) Perl_nextargv(aTHX_ a) +#define oopsAV(a) Perl_oopsAV(aTHX_ a) +#define oopsHV(a) Perl_oopsHV(aTHX_ a) +#define op_const_sv(a,b) Perl_op_const_sv(aTHX_ a,b) +#define package_version(a) Perl_package_version(aTHX_ a) +#define pad_add_anon(a,b) Perl_pad_add_anon(aTHX_ a,b) +#define pad_add_name(a,b,c,d,e) Perl_pad_add_name(aTHX_ a,b,c,d,e) +#define pad_alloc(a,b) Perl_pad_alloc(aTHX_ a,b) +#define pad_block_start(a) Perl_pad_block_start(aTHX_ a) +#define pad_compname_type(a) Perl_pad_compname_type(aTHX_ a) +#define pad_fixup_inner_anons(a,b,c) Perl_pad_fixup_inner_anons(aTHX_ a,b,c) +#define pad_free(a) Perl_pad_free(aTHX_ a) +#define pad_leavemy() Perl_pad_leavemy(aTHX) +#define pad_new(a) Perl_pad_new(aTHX_ a) +#define pad_push(a,b) Perl_pad_push(aTHX_ a,b) +#define pad_swipe(a,b) Perl_pad_swipe(aTHX_ a,b) +#define pad_tidy(a) Perl_pad_tidy(aTHX_ a) +#define parse_unicode_opts(a) Perl_parse_unicode_opts(aTHX_ a) +#define parser_free(a) Perl_parser_free(aTHX_ a) +#define peep(a) Perl_peep(aTHX_ a) +#define pmruntime(a,b,c) Perl_pmruntime(aTHX_ a,b,c) +#define refcounted_he_chain_2hv(a,b) Perl_refcounted_he_chain_2hv(aTHX_ a,b) +#define refcounted_he_fetch_pv(a,b,c,d) Perl_refcounted_he_fetch_pv(aTHX_ a,b,c,d) +#define refcounted_he_fetch_pvn(a,b,c,d,e) Perl_refcounted_he_fetch_pvn(aTHX_ a,b,c,d,e) +#define refcounted_he_fetch_sv(a,b,c,d) Perl_refcounted_he_fetch_sv(aTHX_ a,b,c,d) +#define refcounted_he_free(a) Perl_refcounted_he_free(aTHX_ a) +#define refcounted_he_inc(a) Perl_refcounted_he_inc(aTHX_ a) +#define refcounted_he_new_pv(a,b,c,d,e) Perl_refcounted_he_new_pv(aTHX_ a,b,c,d,e) +#define refcounted_he_new_pvn(a,b,c,d,e,f) Perl_refcounted_he_new_pvn(aTHX_ a,b,c,d,e,f) +#define refcounted_he_new_sv(a,b,c,d,e) Perl_refcounted_he_new_sv(aTHX_ a,b,c,d,e) +#define report_evil_fh(a) Perl_report_evil_fh(aTHX_ a) +#define report_wrongway_fh(a,b) Perl_report_wrongway_fh(aTHX_ a,b) +#define rpeep(a) Perl_rpeep(aTHX_ a) +#define rsignal_restore(a,b) Perl_rsignal_restore(aTHX_ a,b) +#define rsignal_save(a,b,c) Perl_rsignal_save(aTHX_ a,b,c) +#define rxres_save(a,b) Perl_rxres_save(aTHX_ a,b) +#define sawparens(a) Perl_sawparens(aTHX_ a) +#define scalar(a) Perl_scalar(aTHX_ a) +#define scalarvoid(a) Perl_scalarvoid(aTHX_ a) +#define sub_crush_depth(a) Perl_sub_crush_depth(aTHX_ a) +#define sv_2num(a) Perl_sv_2num(aTHX_ a) +#define sv_clean_all() Perl_sv_clean_all(aTHX) +#define sv_clean_objs() Perl_sv_clean_objs(aTHX) +#define sv_del_backref(a,b) Perl_sv_del_backref(aTHX_ a,b) +#define sv_free_arenas() Perl_sv_free_arenas(aTHX) +#ifndef PERL_IMPLICIT_CONTEXT +#define tied_method Perl_tied_method #endif +#define unshare_hek(a) Perl_unshare_hek(aTHX_ a) +#define vivify_ref(a,b) Perl_vivify_ref(aTHX_ a,b) +#define wait4pid(a,b,c) Perl_wait4pid(aTHX_ a,b,c) +#define watch(a) Perl_watch(aTHX_ a) +#define write_to_stderr(a) Perl_write_to_stderr(aTHX_ a) +#define yyerror(a) Perl_yyerror(aTHX_ a) +#define yyparse(a) Perl_yyparse(aTHX_ a) +#define yyunlex() Perl_yyunlex(aTHX) +# if !(defined(DEBUGGING)) +# if !defined(NV_PRESERVES_UV) +# if defined(PERL_IN_SV_C) +#define sv_2iuv_non_preserve(a) S_sv_2iuv_non_preserve(aTHX_ a) +# endif +# endif # endif -#ifdef PERL_CORE -#define find_and_forget_pmops(a) S_find_and_forget_pmops(aTHX_ a) +# if !(defined(HAS_SIGACTION) && defined(SA_SIGINFO)) +#define sighandler Perl_sighandler +# endif +# if !(defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION)) +#define do_exec(a) Perl_do_exec(aTHX_ a) +# endif +# if !(defined(PERL_MAD)) +#define package(a) Perl_package(aTHX_ a) +#define utilize(a,b,c,d,e) Perl_utilize(aTHX_ a,b,c,d,e) +# endif +# if !defined(HAS_GETENV_LEN) +#define getenv_len(a,b) Perl_getenv_len(aTHX_ a,b) +# endif +# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) +# if defined(PERL_IN_PP_SYS_C) +#define dooneliner(a,b) S_dooneliner(aTHX_ a,b) +# endif +# endif +# if !defined(HAS_RENAME) +#define same_dirent(a,b) Perl_same_dirent(aTHX_ a,b) +# endif +# if !defined(NV_PRESERVES_UV) +# if defined(DEBUGGING) +# if defined(PERL_IN_SV_C) +#define sv_2iuv_non_preserve(a,b) S_sv_2iuv_non_preserve(aTHX_ a,b) +# endif +# endif +# endif +# if !defined(PERL_DISABLE_PMC) +# if defined(PERL_IN_PP_CTL_C) +#define doopen_pm(a) S_doopen_pm(aTHX_ a) +# endif +# endif +# if !defined(PERL_IS_MINIPERL) +# if defined(PERL_IN_PERL_C) +#define incpush_if_exists(a,b,c) S_incpush_if_exists(aTHX_ a,b,c) +# endif +# endif +# if !defined(PERL_NO_UTF16_FILTER) +# if defined(PERL_IN_TOKE_C) +#define add_utf16_textfilter(a,b) S_add_utf16_textfilter(aTHX_ a,b) +#define utf16_textfilter(a,b,c) S_utf16_textfilter(aTHX_ a,b,c) +# endif +# endif +# if !defined(WIN32) +#define do_exec3(a,b,c) Perl_do_exec3(aTHX_ a,b,c) +# endif +# if defined(DEBUGGING) +#define get_debug_opts(a,b) Perl_get_debug_opts(aTHX_ a,b) +#define pad_setsv(a,b) Perl_pad_setsv(aTHX_ a,b) +# if defined(PERL_IN_PAD_C) +#define cv_dump(a,b) S_cv_dump(aTHX_ a,b) +# endif +# if defined(PERL_IN_SV_C) +#define del_sv(a) S_del_sv(aTHX_ a) +# endif +# if defined(PERL_IN_TOKE_C) +#define printbuf(a,b) S_printbuf(aTHX_ a,b) +#define tokereport(a,b) S_tokereport(aTHX_ a,b) +# endif +# endif +# if defined(DEBUG_LEAKING_SCALARS_FORK_DUMP) +#define dump_sv_child(a) Perl_dump_sv_child(aTHX_ a) +# endif +# if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) +#define do_ipcctl(a,b,c) Perl_do_ipcctl(aTHX_ a,b,c) +#define do_ipcget(a,b,c) Perl_do_ipcget(aTHX_ a,b,c) +#define do_msgrcv(a,b) Perl_do_msgrcv(aTHX_ a,b) +#define do_msgsnd(a,b) Perl_do_msgsnd(aTHX_ a,b) +#define do_semop(a,b) Perl_do_semop(aTHX_ a,b) +#define do_shmio(a,b,c) Perl_do_shmio(aTHX_ a,b,c) +# endif +# if defined(HAS_SIGACTION) && defined(SA_SIGINFO) +#define sighandler Perl_sighandler +# endif +# if defined(MYMALLOC) +#define malloc_good_size Perl_malloc_good_size +#define malloced_size Perl_malloced_size +# endif +# if defined(PERL_CR_FILTER) +# if defined(PERL_IN_TOKE_C) +#define cr_textfilter(a,b,c) S_cr_textfilter(aTHX_ a,b,c) +#define strip_return(a) S_strip_return(aTHX_ a) +# endif +# endif +# if defined(PERL_DEBUG_READONLY_OPS) +# if defined(PERL_IN_OP_C) +# if defined(PL_OP_SLAB_ALLOC) +#define Slab_to_rw(a) S_Slab_to_rw(aTHX_ a) +# endif +# endif +# endif +# if defined(PERL_IN_AV_C) +#define get_aux_mg(a) S_get_aux_mg(aTHX_ a) +# endif +# if defined(PERL_IN_DEB_C) +#define deb_stack_n(a,b,c,d,e) S_deb_stack_n(aTHX_ a,b,c,d,e) +# endif +# if defined(PERL_IN_DOIO_C) +#define exec_failed(a,b,c) S_exec_failed(aTHX_ a,b,c) +#define ingroup(a,b) S_ingroup(aTHX_ a,b) +# endif +# if defined(PERL_IN_DOOP_C) +#define do_trans_complex(a) S_do_trans_complex(aTHX_ a) +#define do_trans_complex_utf8(a) S_do_trans_complex_utf8(aTHX_ a) +#define do_trans_count(a) S_do_trans_count(aTHX_ a) +#define do_trans_count_utf8(a) S_do_trans_count_utf8(aTHX_ a) +#define do_trans_simple(a) S_do_trans_simple(aTHX_ a) +#define do_trans_simple_utf8(a) S_do_trans_simple_utf8(aTHX_ a) +# endif +# if defined(PERL_IN_DUMP_C) +#define deb_curcv(a) S_deb_curcv(aTHX_ a) +#define debprof(a) S_debprof(aTHX_ a) +#define pm_description(a) S_pm_description(aTHX_ a) +#define sequence(a) S_sequence(aTHX_ a) +#define sequence_num(a) S_sequence_num(aTHX_ a) +#define sequence_tail(a) S_sequence_tail(aTHX_ a) +# endif +# if defined(PERL_IN_GV_C) +#define gv_get_super_pkg(a,b) S_gv_get_super_pkg(aTHX_ a,b) +#define gv_init_sv(a,b) S_gv_init_sv(aTHX_ a,b) +#define gv_magicalize_isa(a) S_gv_magicalize_isa(aTHX_ a) +#define gv_magicalize_overload(a) S_gv_magicalize_overload(aTHX_ a) +#define require_tie_mod(a,b,c,d,e) S_require_tie_mod(aTHX_ a,b,c,d,e) +# endif +# if defined(PERL_IN_HV_C) +#define clear_placeholders(a,b) S_clear_placeholders(aTHX_ a,b) +#define hfreeentries(a) S_hfreeentries(aTHX_ a) +#define hsplit(a) S_hsplit(aTHX_ a) +#define hv_auxinit S_hv_auxinit +#define hv_delete_common(a,b,c,d,e,f,g) S_hv_delete_common(aTHX_ a,b,c,d,e,f,g) +#define hv_magic_check S_hv_magic_check +#define hv_notallowed(a,b,c,d) S_hv_notallowed(aTHX_ a,b,c,d) +#define new_he() S_new_he(aTHX) +#define refcounted_he_value(a) S_refcounted_he_value(aTHX_ a) +#define save_hek_flags S_save_hek_flags +#define share_hek_flags(a,b,c,d) S_share_hek_flags(aTHX_ a,b,c,d) +#define unshare_hek_or_pvn(a,b,c,d) S_unshare_hek_or_pvn(aTHX_ a,b,c,d) +# endif +# if defined(PERL_IN_LOCALE_C) +# if defined(USE_LOCALE_NUMERIC) || defined(USE_LOCALE_COLLATE) +#define stdize_locale(a) S_stdize_locale(aTHX_ a) +# endif +# endif +# if defined(PERL_IN_MG_C) +#define magic_methcall1(a,b,c,d,e,f) S_magic_methcall1(aTHX_ a,b,c,d,e,f) +#define magic_methpack(a,b,c) S_magic_methpack(aTHX_ a,b,c) +#define restore_magic(a) S_restore_magic(aTHX_ a) +#define save_magic(a,b) S_save_magic(aTHX_ a,b) +#define unwind_handler_stack(a) S_unwind_handler_stack(aTHX_ a) +# endif +# if defined(PERL_IN_MRO_C) +#define mro_clean_isarev(a,b,c,d) S_mro_clean_isarev(aTHX_ a,b,c,d) +#define mro_gather_and_rename(a,b,c,d,e) S_mro_gather_and_rename(aTHX_ a,b,c,d,e) +#define mro_get_linear_isa_dfs(a,b) S_mro_get_linear_isa_dfs(aTHX_ a,b) +# endif +# if defined(PERL_IN_NUMERIC_C) +#define mulexp10 S_mulexp10 +# endif +# if defined(PERL_IN_OP_C) +#define apply_attrs(a,b,c,d) S_apply_attrs(aTHX_ a,b,c,d) +#define apply_attrs_my(a,b,c,d) S_apply_attrs_my(aTHX_ a,b,c,d) +#define bad_type(a,b,c,d) S_bad_type(aTHX_ a,b,c,d) #define cop_free(a) S_cop_free(aTHX_ a) +#define dup_attrlist(a) S_dup_attrlist(aTHX_ a) +#define find_and_forget_pmops(a) S_find_and_forget_pmops(aTHX_ a) +#define fold_constants(a) S_fold_constants(aTHX_ a) +#define force_list(a) S_force_list(aTHX_ a) +#define gen_constant_list(a) S_gen_constant_list(aTHX_ a) +#define gv_ename(a) S_gv_ename(aTHX_ a) +#define is_handle_constructor S_is_handle_constructor +#define is_inplace_av(a,b) S_is_inplace_av(aTHX_ a,b) +#define is_list_assignment(a) S_is_list_assignment(aTHX_ a) +#define listkids(a) S_listkids(aTHX_ a) +#define looks_like_bool(a) S_looks_like_bool(aTHX_ a) #define modkids(a,b) S_modkids(aTHX_ a,b) -#define scalarboolean(a) S_scalarboolean(aTHX_ a) +#define my_kid(a,b,c) S_my_kid(aTHX_ a,b,c) #define newDEFSVOP() S_newDEFSVOP(aTHX) -#define search_const(a) S_search_const(aTHX_ a) +#define newGIVWHENOP(a,b,c,d,e) S_newGIVWHENOP(aTHX_ a,b,c,d,e) #define new_logop(a,b,c,d) S_new_logop(aTHX_ a,b,c,d) -#define simplify_sort(a) S_simplify_sort(aTHX_ a) -#define gv_ename(a) S_gv_ename(aTHX_ a) -#define scalar_mod_type S_scalar_mod_type -#define my_kid(a,b,c) S_my_kid(aTHX_ a,b,c) -#define dup_attrlist(a) S_dup_attrlist(aTHX_ a) -#define apply_attrs(a,b,c,d) S_apply_attrs(aTHX_ a,b,c,d) -#define apply_attrs_my(a,b,c,d) S_apply_attrs_my(aTHX_ a,b,c,d) -#define bad_type(a,b,c,d) S_bad_type(aTHX_ a,b,c,d) #define no_bareword_allowed(a) S_no_bareword_allowed(aTHX_ a) #define no_fh_allowed(a) S_no_fh_allowed(aTHX_ a) +#define opt_scalarhv(a) S_opt_scalarhv(aTHX_ a) +#define pmtrans(a,b,c) S_pmtrans(aTHX_ a,b,c) +#define process_special_blocks(a,b,c) S_process_special_blocks(aTHX_ a,b,c) +#define ref_array_or_hash(a) S_ref_array_or_hash(aTHX_ a) +#define refkids(a,b) S_refkids(aTHX_ a,b) +#define scalar_mod_type S_scalar_mod_type +#define scalarboolean(a) S_scalarboolean(aTHX_ a) +#define scalarkids(a) S_scalarkids(aTHX_ a) +#define scalarseq(a) S_scalarseq(aTHX_ a) +#define search_const(a) S_search_const(aTHX_ a) +#define simplify_sort(a) S_simplify_sort(aTHX_ a) #define too_few_arguments(a,b) S_too_few_arguments(aTHX_ a,b) #define too_many_arguments(a,b) S_too_many_arguments(aTHX_ a,b) -#define looks_like_bool(a) S_looks_like_bool(aTHX_ a) -#define newGIVWHENOP(a,b,c,d,e) S_newGIVWHENOP(aTHX_ a,b,c,d,e) -#define ref_array_or_hash(a) S_ref_array_or_hash(aTHX_ a) -#define process_special_blocks(a,b,c) S_process_special_blocks(aTHX_ a,b,c) -#endif -#endif -#if defined(PL_OP_SLAB_ALLOC) -#define Slab_Alloc(a) Perl_Slab_Alloc(aTHX_ a) -#define Slab_Free(a) Perl_Slab_Free(aTHX_ a) -# if defined(PERL_DEBUG_READONLY_OPS) -#ifdef PERL_CORE -#endif -# if defined(PERL_IN_OP_C) -#ifdef PERL_CORE -#define Slab_to_rw(a) S_Slab_to_rw(aTHX_ a) -#endif -# endif # endif -#endif -#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE +# if defined(PERL_IN_PAD_C) +#define pad_add_name_sv(a,b,c,d) S_pad_add_name_sv(aTHX_ a,b,c,d) +#define pad_check_dup(a,b,c) S_pad_check_dup(aTHX_ a,b,c) +#define pad_findlex(a,b,c,d,e,f,g) S_pad_findlex(aTHX_ a,b,c,d,e,f,g) +#define pad_reset() S_pad_reset(aTHX) +# endif +# if defined(PERL_IN_PERL_C) #define find_beginning(a,b) S_find_beginning(aTHX_ a,b) #define forbid_setid(a,b) S_forbid_setid(aTHX_ a,b) #define incpush(a,b,c) S_incpush(aTHX_ a,b,c) #define incpush_use_sep(a,b,c) S_incpush_use_sep(aTHX_ a,b,c) -#define init_interp() S_init_interp(aTHX) #define init_ids() S_init_ids(aTHX) +#define init_interp() S_init_interp(aTHX) #define init_main_stash() S_init_main_stash(aTHX) #define init_perllib() S_init_perllib(aTHX) #define init_postdump_symbols(a,b,c) S_init_postdump_symbols(aTHX_ a,b,c) @@ -3761,267 +1370,131 @@ #define my_exit_jump() S_my_exit_jump(aTHX) #define nuke_stacks() S_nuke_stacks(aTHX) #define open_script(a,b,c,d) S_open_script(aTHX_ a,b,c,d) -#define usage(a) S_usage(aTHX_ a) -#endif -#ifndef SETUID_SCRIPTS_ARE_SECURE_NOW -#ifdef PERL_CORE -#endif -#endif -#ifdef PERL_CORE #define parse_body(a,b) S_parse_body(aTHX_ a,b) #define run_body(a) S_run_body(aTHX_ a) -#define incpush_if_exists(a,b,c) S_incpush_if_exists(aTHX_ a,b,c) -#endif -#endif -#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE +#define usage(a) S_usage(aTHX_ a) +# endif +# if defined(PERL_IN_PP_C) +#define do_chomp(a,b,c) S_do_chomp(aTHX_ a,b,c) #define do_delete_local() S_do_delete_local(aTHX) #define refto(a) S_refto(aTHX_ a) -#endif -#endif -#if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#endif -#endif -#if defined(PERL_IN_PP_PACK_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define unpack_rec(a,b,c,d,e) S_unpack_rec(aTHX_ a,b,c,d,e) -#define pack_rec(a,b,c,d) S_pack_rec(aTHX_ a,b,c,d) -#define mul128(a,b) S_mul128(aTHX_ a,b) -#define measure_struct(a) S_measure_struct(aTHX_ a) -#define next_symbol(a) S_next_symbol(aTHX_ a) -#define is_an_int(a,b) S_is_an_int(aTHX_ a,b) -#define div128(a,b) S_div128(aTHX_ a,b) -#define group_end(a,b,c) S_group_end(aTHX_ a,b,c) -#define get_num(a,b) S_get_num(aTHX_ a,b) -#define need_utf8 S_need_utf8 -#define first_symbol S_first_symbol -#define sv_exp_grow(a,b) S_sv_exp_grow(aTHX_ a,b) -#define bytes_to_uni S_bytes_to_uni -#endif -#endif -#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE +# endif +# if defined(PERL_IN_PP_CTL_C) +#define check_type_and_open(a) S_check_type_and_open(aTHX_ a) +#define destroy_matcher(a) S_destroy_matcher(aTHX_ a) +#define do_smartmatch(a,b) S_do_smartmatch(aTHX_ a,b) #define docatch(a) S_docatch(aTHX_ a) +#define doeval(a,b,c,d) S_doeval(aTHX_ a,b,c,d) #define dofindlabel(a,b,c,d) S_dofindlabel(aTHX_ a,b,c,d) #define doparseform(a) S_doparseform(aTHX_ a) -#define num_overflow S_num_overflow #define dopoptoeval(a) S_dopoptoeval(aTHX_ a) #define dopoptogiven(a) S_dopoptogiven(aTHX_ a) #define dopoptolabel(a) S_dopoptolabel(aTHX_ a) #define dopoptoloop(a) S_dopoptoloop(aTHX_ a) #define dopoptosub_at(a,b) S_dopoptosub_at(aTHX_ a,b) #define dopoptowhen(a) S_dopoptowhen(aTHX_ a) -#define save_lines(a,b) S_save_lines(aTHX_ a,b) -#define doeval(a,b,c,d) S_doeval(aTHX_ a,b,c,d) -#define check_type_and_open(a) S_check_type_and_open(aTHX_ a) -#endif -#ifndef PERL_DISABLE_PMC -#ifdef PERL_CORE -#define doopen_pm(a,b) S_doopen_pm(aTHX_ a,b) -#endif -#endif -#ifdef PERL_CORE -#define path_is_absolute S_path_is_absolute -#define run_user_filter(a,b,c) S_run_user_filter(aTHX_ a,b,c) #define make_matcher(a) S_make_matcher(aTHX_ a) #define matcher_matches_sv(a,b) S_matcher_matches_sv(aTHX_ a,b) -#define destroy_matcher(a) S_destroy_matcher(aTHX_ a) -#define do_smartmatch(a,b) S_do_smartmatch(aTHX_ a,b) -#endif -#endif -#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE +#define num_overflow S_num_overflow +#define path_is_absolute S_path_is_absolute +#define run_user_filter(a,b,c) S_run_user_filter(aTHX_ a,b,c) +#define rxres_free(a) S_rxres_free(aTHX_ a) +#define rxres_restore(a,b) S_rxres_restore(aTHX_ a,b) +#define save_lines(a,b) S_save_lines(aTHX_ a,b) +# endif +# if defined(PERL_IN_PP_HOT_C) #define do_oddball(a,b,c) S_do_oddball(aTHX_ a,b,c) #define method_common(a,b) S_method_common(aTHX_ a,b) -#endif -#endif -#if defined(PERL_IN_PP_SORT_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define sv_ncmp(a,b) S_sv_ncmp(aTHX_ a,b) -#define sv_i_ncmp(a,b) S_sv_i_ncmp(aTHX_ a,b) -#define amagic_ncmp(a,b) S_amagic_ncmp(aTHX_ a,b) -#define amagic_i_ncmp(a,b) S_amagic_i_ncmp(aTHX_ a,b) +# endif +# if defined(PERL_IN_PP_PACK_C) +#define bytes_to_uni S_bytes_to_uni +#define div128(a,b) S_div128(aTHX_ a,b) +#define first_symbol S_first_symbol +#define get_num(a,b) S_get_num(aTHX_ a,b) +#define group_end(a,b,c) S_group_end(aTHX_ a,b,c) +#define is_an_int(a,b) S_is_an_int(aTHX_ a,b) +#define measure_struct(a) S_measure_struct(aTHX_ a) +#define mul128(a,b) S_mul128(aTHX_ a,b) +#define need_utf8 S_need_utf8 +#define next_symbol(a) S_next_symbol(aTHX_ a) +#define pack_rec(a,b,c,d) S_pack_rec(aTHX_ a,b,c,d) +#define sv_exp_grow(a,b) S_sv_exp_grow(aTHX_ a,b) +#define unpack_rec(a,b,c,d,e) S_unpack_rec(aTHX_ a,b,c,d,e) +# endif +# if defined(PERL_IN_PP_SORT_C) #define amagic_cmp(a,b) S_amagic_cmp(aTHX_ a,b) #define amagic_cmp_locale(a,b) S_amagic_cmp_locale(aTHX_ a,b) +#define amagic_i_ncmp(a,b) S_amagic_i_ncmp(aTHX_ a,b) +#define amagic_ncmp(a,b) S_amagic_ncmp(aTHX_ a,b) +#define qsortsvu(a,b,c) S_qsortsvu(aTHX_ a,b,c) #define sortcv(a,b) S_sortcv(aTHX_ a,b) -#define sortcv_xsub(a,b) S_sortcv_xsub(aTHX_ a,b) #define sortcv_stacked(a,b) S_sortcv_stacked(aTHX_ a,b) -#define qsortsvu(a,b,c) S_qsortsvu(aTHX_ a,b,c) -#endif -#endif -#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define doform(a,b,c) S_doform(aTHX_ a,b,c) -#endif -# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) -#ifdef PERL_CORE -#define dooneliner(a,b) S_dooneliner(aTHX_ a,b) -#endif +#define sortcv_xsub(a,b) S_sortcv_xsub(aTHX_ a,b) +#define sv_i_ncmp(a,b) S_sv_i_ncmp(aTHX_ a,b) +#define sv_ncmp(a,b) S_sv_ncmp(aTHX_ a,b) # endif -#ifdef PERL_CORE +# if defined(PERL_IN_PP_SYS_C) +#define doform(a,b,c) S_doform(aTHX_ a,b,c) #define space_join_names_mortal(a) S_space_join_names_mortal(aTHX_ a) -#endif -#endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) -#if defined(PERL_CORE) || defined(PERL_EXT) -#define reg(a,b,c,d) S_reg(aTHX_ a,b,c,d) -#define reganode(a,b,c) S_reganode(aTHX_ a,b,c) -#define regatom(a,b,c) S_regatom(aTHX_ a,b,c) -#define regbranch(a,b,c,d) S_regbranch(aTHX_ a,b,c,d) -#define reguni(a,b,c) S_reguni(aTHX_ a,b,c) -#define regclass(a,b) S_regclass(aTHX_ a,b) -#define reg_node(a,b) S_reg_node(aTHX_ a,b) -#define reg_recode(a,b) S_reg_recode(aTHX_ a,b) -#define regpiece(a,b,c) S_regpiece(aTHX_ a,b,c) -#define reg_namedseq(a,b,c) S_reg_namedseq(aTHX_ a,b,c) -#define reginsert(a,b,c,d) S_reginsert(aTHX_ a,b,c,d) -#define regtail(a,b,c,d) S_regtail(aTHX_ a,b,c,d) -#define reg_scan_name(a,b) S_reg_scan_name(aTHX_ a,b) -#define join_exact(a,b,c,d,e,f) S_join_exact(aTHX_ a,b,c,d,e,f) -#define regwhite S_regwhite -#define nextchar(a) S_nextchar(aTHX_ a) -#define reg_skipcomment(a) S_reg_skipcomment(aTHX_ a) -#define scan_commit(a,b,c,d) S_scan_commit(aTHX_ a,b,c,d) -#define cl_anything S_cl_anything -#define cl_is_anything S_cl_is_anything -#define cl_init S_cl_init -#define cl_init_zero S_cl_init_zero -#define cl_and S_cl_and -#define cl_or S_cl_or -#define study_chunk(a,b,c,d,e,f,g,h,i,j,k) S_study_chunk(aTHX_ a,b,c,d,e,f,g,h,i,j,k) -#define add_data S_add_data -#endif -#ifdef PERL_CORE -#endif -#if defined(PERL_CORE) || defined(PERL_EXT) -#define regpposixcc(a,b) S_regpposixcc(aTHX_ a,b) -#define checkposixcc(a) S_checkposixcc(aTHX_ a) -#define make_trie(a,b,c,d,e,f,g,h) S_make_trie(aTHX_ a,b,c,d,e,f,g,h) -#define make_trie_failtable(a,b,c,d) S_make_trie_failtable(aTHX_ a,b,c,d) -#endif -# ifdef DEBUGGING -#if defined(PERL_CORE) || defined(PERL_EXT) -#define regdump_extflags(a,b) S_regdump_extflags(aTHX_ a,b) -#define dumpuntil(a,b,c,d,e,f,g,h) S_dumpuntil(aTHX_ a,b,c,d,e,f,g,h) -#define put_byte(a,b) S_put_byte(aTHX_ a,b) -#define dump_trie(a,b,c,d) S_dump_trie(aTHX_ a,b,c,d) -#define dump_trie_interim_list(a,b,c,d,e) S_dump_trie_interim_list(aTHX_ a,b,c,d,e) -#define dump_trie_interim_table(a,b,c,d,e) S_dump_trie_interim_table(aTHX_ a,b,c,d,e) -#define regtail_study(a,b,c,d) S_regtail_study(aTHX_ a,b,c,d) -#endif -# endif -#endif -#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) -#if defined(PERL_CORE) || defined(PERL_EXT) -#define regmatch(a,b) S_regmatch(aTHX_ a,b) -#define regrepeat(a,b,c,d) S_regrepeat(aTHX_ a,b,c,d) -#define regtry(a,b) S_regtry(aTHX_ a,b) -#define reginclass(a,b,c,d,e) S_reginclass(aTHX_ a,b,c,d,e) -#define regcppush(a) S_regcppush(aTHX_ a) -#define regcppop(a) S_regcppop(aTHX_ a) -#define reghop3 S_reghop3 -#endif -#ifdef XXX_dmq -#if defined(PERL_CORE) || defined(PERL_EXT) -#define reghop4 S_reghop4 -#endif -#endif -#if defined(PERL_CORE) || defined(PERL_EXT) -#define reghopmaybe3 S_reghopmaybe3 -#define find_byclass(a,b,c,d,e) S_find_byclass(aTHX_ a,b,c,d,e) -#define to_utf8_substr(a) S_to_utf8_substr(aTHX_ a) -#define to_byte_substr(a) S_to_byte_substr(aTHX_ a) -#define reg_check_named_buff_matched(a,b) S_reg_check_named_buff_matched(aTHX_ a,b) -#endif -# ifdef DEBUGGING -#if defined(PERL_CORE) || defined(PERL_EXT) -#define dump_exec_pos(a,b,c,d,e,f) S_dump_exec_pos(aTHX_ a,b,c,d,e,f) -#define debug_start_match(a,b,c,d,e) S_debug_start_match(aTHX_ a,b,c,d,e) -#endif # endif -#endif -#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define deb_curcv(a) S_deb_curcv(aTHX_ a) -#define debprof(a) S_debprof(aTHX_ a) -#define sequence(a) S_sequence(aTHX_ a) -#define sequence_tail(a) S_sequence_tail(aTHX_ a) -#define sequence_num(a) S_sequence_num(aTHX_ a) -#define pm_description(a) S_pm_description(aTHX_ a) -#endif -#endif -#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE +# if defined(PERL_IN_SCOPE_C) +#define save_pushptri32ptr(a,b,c,d) S_save_pushptri32ptr(aTHX_ a,b,c,d) #define save_scalar_at(a,b) S_save_scalar_at(aTHX_ a,b) -#endif -#endif -#if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#endif -#endif -#if defined(PERL_IN_HV_C) || defined(PERL_IN_MG_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#endif -#endif -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define uiv_2buf S_uiv_2buf -#define sv_unglob(a) S_sv_unglob(aTHX_ a) -#define not_a_number(a) S_not_a_number(aTHX_ a) -#define visit(a,b,c) S_visit(aTHX_ a,b,c) -#define sv_del_backref(a,b) S_sv_del_backref(aTHX_ a,b) -#define varname(a,b,c,d,e,f) S_varname(aTHX_ a,b,c,d,e,f) -#endif -# ifdef DEBUGGING -#ifdef PERL_CORE -#define del_sv(a) S_del_sv(aTHX_ a) -#endif # endif -# if !defined(NV_PRESERVES_UV) -# ifdef DEBUGGING -#ifdef PERL_CORE -#define sv_2iuv_non_preserve(a,b) S_sv_2iuv_non_preserve(aTHX_ a,b) -#endif -# else -#ifdef PERL_CORE -#define sv_2iuv_non_preserve(a) S_sv_2iuv_non_preserve(aTHX_ a) -#endif -# endif -# endif -#ifdef PERL_CORE +# if defined(PERL_IN_SV_C) +#define F0convert S_F0convert +#define anonymise_cv_maybe(a,b) S_anonymise_cv_maybe(aTHX_ a,b) +#define assert_uft8_cache_coherent(a,b,c,d) S_assert_uft8_cache_coherent(aTHX_ a,b,c,d) +#define curse(a,b) S_curse(aTHX_ a,b) #define expect_number(a) S_expect_number(aTHX_ a) -#endif -#ifdef PERL_CORE +#define find_array_subscript(a,b) S_find_array_subscript(aTHX_ a,b) +#define find_hash_subscript(a,b) S_find_hash_subscript(aTHX_ a,b) +#define find_uninit_var(a,b,c) S_find_uninit_var(aTHX_ a,b,c) +#define glob_2number(a) S_glob_2number(aTHX_ a) +#define glob_assign_glob(a,b,c) S_glob_assign_glob(aTHX_ a,b,c) +#define glob_assign_ref(a,b) S_glob_assign_ref(aTHX_ a,b) +#define more_sv() S_more_sv(aTHX) +#define not_a_number(a) S_not_a_number(aTHX_ a) +#define ptr_table_find S_ptr_table_find +#define sv_2iuv_common(a) S_sv_2iuv_common(aTHX_ a) +#define sv_add_arena(a,b,c) S_sv_add_arena(aTHX_ a,b,c) +#define sv_pos_b2u_midway(a,b,c,d) S_sv_pos_b2u_midway(aTHX_ a,b,c,d) +#define sv_pos_u2b_cached(a,b,c,d,e,f,g) S_sv_pos_u2b_cached(aTHX_ a,b,c,d,e,f,g) #define sv_pos_u2b_forwards S_sv_pos_u2b_forwards #define sv_pos_u2b_midway S_sv_pos_u2b_midway -#define sv_pos_u2b_cached(a,b,c,d,e,f,g) S_sv_pos_u2b_cached(aTHX_ a,b,c,d,e,f,g) +#define sv_unglob(a) S_sv_unglob(aTHX_ a) +#define uiv_2buf S_uiv_2buf +#define utf8_mg_len_cache_update(a,b,c) S_utf8_mg_len_cache_update(aTHX_ a,b,c) #define utf8_mg_pos_cache_update(a,b,c,d,e) S_utf8_mg_pos_cache_update(aTHX_ a,b,c,d,e) -#define sv_pos_b2u_midway(a,b,c,d) S_sv_pos_b2u_midway(aTHX_ a,b,c,d) -#define F0convert S_F0convert -#endif -# if defined(PERL_OLD_COPY_ON_WRITE) -#ifdef PERL_CORE +#define varname(a,b,c,d,e,f) S_varname(aTHX_ a,b,c,d,e,f) +#define visit(a,b,c) S_visit(aTHX_ a,b,c) +# if defined(PERL_OLD_COPY_ON_WRITE) #define sv_release_COW(a,b,c) S_sv_release_COW(aTHX_ a,b,c) -#endif +# endif +# if defined(USE_ITHREADS) +#define sv_dup_common(a,b) S_sv_dup_common(aTHX_ a,b) +#define sv_dup_inc_multiple(a,b,c,d) S_sv_dup_inc_multiple(aTHX_ a,b,c,d) +#define unreferenced_to_tmp_stack(a) S_unreferenced_to_tmp_stack(aTHX_ a) +# endif # endif -#ifdef PERL_CORE -#define more_sv() S_more_sv(aTHX) -#define more_bodies(a) S_more_bodies(aTHX_ a) -#define sv_2iuv_common(a) S_sv_2iuv_common(aTHX_ a) -#define glob_assign_glob(a,b,c) S_glob_assign_glob(aTHX_ a,b,c) -#define glob_assign_ref(a,b) S_glob_assign_ref(aTHX_ a,b) -#define ptr_table_find S_ptr_table_find -#endif -#endif -#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE +# if defined(PERL_IN_TOKE_C) +#define ao(a) S_ao(aTHX_ a) #define check_uni() S_check_uni(aTHX) +#define checkcomma(a,b,c) S_checkcomma(aTHX_ a,b,c) +#define deprecate_commaless_var_list() S_deprecate_commaless_var_list(aTHX) +#define filter_gets(a,b) S_filter_gets(aTHX_ a,b) +#define find_in_my_stash(a,b) S_find_in_my_stash(aTHX_ a,b) +#define force_ident(a,b) S_force_ident(aTHX_ a,b) #define force_next(a) S_force_next(aTHX_ a) -#define force_version(a,b) S_force_version(aTHX_ a,b) #define force_strict_version(a) S_force_strict_version(aTHX_ a) +#define force_version(a,b) S_force_version(aTHX_ a,b) #define force_word(a,b,c,d,e) S_force_word(aTHX_ a,b,c,d,e) -#define tokeq(a) S_tokeq(aTHX_ a) +#define incline(a) S_incline(aTHX_ a) +#define intuit_method(a,b,c) S_intuit_method(aTHX_ a,b,c) +#define intuit_more(a) S_intuit_more(aTHX_ a) +#define lop(a,b,c) S_lop(aTHX_ a,b,c) +#define missingterm(a) S_missingterm(aTHX_ a) +#define no_op(a,b) S_no_op(aTHX_ a,b) #define readpipe_override() S_readpipe_override(aTHX) #define scan_const(a) S_scan_const(aTHX_ a) #define scan_formline(a) S_scan_formline(aTHX_ a) @@ -4033,851 +1506,167 @@ #define scan_subst(a) S_scan_subst(aTHX_ a) #define scan_trans(a) S_scan_trans(aTHX_ a) #define scan_word(a,b,c,d,e) S_scan_word(aTHX_ a,b,c,d,e) -#define update_debugger_info(a,b,c) S_update_debugger_info(aTHX_ a,b,c) #define skipspace(a) S_skipspace(aTHX_ a) -#define swallow_bom(a) S_swallow_bom(aTHX_ a) -#endif -#ifndef PERL_NO_UTF16_FILTER -#ifdef PERL_CORE -#define utf16_textfilter(a,b,c) S_utf16_textfilter(aTHX_ a,b,c) -#define add_utf16_textfilter(a,b) S_add_utf16_textfilter(aTHX_ a,b) -#endif -#endif -#ifdef PERL_CORE -#define checkcomma(a,b,c) S_checkcomma(aTHX_ a,b,c) -#define feature_is_enabled(a,b) S_feature_is_enabled(aTHX_ a,b) -#define force_ident(a,b) S_force_ident(aTHX_ a,b) -#define incline(a) S_incline(aTHX_ a) -#define intuit_method(a,b,c) S_intuit_method(aTHX_ a,b,c) -#define intuit_more(a) S_intuit_more(aTHX_ a) -#define lop(a,b,c) S_lop(aTHX_ a,b,c) -#define missingterm(a) S_missingterm(aTHX_ a) -#define no_op(a,b) S_no_op(aTHX_ a,b) #define sublex_done() S_sublex_done(aTHX) #define sublex_push() S_sublex_push(aTHX) #define sublex_start() S_sublex_start(aTHX) -#define filter_gets(a,b) S_filter_gets(aTHX_ a,b) -#define find_in_my_stash(a,b) S_find_in_my_stash(aTHX_ a,b) +#define swallow_bom(a) S_swallow_bom(aTHX_ a) #define tokenize_use(a,b) S_tokenize_use(aTHX_ a,b) -#define deprecate_commaless_var_list() S_deprecate_commaless_var_list(aTHX) -#define ao(a) S_ao(aTHX_ a) -#endif -# if defined(PERL_CR_FILTER) -#ifdef PERL_CORE -#define cr_textfilter(a,b,c) S_cr_textfilter(aTHX_ a,b,c) -#define strip_return(a) S_strip_return(aTHX_ a) -#endif -# endif -# if defined(DEBUGGING) -#ifdef PERL_CORE -#define tokereport(a,b) S_tokereport(aTHX_ a,b) -#define printbuf(a,b) S_printbuf(aTHX_ a,b) -#endif +#define tokeq(a) S_tokeq(aTHX_ a) +#define update_debugger_info(a,b,c) S_update_debugger_info(aTHX_ a,b,c) +#define yywarn(a) S_yywarn(aTHX_ a) +# if defined(PERL_MAD) +#define curmad(a,b) S_curmad(aTHX_ a,b) +#define skipspace0(a) S_skipspace0(aTHX_ a) +#define skipspace1(a) S_skipspace1(aTHX_ a) +#define skipspace2(a,b) S_skipspace2(aTHX_ a,b) +#define start_force(a) S_start_force(aTHX_ a) +# endif # endif -#endif -#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE +# if defined(PERL_IN_UNIVERSAL_C) #define isa_lookup(a,b) S_isa_lookup(aTHX_ a,b) -#endif -#endif -#if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT) -#if defined(USE_LOCALE_NUMERIC) || defined(USE_LOCALE_COLLATE) -#ifdef PERL_CORE -#define stdize_locale(a) S_stdize_locale(aTHX_ a) -#endif -#endif -#endif -#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE +# endif +# if defined(PERL_IN_UTF8_C) +#define is_utf8_char_slow S_is_utf8_char_slow +#define is_utf8_common(a,b,c) S_is_utf8_common(aTHX_ a,b,c) +#define swash_get(a,b,c) S_swash_get(aTHX_ a,b,c) +# endif +# if defined(PERL_IN_UTIL_C) +#define ckwarn_common(a) S_ckwarn_common(aTHX_ a) #define closest_cop(a,b) S_closest_cop(aTHX_ a,b) +#define invoke_exception_hook(a,b) S_invoke_exception_hook(aTHX_ a,b) #define mess_alloc() S_mess_alloc(aTHX) -#define vdie_croak_common(a,b) S_vdie_croak_common(aTHX_ a,b) -#define vdie_common(a,b) S_vdie_common(aTHX_ a,b) +#define with_queued_errors(a) S_with_queued_errors(aTHX_ a) #define write_no_mem() S_write_no_mem(aTHX) -#endif -#if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL) -#ifdef PERL_CORE +# if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL) #define mem_log_common S_mem_log_common -#endif -#endif -#endif -#if defined(PERL_IN_NUMERIC_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define mulexp10 S_mulexp10 -#endif -#endif -#if defined(PERL_IN_UTF8_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define is_utf8_char_slow S_is_utf8_char_slow -#define is_utf8_common(a,b,c) S_is_utf8_common(aTHX_ a,b,c) -#define swash_get(a,b,c) S_swash_get(aTHX_ a,b,c) -#endif -#endif -#define sv_setsv_flags(a,b,c) Perl_sv_setsv_flags(aTHX_ a,b,c) -#define sv_catpvn_flags(a,b,c,d) Perl_sv_catpvn_flags(aTHX_ a,b,c,d) -#define sv_catsv_flags(a,b,c) Perl_sv_catsv_flags(aTHX_ a,b,c) -#define sv_utf8_upgrade_flags_grow(a,b,c) Perl_sv_utf8_upgrade_flags_grow(aTHX_ a,b,c) -#define sv_pvn_force_flags(a,b,c) Perl_sv_pvn_force_flags(aTHX_ a,b,c) -#define sv_copypv(a,b) Perl_sv_copypv(aTHX_ a,b) -#define my_atof2(a,b) Perl_my_atof2(aTHX_ a,b) -#define my_socketpair Perl_my_socketpair -#define my_dirfd(a) Perl_my_dirfd(aTHX_ a) -#ifdef PERL_OLD_COPY_ON_WRITE -#if defined(PERL_CORE) || defined(PERL_EXT) -#define sv_setsv_cow(a,b) Perl_sv_setsv_cow(aTHX_ a,b) -#endif -#endif -#if defined(USE_PERLIO) && !defined(USE_SFIO) -#define PerlIO_close(a) Perl_PerlIO_close(aTHX_ a) -#define PerlIO_fill(a) Perl_PerlIO_fill(aTHX_ a) -#define PerlIO_fileno(a) Perl_PerlIO_fileno(aTHX_ a) -#define PerlIO_eof(a) Perl_PerlIO_eof(aTHX_ a) -#define PerlIO_error(a) Perl_PerlIO_error(aTHX_ a) -#define PerlIO_flush(a) Perl_PerlIO_flush(aTHX_ a) -#define PerlIO_clearerr(a) Perl_PerlIO_clearerr(aTHX_ a) -#define PerlIO_set_cnt(a,b) Perl_PerlIO_set_cnt(aTHX_ a,b) -#define PerlIO_set_ptrcnt(a,b,c) Perl_PerlIO_set_ptrcnt(aTHX_ a,b,c) -#define PerlIO_setlinebuf(a) Perl_PerlIO_setlinebuf(aTHX_ a) -#define PerlIO_read(a,b,c) Perl_PerlIO_read(aTHX_ a,b,c) -#define PerlIO_write(a,b,c) Perl_PerlIO_write(aTHX_ a,b,c) -#define PerlIO_unread(a,b,c) Perl_PerlIO_unread(aTHX_ a,b,c) -#define PerlIO_tell(a) Perl_PerlIO_tell(aTHX_ a) -#define PerlIO_seek(a,b,c) Perl_PerlIO_seek(aTHX_ a,b,c) -#define PerlIO_get_base(a) Perl_PerlIO_get_base(aTHX_ a) -#define PerlIO_get_ptr(a) Perl_PerlIO_get_ptr(aTHX_ a) -#define PerlIO_get_bufsiz(a) Perl_PerlIO_get_bufsiz(aTHX_ a) -#define PerlIO_get_cnt(a) Perl_PerlIO_get_cnt(aTHX_ a) -#define PerlIO_stdin() Perl_PerlIO_stdin(aTHX) -#define PerlIO_stdout() Perl_PerlIO_stdout(aTHX) -#define PerlIO_stderr() Perl_PerlIO_stderr(aTHX) -#endif /* PERLIO_LAYERS */ -#ifdef PERL_CORE -#define deb_stack_all() Perl_deb_stack_all(aTHX) -#endif -#if defined(PERL_IN_DEB_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define deb_stack_n(a,b,c,d,e) S_deb_stack_n(aTHX_ a,b,c,d,e) -#endif -#endif -#ifdef PERL_CORE -#define pad_new(a) Perl_pad_new(aTHX_ a) -#define pad_undef(a) Perl_pad_undef(aTHX_ a) -#define pad_add_name(a,b,c,d,e) Perl_pad_add_name(aTHX_ a,b,c,d,e) -#define pad_add_anon(a,b) Perl_pad_add_anon(aTHX_ a,b) -#endif -#if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define pad_check_dup(a,b,c) S_pad_check_dup(aTHX_ a,b,c) -#endif -#endif -#ifdef DEBUGGING -#ifdef PERL_CORE -#define pad_setsv(a,b) Perl_pad_setsv(aTHX_ a,b) -#endif -#endif -#ifdef PERL_CORE -#define pad_block_start(a) Perl_pad_block_start(aTHX_ a) -#define pad_tidy(a) Perl_pad_tidy(aTHX_ a) -#define do_dump_pad(a,b,c,d) Perl_do_dump_pad(aTHX_ a,b,c,d) -#define pad_fixup_inner_anons(a,b,c) Perl_pad_fixup_inner_anons(aTHX_ a,b,c) -#endif -#ifdef PERL_CORE -#define pad_push(a,b) Perl_pad_push(aTHX_ a,b) -#define pad_compname_type(a) Perl_pad_compname_type(aTHX_ a) -#endif -#if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define pad_findlex(a,b,c,d,e,f,g) S_pad_findlex(aTHX_ a,b,c,d,e,f,g) -#define pad_add_name_sv(a,b,c,d) S_pad_add_name_sv(aTHX_ a,b,c,d) -#endif -# if defined(DEBUGGING) -#ifdef PERL_CORE -#define cv_dump(a,b) S_cv_dump(aTHX_ a,b) -#endif +# endif # endif +# if defined(PERL_MAD) +#define addmad(a,b,c) Perl_addmad(aTHX_ a,b,c) +#define append_madprops(a,b,c) Perl_append_madprops(aTHX_ a,b,c) +#define do_op_xmldump(a,b,c) Perl_do_op_xmldump(aTHX_ a,b,c) +#define do_pmop_xmldump(a,b,c) Perl_do_pmop_xmldump(aTHX_ a,b,c) +#define mad_free(a) Perl_mad_free(aTHX_ a) +#define madlex() Perl_madlex(aTHX) +#define madparse(a) Perl_madparse(aTHX_ a) +#define newMADPROP(a,b,c,d) Perl_newMADPROP(aTHX_ a,b,c,d) +#define newMADsv(a,b) Perl_newMADsv(aTHX_ a,b) +#define newTOKEN(a,b,c) Perl_newTOKEN(aTHX_ a,b,c) +#define op_getmad(a,b,c) Perl_op_getmad(aTHX_ a,b,c) +#define op_getmad_weak(a,b,c) Perl_op_getmad_weak(aTHX_ a,b,c) +#define op_xmldump(a) Perl_op_xmldump(aTHX_ a) +#define package(a) Perl_package(aTHX_ a) +#define pad_peg Perl_pad_peg +#define pmop_xmldump(a) Perl_pmop_xmldump(aTHX_ a) +#define prepend_madprops(a,b,c) Perl_prepend_madprops(aTHX_ a,b,c) +#define sv_catxmlpv(a,b,c) Perl_sv_catxmlpv(aTHX_ a,b,c) +#define sv_catxmlpvn(a,b,c,d) Perl_sv_catxmlpvn(aTHX_ a,b,c,d) +#define sv_catxmlsv(a,b) Perl_sv_catxmlsv(aTHX_ a,b) +#define sv_xmlpeek(a) Perl_sv_xmlpeek(aTHX_ a) +#define token_free(a) Perl_token_free(aTHX_ a) +#define token_getmad(a,b,c) Perl_token_getmad(aTHX_ a,b,c) +#define utilize(a,b,c,d,e) Perl_utilize(aTHX_ a,b,c,d,e) +#define xmldump_all() Perl_xmldump_all(aTHX) +#define xmldump_all_perl(a) Perl_xmldump_all_perl(aTHX_ a) +#define xmldump_eval() Perl_xmldump_eval(aTHX) +#define xmldump_form(a) Perl_xmldump_form(aTHX_ a) +#ifndef PERL_IMPLICIT_CONTEXT +#define xmldump_indent Perl_xmldump_indent #endif -#define find_runcv(a) Perl_find_runcv(aTHX_ a) -#ifdef PERL_CORE -#define free_tied_hv_pool() Perl_free_tied_hv_pool(aTHX) -#endif -#if defined(DEBUGGING) -#ifdef PERL_CORE -#define get_debug_opts(a,b) Perl_get_debug_opts(aTHX_ a,b) -#endif -#endif -#define save_set_svflags(a,b,c) Perl_save_set_svflags(aTHX_ a,b,c) -#ifdef DEBUGGING -#endif -#define hv_scalar(a) Perl_hv_scalar(aTHX_ a) -#define hv_name_set(a,b,c,d) Perl_hv_name_set(aTHX_ a,b,c,d) -#ifdef PERL_CORE -#endif -#if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#endif -#endif -#define hv_clear_placeholders(a) Perl_hv_clear_placeholders(aTHX_ a) -#ifdef PERL_CORE -#define magic_scalarpack(a,b) Perl_magic_scalarpack(aTHX_ a,b) -#endif -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define find_hash_subscript(a,b) S_find_hash_subscript(aTHX_ a,b) -#define find_array_subscript(a,b) S_find_array_subscript(aTHX_ a,b) -#define find_uninit_var(a,b,c) S_find_uninit_var(aTHX_ a,b,c) -#endif -#endif -#ifdef PERL_NEED_MY_HTOLE16 -#ifdef PERL_CORE -#define my_htole16 Perl_my_htole16 -#endif -#endif -#ifdef PERL_NEED_MY_LETOH16 -#ifdef PERL_CORE -#define my_letoh16 Perl_my_letoh16 -#endif -#endif -#ifdef PERL_NEED_MY_HTOBE16 -#ifdef PERL_CORE -#define my_htobe16 Perl_my_htobe16 -#endif -#endif -#ifdef PERL_NEED_MY_BETOH16 -#ifdef PERL_CORE +#define xmldump_packsubs(a) Perl_xmldump_packsubs(aTHX_ a) +#define xmldump_packsubs_perl(a,b) Perl_xmldump_packsubs_perl(aTHX_ a,b) +#define xmldump_sub(a) Perl_xmldump_sub(aTHX_ a) +#define xmldump_sub_perl(a,b) Perl_xmldump_sub_perl(aTHX_ a,b) +#define xmldump_vindent(a,b,c,d) Perl_xmldump_vindent(aTHX_ a,b,c,d) +# endif +# if defined(PERL_NEED_MY_BETOH16) #define my_betoh16 Perl_my_betoh16 -#endif -#endif -#ifdef PERL_NEED_MY_HTOLE32 -#ifdef PERL_CORE -#define my_htole32 Perl_my_htole32 -#endif -#endif -#ifdef PERL_NEED_MY_LETOH32 -#ifdef PERL_CORE -#define my_letoh32 Perl_my_letoh32 -#endif -#endif -#ifdef PERL_NEED_MY_HTOBE32 -#ifdef PERL_CORE -#define my_htobe32 Perl_my_htobe32 -#endif -#endif -#ifdef PERL_NEED_MY_BETOH32 -#ifdef PERL_CORE +# endif +# if defined(PERL_NEED_MY_BETOH32) #define my_betoh32 Perl_my_betoh32 -#endif -#endif -#ifdef PERL_NEED_MY_HTOLE64 -#ifdef PERL_CORE -#define my_htole64 Perl_my_htole64 -#endif -#endif -#ifdef PERL_NEED_MY_LETOH64 -#ifdef PERL_CORE -#define my_letoh64 Perl_my_letoh64 -#endif -#endif -#ifdef PERL_NEED_MY_HTOBE64 -#ifdef PERL_CORE -#define my_htobe64 Perl_my_htobe64 -#endif -#endif -#ifdef PERL_NEED_MY_BETOH64 -#ifdef PERL_CORE +# endif +# if defined(PERL_NEED_MY_BETOH64) #define my_betoh64 Perl_my_betoh64 -#endif -#endif -#ifdef PERL_NEED_MY_HTOLES -#ifdef PERL_CORE -#define my_htoles Perl_my_htoles -#endif -#endif -#ifdef PERL_NEED_MY_LETOHS -#ifdef PERL_CORE -#define my_letohs Perl_my_letohs -#endif -#endif -#ifdef PERL_NEED_MY_HTOBES -#ifdef PERL_CORE -#define my_htobes Perl_my_htobes -#endif -#endif -#ifdef PERL_NEED_MY_BETOHS -#ifdef PERL_CORE +# endif +# if defined(PERL_NEED_MY_BETOHI) +#define my_betohi Perl_my_betohi +# endif +# if defined(PERL_NEED_MY_BETOHL) +#define my_betohl Perl_my_betohl +# endif +# if defined(PERL_NEED_MY_BETOHS) #define my_betohs Perl_my_betohs -#endif -#endif -#ifdef PERL_NEED_MY_HTOLEI -#ifdef PERL_CORE -#define my_htolei Perl_my_htolei -#endif -#endif -#ifdef PERL_NEED_MY_LETOHI -#ifdef PERL_CORE -#define my_letohi Perl_my_letohi -#endif -#endif -#ifdef PERL_NEED_MY_HTOBEI -#ifdef PERL_CORE +# endif +# if defined(PERL_NEED_MY_HTOBE16) +#define my_htobe16 Perl_my_htobe16 +# endif +# if defined(PERL_NEED_MY_HTOBE32) +#define my_htobe32 Perl_my_htobe32 +# endif +# if defined(PERL_NEED_MY_HTOBE64) +#define my_htobe64 Perl_my_htobe64 +# endif +# if defined(PERL_NEED_MY_HTOBEI) #define my_htobei Perl_my_htobei -#endif -#endif -#ifdef PERL_NEED_MY_BETOHI -#ifdef PERL_CORE -#define my_betohi Perl_my_betohi -#endif -#endif -#ifdef PERL_NEED_MY_HTOLEL -#ifdef PERL_CORE +# endif +# if defined(PERL_NEED_MY_HTOBEL) +#define my_htobel Perl_my_htobel +# endif +# if defined(PERL_NEED_MY_HTOBES) +#define my_htobes Perl_my_htobes +# endif +# if defined(PERL_NEED_MY_HTOLE16) +#define my_htole16 Perl_my_htole16 +# endif +# if defined(PERL_NEED_MY_HTOLE32) +#define my_htole32 Perl_my_htole32 +# endif +# if defined(PERL_NEED_MY_HTOLE64) +#define my_htole64 Perl_my_htole64 +# endif +# if defined(PERL_NEED_MY_HTOLEI) +#define my_htolei Perl_my_htolei +# endif +# if defined(PERL_NEED_MY_HTOLEL) #define my_htolel Perl_my_htolel -#endif -#endif -#ifdef PERL_NEED_MY_LETOHL -#ifdef PERL_CORE +# endif +# if defined(PERL_NEED_MY_HTOLES) +#define my_htoles Perl_my_htoles +# endif +# if defined(PERL_NEED_MY_LETOH16) +#define my_letoh16 Perl_my_letoh16 +# endif +# if defined(PERL_NEED_MY_LETOH32) +#define my_letoh32 Perl_my_letoh32 +# endif +# if defined(PERL_NEED_MY_LETOH64) +#define my_letoh64 Perl_my_letoh64 +# endif +# if defined(PERL_NEED_MY_LETOHI) +#define my_letohi Perl_my_letohi +# endif +# if defined(PERL_NEED_MY_LETOHL) #define my_letohl Perl_my_letohl -#endif -#endif -#ifdef PERL_NEED_MY_HTOBEL -#ifdef PERL_CORE -#define my_htobel Perl_my_htobel -#endif -#endif -#ifdef PERL_NEED_MY_BETOHL -#ifdef PERL_CORE -#define my_betohl Perl_my_betohl -#endif -#endif -#ifdef PERL_CORE -#define my_swabn Perl_my_swabn -#endif -#define gv_fetchpvn_flags(a,b,c,d) Perl_gv_fetchpvn_flags(aTHX_ a,b,c,d) -#define gv_fetchsv(a,b,c) Perl_gv_fetchsv(aTHX_ a,b,c) -#ifdef PERL_CORE -#define is_gv_magical_sv(a,b) Perl_is_gv_magical_sv(aTHX_ a,b) -#endif -#define stashpv_hvname_match(a,b) Perl_stashpv_hvname_match(aTHX_ a,b) -#ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP -#ifdef PERL_CORE -#define dump_sv_child(a) Perl_dump_sv_child(aTHX_ a) -#endif -#endif -#ifdef PERL_DONT_CREATE_GVSV -#endif -#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define ckwarn_common(a) S_ckwarn_common(aTHX_ a) -#endif -#endif -#if defined(PERL_CORE) || defined(PERL_EXT) -#endif -#ifdef PERL_CORE -#define offer_nice_chunk(a,b) Perl_offer_nice_chunk(aTHX_ a,b) -#endif -#ifndef SPRINTF_RETURNS_STRLEN -#endif -#ifdef PERL_CORE -#define my_clearenv() Perl_my_clearenv(aTHX) -#endif -#ifdef PERL_IMPLICIT_CONTEXT -#ifdef PERL_GLOBAL_STRUCT_PRIVATE -#else -#endif -#endif -#ifndef HAS_STRLCAT -#endif -#ifndef HAS_STRLCPY -#endif -#ifdef PERL_MAD -#ifdef PERL_CORE -#define pad_peg Perl_pad_peg -#endif -#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#endif -#endif -#ifdef PERL_CORE -#define xmldump_vindent(a,b,c,d) Perl_xmldump_vindent(aTHX_ a,b,c,d) -#define xmldump_all() Perl_xmldump_all(aTHX) -#define xmldump_all_perl(a) Perl_xmldump_all_perl(aTHX_ a) -#define xmldump_packsubs(a) Perl_xmldump_packsubs(aTHX_ a) -#define xmldump_packsubs_perl(a,b) Perl_xmldump_packsubs_perl(aTHX_ a,b) -#define xmldump_sub(a) Perl_xmldump_sub(aTHX_ a) -#define xmldump_sub_perl(a,b) Perl_xmldump_sub_perl(aTHX_ a,b) -#define xmldump_form(a) Perl_xmldump_form(aTHX_ a) -#define xmldump_eval() Perl_xmldump_eval(aTHX) -#define sv_catxmlsv(a,b) Perl_sv_catxmlsv(aTHX_ a,b) -#define sv_catxmlpvn(a,b,c,d) Perl_sv_catxmlpvn(aTHX_ a,b,c,d) -#define sv_xmlpeek(a) Perl_sv_xmlpeek(aTHX_ a) -#define do_pmop_xmldump(a,b,c) Perl_do_pmop_xmldump(aTHX_ a,b,c) -#define pmop_xmldump(a) Perl_pmop_xmldump(aTHX_ a) -#define do_op_xmldump(a,b,c) Perl_do_op_xmldump(aTHX_ a,b,c) -#define op_xmldump(a) Perl_op_xmldump(aTHX_ a) -#endif -#ifdef PERL_CORE -#define newTOKEN(a,b,c) Perl_newTOKEN(aTHX_ a,b,c) -#define token_free(a) Perl_token_free(aTHX_ a) -#define token_getmad(a,b,c) Perl_token_getmad(aTHX_ a,b,c) -#define op_getmad_weak(a,b,c) Perl_op_getmad_weak(aTHX_ a,b,c) -#define op_getmad(a,b,c) Perl_op_getmad(aTHX_ a,b,c) -#define prepend_madprops(a,b,c) Perl_prepend_madprops(aTHX_ a,b,c) -#define append_madprops(a,b,c) Perl_append_madprops(aTHX_ a,b,c) -#define addmad(a,b,c) Perl_addmad(aTHX_ a,b,c) -#define newMADsv(a,b) Perl_newMADsv(aTHX_ a,b) -#define newMADPROP(a,b,c,d) Perl_newMADPROP(aTHX_ a,b,c,d) -#define mad_free(a) Perl_mad_free(aTHX_ a) -#endif -# if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define skipspace0(a) S_skipspace0(aTHX_ a) -#define skipspace1(a) S_skipspace1(aTHX_ a) -#define skipspace2(a,b) S_skipspace2(aTHX_ a,b) -#define start_force(a) S_start_force(aTHX_ a) -#define curmad(a,b) S_curmad(aTHX_ a,b) -#endif # endif -#ifdef PERL_CORE -#define madlex() Perl_madlex(aTHX) -#define madparse() Perl_madparse(aTHX) -#endif -#endif -#if !defined(HAS_SIGNBIT) -#endif -#if defined(PERL_CORE) || defined(PERL_EXT) -#endif -#ifdef PERL_CORE -#endif -#if defined(USE_ITHREADS) -#ifdef PERL_CORE +# if defined(PERL_NEED_MY_LETOHS) +#define my_letohs Perl_my_letohs +# endif +# if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C) +#define pidgone(a,b) S_pidgone(aTHX_ a,b) +# endif +# if defined(USE_ITHREADS) #define mro_meta_dup(a,b) Perl_mro_meta_dup(aTHX_ a,b) +#define padlist_dup(a,b) Perl_padlist_dup(aTHX_ a,b) +# endif +# if defined(USE_LOCALE_COLLATE) +#define magic_setcollxfrm(a,b) Perl_magic_setcollxfrm(aTHX_ a,b) +#define mem_collxfrm(a,b,c) Perl_mem_collxfrm(aTHX_ a,b,c) +# endif #endif -#endif -#define mro_get_linear_isa(a) Perl_mro_get_linear_isa(aTHX_ a) -#if defined(PERL_IN_MRO_C) || defined(PERL_DECL_PROT) -#ifdef PERL_CORE -#define mro_get_linear_isa_dfs(a,b) S_mro_get_linear_isa_dfs(aTHX_ a,b) -#endif -#endif -#ifdef PERL_CORE -#define mro_isa_changed_in(a) Perl_mro_isa_changed_in(aTHX_ a) -#endif -#define mro_method_changed_in(a) Perl_mro_method_changed_in(aTHX_ a) -#ifdef PERL_CORE -#define boot_core_mro() Perl_boot_core_mro(aTHX) -#endif -#ifdef PERL_CORE -#endif -#ifdef PERL_CORE -#endif -#define ck_anoncode(a) Perl_ck_anoncode(aTHX_ a) -#define ck_bitop(a) Perl_ck_bitop(aTHX_ a) -#define ck_chdir(a) Perl_ck_chdir(aTHX_ a) -#define ck_concat(a) Perl_ck_concat(aTHX_ a) -#define ck_defined(a) Perl_ck_defined(aTHX_ a) -#define ck_delete(a) Perl_ck_delete(aTHX_ a) -#define ck_die(a) Perl_ck_die(aTHX_ a) -#define ck_each(a) Perl_ck_each(aTHX_ a) -#define ck_eof(a) Perl_ck_eof(aTHX_ a) -#define ck_eval(a) Perl_ck_eval(aTHX_ a) -#define ck_exec(a) Perl_ck_exec(aTHX_ a) -#define ck_exists(a) Perl_ck_exists(aTHX_ a) -#define ck_exit(a) Perl_ck_exit(aTHX_ a) -#define ck_ftst(a) Perl_ck_ftst(aTHX_ a) -#define ck_fun(a) Perl_ck_fun(aTHX_ a) -#define ck_glob(a) Perl_ck_glob(aTHX_ a) -#define ck_grep(a) Perl_ck_grep(aTHX_ a) -#define ck_index(a) Perl_ck_index(aTHX_ a) -#define ck_join(a) Perl_ck_join(aTHX_ a) -#define ck_lfun(a) Perl_ck_lfun(aTHX_ a) -#define ck_listiob(a) Perl_ck_listiob(aTHX_ a) -#define ck_match(a) Perl_ck_match(aTHX_ a) -#define ck_method(a) Perl_ck_method(aTHX_ a) -#define ck_null(a) Perl_ck_null(aTHX_ a) -#define ck_open(a) Perl_ck_open(aTHX_ a) -#define ck_readline(a) Perl_ck_readline(aTHX_ a) -#define ck_repeat(a) Perl_ck_repeat(aTHX_ a) -#define ck_require(a) Perl_ck_require(aTHX_ a) -#define ck_return(a) Perl_ck_return(aTHX_ a) -#define ck_rfun(a) Perl_ck_rfun(aTHX_ a) -#define ck_rvconst(a) Perl_ck_rvconst(aTHX_ a) -#define ck_sassign(a) Perl_ck_sassign(aTHX_ a) -#define ck_select(a) Perl_ck_select(aTHX_ a) -#define ck_shift(a) Perl_ck_shift(aTHX_ a) -#define ck_smartmatch(a) Perl_ck_smartmatch(aTHX_ a) -#define ck_sort(a) Perl_ck_sort(aTHX_ a) -#define ck_spair(a) Perl_ck_spair(aTHX_ a) -#define ck_split(a) Perl_ck_split(aTHX_ a) -#define ck_subr(a) Perl_ck_subr(aTHX_ a) -#define ck_substr(a) Perl_ck_substr(aTHX_ a) -#define ck_svconst(a) Perl_ck_svconst(aTHX_ a) -#define ck_trunc(a) Perl_ck_trunc(aTHX_ a) -#define ck_unpack(a) Perl_ck_unpack(aTHX_ a) -#define pp_aassign() Perl_pp_aassign(aTHX) -#define pp_abs() Perl_pp_abs(aTHX) -#define pp_accept() Perl_pp_accept(aTHX) -#define pp_add() Perl_pp_add(aTHX) -#define pp_aeach() Perl_pp_aeach(aTHX) -#define pp_aelem() Perl_pp_aelem(aTHX) -#define pp_aelemfast() Perl_pp_aelemfast(aTHX) -#define pp_akeys() Perl_pp_akeys(aTHX) -#define pp_alarm() Perl_pp_alarm(aTHX) -#define pp_and() Perl_pp_and(aTHX) -#define pp_andassign() Perl_pp_andassign(aTHX) -#define pp_anoncode() Perl_pp_anoncode(aTHX) -#define pp_anonhash() Perl_pp_anonhash(aTHX) -#define pp_anonlist() Perl_pp_anonlist(aTHX) -#define pp_aslice() Perl_pp_aslice(aTHX) -#define pp_atan2() Perl_pp_atan2(aTHX) -#define pp_av2arylen() Perl_pp_av2arylen(aTHX) -#define pp_avalues() Perl_pp_avalues(aTHX) -#define pp_backtick() Perl_pp_backtick(aTHX) -#define pp_bind() Perl_pp_bind(aTHX) -#define pp_binmode() Perl_pp_binmode(aTHX) -#define pp_bit_and() Perl_pp_bit_and(aTHX) -#define pp_bit_or() Perl_pp_bit_or(aTHX) -#define pp_bit_xor() Perl_pp_bit_xor(aTHX) -#define pp_bless() Perl_pp_bless(aTHX) -#define pp_boolkeys() Perl_pp_boolkeys(aTHX) -#define pp_break() Perl_pp_break(aTHX) -#define pp_caller() Perl_pp_caller(aTHX) -#define pp_chdir() Perl_pp_chdir(aTHX) -#define pp_chmod() Perl_pp_chmod(aTHX) -#define pp_chomp() Perl_pp_chomp(aTHX) -#define pp_chop() Perl_pp_chop(aTHX) -#define pp_chown() Perl_pp_chown(aTHX) -#define pp_chr() Perl_pp_chr(aTHX) -#define pp_chroot() Perl_pp_chroot(aTHX) -#define pp_close() Perl_pp_close(aTHX) -#define pp_closedir() Perl_pp_closedir(aTHX) -#define pp_complement() Perl_pp_complement(aTHX) -#define pp_concat() Perl_pp_concat(aTHX) -#define pp_cond_expr() Perl_pp_cond_expr(aTHX) -#define pp_connect() Perl_pp_connect(aTHX) -#define pp_const() Perl_pp_const(aTHX) -#define pp_continue() Perl_pp_continue(aTHX) -#define pp_cos() Perl_pp_cos(aTHX) -#define pp_crypt() Perl_pp_crypt(aTHX) -#define pp_dbmclose() Perl_pp_dbmclose(aTHX) -#define pp_dbmopen() Perl_pp_dbmopen(aTHX) -#define pp_dbstate() Perl_pp_dbstate(aTHX) -#define pp_defined() Perl_pp_defined(aTHX) -#define pp_delete() Perl_pp_delete(aTHX) -#define pp_die() Perl_pp_die(aTHX) -#define pp_divide() Perl_pp_divide(aTHX) -#define pp_dofile() Perl_pp_dofile(aTHX) -#define pp_dor() Perl_pp_dor(aTHX) -#define pp_dorassign() Perl_pp_dorassign(aTHX) -#define pp_dump() Perl_pp_dump(aTHX) -#define pp_each() Perl_pp_each(aTHX) -#define pp_egrent() Perl_pp_egrent(aTHX) -#define pp_ehostent() Perl_pp_ehostent(aTHX) -#define pp_enetent() Perl_pp_enetent(aTHX) -#define pp_enter() Perl_pp_enter(aTHX) -#define pp_entereval() Perl_pp_entereval(aTHX) -#define pp_entergiven() Perl_pp_entergiven(aTHX) -#define pp_enteriter() Perl_pp_enteriter(aTHX) -#define pp_enterloop() Perl_pp_enterloop(aTHX) -#define pp_entersub() Perl_pp_entersub(aTHX) -#define pp_entertry() Perl_pp_entertry(aTHX) -#define pp_enterwhen() Perl_pp_enterwhen(aTHX) -#define pp_enterwrite() Perl_pp_enterwrite(aTHX) -#define pp_eof() Perl_pp_eof(aTHX) -#define pp_eprotoent() Perl_pp_eprotoent(aTHX) -#define pp_epwent() Perl_pp_epwent(aTHX) -#define pp_eq() Perl_pp_eq(aTHX) -#define pp_eservent() Perl_pp_eservent(aTHX) -#define pp_exec() Perl_pp_exec(aTHX) -#define pp_exists() Perl_pp_exists(aTHX) -#define pp_exit() Perl_pp_exit(aTHX) -#define pp_exp() Perl_pp_exp(aTHX) -#define pp_fcntl() Perl_pp_fcntl(aTHX) -#define pp_fileno() Perl_pp_fileno(aTHX) -#define pp_flip() Perl_pp_flip(aTHX) -#define pp_flock() Perl_pp_flock(aTHX) -#define pp_flop() Perl_pp_flop(aTHX) -#define pp_fork() Perl_pp_fork(aTHX) -#define pp_formline() Perl_pp_formline(aTHX) -#define pp_ftatime() Perl_pp_ftatime(aTHX) -#define pp_ftbinary() Perl_pp_ftbinary(aTHX) -#define pp_ftblk() Perl_pp_ftblk(aTHX) -#define pp_ftchr() Perl_pp_ftchr(aTHX) -#define pp_ftctime() Perl_pp_ftctime(aTHX) -#define pp_ftdir() Perl_pp_ftdir(aTHX) -#define pp_fteexec() Perl_pp_fteexec(aTHX) -#define pp_fteowned() Perl_pp_fteowned(aTHX) -#define pp_fteread() Perl_pp_fteread(aTHX) -#define pp_ftewrite() Perl_pp_ftewrite(aTHX) -#define pp_ftfile() Perl_pp_ftfile(aTHX) -#define pp_ftis() Perl_pp_ftis(aTHX) -#define pp_ftlink() Perl_pp_ftlink(aTHX) -#define pp_ftmtime() Perl_pp_ftmtime(aTHX) -#define pp_ftpipe() Perl_pp_ftpipe(aTHX) -#define pp_ftrexec() Perl_pp_ftrexec(aTHX) -#define pp_ftrowned() Perl_pp_ftrowned(aTHX) -#define pp_ftrread() Perl_pp_ftrread(aTHX) -#define pp_ftrwrite() Perl_pp_ftrwrite(aTHX) -#define pp_ftsgid() Perl_pp_ftsgid(aTHX) -#define pp_ftsize() Perl_pp_ftsize(aTHX) -#define pp_ftsock() Perl_pp_ftsock(aTHX) -#define pp_ftsuid() Perl_pp_ftsuid(aTHX) -#define pp_ftsvtx() Perl_pp_ftsvtx(aTHX) -#define pp_fttext() Perl_pp_fttext(aTHX) -#define pp_fttty() Perl_pp_fttty(aTHX) -#define pp_ftzero() Perl_pp_ftzero(aTHX) -#define pp_ge() Perl_pp_ge(aTHX) -#define pp_gelem() Perl_pp_gelem(aTHX) -#define pp_getc() Perl_pp_getc(aTHX) -#define pp_getlogin() Perl_pp_getlogin(aTHX) -#define pp_getpeername() Perl_pp_getpeername(aTHX) -#define pp_getpgrp() Perl_pp_getpgrp(aTHX) -#define pp_getppid() Perl_pp_getppid(aTHX) -#define pp_getpriority() Perl_pp_getpriority(aTHX) -#define pp_getsockname() Perl_pp_getsockname(aTHX) -#define pp_ggrent() Perl_pp_ggrent(aTHX) -#define pp_ggrgid() Perl_pp_ggrgid(aTHX) -#define pp_ggrnam() Perl_pp_ggrnam(aTHX) -#define pp_ghbyaddr() Perl_pp_ghbyaddr(aTHX) -#define pp_ghbyname() Perl_pp_ghbyname(aTHX) -#define pp_ghostent() Perl_pp_ghostent(aTHX) -#define pp_glob() Perl_pp_glob(aTHX) -#define pp_gmtime() Perl_pp_gmtime(aTHX) -#define pp_gnbyaddr() Perl_pp_gnbyaddr(aTHX) -#define pp_gnbyname() Perl_pp_gnbyname(aTHX) -#define pp_gnetent() Perl_pp_gnetent(aTHX) -#define pp_goto() Perl_pp_goto(aTHX) -#define pp_gpbyname() Perl_pp_gpbyname(aTHX) -#define pp_gpbynumber() Perl_pp_gpbynumber(aTHX) -#define pp_gprotoent() Perl_pp_gprotoent(aTHX) -#define pp_gpwent() Perl_pp_gpwent(aTHX) -#define pp_gpwnam() Perl_pp_gpwnam(aTHX) -#define pp_gpwuid() Perl_pp_gpwuid(aTHX) -#define pp_grepstart() Perl_pp_grepstart(aTHX) -#define pp_grepwhile() Perl_pp_grepwhile(aTHX) -#define pp_gsbyname() Perl_pp_gsbyname(aTHX) -#define pp_gsbyport() Perl_pp_gsbyport(aTHX) -#define pp_gservent() Perl_pp_gservent(aTHX) -#define pp_gsockopt() Perl_pp_gsockopt(aTHX) -#define pp_gt() Perl_pp_gt(aTHX) -#define pp_gv() Perl_pp_gv(aTHX) -#define pp_gvsv() Perl_pp_gvsv(aTHX) -#define pp_helem() Perl_pp_helem(aTHX) -#define pp_hex() Perl_pp_hex(aTHX) -#define pp_hintseval() Perl_pp_hintseval(aTHX) -#define pp_hslice() Perl_pp_hslice(aTHX) -#define pp_i_add() Perl_pp_i_add(aTHX) -#define pp_i_divide() Perl_pp_i_divide(aTHX) -#define pp_i_eq() Perl_pp_i_eq(aTHX) -#define pp_i_ge() Perl_pp_i_ge(aTHX) -#define pp_i_gt() Perl_pp_i_gt(aTHX) -#define pp_i_le() Perl_pp_i_le(aTHX) -#define pp_i_lt() Perl_pp_i_lt(aTHX) -#define pp_i_modulo() Perl_pp_i_modulo(aTHX) -#define pp_i_multiply() Perl_pp_i_multiply(aTHX) -#define pp_i_ncmp() Perl_pp_i_ncmp(aTHX) -#define pp_i_ne() Perl_pp_i_ne(aTHX) -#define pp_i_negate() Perl_pp_i_negate(aTHX) -#define pp_i_subtract() Perl_pp_i_subtract(aTHX) -#define pp_index() Perl_pp_index(aTHX) -#define pp_int() Perl_pp_int(aTHX) -#define pp_ioctl() Perl_pp_ioctl(aTHX) -#define pp_iter() Perl_pp_iter(aTHX) -#define pp_join() Perl_pp_join(aTHX) -#define pp_keys() Perl_pp_keys(aTHX) -#define pp_kill() Perl_pp_kill(aTHX) -#define pp_last() Perl_pp_last(aTHX) -#define pp_lc() Perl_pp_lc(aTHX) -#define pp_lcfirst() Perl_pp_lcfirst(aTHX) -#define pp_le() Perl_pp_le(aTHX) -#define pp_leave() Perl_pp_leave(aTHX) -#define pp_leaveeval() Perl_pp_leaveeval(aTHX) -#define pp_leavegiven() Perl_pp_leavegiven(aTHX) -#define pp_leaveloop() Perl_pp_leaveloop(aTHX) -#define pp_leavesub() Perl_pp_leavesub(aTHX) -#define pp_leavesublv() Perl_pp_leavesublv(aTHX) -#define pp_leavetry() Perl_pp_leavetry(aTHX) -#define pp_leavewhen() Perl_pp_leavewhen(aTHX) -#define pp_leavewrite() Perl_pp_leavewrite(aTHX) -#define pp_left_shift() Perl_pp_left_shift(aTHX) -#define pp_length() Perl_pp_length(aTHX) -#define pp_lineseq() Perl_pp_lineseq(aTHX) -#define pp_link() Perl_pp_link(aTHX) -#define pp_list() Perl_pp_list(aTHX) -#define pp_listen() Perl_pp_listen(aTHX) -#define pp_localtime() Perl_pp_localtime(aTHX) -#define pp_lock() Perl_pp_lock(aTHX) -#define pp_log() Perl_pp_log(aTHX) -#define pp_lslice() Perl_pp_lslice(aTHX) -#define pp_lstat() Perl_pp_lstat(aTHX) -#define pp_lt() Perl_pp_lt(aTHX) -#define pp_mapstart() Perl_pp_mapstart(aTHX) -#define pp_mapwhile() Perl_pp_mapwhile(aTHX) -#define pp_match() Perl_pp_match(aTHX) -#define pp_method() Perl_pp_method(aTHX) -#define pp_method_named() Perl_pp_method_named(aTHX) -#define pp_mkdir() Perl_pp_mkdir(aTHX) -#define pp_modulo() Perl_pp_modulo(aTHX) -#define pp_msgctl() Perl_pp_msgctl(aTHX) -#define pp_msgget() Perl_pp_msgget(aTHX) -#define pp_msgrcv() Perl_pp_msgrcv(aTHX) -#define pp_msgsnd() Perl_pp_msgsnd(aTHX) -#define pp_multiply() Perl_pp_multiply(aTHX) -#define pp_ncmp() Perl_pp_ncmp(aTHX) -#define pp_ne() Perl_pp_ne(aTHX) -#define pp_negate() Perl_pp_negate(aTHX) -#define pp_next() Perl_pp_next(aTHX) -#define pp_nextstate() Perl_pp_nextstate(aTHX) -#define pp_not() Perl_pp_not(aTHX) -#define pp_null() Perl_pp_null(aTHX) -#define pp_oct() Perl_pp_oct(aTHX) -#define pp_once() Perl_pp_once(aTHX) -#define pp_open() Perl_pp_open(aTHX) -#define pp_open_dir() Perl_pp_open_dir(aTHX) -#define pp_or() Perl_pp_or(aTHX) -#define pp_orassign() Perl_pp_orassign(aTHX) -#define pp_ord() Perl_pp_ord(aTHX) -#define pp_pack() Perl_pp_pack(aTHX) -#define pp_padany() Perl_pp_padany(aTHX) -#define pp_padav() Perl_pp_padav(aTHX) -#define pp_padhv() Perl_pp_padhv(aTHX) -#define pp_padsv() Perl_pp_padsv(aTHX) -#define pp_pipe_op() Perl_pp_pipe_op(aTHX) -#define pp_pop() Perl_pp_pop(aTHX) -#define pp_pos() Perl_pp_pos(aTHX) -#define pp_postdec() Perl_pp_postdec(aTHX) -#define pp_postinc() Perl_pp_postinc(aTHX) -#define pp_pow() Perl_pp_pow(aTHX) -#define pp_predec() Perl_pp_predec(aTHX) -#define pp_preinc() Perl_pp_preinc(aTHX) -#define pp_print() Perl_pp_print(aTHX) -#define pp_prototype() Perl_pp_prototype(aTHX) -#define pp_prtf() Perl_pp_prtf(aTHX) -#define pp_push() Perl_pp_push(aTHX) -#define pp_pushmark() Perl_pp_pushmark(aTHX) -#define pp_pushre() Perl_pp_pushre(aTHX) -#define pp_qr() Perl_pp_qr(aTHX) -#define pp_quotemeta() Perl_pp_quotemeta(aTHX) -#define pp_rand() Perl_pp_rand(aTHX) -#define pp_range() Perl_pp_range(aTHX) -#define pp_rcatline() Perl_pp_rcatline(aTHX) -#define pp_read() Perl_pp_read(aTHX) -#define pp_readdir() Perl_pp_readdir(aTHX) -#define pp_readline() Perl_pp_readline(aTHX) -#define pp_readlink() Perl_pp_readlink(aTHX) -#define pp_recv() Perl_pp_recv(aTHX) -#define pp_redo() Perl_pp_redo(aTHX) -#define pp_ref() Perl_pp_ref(aTHX) -#define pp_refgen() Perl_pp_refgen(aTHX) -#define pp_regcmaybe() Perl_pp_regcmaybe(aTHX) -#define pp_regcomp() Perl_pp_regcomp(aTHX) -#define pp_regcreset() Perl_pp_regcreset(aTHX) -#define pp_rename() Perl_pp_rename(aTHX) -#define pp_repeat() Perl_pp_repeat(aTHX) -#define pp_require() Perl_pp_require(aTHX) -#define pp_reset() Perl_pp_reset(aTHX) -#define pp_return() Perl_pp_return(aTHX) -#define pp_reverse() Perl_pp_reverse(aTHX) -#define pp_rewinddir() Perl_pp_rewinddir(aTHX) -#define pp_right_shift() Perl_pp_right_shift(aTHX) -#define pp_rindex() Perl_pp_rindex(aTHX) -#define pp_rmdir() Perl_pp_rmdir(aTHX) -#define pp_rv2av() Perl_pp_rv2av(aTHX) -#define pp_rv2cv() Perl_pp_rv2cv(aTHX) -#define pp_rv2gv() Perl_pp_rv2gv(aTHX) -#define pp_rv2hv() Perl_pp_rv2hv(aTHX) -#define pp_rv2sv() Perl_pp_rv2sv(aTHX) -#define pp_sassign() Perl_pp_sassign(aTHX) -#define pp_say() Perl_pp_say(aTHX) -#define pp_scalar() Perl_pp_scalar(aTHX) -#define pp_schomp() Perl_pp_schomp(aTHX) -#define pp_schop() Perl_pp_schop(aTHX) -#define pp_scmp() Perl_pp_scmp(aTHX) -#define pp_scope() Perl_pp_scope(aTHX) -#define pp_seek() Perl_pp_seek(aTHX) -#define pp_seekdir() Perl_pp_seekdir(aTHX) -#define pp_select() Perl_pp_select(aTHX) -#define pp_semctl() Perl_pp_semctl(aTHX) -#define pp_semget() Perl_pp_semget(aTHX) -#define pp_semop() Perl_pp_semop(aTHX) -#define pp_send() Perl_pp_send(aTHX) -#define pp_seq() Perl_pp_seq(aTHX) -#define pp_setpgrp() Perl_pp_setpgrp(aTHX) -#define pp_setpriority() Perl_pp_setpriority(aTHX) -#define pp_sge() Perl_pp_sge(aTHX) -#define pp_sgrent() Perl_pp_sgrent(aTHX) -#define pp_sgt() Perl_pp_sgt(aTHX) -#define pp_shift() Perl_pp_shift(aTHX) -#define pp_shmctl() Perl_pp_shmctl(aTHX) -#define pp_shmget() Perl_pp_shmget(aTHX) -#define pp_shmread() Perl_pp_shmread(aTHX) -#define pp_shmwrite() Perl_pp_shmwrite(aTHX) -#define pp_shostent() Perl_pp_shostent(aTHX) -#define pp_shutdown() Perl_pp_shutdown(aTHX) -#define pp_sin() Perl_pp_sin(aTHX) -#define pp_sle() Perl_pp_sle(aTHX) -#define pp_sleep() Perl_pp_sleep(aTHX) -#define pp_slt() Perl_pp_slt(aTHX) -#define pp_smartmatch() Perl_pp_smartmatch(aTHX) -#define pp_sne() Perl_pp_sne(aTHX) -#define pp_snetent() Perl_pp_snetent(aTHX) -#define pp_socket() Perl_pp_socket(aTHX) -#define pp_sockpair() Perl_pp_sockpair(aTHX) -#define pp_sort() Perl_pp_sort(aTHX) -#define pp_splice() Perl_pp_splice(aTHX) -#define pp_split() Perl_pp_split(aTHX) -#define pp_sprintf() Perl_pp_sprintf(aTHX) -#define pp_sprotoent() Perl_pp_sprotoent(aTHX) -#define pp_spwent() Perl_pp_spwent(aTHX) -#define pp_sqrt() Perl_pp_sqrt(aTHX) -#define pp_srand() Perl_pp_srand(aTHX) -#define pp_srefgen() Perl_pp_srefgen(aTHX) -#define pp_sselect() Perl_pp_sselect(aTHX) -#define pp_sservent() Perl_pp_sservent(aTHX) -#define pp_ssockopt() Perl_pp_ssockopt(aTHX) -#define pp_stat() Perl_pp_stat(aTHX) -#define pp_stringify() Perl_pp_stringify(aTHX) -#define pp_stub() Perl_pp_stub(aTHX) -#define pp_study() Perl_pp_study(aTHX) -#define pp_subst() Perl_pp_subst(aTHX) -#define pp_substcont() Perl_pp_substcont(aTHX) -#define pp_substr() Perl_pp_substr(aTHX) -#define pp_subtract() Perl_pp_subtract(aTHX) -#define pp_symlink() Perl_pp_symlink(aTHX) -#define pp_syscall() Perl_pp_syscall(aTHX) -#define pp_sysopen() Perl_pp_sysopen(aTHX) -#define pp_sysread() Perl_pp_sysread(aTHX) -#define pp_sysseek() Perl_pp_sysseek(aTHX) -#define pp_system() Perl_pp_system(aTHX) -#define pp_syswrite() Perl_pp_syswrite(aTHX) -#define pp_tell() Perl_pp_tell(aTHX) -#define pp_telldir() Perl_pp_telldir(aTHX) -#define pp_tie() Perl_pp_tie(aTHX) -#define pp_tied() Perl_pp_tied(aTHX) -#define pp_time() Perl_pp_time(aTHX) -#define pp_tms() Perl_pp_tms(aTHX) -#define pp_trans() Perl_pp_trans(aTHX) -#define pp_truncate() Perl_pp_truncate(aTHX) -#define pp_uc() Perl_pp_uc(aTHX) -#define pp_ucfirst() Perl_pp_ucfirst(aTHX) -#define pp_umask() Perl_pp_umask(aTHX) -#define pp_undef() Perl_pp_undef(aTHX) -#define pp_unlink() Perl_pp_unlink(aTHX) -#define pp_unpack() Perl_pp_unpack(aTHX) -#define pp_unshift() Perl_pp_unshift(aTHX) -#define pp_unstack() Perl_pp_unstack(aTHX) -#define pp_untie() Perl_pp_untie(aTHX) -#define pp_utime() Perl_pp_utime(aTHX) -#define pp_values() Perl_pp_values(aTHX) -#define pp_vec() Perl_pp_vec(aTHX) -#define pp_wait() Perl_pp_wait(aTHX) -#define pp_waitpid() Perl_pp_waitpid(aTHX) -#define pp_wantarray() Perl_pp_wantarray(aTHX) -#define pp_warn() Perl_pp_warn(aTHX) -#define pp_xor() Perl_pp_xor(aTHX) - -#endif /* PERL_IMPLICIT_CONTEXT */ #endif /* #ifndef PERL_NO_SHORT_NAMES */ - /* Compatibility stubs. Compile extensions with -DPERL_NOCOMPAT to disable them. */ @@ -4897,21 +1686,21 @@ */ # define perl_atexit(a,b) call_atexit(a,b) # define perl_call_argv(a,b,c) call_argv(a,b,c) -# define perl_call_pv(a,b) call_pv(a,b) # define perl_call_method(a,b) call_method(a,b) +# define perl_call_pv(a,b) call_pv(a,b) # define perl_call_sv(a,b) call_sv(a,b) -# define perl_eval_sv(a,b) eval_sv(a,b) # define perl_eval_pv(a,b) eval_pv(a,b) -# define perl_require_pv(a) require_pv(a) -# define perl_get_sv(a,b) get_sv(a,b) +# define perl_eval_sv(a,b) eval_sv(a,b) # define perl_get_av(a,b) get_av(a,b) -# define perl_get_hv(a,b) get_hv(a,b) # define perl_get_cv(a,b) get_cv(a,b) +# define perl_get_hv(a,b) get_hv(a,b) +# define perl_get_sv(a,b) get_sv(a,b) # define perl_init_i18nl10n(a) init_i18nl10n(a) # define perl_init_i18nl14n(a) init_i18nl14n(a) -# define perl_new_ctype(a) new_ctype(a) # define perl_new_collate(a) new_collate(a) +# define perl_new_ctype(a) new_ctype(a) # define perl_new_numeric(a) new_numeric(a) +# define perl_require_pv(a) require_pv(a) /* varargs functions can't be handled with CPP macros. :-( This provides a set of compatibility functions that don't take @@ -4919,38 +1708,38 @@ dTHX. */ #if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_NO_SHORT_NAMES) -# define croak Perl_croak_nocontext -# define deb Perl_deb_nocontext -# define die Perl_die_nocontext -# define form Perl_form_nocontext -# define load_module Perl_load_module_nocontext -# define mess Perl_mess_nocontext -# define newSVpvf Perl_newSVpvf_nocontext -# define sv_catpvf Perl_sv_catpvf_nocontext -# define sv_setpvf Perl_sv_setpvf_nocontext -# define warn Perl_warn_nocontext -# define warner Perl_warner_nocontext -# define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext -# define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext +# define croak Perl_croak_nocontext +# define deb Perl_deb_nocontext +# define die Perl_die_nocontext +# define form Perl_form_nocontext +# define load_module Perl_load_module_nocontext +# define mess Perl_mess_nocontext +# define newSVpvf Perl_newSVpvf_nocontext +# define sv_catpvf Perl_sv_catpvf_nocontext +# define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext +# define sv_setpvf Perl_sv_setpvf_nocontext +# define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext +# define warn Perl_warn_nocontext +# define warner Perl_warner_nocontext #endif #endif /* !defined(PERL_CORE) && !defined(PERL_NOCOMPAT) */ #if !defined(PERL_IMPLICIT_CONTEXT) /* undefined symbols, point them back at the usual ones */ -# define Perl_croak_nocontext Perl_croak -# define Perl_die_nocontext Perl_die -# define Perl_deb_nocontext Perl_deb -# define Perl_form_nocontext Perl_form +# define Perl_croak_nocontext Perl_croak +# define Perl_deb_nocontext Perl_deb +# define Perl_die_nocontext Perl_die +# define Perl_form_nocontext Perl_form # define Perl_load_module_nocontext Perl_load_module -# define Perl_mess_nocontext Perl_mess +# define Perl_mess_nocontext Perl_mess # define Perl_newSVpvf_nocontext Perl_newSVpvf # define Perl_sv_catpvf_nocontext Perl_sv_catpvf -# define Perl_sv_setpvf_nocontext Perl_sv_setpvf -# define Perl_warn_nocontext Perl_warn -# define Perl_warner_nocontext Perl_warner # define Perl_sv_catpvf_mg_nocontext Perl_sv_catpvf_mg +# define Perl_sv_setpvf_nocontext Perl_sv_setpvf # define Perl_sv_setpvf_mg_nocontext Perl_sv_setpvf_mg +# define Perl_warn_nocontext Perl_warn +# define Perl_warner_nocontext Perl_warner #endif /* ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/embedvar.h b/Master/tlpkg/tlperl/lib/CORE/embedvar.h index 63ed46ee2ab..bb179fdcf44 100644 --- a/Master/tlpkg/tlperl/lib/CORE/embedvar.h +++ b/Master/tlpkg/tlperl/lib/CORE/embedvar.h @@ -1,16 +1,16 @@ -/* -*- buffer-read-only: t -*- +/* -*- buffer-read-only: t -*- * * embedvar.h * - * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, - * 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, by Larry Wall and others + * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, + * 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - * This file is built by embed.pl from data in embed.fnc, embed.pl, - * pp.sym, intrpvar.h, and perlvars.h. + * This file is built by regen/embed.pl from data in embed.fnc, + * regen/embed.pl, regen/opcodes, intrpvar.h and perlvars.h. * Any changes made here will be lost! * * Edit those files and run 'make regen_headers' to effect changes. @@ -65,12 +65,14 @@ #define PL_Xpv (vTHX->IXpv) #define PL_amagic_generation (vTHX->Iamagic_generation) #define PL_an (vTHX->Ian) +#define PL_apiversion (vTHX->Iapiversion) #define PL_argvgv (vTHX->Iargvgv) #define PL_argvout_stack (vTHX->Iargvout_stack) #define PL_argvoutgv (vTHX->Iargvoutgv) #define PL_basetime (vTHX->Ibasetime) #define PL_beginav (vTHX->Ibeginav) #define PL_beginav_save (vTHX->Ibeginav_save) +#define PL_blockhooks (vTHX->Iblockhooks) #define PL_body_arenas (vTHX->Ibody_arenas) #define PL_body_roots (vTHX->Ibody_roots) #define PL_bodytarget (vTHX->Ibodytarget) @@ -104,6 +106,7 @@ #define PL_curstname (vTHX->Icurstname) #define PL_custom_op_descs (vTHX->Icustom_op_descs) #define PL_custom_op_names (vTHX->Icustom_op_names) +#define PL_custom_ops (vTHX->Icustom_ops) #define PL_cv_has_eval (vTHX->Icv_has_eval) #define PL_dbargs (vTHX->Idbargs) #define PL_debstash (vTHX->Idebstash) @@ -116,8 +119,6 @@ #define PL_delaymagic (vTHX->Idelaymagic) #define PL_destroyhook (vTHX->Idestroyhook) #define PL_diehook (vTHX->Idiehook) -#define PL_dirty (vTHX->Idirty) -#define PL_doextract (vTHX->Idoextract) #define PL_doswitches (vTHX->Idoswitches) #define PL_dowarn (vTHX->Idowarn) #define PL_dumper_fd (vTHX->Idumper_fd) @@ -204,8 +205,6 @@ #define PL_my_cxt_list (vTHX->Imy_cxt_list) #define PL_my_cxt_size (vTHX->Imy_cxt_size) #define PL_na (vTHX->Ina) -#define PL_nice_chunk (vTHX->Inice_chunk) -#define PL_nice_chunk_size (vTHX->Inice_chunk_size) #define PL_nomemok (vTHX->Inomemok) #define PL_numeric_local (vTHX->Inumeric_local) #define PL_numeric_name (vTHX->Inumeric_name) @@ -233,6 +232,7 @@ #define PL_perl_destruct_level (vTHX->Iperl_destruct_level) #define PL_perldb (vTHX->Iperldb) #define PL_perlio (vTHX->Iperlio) +#define PL_phase (vTHX->Iphase) #define PL_pidstatus (vTHX->Ipidstatus) #define PL_ppid (vTHX->Ippid) #define PL_preambleav (vTHX->Ipreambleav) @@ -254,7 +254,9 @@ #define PL_rehash_seed (vTHX->Irehash_seed) #define PL_rehash_seed_set (vTHX->Irehash_seed_set) #define PL_replgv (vTHX->Ireplgv) +#define PL_restartjmpenv (vTHX->Irestartjmpenv) #define PL_restartop (vTHX->Irestartop) +#define PL_rpeepp (vTHX->Irpeepp) #define PL_rs (vTHX->Irs) #define PL_runops (vTHX->Irunops) #define PL_savebegin (vTHX->Isavebegin) @@ -272,6 +274,7 @@ #define PL_sharehook (vTHX->Isharehook) #define PL_sig_pending (vTHX->Isig_pending) #define PL_sighandlerp (vTHX->Isighandlerp) +#define PL_signalhook (vTHX->Isignalhook) #define PL_signals (vTHX->Isignals) #define PL_slab_count (vTHX->Islab_count) #define PL_slabs (vTHX->Islabs) @@ -339,6 +342,8 @@ #define PL_utf8_ascii (vTHX->Iutf8_ascii) #define PL_utf8_cntrl (vTHX->Iutf8_cntrl) #define PL_utf8_digit (vTHX->Iutf8_digit) +#define PL_utf8_foldable (vTHX->Iutf8_foldable) +#define PL_utf8_foldclosures (vTHX->Iutf8_foldclosures) #define PL_utf8_graph (vTHX->Iutf8_graph) #define PL_utf8_idcont (vTHX->Iutf8_idcont) #define PL_utf8_idstart (vTHX->Iutf8_idstart) @@ -356,6 +361,8 @@ #define PL_utf8_toupper (vTHX->Iutf8_toupper) #define PL_utf8_upper (vTHX->Iutf8_upper) #define PL_utf8_xdigit (vTHX->Iutf8_xdigit) +#define PL_utf8_xidcont (vTHX->Iutf8_xidcont) +#define PL_utf8_xidstart (vTHX->Iutf8_xidstart) #define PL_utf8cache (vTHX->Iutf8cache) #define PL_utf8locale (vTHX->Iutf8locale) #define PL_warnhook (vTHX->Iwarnhook) @@ -392,12 +399,14 @@ #define PL_IXpv PL_Xpv #define PL_Iamagic_generation PL_amagic_generation #define PL_Ian PL_an +#define PL_Iapiversion PL_apiversion #define PL_Iargvgv PL_argvgv #define PL_Iargvout_stack PL_argvout_stack #define PL_Iargvoutgv PL_argvoutgv #define PL_Ibasetime PL_basetime #define PL_Ibeginav PL_beginav #define PL_Ibeginav_save PL_beginav_save +#define PL_Iblockhooks PL_blockhooks #define PL_Ibody_arenas PL_body_arenas #define PL_Ibody_roots PL_body_roots #define PL_Ibodytarget PL_bodytarget @@ -431,6 +440,7 @@ #define PL_Icurstname PL_curstname #define PL_Icustom_op_descs PL_custom_op_descs #define PL_Icustom_op_names PL_custom_op_names +#define PL_Icustom_ops PL_custom_ops #define PL_Icv_has_eval PL_cv_has_eval #define PL_Idbargs PL_dbargs #define PL_Idebstash PL_debstash @@ -443,8 +453,6 @@ #define PL_Idelaymagic PL_delaymagic #define PL_Idestroyhook PL_destroyhook #define PL_Idiehook PL_diehook -#define PL_Idirty PL_dirty -#define PL_Idoextract PL_doextract #define PL_Idoswitches PL_doswitches #define PL_Idowarn PL_dowarn #define PL_Idumper_fd PL_dumper_fd @@ -531,8 +539,6 @@ #define PL_Imy_cxt_list PL_my_cxt_list #define PL_Imy_cxt_size PL_my_cxt_size #define PL_Ina PL_na -#define PL_Inice_chunk PL_nice_chunk -#define PL_Inice_chunk_size PL_nice_chunk_size #define PL_Inomemok PL_nomemok #define PL_Inumeric_local PL_numeric_local #define PL_Inumeric_name PL_numeric_name @@ -560,6 +566,7 @@ #define PL_Iperl_destruct_level PL_perl_destruct_level #define PL_Iperldb PL_perldb #define PL_Iperlio PL_perlio +#define PL_Iphase PL_phase #define PL_Ipidstatus PL_pidstatus #define PL_Ippid PL_ppid #define PL_Ipreambleav PL_preambleav @@ -581,7 +588,9 @@ #define PL_Irehash_seed PL_rehash_seed #define PL_Irehash_seed_set PL_rehash_seed_set #define PL_Ireplgv PL_replgv +#define PL_Irestartjmpenv PL_restartjmpenv #define PL_Irestartop PL_restartop +#define PL_Irpeepp PL_rpeepp #define PL_Irs PL_rs #define PL_Irunops PL_runops #define PL_Isavebegin PL_savebegin @@ -599,6 +608,7 @@ #define PL_Isharehook PL_sharehook #define PL_Isig_pending PL_sig_pending #define PL_Isighandlerp PL_sighandlerp +#define PL_Isignalhook PL_signalhook #define PL_Isignals PL_signals #define PL_Islab_count PL_slab_count #define PL_Islabs PL_slabs @@ -666,6 +676,8 @@ #define PL_Iutf8_ascii PL_utf8_ascii #define PL_Iutf8_cntrl PL_utf8_cntrl #define PL_Iutf8_digit PL_utf8_digit +#define PL_Iutf8_foldable PL_utf8_foldable +#define PL_Iutf8_foldclosures PL_utf8_foldclosures #define PL_Iutf8_graph PL_utf8_graph #define PL_Iutf8_idcont PL_utf8_idcont #define PL_Iutf8_idstart PL_utf8_idstart @@ -683,6 +695,8 @@ #define PL_Iutf8_toupper PL_utf8_toupper #define PL_Iutf8_upper PL_utf8_upper #define PL_Iutf8_xdigit PL_utf8_xdigit +#define PL_Iutf8_xidcont PL_utf8_xidcont +#define PL_Iutf8_xidstart PL_utf8_xidstart #define PL_Iutf8cache PL_utf8cache #define PL_Iutf8locale PL_utf8locale #define PL_Iwarnhook PL_warnhook @@ -701,6 +715,8 @@ #define PL_GYes (my_vars->GYes) #define PL_appctx (my_vars->Gappctx) #define PL_Gappctx (my_vars->Gappctx) +#define PL_charclass (my_vars->Gcharclass) +#define PL_Gcharclass (my_vars->Gcharclass) #define PL_check (my_vars->Gcheck) #define PL_Gcheck (my_vars->Gcheck) #define PL_csighandlerp (my_vars->Gcsighandlerp) @@ -765,8 +781,6 @@ #define PL_Gsig_handlers_initted (my_vars->Gsig_handlers_initted) #define PL_sig_ignoring (my_vars->Gsig_ignoring) #define PL_Gsig_ignoring (my_vars->Gsig_ignoring) -#define PL_sig_sv (my_vars->Gsig_sv) -#define PL_Gsig_sv (my_vars->Gsig_sv) #define PL_sig_trapped (my_vars->Gsig_trapped) #define PL_Gsig_trapped (my_vars->Gsig_trapped) #define PL_sigfpe_saved (my_vars->Gsigfpe_saved) @@ -793,6 +807,7 @@ #define PL_GNo PL_No #define PL_GYes PL_Yes #define PL_Gappctx PL_appctx +#define PL_Gcharclass PL_charclass #define PL_Gcheck PL_check #define PL_Gcsighandlerp PL_csighandlerp #define PL_Gcurinterp PL_curinterp @@ -825,7 +840,6 @@ #define PL_Gsig_defaulting PL_sig_defaulting #define PL_Gsig_handlers_initted PL_sig_handlers_initted #define PL_Gsig_ignoring PL_sig_ignoring -#define PL_Gsig_sv PL_sig_sv #define PL_Gsig_trapped PL_sig_trapped #define PL_Gsigfpe_saved PL_sigfpe_saved #define PL_Gsubversion PL_subversion @@ -839,37 +853,4 @@ #endif /* PERL_GLOBAL_STRUCT */ -#ifdef PERL_POLLUTE /* disabled by default in 5.6.0 */ - -#define DBassertion PL_DBassertion -#define DBsingle PL_DBsingle -#define DBsub PL_DBsub -#define compiling PL_compiling -#define curcop PL_curcop -#define curstash PL_curstash -#define debstash PL_debstash -#define defgv PL_defgv -#define diehook PL_diehook -#define dirty PL_dirty -#define dowarn PL_dowarn -#define errgv PL_errgv -#define na PL_na -#define no_modify PL_no_modify -#define perl_destruct_level PL_perl_destruct_level -#define perldb PL_perldb -#define ppaddr PL_ppaddr -#define rsfp PL_rsfp -#define rsfp_filters PL_rsfp_filters -#define stack_base PL_stack_base -#define stack_sp PL_stack_sp -#define stdingv PL_stdingv -#define sv_arenaroot PL_sv_arenaroot -#define sv_no PL_sv_no -#define sv_undef PL_sv_undef -#define sv_yes PL_sv_yes -#define tainted PL_tainted -#define tainting PL_tainting - -#endif /* PERL_POLLUTE */ - /* ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/gv.h b/Master/tlpkg/tlperl/lib/CORE/gv.h index 4986b43cc60..ab5c7889872 100644 --- a/Master/tlpkg/tlperl/lib/CORE/gv.h +++ b/Master/tlpkg/tlperl/lib/CORE/gv.h @@ -27,10 +27,15 @@ struct gp { #if defined (DEBUGGING) && defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__INTEL_COMPILER) # define GvGP(gv) \ - (*({GV *const _gvgp = (GV *) (gv); \ + (0+(*({GV *const _gvgp = (GV *) (gv); \ assert(SvTYPE(_gvgp) == SVt_PVGV || SvTYPE(_gvgp) == SVt_PVLV); \ assert(isGV_with_GP(_gvgp)); \ - &((_gvgp)->sv_u.svu_gp);})) + &((_gvgp)->sv_u.svu_gp);}))) +# define GvGP_set(gv,gp) \ + {GV *const _gvgp = (GV *) (gv); \ + assert(SvTYPE(_gvgp) == SVt_PVGV || SvTYPE(_gvgp) == SVt_PVLV); \ + assert(isGV_with_GP(_gvgp)); \ + (_gvgp)->sv_u.svu_gp = (gp); } # define GvFLAGS(gv) \ (*({GV *const _gvflags = (GV *) (gv); \ assert(SvTYPE(_gvflags) == SVt_PVGV || SvTYPE(_gvflags) == SVt_PVLV); \ @@ -52,7 +57,8 @@ struct gp { # define GvNAME_get(gv) ({ assert(GvNAME_HEK(gv)); (char *)HEK_KEY(GvNAME_HEK(gv)); }) # define GvNAMELEN_get(gv) ({ assert(GvNAME_HEK(gv)); HEK_LEN(GvNAME_HEK(gv)); }) #else -# define GvGP(gv) ((gv)->sv_u.svu_gp) +# define GvGP(gv) (0+(gv)->sv_u.svu_gp) +# define GvGP_set(gv,gp) ((gv)->sv_u.svu_gp = (gp)) # define GvFLAGS(gv) (GvXPVGV(gv)->xpv_cur) # define GvSTASH(gv) (GvXPVGV(gv)->xnv_u.xgv_stash) # define GvNAME_HEK(gv) (GvXPVGV(gv)->xiv_u.xivu_namehek) @@ -88,7 +94,17 @@ Return the SV from the GV. #endif #define GvREFCNT(gv) (GvGP(gv)->gp_refcnt) -#define GvIO(gv) ((gv) && SvTYPE((const SV*)gv) == SVt_PVGV && GvGP(gv) ? GvIOp(gv) : NULL) +#define GvIO(gv) \ + ( \ + (gv) \ + && ( \ + SvTYPE((const SV*)(gv)) == SVt_PVGV \ + || SvTYPE((const SV*)(gv)) == SVt_PVLV \ + ) \ + && GvGP(gv) \ + ? GvIOp(gv) \ + : NULL \ + ) #define GvIOp(gv) (GvGP(gv)->gp_io) #define GvIOn(gv) (GvIO(gv) ? GvIOp(gv) : GvIOp(gv_IOadd(gv))) @@ -104,7 +120,8 @@ Return the SV from the GV. GvGP(gv)->gp_hv : \ GvGP(gv_HVadd(gv))->gp_hv) -#define GvCV(gv) (GvGP(gv)->gp_cv) +#define GvCV(gv) (0+GvGP(gv)->gp_cv) +#define GvCV_set(gv,cv) (GvGP(gv)->gp_cv = (cv)) #define GvCVGEN(gv) (GvGP(gv)->gp_cvgen) #define GvCVu(gv) (GvGP(gv)->gp_cvgen ? NULL : GvGP(gv)->gp_cv) @@ -114,6 +131,7 @@ Return the SV from the GV. #define GvFILEGV(gv) (gv_fetchfile(GvFILE(gv))) #define GvEGV(gv) (GvGP(gv)->gp_egv) +#define GvEGVx(gv) (isGV_with_GP(gv) ? GvEGV(gv) : NULL) #define GvENAME(gv) GvNAME(GvEGV(gv) ? GvEGV(gv) : gv) #define GvESTASH(gv) GvSTASH(GvEGV(gv) ? GvEGV(gv) : gv) @@ -127,6 +145,9 @@ Return the SV from the GV. #define GVf_IMPORTED_HV 0x40 #define GVf_IMPORTED_CV 0x80 +/* Temporary flag for the tie $handle deprecation warnings. */ +#define GVf_TIEWARNED 0x100 + #define GvINTRO(gv) (GvFLAGS(gv) & GVf_INTRO) #define GvINTRO_on(gv) (GvFLAGS(gv) |= GVf_INTRO) #define GvINTRO_off(gv) (GvFLAGS(gv) &= ~GVf_INTRO) @@ -167,14 +188,14 @@ Return the SV from the GV. # define Nullgv Null(GV*) #endif -#define DM_UID 0x003 -#define DM_RUID 0x001 -#define DM_EUID 0x002 -#define DM_ARRAY 0x004 -#define DM_GID 0x030 -#define DM_RGID 0x010 -#define DM_EGID 0x020 -#define DM_DELAY 0x100 +#define DM_RUID 0x001 +#define DM_EUID 0x002 +#define DM_UID (DM_RUID|DM_EUID) +#define DM_ARRAY_ISA 0x004 +#define DM_RGID 0x010 +#define DM_EGID 0x020 +#define DM_GID (DM_RGID|DM_EGID) +#define DM_DELAY 0x100 /* * symbol creation flags, for use in gv_fetchpv() and get_*v() diff --git a/Master/tlpkg/tlperl/lib/CORE/handy.h b/Master/tlpkg/tlperl/lib/CORE/handy.h index d12972d5297..6541c95c357 100644 --- a/Master/tlpkg/tlperl/lib/CORE/handy.h +++ b/Master/tlpkg/tlperl/lib/CORE/handy.h @@ -110,6 +110,12 @@ Null SV pointer. (No longer available when C<PERL_CORE> is defined.) # define HAS_BOOL 1 #endif +/* a simple (bool) cast may not do the right thing: if bool is defined + * as char for example, then the cast from int is implementation-defined + */ + +#define cBOOL(cbool) ((bool)!!(cbool)) + /* Try to figure out __func__ or __FUNCTION__ equivalent, if any. * XXX Should really be a Configure probe, with HAS__FUNCTION__ * and FUNCTION__ as results. @@ -202,19 +208,6 @@ typedef U64TYPE U64; # endif #endif -/* HMB H.Merijn Brand - a placeholder for preparing Configure patches: - * - * USE_DTRACE HAS_PSEUDOFORK HAS_TIMEGM LOCALTIME_R_NEEDS_TZSET - * GMTIME_MAX GMTIME_MIN LOCALTIME_MAX LOCALTIME_MIN - * HAS_CTIME64 HAS_LOCALTIME64 HAS_GMTIME64 HAS_DIFFTIME64 - * HAS_MKTIME64 HAS_ASCTIME64 HAS_GETADDRINFO HAS_GETNAMEINFO - * HAS_INETNTOP HAS_INETPTON CHARBITS - * Not (yet) used at top level, but mention them for metaconfig - */ - -/* Mention I8SIZE, U8SIZE, I16SIZE, U16SIZE, I32SIZE, U32SIZE, - I64SIZE, and U64SIZE here so that metaconfig pulls them in. */ - #if defined(UINT8_MAX) && defined(INT16_MAX) && defined(INT32_MAX) /* I8_MAX and I8_MIN constants are not defined, as I8 is an ambiguous type. @@ -283,17 +276,41 @@ pair. Like C<newSVpvn_share>, but takes a literal string instead of a string/length pair and omits the hash parameter. +=for apidoc Am|void|sv_catpvs_flags|SV* sv|const char* s|I32 flags +Like C<sv_catpvn_flags>, but takes a literal string instead of a +string/length pair. + +=for apidoc Am|void|sv_catpvs_nomg|SV* sv|const char* s +Like C<sv_catpvn_nomg>, but takes a literal string instead of a +string/length pair. + =for apidoc Am|void|sv_catpvs|SV* sv|const char* s Like C<sv_catpvn>, but takes a literal string instead of a string/length pair. +=for apidoc Am|void|sv_catpvs_mg|SV* sv|const char* s +Like C<sv_catpvn_mg>, but takes a literal string instead of a +string/length pair. + =for apidoc Am|void|sv_setpvs|SV* sv|const char* s Like C<sv_setpvn>, but takes a literal string instead of a string/length pair. +=for apidoc Am|void|sv_setpvs_mg|SV* sv|const char* s +Like C<sv_setpvn_mg>, but takes a literal string instead of a +string/length pair. + +=for apidoc Am|SV *|sv_setref_pvs|const char* s +Like C<sv_setref_pvn>, but takes a literal string instead of a +string/length pair. + =head1 Memory Management =for apidoc Ama|char*|savepvs|const char* s Like C<savepvn>, but takes a literal string instead of a string/length pair. +=for apidoc Ama|char*|savesharedpvs|const char* s +A version of C<savepvs()> which allocates the duplicate string in memory +which is shared between threads. + =head1 GV Functions =for apidoc Am|HV*|gv_stashpvs|const char* name|I32 create @@ -308,6 +325,13 @@ Like C<hv_fetch>, but takes a literal string instead of a string/length pair. Like C<hv_store>, but takes a literal string instead of a string/length pair and omits the hash parameter. +=head1 Lexer interface + +=for apidoc Amx|void|lex_stuff_pvs|const char *pv|U32 flags + +Like L</lex_stuff_pvn>, but takes a literal string instead of a +string/length pair. + =cut */ @@ -324,11 +348,28 @@ and omits the hash parameter. #define newSVpvs_flags(str,flags) \ Perl_newSVpvn_flags(aTHX_ STR_WITH_LEN(str), flags) #define newSVpvs_share(str) Perl_newSVpvn_share(aTHX_ STR_WITH_LEN(str), 0) -#define sv_catpvs(sv, str) Perl_sv_catpvn_flags(aTHX_ sv, STR_WITH_LEN(str), SV_GMAGIC) +#define sv_catpvs_flags(sv, str, flags) \ + Perl_sv_catpvn_flags(aTHX_ sv, STR_WITH_LEN(str), flags) +#define sv_catpvs_nomg(sv, str) \ + Perl_sv_catpvn_flags(aTHX_ sv, STR_WITH_LEN(str), 0) +#define sv_catpvs(sv, str) \ + Perl_sv_catpvn_flags(aTHX_ sv, STR_WITH_LEN(str), SV_GMAGIC) +#define sv_catpvs_mg(sv, str) \ + Perl_sv_catpvn_flags(aTHX_ sv, STR_WITH_LEN(str), SV_GMAGIC|SV_SMAGIC) #define sv_setpvs(sv, str) Perl_sv_setpvn(aTHX_ sv, STR_WITH_LEN(str)) +#define sv_setpvs_mg(sv, str) Perl_sv_setpvn_mg(aTHX_ sv, STR_WITH_LEN(str)) +#define sv_setref_pvs(rv, classname, str) \ + Perl_sv_setref_pvn(aTHX_ rv, classname, STR_WITH_LEN(str)) #define savepvs(str) Perl_savepvn(aTHX_ STR_WITH_LEN(str)) -#define gv_stashpvs(str, create) Perl_gv_stashpvn(aTHX_ STR_WITH_LEN(str), create) -#define gv_fetchpvs(namebeg, add, sv_type) Perl_gv_fetchpvn_flags(aTHX_ STR_WITH_LEN(namebeg), add, sv_type) +#define savesharedpvs(str) Perl_savesharedpvn(aTHX_ STR_WITH_LEN(str)) +#define gv_stashpvs(str, create) \ + Perl_gv_stashpvn(aTHX_ STR_WITH_LEN(str), create) +#define gv_fetchpvs(namebeg, add, sv_type) \ + Perl_gv_fetchpvn_flags(aTHX_ STR_WITH_LEN(namebeg), add, sv_type) +#define gv_fetchpvn(namebeg, len, add, sv_type) \ + Perl_gv_fetchpvn_flags(aTHX_ namebeg, len, add, sv_type) +#define sv_catxmlpvs(dsv, str, utf8) \ + Perl_sv_catxmlpvn(aTHX_ dsv, STR_WITH_LEN(str), utf8) #define hv_fetchs(hv,key,lval) \ ((SV **)Perl_hv_common(aTHX_ (hv), NULL, STR_WITH_LEN(key), 0, \ (lval) ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) \ @@ -338,6 +379,8 @@ and omits the hash parameter. ((SV **)Perl_hv_common(aTHX_ (hv), NULL, STR_WITH_LEN(key), 0, \ (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), (val), 0)) +#define lex_stuff_pvs(pv,flags) Perl_lex_stuff_pvn(aTHX_ STR_WITH_LEN(pv), flags) + #define get_cvs(str, flags) \ Perl_get_cvn_flags(aTHX_ STR_WITH_LEN(str), (flags)) @@ -398,7 +441,7 @@ C<strncmp>). #endif #define memEQs(s1, l, s2) \ - (sizeof(s2)-1 == l && memEQ(s1, (s2 ""), (sizeof(s2)-1))) + (sizeof(s2)-1 == l && memEQ(s1, ("" s2 ""), (sizeof(s2)-1))) #define memNEs(s1, l, s2) !memEQs(s1, l, s2) /* @@ -423,100 +466,325 @@ C<strncmp>). /* =head1 Character classes - -=for apidoc Am|bool|isALNUM|char ch -Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin) -alphanumeric character (including underscore) or digit. +There are three variants for all the functions in this section. The base ones +operate using the character set of the platform Perl is running on. The ones +with an C<_A> suffix operate on the ASCII character set, and the ones with an +C<_L1> suffix operate on the full Latin1 character set. All are unaffected by +locale + +For ASCII platforms, the base function with no suffix and the one with the +C<_A> suffix are identical. The function with the C<_L1> suffix imposes the +Latin-1 character set onto the platform. That is, the code points that are +ASCII are unaffected, since ASCII is a subset of Latin-1. But the non-ASCII +code points are treated as if they are Latin-1 characters. For example, +C<isSPACE_L1()> will return true when called with the code point 0xA0, which is +the Latin-1 NO-BREAK SPACE. + +For EBCDIC platforms, the base function with no suffix and the one with the +C<_L1> suffix should be identical, since, as of this writing, the EBCDIC code +pages that Perl knows about all are equivalent to Latin-1. The function that +ends in an C<_A> suffix will not return true unless the specified character also +has an ASCII equivalent. =for apidoc Am|bool|isALPHA|char ch -Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin) -alphabetic character. +Returns a boolean indicating whether the specified character is an +alphabetic character in the platform's native character set. +See the L<top of this section|/Character classes> for an explanation of variants +C<isALPHA_A> and C<isALPHA_L1>. -=for apidoc Am|bool|isSPACE|char ch -Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin) -whitespace. +=for apidoc Am|bool|isASCII|char ch +Returns a boolean indicating whether the specified character is one of the 128 +characters in the ASCII character set. On non-ASCII platforms, it is if this +character corresponds to an ASCII character. Variants C<isASCII_A()> and +C<isASCII_L1()> are identical to C<isASCII()>. =for apidoc Am|bool|isDIGIT|char ch -Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin) -digit. - -=for apidoc Am|bool|isUPPER|char ch -Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin) -uppercase character. +Returns a boolean indicating whether the specified character is a +digit in the platform's native character set. +Variants C<isDIGIT_A> and C<isDIGIT_L1> are identical to C<isDIGIT>. =for apidoc Am|bool|isLOWER|char ch -Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin) -lowercase character. +Returns a boolean indicating whether the specified character is a +lowercase character in the platform's native character set. +See the L<top of this section|/Character classes> for an explanation of variants +C<isLOWER_A> and C<isLOWER_L1>. + +=for apidoc Am|bool|isOCTAL|char ch +Returns a boolean indicating whether the specified character is an +octal digit, [0-7] in the platform's native character set. +Variants C<isOCTAL_A> and C<isOCTAL_L1> are identical to C<isOCTAL>. + +=for apidoc Am|bool|isSPACE|char ch +Returns a boolean indicating whether the specified character is a +whitespace character in the platform's native character set. This is the same +as what C<\s> matches in a regular expression. +See the L<top of this section|/Character classes> for an explanation of variants +C<isSPACE_A> and C<isSPACE_L1>. + +=for apidoc Am|bool|isUPPER|char ch +Returns a boolean indicating whether the specified character is an +uppercase character in the platform's native character set. +See the L<top of this section|/Character classes> for an explanation of variants +C<isUPPER_A> and C<isUPPER_L1>. + +=for apidoc Am|bool|isWORDCHAR|char ch +Returns a boolean indicating whether the specified character is a +character that is any of: alphabetic, numeric, or an underscore. This is the +same as what C<\w> matches in a regular expression. +C<isALNUM()> is a synonym provided for backward compatibility. Note that it +does not have the standard C language meaning of alphanumeric, since it matches +an underscore and the standard meaning does not. +See the L<top of this section|/Character classes> for an explanation of variants +C<isWORDCHAR_A> and C<isWORDCHAR_L1>. + +=for apidoc Am|bool|isXDIGIT|char ch +Returns a boolean indicating whether the specified character is a hexadecimal +digit, [0-9A-Fa-f]. Variants C<isXDIGIT_A()> and C<isXDIGIT_L1()> are +identical to C<isXDIGIT()>. + +=head1 Character case changing =for apidoc Am|char|toUPPER|char ch -Converts the specified character to uppercase. Characters outside the -US-ASCII (Basic Latin) range are viewed as not having any case. +Converts the specified character to uppercase in the platform's native +character set, if possible; otherwise returns the input character itself. =for apidoc Am|char|toLOWER|char ch -Converts the specified character to lowercase. Characters outside the -US-ASCII (Basic Latin) range are viewed as not having any case. +Converts the specified character to lowercase in the platform's native +character set, if possible; otherwise returns the input character itself. =cut + +Note that these macros are repeated in Devel::PPPort, so should also be +patched there. The file as of this writing is cpan/Devel-PPPort/parts/inc/misc + */ -#define isALNUM(c) (isALPHA(c) || isDIGIT(c) || (c) == '_') -#define isIDFIRST(c) (isALPHA(c) || (c) == '_') -#define isALPHA(c) (isUPPER(c) || isLOWER(c)) -/* ALPHAU includes Unicode semantics for latin1 characters. It has an extra - * >= AA test to speed up ASCII-only tests at the expense of the others */ -#define isALPHAU(c) (isALPHA(c) || (NATIVE_TO_UNI((U8) c) >= 0xAA \ - && ((NATIVE_TO_UNI((U8) c) >= 0xC0 \ - && NATIVE_TO_UNI((U8) c) != 0xD7 && NATIVE_TO_UNI((U8) c) != 0xF7) \ - || NATIVE_TO_UNI((U8) c) == 0xAA \ - || NATIVE_TO_UNI((U8) c) == 0xB5 \ - || NATIVE_TO_UNI((U8) c) == 0xBA))) -#define isALNUMU(c) (isDIGIT(c) || isALPHAU(c) || (c) == '_') - -/* continuation character for legal NAME in \N{NAME} */ -#define isCHARNAME_CONT(c) (isALNUMU(c) || (c) == ' ' || (c) == '-' || (c) == '(' || (c) == ')' || (c) == ':' || NATIVE_TO_UNI((U8) c) == 0xA0) -#define isSPACE(c) \ - ((c) == ' ' || (c) == '\t' || (c) == '\n' || (c) =='\r' || (c) == '\f') -#define isPSXSPC(c) (isSPACE(c) || (c) == '\v') -#define isBLANK(c) ((c) == ' ' || (c) == '\t') -#define isDIGIT(c) ((c) >= '0' && (c) <= '9') +/* FITS_IN_8_BITS(c) returns true if c occupies no more than 8 bits. It is + * designed to be hopefully bomb-proof, making sure that no bits of + * information are lost even on a 64-bit machine, but to get the compiler to + * optimize it out if possible. This is because Configure makes sure that the + * machine has an 8-bit byte, so if c is stored in a byte, the sizeof() + * guarantees that this evaluates to a constant true at compile time. The use + * of the mask instead of '< 256' keeps gcc from complaining that it is alway + * true, when c's storage class is a byte. Use U64TYPE because U64 is known + * only in the perl core, and this macro can be called from outside that */ +#ifdef HAS_QUAD +# define FITS_IN_8_BITS(c) ((sizeof(c) == 1) || (((U64TYPE)(c) & 0xFF) == (U64TYPE)(c))) +#else +# define FITS_IN_8_BITS(c) ((sizeof(c) == 1) || (((U32)(c) & 0xFF) == (U32)(c))) +#endif + +#define isASCII(c) (FITS_IN_8_BITS(c) ? NATIVE_TO_UNI((U8) c) <= 127 : 0) +#define isASCII_A(c) isASCII(c) + +/* ASCII range only */ +#ifdef H_PERL /* If have access to perl.h, lookup in its table */ +/* Bits for PL_charclass[] */ +# define _CC_ALNUMC_A (1<<0) +# define _CC_ALNUMC_L1 (1<<1) +# define _CC_ALPHA_A (1<<2) +# define _CC_ALPHA_L1 (1<<3) +# define _CC_BLANK_A (1<<4) +# define _CC_BLANK_L1 (1<<5) +# define _CC_CHARNAME_CONT (1<<6) +# define _CC_CNTRL_A (1<<7) +# define _CC_CNTRL_L1 (1<<8) +# define _CC_DIGIT_A (1<<9) +# define _CC_GRAPH_A (1<<10) +# define _CC_GRAPH_L1 (1<<11) +# define _CC_IDFIRST_A (1<<12) +# define _CC_IDFIRST_L1 (1<<13) +# define _CC_LOWER_A (1<<14) +# define _CC_LOWER_L1 (1<<15) +# define _CC_OCTAL_A (1<<16) +# define _CC_PRINT_A (1<<17) +# define _CC_PRINT_L1 (1<<18) +# define _CC_PSXSPC_A (1<<19) +# define _CC_PSXSPC_L1 (1<<20) +# define _CC_PUNCT_A (1<<21) +# define _CC_PUNCT_L1 (1<<22) +# define _CC_SPACE_A (1<<23) +# define _CC_SPACE_L1 (1<<24) +# define _CC_UPPER_A (1<<25) +# define _CC_UPPER_L1 (1<<26) +# define _CC_WORDCHAR_A (1<<27) +# define _CC_WORDCHAR_L1 (1<<28) +# define _CC_XDIGIT_A (1<<29) +# define _CC_NONLATIN1_FOLD (1<<30) +/* Unused + * (1<<31) + */ + +# ifdef DOINIT +EXTCONST U32 PL_charclass[] = { +# include "l1_char_class_tab.h" +}; + +# else /* ! DOINIT */ +EXTCONST U32 PL_charclass[]; +# endif + +# define isALNUMC_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_ALNUMC_A)) +# define isALPHA_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_ALPHA_A)) +# define isBLANK_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_BLANK_A)) +# define isCNTRL_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_CNTRL_A)) +# define isDIGIT_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_DIGIT_A)) +# define isGRAPH_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_GRAPH_A)) +# define isIDFIRST_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_IDFIRST_A)) +# define isLOWER_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_LOWER_A)) +# define isOCTAL_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_OCTAL_A)) +# define isPRINT_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_PRINT_A)) +# define isPSXSPC_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_PSXSPC_A)) +# define isPUNCT_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_PUNCT_A)) +# define isSPACE_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_SPACE_A)) +# define isUPPER_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_UPPER_A)) +# define isWORDCHAR_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_WORDCHAR_A)) +# define isXDIGIT_A(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_XDIGIT_A)) + /* Either participates in a fold with a character above 255, or is a + * multi-char fold */ +# define _HAS_NONLATIN1_FOLD_CLOSURE_ONLY_FOR_USE_BY_REGCOMP_DOT_C_AND_REGEXEC_DOT_C(c) ((! cBOOL(FITS_IN_8_BITS(c))) || (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_NONLATIN1_FOLD)) +#else /* No perl.h. */ +# define isOCTAL_A(c) ((c) >= '0' && (c) <= '9') +# ifdef EBCDIC +# define isALNUMC_A(c) (isASCII(c) && isALNUMC(c)) +# define isALPHA_A(c) (isASCII(c) && isALPHA(c)) +# define isBLANK_A(c) (isASCII(c) && isBLANK(c)) +# define isCNTRL_A(c) (isASCII(c) && isCNTRL(c)) +# define isDIGIT_A(c) (isASCII(c) && isDIGIT(c)) +# define isGRAPH_A(c) (isASCII(c) && isGRAPH(c)) +# define isIDFIRST_A(c) (isASCII(c) && isIDFIRST(c)) +# define isLOWER_A(c) (isASCII(c) && isLOWER(c)) +# define isPRINT_A(c) (isASCII(c) && isPRINT(c)) +# define isPSXSPC_A(c) (isASCII(c) && isPSXSPC(c)) +# define isPUNCT_A(c) (isASCII(c) && isPUNCT(c)) +# define isSPACE_A(c) (isASCII(c) && isSPACE(c)) +# define isUPPER_A(c) (isASCII(c) && isUPPER(c)) +# define isWORDCHAR_A(c) (isASCII(c) && isWORDCHAR(c)) +# define isXDIGIT_A(c) (isASCII(c) && isXDIGIT(c)) +# else /* ASCII platform, no perl.h */ +# define isALNUMC_A(c) (isALPHA_A(c) || isDIGIT_A(c)) +# define isALPHA_A(c) (isUPPER_A(c) || isLOWER_A(c)) +# define isBLANK_A(c) ((c) == ' ' || (c) == '\t') +# define isCNTRL_A(c) (FITS_IN_8_BITS(c) ? ((U8) (c) < ' ' || (c) == 127) : 0) +# define isDIGIT_A(c) ((c) >= '0' && (c) <= '9') +# define isGRAPH_A(c) (isWORDCHAR_A(c) || isPUNCT_A(c)) +# define isIDFIRST_A(c) (isALPHA_A(c) || (c) == '_') +# define isLOWER_A(c) ((c) >= 'a' && (c) <= 'z') +# define isPRINT_A(c) (((c) >= 32 && (c) < 127)) +# define isPSXSPC_A(c) (isSPACE_A(c) || (c) == '\v') +# define isPUNCT_A(c) (((c) >= 33 && (c) <= 47) || ((c) >= 58 && (c) <= 64) || ((c) >= 91 && (c) <= 96) || ((c) >= 123 && (c) <= 126)) +# define isSPACE_A(c) ((c) == ' ' || (c) == '\t' || (c) == '\n' || (c) =='\r' || (c) == '\f') +# define isUPPER_A(c) ((c) >= 'A' && (c) <= 'Z') +# define isWORDCHAR_A(c) (isALPHA_A(c) || isDIGIT_A(c) || (c) == '_') +# define isXDIGIT_A(c) (isDIGIT_A(c) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) +# endif +#endif /* ASCII range definitions */ + +/* Latin1 definitions */ +#ifdef H_PERL +# define isALNUMC_L1(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_ALNUMC_L1)) +# define isALPHA_L1(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_ALPHA_L1)) +# define isBLANK_L1(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_BLANK_L1)) +/* continuation character for legal NAME in \N{NAME} */ +# define isCHARNAME_CONT(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_CHARNAME_CONT)) +# define isCNTRL_L1(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_CNTRL_L1)) +# define isGRAPH_L1(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_GRAPH_L1)) +# define isIDFIRST_L1(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_IDFIRST_L1)) +# define isLOWER_L1(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_LOWER_L1)) +# define isPRINT_L1(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_PRINT_L1)) +# define isPSXSPC_L1(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_PSXSPC_L1)) +# define isPUNCT_L1(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_PUNCT_L1)) +# define isSPACE_L1(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_SPACE_L1)) +# define isUPPER_L1(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_UPPER_L1)) +# define isWORDCHAR_L1(c) cBOOL(FITS_IN_8_BITS(c) && (PL_charclass[(U8) NATIVE_TO_UNI(c)] & _CC_WORDCHAR_L1)) +#else /* No access to perl.h. Only a few provided here, just in case needed + * for backwards compatibility */ + /* ALPHAU includes Unicode semantics for latin1 characters. It has an extra + * >= AA test to speed up ASCII-only tests at the expense of the others */ +# define isALPHA_L1(c) (isALPHA(c) || (NATIVE_TO_UNI((U8) c) >= 0xAA \ + && ((NATIVE_TO_UNI((U8) c) >= 0xC0 \ + && NATIVE_TO_UNI((U8) c) != 0xD7 && NATIVE_TO_UNI((U8) c) != 0xF7) \ + || NATIVE_TO_UNI((U8) c) == 0xAA \ + || NATIVE_TO_UNI((U8) c) == 0xB5 \ + || NATIVE_TO_UNI((U8) c) == 0xBA))) +# define isCHARNAME_CONT(c) (isALNUM_L1(c) || (c) == ' ' || (c) == '-' || (c) == '(' || (c) == ')' || (c) == ':' || NATIVE_TO_UNI((U8) c) == 0xA0) +#endif + +/* Macros for backwards compatibility and for completeness when the ASCII and + * Latin1 values are identical */ +#define isALNUM(c) isWORDCHAR(c) +#define isALNUMU(c) isWORDCHAR_L1(c) +#define isALPHAU(c) isALPHA_L1(c) +#define isDIGIT_L1(c) isDIGIT_A(c) +#define isOCTAL(c) isOCTAL_A(c) +#define isOCTAL_L1(c) isOCTAL_A(c) +#define isXDIGIT_L1(c) isXDIGIT_A(c) + +/* Macros that differ between EBCDIC and ASCII. Where C89 defines a function, + * that is used in the EBCDIC form, because in EBCDIC we do not do locales: + * therefore can use native functions. For those where C89 doesn't define a + * function, use our function, assuming that the EBCDIC code page is isomorphic + * with Latin1, which the three currently recognized by Perl are. Some libc's + * have an isblank(), but it's not guaranteed. */ #ifdef EBCDIC - /* In EBCDIC we do not do locales: therefore() isupper() is fine. */ -# define isUPPER(c) isupper(c) -# define isLOWER(c) islower(c) # define isALNUMC(c) isalnum(c) -# define isASCII(c) isascii(c) +# define isALPHA(c) isalpha(c) +# define isBLANK(c) ((c) == ' ' || (c) == '\t' || NATIVE_TO_UNI(c) == 0xA0) # define isCNTRL(c) iscntrl(c) +# define isDIGIT(c) isdigit(c) # define isGRAPH(c) isgraph(c) +# define isIDFIRST(c) (isALPHA(c) || (c) == '_') +# define isLOWER(c) islower(c) # define isPRINT(c) isprint(c) +# define isPSXSPC(c) isspace(c) # define isPUNCT(c) ispunct(c) +# define isSPACE(c) (isPSXSPC(c) && (c) != '\v') +# define isUPPER(c) isupper(c) # define isXDIGIT(c) isxdigit(c) -# define toUPPER(c) toupper(c) -# define toUPPER_LATIN1_MOD(c) UNI_TO_NATIVE(PL_mod_latin1_uc[(U8) NATIVE_TO_UNI(c)]) +# define isWORDCHAR(c) (isalnum(c) || (c) == '_') # define toLOWER(c) tolower(c) -# define toLOWER_LATIN1(c) UNI_TO_NATIVE(PL_latin1_lc[(U8) NATIVE_TO_UNI(c)]) -#else -# define isUPPER(c) ((c) >= 'A' && (c) <= 'Z') -# define isLOWER(c) ((c) >= 'a' && (c) <= 'z') -# define isALNUMC(c) (isALPHA(c) || isDIGIT(c)) -# define isASCII(c) ((c) <= 127) -# define isCNTRL(c) ((c) < ' ' || (c) == 127) -# define isGRAPH(c) (isALNUM(c) || isPUNCT(c)) -# define isPRINT(c) (((c) >= 32 && (c) < 127)) -# define isPUNCT(c) (((c) >= 33 && (c) <= 47) || ((c) >= 58 && (c) <= 64) || ((c) >= 91 && (c) <= 96) || ((c) >= 123 && (c) <= 126)) -# define isXDIGIT(c) (isDIGIT(c) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) - -/* Use table lookup for speed */ -# define toLOWER_LATIN1(c) (PL_latin1_lc[(U8) c]) - -/* Modified uc. Is correct uc except for three non-ascii chars which are - * all mapped to one of them, and these need special handling */ -# define toUPPER_LATIN1_MOD(c) (PL_mod_latin1_uc[(U8) c]) - -/* ASCII casing. */ -# define toUPPER(c) (isLOWER(c) ? (c) - ('a' - 'A') : (c)) +# define toUPPER(c) toupper(c) +#else /* Not EBCDIC: ASCII-only matching */ +# define isALNUMC(c) isALNUMC_A(c) +# define isALPHA(c) isALPHA_A(c) +# define isBLANK(c) isBLANK_A(c) +# define isCNTRL(c) isCNTRL_A(c) +# define isDIGIT(c) isDIGIT_A(c) +# define isGRAPH(c) isGRAPH_A(c) +# define isIDFIRST(c) isIDFIRST_A(c) +# define isLOWER(c) isLOWER_A(c) +# define isPRINT(c) isPRINT_A(c) +# define isPSXSPC(c) isPSXSPC_A(c) +# define isPUNCT(c) isPUNCT_A(c) +# define isSPACE(c) isSPACE_A(c) +# define isUPPER(c) isUPPER_A(c) +# define isWORDCHAR(c) isWORDCHAR_A(c) +# define isXDIGIT(c) isXDIGIT_A(c) + + /* ASCII casing. These could also be written as + #define toLOWER(c) (isASCII(c) ? toLOWER_LATIN1(c) : (c)) + #define toUPPER(c) (isASCII(c) ? toUPPER_LATIN1_MOD(c) : (c)) + which uses table lookup and mask instead of subtraction. (This would + work because the _MOD does not apply in the ASCII range) */ # define toLOWER(c) (isUPPER(c) ? (c) + ('a' - 'A') : (c)) +# define toUPPER(c) (isLOWER(c) ? (c) - ('a' - 'A') : (c)) #endif + +/* Use table lookup for speed; return error character for input + * out-of-range */ +#define toLOWER_LATIN1(c) (FITS_IN_8_BITS(c) \ + ? UNI_TO_NATIVE(PL_latin1_lc[ \ + NATIVE_TO_UNI( (U8) (c)) ]) \ + : UNICODE_REPLACEMENT) +/* Modified uc. Is correct uc except for three non-ascii chars which are + * all mapped to one of them, and these need special handling; error + * character for input out-of-range */ +#define toUPPER_LATIN1_MOD(c) (FITS_IN_8_BITS(c) \ + ? UNI_TO_NATIVE(PL_mod_latin1_uc[ \ + NATIVE_TO_UNI( (U8) (c)) ]) \ + : UNICODE_REPLACEMENT) + #ifdef USE_NEXT_CTYPE # define isALNUM_LC(c) \ @@ -615,10 +883,13 @@ US-ASCII (Basic Latin) range are viewed as not having any case. #define isBLANK_LC_uni(c) isBLANK(c) /* could be wrong */ #define isALNUM_utf8(p) is_utf8_alnum(p) -/* The ID_Start of Unicode is quite limiting: it assumes a L-class - * character (meaning that you cannot have, say, a CJK character). - * Instead, let's allow ID_Continue but not digits. */ -#define isIDFIRST_utf8(p) (is_utf8_idcont(p) && !is_utf8_digit(p)) +/* To prevent S_scan_word in toke.c from hanging, we have to make sure that + * IDFIRST is an alnum. See + * http://rt.perl.org/rt3/Ticket/Display.html?id=74022 + * for more detail than you ever wanted to know about. This used to be not the + * XID version, but we decided to go with the more modern Unicode definition */ +#define isIDFIRST_utf8(p) (is_utf8_xidfirst(p) && is_utf8_alnum(p)) +#define isIDCONT_utf8(p) is_utf8_xidcont(p) #define isALPHA_utf8(p) is_utf8_alpha(p) #define isSPACE_utf8(p) is_utf8_space(p) #define isDIGIT_utf8(p) is_utf8_digit(p) @@ -653,16 +924,9 @@ US-ASCII (Basic Latin) range are viewed as not having any case. #define isPSXSPC_LC_utf8(c) (isSPACE_LC_utf8(c) ||(c) == '\f') #define isBLANK_LC_utf8(c) isBLANK(c) /* could be wrong */ -#ifdef EBCDIC -# ifdef PERL_IMPLICIT_CONTEXT -# define toCTRL(c) Perl_ebcdic_control(aTHX_ c) -# else -# define toCTRL Perl_ebcdic_control -# endif -#else - /* This conversion works both ways, strangely enough. */ -# define toCTRL(c) (toUPPER(c) ^ 64) -#endif +/* This conversion works both ways, strangely enough. On EBCDIC platforms, + * CTRL-@ is 0, CTRL-A is 1, etc, just like on ASCII */ +# define toCTRL(c) (toUPPER(NATIVE_TO_UNI(c)) ^ 64) /* Line numbers are unsigned, 32 bits. */ typedef U32 line_t; @@ -912,6 +1176,7 @@ void Perl_mem_log_del_sv(const SV *sv, const char *filename, const int linenumbe #endif #define C_ARRAY_LENGTH(a) (sizeof(a)/sizeof((a)[0])) +#define C_ARRAY_END(a) (a) + (sizeof(a)/sizeof((a)[0])) #ifdef NEED_VA_COPY # ifdef va_copy diff --git a/Master/tlpkg/tlperl/lib/CORE/hv.h b/Master/tlpkg/tlperl/lib/CORE/hv.h index f38d584d2cc..eae1e70df65 100644 --- a/Master/tlpkg/tlperl/lib/CORE/hv.h +++ b/Master/tlpkg/tlperl/lib/CORE/hv.h @@ -72,25 +72,35 @@ struct mro_meta { Don't access this directly. */ +union _xhvnameu { + HEK *xhvnameu_name; /* When xhv_name_count is 0 */ + HEK **xhvnameu_names; /* When xhv_name_count is non-0 */ +}; + struct xpvhv_aux { - HEK *xhv_name; /* name, if a symbol table */ + union _xhvnameu xhv_name_u; /* name, if a symbol table */ AV *xhv_backreferences; /* back references for weak references */ HE *xhv_eiter; /* current entry of iterator */ I32 xhv_riter; /* current root of iterator */ +/* Concerning xhv_name_count: When non-zero, xhv_name_u contains a pointer + * to an array of HEK pointers, this being the length. The first element is + * the name of the stash, which may be NULL. If xhv_name_count is positive, + * then *xhv_name is one of the effective names. If xhv_name_count is nega- + * tive, then xhv_name_u.xhvnameu_names[1] is the first effective name. + */ + I32 xhv_name_count; struct mro_meta *xhv_mro_meta; }; /* hash structure: */ /* This structure must match the beginning of struct xpvmg in sv.h. */ struct xpvhv { - union _xnvu xnv_u; - STRLEN xhv_fill; /* how full xhv_array currently is */ + HV* xmg_stash; /* class package */ + union _xmgu xmg_u; + STRLEN xhv_keys; /* total keys, including placeholders */ STRLEN xhv_max; /* subscript of last element of xhv_array */ - _XPVMG_HEAD; }; -#define xhv_keys xiv_u.xivu_iv - /* hash a key */ /* FYI: This is the "One-at-a-Time" algorithm by Bob Jenkins * from requirements by Colin Plumb. @@ -173,6 +183,14 @@ Null HV pointer. Returns the package name of a stash, or NULL if C<stash> isn't a stash. See C<SvSTASH>, C<CvSTASH>. +=for apidoc Am|char*|HvENAME|HV* stash +Returns the effective name of a stash, or NULL if there is none. The +effective name represents a location in the symbol table where this stash +resides. It is updated automatically when packages are aliased or deleted. +A stash that is no longer in the symbol table has no effective name. This +name is preferable to C<HvNAME> for use in MRO linearisations and isa +caches. + =for apidoc Am|void*|HeKEY|HE* he Returns the actual pointer stored in the key slot of the hash entry. The pointer may be either C<char*> or C<SV*>, depending on the value of @@ -236,7 +254,7 @@ C<SV*>. # define Nullhv Null(HV*) #endif #define HvARRAY(hv) ((hv)->sv_u.svu_hash) -#define HvFILL(hv) ((XPVHV*) SvANY(hv))->xhv_fill +#define HvFILL(hv) Perl_hv_fill(aTHX_ (const HV *)(hv)) #define HvMAX(hv) ((XPVHV*) SvANY(hv))->xhv_max /* This quite intentionally does no flag checking first. That's your responsibility. */ @@ -248,6 +266,7 @@ C<SV*>. #define HvRITER_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_riter : -1) #define HvEITER_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_eiter : NULL) #define HvNAME(hv) HvNAME_get(hv) +#define HvENAME(hv) HvENAME_get(hv) /* Checking that hv is a valid package stash is the caller's responsibility */ @@ -257,20 +276,44 @@ C<SV*>. /* FIXME - all of these should use a UTF8 aware API, which should also involve getting the length. */ +#define HvNAME_HEK_NN(hv) \ + ( \ + HvAUX(hv)->xhv_name_count \ + ? *HvAUX(hv)->xhv_name_u.xhvnameu_names \ + : HvAUX(hv)->xhv_name_u.xhvnameu_name \ + ) /* This macro may go away without notice. */ -#define HvNAME_HEK(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_name : NULL) -#define HvNAME_get(hv) ((SvOOK(hv) && (HvAUX(hv)->xhv_name)) \ - ? HEK_KEY(HvAUX(hv)->xhv_name) : NULL) -#define HvNAMELEN_get(hv) ((SvOOK(hv) && (HvAUX(hv)->xhv_name)) \ - ? HEK_LEN(HvAUX(hv)->xhv_name) : 0) - -/* the number of keys (including any placeholers) */ +#define HvNAME_HEK(hv) \ + (SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvNAME_HEK_NN(hv) : NULL) +#define HvNAME_get(hv) \ + ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \ + ? HEK_KEY(HvNAME_HEK_NN(hv)) : NULL) +#define HvNAMELEN_get(hv) \ + ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \ + ? HEK_LEN(HvNAME_HEK_NN(hv)) : 0) +#define HvENAME_HEK_NN(hv) \ + ( \ + HvAUX(hv)->xhv_name_count > 0 ? HvAUX(hv)->xhv_name_u.xhvnameu_names[0] : \ + HvAUX(hv)->xhv_name_count < -1 ? HvAUX(hv)->xhv_name_u.xhvnameu_names[1] : \ + HvAUX(hv)->xhv_name_count == -1 ? NULL : \ + HvAUX(hv)->xhv_name_u.xhvnameu_name \ + ) +#define HvENAME_HEK(hv) \ + (SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvENAME_HEK_NN(hv) : NULL) +#define HvENAME_get(hv) \ + ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvENAME_HEK_NN(hv)) \ + ? HEK_KEY(HvENAME_HEK_NN(hv)) : NULL) +#define HvENAMELEN_get(hv) \ + ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvENAME_HEK_NN(hv)) \ + ? HEK_LEN(HvENAME_HEK_NN(hv)) : 0) + +/* the number of keys (including any placeholders) */ #define XHvTOTALKEYS(xhv) ((xhv)->xhv_keys) /* * HvKEYS gets the number of keys that actually exist(), and is provided * for backwards compatibility with old XS code. The core uses HvUSEDKEYS - * (keys, excluding placeholdes) and HvTOTALKEYS (including placeholders) + * (keys, excluding placeholders) and HvTOTALKEYS (including placeholders) */ #define HvKEYS(hv) HvUSEDKEYS(hv) #define HvUSEDKEYS(hv) (HvTOTALKEYS(hv) - HvPLACEHOLDERS_get(hv)) @@ -397,6 +440,7 @@ C<SV*>. #define hv_iternext(hv) hv_iternext_flags(hv, 0) #define hv_magic(hv, gv, how) sv_magic(MUTABLE_SV(hv), MUTABLE_SV(gv), how, NULL, 0) +#define hv_undef(hv) Perl_hv_undef_flags(aTHX_ hv, 0) /* available as a function in hv.c */ #define Perl_sharepvn(sv, len, hash) HEK_KEY(share_hek(sv, len, hash)) @@ -454,6 +498,9 @@ C<SV*>. struct refcounted_he; +/* flags for the refcounted_he API */ +#define REFCOUNTED_HE_KEY_UTF8 0x00000001 + #ifdef PERL_CORE /* Gosh. This really isn't a good name any longer. */ @@ -477,6 +524,30 @@ struct refcounted_he { char refcounted_he_data[1]; }; +/* +=for apidoc m|SV *|refcounted_he_fetch_pvs|const struct refcounted_he *chain|const char *key|U32 flags + +Like L</refcounted_he_fetch_pvn>, but takes a literal string instead of +a string/length pair, and no precomputed hash. + +=cut +*/ + +#define refcounted_he_fetch_pvs(chain, key, flags) \ + Perl_refcounted_he_fetch_pvn(aTHX_ chain, STR_WITH_LEN(key), 0, flags) + +/* +=for apidoc m|struct refcounted_he *|refcounted_he_new_pvs|struct refcounted_he *parent|const char *key|SV *value|U32 flags + +Like L</refcounted_he_new_pvn>, but takes a literal string instead of +a string/length pair, and no precomputed hash. + +=cut +*/ + +#define refcounted_he_new_pvs(parent, key, value, flags) \ + Perl_refcounted_he_new_pvn(aTHX_ parent, STR_WITH_LEN(key), 0, value, flags) + /* Flag bits are HVhek_UTF8, HVhek_WASUTF8, then */ #define HVrhek_undef 0x00 /* Value is undef. */ #define HVrhek_delete 0x10 /* Value is placeholder - signifies delete. */ @@ -524,6 +595,10 @@ struct refcounted_he { #define HV_FETCH_LVALUE 0x10 #define HV_FETCH_JUST_SV 0x20 #define HV_DELETE 0x40 +#define HV_FETCH_EMPTY_HE 0x80 /* Leave HeVAL null. */ + +/* Must not conflict with HVhek_UTF8 */ +#define HV_NAME_SETALL 0x02 /* =for apidoc newHV diff --git a/Master/tlpkg/tlperl/lib/CORE/intrpvar.h b/Master/tlpkg/tlperl/lib/CORE/intrpvar.h index 8fe641c29c7..824bf20820b 100644 --- a/Master/tlpkg/tlperl/lib/CORE/intrpvar.h +++ b/Master/tlpkg/tlperl/lib/CORE/intrpvar.h @@ -15,7 +15,7 @@ /* These variables are per-interpreter in threaded/multiplicity builds, * global otherwise. - * Don't forget to re-run embed.pl to propagate changes! */ + * Don't forget to re-run regen/embed.pl to propagate changes! */ /* New variables must be added to the very end for binary compatibility. * XSUB.h provides wrapper functions via perlapi.h that make this @@ -25,7 +25,8 @@ /* The 'I' prefix is only needed for vars that need appropriate #defines * generated when built with or without MULTIPLICITY. It is also used - * to generate the appropriate export list for win32. + * to generate the appropriate export list for win32. If the variable + * needs to be initialized, use PERLVARI. * * When building without MULTIPLICITY, these variables will be truly global. * @@ -58,7 +59,7 @@ PERLVAR(Itmps_stack, SV **) /* mortals we've made */ PERLVARI(Itmps_ix, I32, -1) PERLVARI(Itmps_floor, I32, -1) PERLVAR(Itmps_max, I32) -PERLVAR(Imodcount, I32) /* how much mod()ification in +PERLVAR(Imodcount, I32) /* how much op_lvalue()ification in assignment? */ PERLVAR(Imarkstack, I32 *) /* stack_sp locations we're @@ -126,6 +127,7 @@ PERLVAR(Idefstash, HV *) /* main symbol table */ PERLVAR(Icurstash, HV *) /* symbol table for current package */ PERLVAR(Irestartop, OP *) /* propagating an error from croak? */ +PERLVAR(Irestartjmpenv, JMPENV *) /* target frame for longjmp in die */ PERLVAR(Icurcop, COP *) PERLVAR(Icurstack, AV *) /* THE STACK */ PERLVAR(Icurstackinfo, PERL_SI *) /* current stack + context */ @@ -170,8 +172,52 @@ PERLVARI(Irehash_seed_set, bool, FALSE) /* 582 hash initialized? */ PERLVARA(Icolors,6, char *) /* from regcomp.c */ -PERLVARI(Ipeepp, peep_t, MEMBER_TO_FPTR(Perl_peep)) - /* Pointer to peephole optimizer */ +/* +=for apidoc Amn|peep_t|PL_peepp + +Pointer to the per-subroutine peephole optimiser. This is a function +that gets called at the end of compilation of a Perl subroutine (or +equivalently independent piece of Perl code) to perform fixups of +some ops and to perform small-scale optimisations. The function is +called once for each subroutine that is compiled, and is passed, as sole +parameter, a pointer to the op that is the entry point to the subroutine. +It modifies the op tree in place. + +The peephole optimiser should never be completely replaced. Rather, +add code to it by wrapping the existing optimiser. The basic way to do +this can be seen in L<perlguts/Compile pass 3: peephole optimization>. +If the new code wishes to operate on ops throughout the subroutine's +structure, rather than just at the top level, it is likely to be more +convenient to wrap the L</PL_rpeepp> hook. + +=cut +*/ + +PERLVARI(Ipeepp, peep_t, Perl_peep) + +/* +=for apidoc Amn|peep_t|PL_rpeepp + +Pointer to the recursive peephole optimiser. This is a function +that gets called at the end of compilation of a Perl subroutine (or +equivalently independent piece of Perl code) to perform fixups of some +ops and to perform small-scale optimisations. The function is called +once for each chain of ops linked through their C<op_next> fields; +it is recursively called to handle each side chain. It is passed, as +sole parameter, a pointer to the op that is at the head of the chain. +It modifies the op tree in place. + +The peephole optimiser should never be completely replaced. Rather, +add code to it by wrapping the existing optimiser. The basic way to do +this can be seen in L<perlguts/Compile pass 3: peephole optimization>. +If the new code wishes to operate only on ops at a subroutine's top level, +rather than throughout the structure, it is likely to be more convenient +to wrap the L</PL_peepp> hook. + +=cut +*/ + +PERLVARI(Irpeepp, peep_t, Perl_rpeep) /* =for apidoc Amn|Perl_ophook_t|PL_opfreehook @@ -203,11 +249,12 @@ PERLVAR(Iregmatch_state, regmatch_state *) PERLVAR(Idelaymagic, U16) /* ($<,$>) = ... */ PERLVAR(Ilocalizing, U8) /* are we processing a local() list? */ PERLVAR(Icolorset, bool) /* from regcomp.c */ -PERLVARI(Idirty, bool, FALSE) /* in the middle of tearing things - down? */ PERLVAR(Iin_eval, U8) /* trap "fatal" errors? */ PERLVAR(Itainted, bool) /* using variables controlled by $< */ +/* current phase the interpreter is in */ +PERLVARI(Iphase, enum perl_phase, PERL_PHASE_CONSTRUCT) + /* This value may be set when embedding for full cleanup */ /* 0=none, 1=full, 2=full with checks */ /* mod_perl is special, and also assigns a meaning -1 */ @@ -227,6 +274,7 @@ PERLVAR(Iwarnhook, SV *) /* switches */ PERLVAR(Ipatchlevel, SV *) +PERLVAR(Iapiversion, SV *) PERLVAR(Ilocalpatches, const char * const *) PERLVARI(Isplitstr, const char *, " ") @@ -249,14 +297,14 @@ The C variable which corresponds to Perl's $^W warning variable. */ PERLVAR(Idowarn, U8) -PERLVAR(Idoextract, bool) + /* Space for a U8 */ PERLVAR(Isawampersand, bool) /* must save all match strings */ PERLVAR(Iunsafe, bool) PERLVAR(Iexit_flags, U8) /* was exit() unexpected, etc. */ PERLVAR(Isrand_called, bool) /* Part of internal state, but makes the 16th 1 byte variable in a row. */ PERLVAR(Itainting, bool) /* doing taint checks */ -/* Space for a U8 */ +PERLVARI(Iin_load_module, bool, FALSE) /* to prevent recursions in PerlIO_find_layer */ PERLVAR(Iinplace, char *) PERLVAR(Ie_script, SV *) @@ -278,22 +326,22 @@ PERLVARI(Isig_pending, int,0) /* Number if highest signal pending */ PERLVAR(Ipsig_pend, int *) /* per-signal "count" of pending */ /* shortcuts to various I/O objects */ -PERLVAR(Istdingv, GV *) -PERLVAR(Istderrgv, GV *) +PERLVAR(Istdingv, GV *) /* *STDIN */ +PERLVAR(Istderrgv, GV *) /* *STDERR */ PERLVAR(Idefgv, GV *) -PERLVAR(Iargvgv, GV *) -PERLVAR(Iargvoutgv, GV *) +PERLVAR(Iargvgv, GV *) /* *ARGV */ +PERLVAR(Iargvoutgv, GV *) /* *ARGVOUT */ PERLVAR(Iargvout_stack, AV *) /* shortcuts to regexp stuff */ -PERLVAR(Ireplgv, GV *) +PERLVAR(Ireplgv, GV *) /* *^R */ /* shortcuts to misc objects */ -PERLVAR(Ierrgv, GV *) +PERLVAR(Ierrgv, GV *) /* *@ */ /* shortcuts to debugging objects */ -PERLVAR(IDBgv, GV *) -PERLVAR(IDBline, GV *) +PERLVAR(IDBgv, GV *) /* *DB::DB */ +PERLVAR(IDBline, GV *) /* *DB::line */ /* =for apidoc mn|GV *|PL_DBsub @@ -317,10 +365,10 @@ variable. See C<PL_DBsingle>. =cut */ -PERLVAR(IDBsub, GV *) -PERLVAR(IDBsingle, SV *) -PERLVAR(IDBtrace, SV *) -PERLVAR(IDBsignal, SV *) +PERLVAR(IDBsub, GV *) /* *DB::sub */ +PERLVAR(IDBsingle, SV *) /* $DB::single */ +PERLVAR(IDBtrace, SV *) /* $DB::trace */ +PERLVAR(IDBsignal, SV *) /* $DB::signal */ PERLVAR(Idbargs, AV *) /* args to call listed by caller function */ /* symbol tables */ @@ -419,7 +467,7 @@ PERLVAR(IDBcv, CV *) /* from perl.c */ PERLVARI(Igeneration, int, 100) /* from op.c */ PERLVARI(Iin_clean_objs,bool, FALSE) /* from sv.c */ -PERLVARI(Iin_clean_all, bool, FALSE) /* from sv.c */ +PERLVARI(Iin_clean_all, bool, FALSE) /* ptrs to freed SVs now legal */ PERLVAR(Inomemok, bool) /* let malloc context handle nomem */ PERLVARI(Isavebegin, bool, FALSE) /* save BEGINs for compiler */ @@ -428,7 +476,16 @@ PERLVAR(Ieuid, Uid_t) /* current effective user id */ PERLVAR(Igid, Gid_t) /* current real group id */ PERLVAR(Iegid, Gid_t) /* current effective group id */ PERLVARI(Ian, U32, 0) /* malloc sequence number */ -PERLVARI(Icop_seqmax, U32, 0) /* statement sequence number */ + +#ifdef DEBUGGING + /* exercise wrap-around */ + #define PERL_COP_SEQMAX (U32_MAX-50) +#else + #define PERL_COP_SEQMAX 0 +#endif +PERLVARI(Icop_seqmax, U32, PERL_COP_SEQMAX) /* statement sequence number */ +#undef PERL_COP_SEQMAX + PERLVARI(Ievalseq, U32, 0) /* eval sequence number */ PERLVAR(Iorigalen, U32) PERLVAR(Iorigenviron, char **) @@ -441,12 +498,11 @@ PERLVAR(Isighandlerp, Sighandler_t) PERLVARA(Ibody_roots, PERL_ARENA_ROOTS_SIZE, void*) /* array of body roots */ -PERLVAR(Inice_chunk, char *) /* a nice chunk of memory to reuse */ -PERLVAR(Inice_chunk_size, U32) /* how nice the chunk of memory is */ +PERLVAR(Iunicode, U32) /* Unicode features: $ENV{PERL_UNICODE} or -C */ PERLVARI(Imaxo, int, MAXO) /* maximum number of ops */ -PERLVARI(Irunops, runops_proc_t, MEMBER_TO_FPTR(RUNOPS_DEFAULT)) +PERLVARI(Irunops, runops_proc_t, RUNOPS_DEFAULT) /* =for apidoc Amn|SV|PL_sv_undef @@ -612,7 +668,7 @@ PERLVAR(Icustom_op_names, HV*) /* Names of user defined ops */ PERLVAR(Icustom_op_descs, HV*) /* Descriptions of user defined ops */ #ifdef PERLIO_LAYERS -PERLVARI(Iperlio, PerlIO *,NULL) +PERLVARI(Iperlio, PerlIOl *,NULL) PERLVARI(Iknown_layers, PerlIO_list_t *,NULL) PERLVARI(Idef_layerlist, PerlIO_list_t *,NULL) #endif @@ -623,6 +679,8 @@ PERLVAR(Idebug_pad, struct perl_debug_pad) /* always needed because of the re ex PERLVAR(Iutf8_idstart, SV *) PERLVAR(Iutf8_idcont, SV *) +PERLVAR(Iutf8_xidstart, SV *) +PERLVAR(Iutf8_xidcont, SV *) PERLVAR(Isort_RealCmp, SVCOMPARE_t) @@ -631,10 +689,6 @@ PERLVARI(Iunitcheckav_save, AV*, NULL) /* save UNITCHECK{}s when compiling */ PERLVARI(Iclocktick, long, 0) /* this many times() ticks in a second */ -PERLVARI(Iin_load_module, int, 0) /* to prevent recursions in PerlIO_find_layer */ - -PERLVAR(Iunicode, U32) /* Unicode features: $ENV{PERL_UNICODE} or -C */ - PERLVAR(Isignals, U32) /* Using which pre-5.8 signals */ PERLVAR(Ireentrant_retint, int) /* Integer return value from reentrant functions */ @@ -642,17 +696,21 @@ PERLVAR(Ireentrant_retint, int) /* Integer return value from reentrant functions PERLVAR(Istashcache, HV *) /* Cache to speed up S_method_common */ /* Hooks to shared SVs and locks. */ -PERLVARI(Isharehook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing)) -PERLVARI(Ilockhook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing)) +PERLVARI(Isharehook, share_proc_t, Perl_sv_nosharing) +PERLVARI(Ilockhook, share_proc_t, Perl_sv_nosharing) #ifdef NO_MATHOMS # define PERL_UNLOCK_HOOK Perl_sv_nosharing #else /* This reference ensures that the mathoms are linked with perl */ # define PERL_UNLOCK_HOOK Perl_sv_nounlocking #endif -PERLVARI(Iunlockhook, share_proc_t, MEMBER_TO_FPTR(PERL_UNLOCK_HOOK)) +PERLVARI(Iunlockhook, share_proc_t, PERL_UNLOCK_HOOK) -PERLVARI(Ithreadhook, thrhook_proc_t, MEMBER_TO_FPTR(Perl_nothreadhook)) +PERLVARI(Ithreadhook, thrhook_proc_t, Perl_nothreadhook) + +#ifndef PERL_MICRO +PERLVARI(Isignalhook, despatch_signals_proc_t, Perl_despatch_signals) +#endif PERLVARI(Ihash_seed, UV, 0) /* Hash initializer */ @@ -707,7 +765,7 @@ PERLVARI(Islab_count, U32, 0) /* Size of the array */ #endif /* Can shared object be destroyed */ -PERLVARI(Idestroyhook, destroyable_proc_t, MEMBER_TO_FPTR(Perl_sv_destroyable)) +PERLVARI(Idestroyhook, destroyable_proc_t, Perl_sv_destroyable) #ifdef DEBUG_LEAKING_SCALARS PERLVARI(Isv_serial, U32, 0) /* SV serial number, used in sv.c */ @@ -719,6 +777,20 @@ PERLVARI(Isv_serial, U32, 0) /* SV serial number, used in sv.c */ retrieve a C<struct mro_alg *> */ PERLVAR(Iregistered_mros, HV *) +/* Compile-time block start/end hooks */ +PERLVAR(Iblockhooks, AV *) + + +/* Everything that folds to a given character, for case insensitivity regex + * matching */ +PERLVARI(Iutf8_foldclosures, HV *, NULL) + +/* List of characters that participate in folds (except marks, etc in + * multi-char folds) */ +PERLVARI(Iutf8_foldable, HV *, NULL) + +PERLVAR(Icustom_ops, HV *) /* custom op registrations */ + /* If you are adding a U8 or U16, check to see if there are 'Space' comments * above on where there are gaps which currently will be structure padding. */ diff --git a/Master/tlpkg/tlperl/lib/CORE/iperlsys.h b/Master/tlpkg/tlperl/lib/CORE/iperlsys.h index 76f5c41ae67..0bfad3ce09f 100644 --- a/Master/tlpkg/tlperl/lib/CORE/iperlsys.h +++ b/Master/tlpkg/tlperl/lib/CORE/iperlsys.h @@ -77,9 +77,9 @@ typedef STDCHAR* (*LPGetBase)(struct IPerlStdIO*, FILE*); typedef int (*LPGetBufsiz)(struct IPerlStdIO*, FILE*); typedef int (*LPGetCnt)(struct IPerlStdIO*, FILE*); typedef STDCHAR* (*LPGetPtr)(struct IPerlStdIO*, FILE*); -typedef char* (*LPGets)(struct IPerlStdIO*, FILE*, char*, int); -typedef int (*LPPutc)(struct IPerlStdIO*, FILE*, int); -typedef int (*LPPuts)(struct IPerlStdIO*, FILE*, const char*); +typedef char* (*LPGets)(struct IPerlStdIO*, char*, int, FILE*); +typedef int (*LPPutc)(struct IPerlStdIO*, int, FILE*); +typedef int (*LPPuts)(struct IPerlStdIO*, const char *, FILE*); typedef int (*LPFlush)(struct IPerlStdIO*, FILE*); typedef int (*LPUngetc)(struct IPerlStdIO*, int,FILE*); typedef int (*LPFileno)(struct IPerlStdIO*, FILE*); @@ -225,14 +225,14 @@ struct IPerlStdIOInfo (*PL_StdIO->pGetCnt)(PL_StdIO, (f)) #define PerlSIO_get_ptr(f) \ (*PL_StdIO->pGetPtr)(PL_StdIO, (f)) -#define PerlSIO_fputc(f,c) \ +#define PerlSIO_fputc(c,f) \ (*PL_StdIO->pPutc)(PL_StdIO, (c),(f)) -#define PerlSIO_fputs(f,s) \ +#define PerlSIO_fputs(s,f) \ (*PL_StdIO->pPuts)(PL_StdIO, (s),(f)) #define PerlSIO_fflush(f) \ (*PL_StdIO->pFlush)(PL_StdIO, (f)) -#define PerlSIO_fgets(s, n, fp) \ - (*PL_StdIO->pGets)(PL_StdIO, (fp), s, n) +#define PerlSIO_fgets(s, n, f) \ + (*PL_StdIO->pGets)(PL_StdIO, s, n, (f)) #define PerlSIO_ungetc(c,f) \ (*PL_StdIO->pUngetc)(PL_StdIO, (c),(f)) #define PerlSIO_fileno(f) \ @@ -311,12 +311,12 @@ struct IPerlStdIOInfo #define PerlSIO_get_cnt(f) 0 #define PerlSIO_get_ptr(f) NULL #endif -#define PerlSIO_fputc(f,c) fputc(c,f) -#define PerlSIO_fputs(f,s) fputs(s,f) +#define PerlSIO_fputc(c,f) fputc(c,f) +#define PerlSIO_fputs(s,f) fputs(s,f) #define PerlSIO_fflush(f) Fflush(f) -#define PerlSIO_fgets(s, n, fp) fgets(s,n,fp) +#define PerlSIO_fgets(s, n, f) fgets(s,n,f) #if defined(VMS) && defined(__DECC) - /* Unusual definition of ungetc() here to accomodate fast_sv_gets()' + /* Unusual definition of ungetc() here to accommodate fast_sv_gets()' * belief that it can mix getc/ungetc with reads from stdio buffer */ int decc$ungetc(int __c, FILE *__stream); # define PerlSIO_ungetc(c,f) ((c) == EOF ? EOF : \ diff --git a/Master/tlpkg/tlperl/lib/CORE/keywords.h b/Master/tlpkg/tlperl/lib/CORE/keywords.h index b2e996db886..b821121780b 100644 --- a/Master/tlpkg/tlperl/lib/CORE/keywords.h +++ b/Master/tlpkg/tlperl/lib/CORE/keywords.h @@ -3,15 +3,16 @@ * keywords.h * * Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2005, - * 2006, 2007, by Larry Wall and others + * 2006, 2007 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - * This file is built by keywords.pl from its data. Any changes made here - * will be lost! + * This file is built by regen/keywords.pl from its data. + * Any changes made here will be lost! */ + #define KEY_NULL 0 #define KEY___FILE__ 1 #define KEY___LINE__ 2 @@ -266,4 +267,6 @@ #define KEY_xor 251 #define KEY_y 252 -/* ex: set ro: */ +/* Generated from: + * 28d95638560707fb8bee100dab74c90107c3e000f635e3bd310d4e2501d3b073 regen/keywords.pl + * ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h b/Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h new file mode 100644 index 00000000000..d43f87ad777 --- /dev/null +++ b/Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h @@ -0,0 +1,265 @@ +/* -*- buffer-read-only: t -*- + * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! + * This file is built by regen/mk_PL_charclass.pl from + * lib/unicore/CaseFolding.txt. + * Any changes made here will be lost! + */ + +/* U+00 NUL */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+01 SOH */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+02 STX */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+03 ETX */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+04 EOT */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+05 ENQ */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+06 ACK */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+07 BEL */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+08 BS */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+09 HT */ _CC_BLANK_A|_CC_BLANK_L1|_CC_CNTRL_A|_CC_CNTRL_L1|_CC_PSXSPC_A|_CC_PSXSPC_L1|_CC_SPACE_A|_CC_SPACE_L1, +/* U+0A LF */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_PSXSPC_A|_CC_PSXSPC_L1|_CC_SPACE_A|_CC_SPACE_L1, +/* U+0B VT */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_PSXSPC_A|_CC_PSXSPC_L1, +/* U+0C FF */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_PSXSPC_A|_CC_PSXSPC_L1|_CC_SPACE_A|_CC_SPACE_L1, +/* U+0D CR */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_PSXSPC_A|_CC_PSXSPC_L1|_CC_SPACE_A|_CC_SPACE_L1, +/* U+0E SO */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+0F SI */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+10 DLE */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+11 DC1 */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+12 DC2 */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+13 DC3 */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+14 DC4 */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+15 NAK */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+16 SYN */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+17 ETB */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+18 CAN */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+19 EOM */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+1A SUB */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+1B ESC */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+1C FS */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+1D GS */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+1E RS */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+1F US */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+20 SPACE */ _CC_BLANK_A|_CC_BLANK_L1|_CC_CHARNAME_CONT|_CC_PRINT_A|_CC_PRINT_L1|_CC_PSXSPC_A|_CC_PSXSPC_L1|_CC_SPACE_A|_CC_SPACE_L1, +/* U+21 '!' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+22 '"' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+23 '#' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+24 '$' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+25 '%' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+26 '&' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+27 ''' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+28 '(' */ _CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+29 ')' */ _CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+2A '*' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+2B '+' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+2C ',' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+2D '-' */ _CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+2E '.' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+2F '/' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+30 '0' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+31 '1' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+32 '2' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+33 '3' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+34 '4' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+35 '5' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+36 '6' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+37 '7' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+38 '8' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+39 '9' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+3A ':' */ _CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+3B ';' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+3C '<' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+3D '=' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+3E '>' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+3F '?' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+40 '@' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+41 'A' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+42 'B' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+43 'C' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+44 'D' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+45 'E' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+46 'F' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+47 'G' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+48 'H' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+49 'I' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+4A 'J' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+4B 'K' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+4C 'L' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+4D 'M' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+4E 'N' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+4F 'O' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+50 'P' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+51 'Q' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+52 'R' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+53 'S' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+54 'T' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+55 'U' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+56 'V' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+57 'W' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+58 'X' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+59 'Y' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+5A 'Z' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+5B '[' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+5C '\' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+5D ']' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+5E '^' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+5F '_' */ _CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+60 '`' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+61 'a' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+62 'b' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+63 'c' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+64 'd' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+65 'e' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+66 'f' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A, +/* U+67 'g' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+68 'h' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+69 'i' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+6A 'j' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+6B 'k' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+6C 'l' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+6D 'm' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+6E 'n' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+6F 'o' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+70 'p' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+71 'q' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+72 'r' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+73 's' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+74 't' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+75 'u' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+76 'v' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+77 'w' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+78 'x' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+79 'y' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+7A 'z' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1, +/* U+7B '{' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+7C '|' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+7D '}' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+7E '~' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1, +/* U+7F DEL */ _CC_CNTRL_A|_CC_CNTRL_L1, +/* U+80 PAD */ _CC_CNTRL_L1, +/* U+81 HOP */ _CC_CNTRL_L1, +/* U+82 BPH */ _CC_CNTRL_L1, +/* U+83 NBH */ _CC_CNTRL_L1, +/* U+84 IND */ _CC_CNTRL_L1, +/* U+85 NEL */ _CC_CNTRL_L1|_CC_PSXSPC_L1|_CC_SPACE_L1, +/* U+86 SSA */ _CC_CNTRL_L1, +/* U+87 ESA */ _CC_CNTRL_L1, +/* U+88 HTS */ _CC_CNTRL_L1, +/* U+89 HTJ */ _CC_CNTRL_L1, +/* U+8A VTS */ _CC_CNTRL_L1, +/* U+8B PLD */ _CC_CNTRL_L1, +/* U+8C PLU */ _CC_CNTRL_L1, +/* U+8D RI */ _CC_CNTRL_L1, +/* U+8E SS2 */ _CC_CNTRL_L1, +/* U+8F SS3 */ _CC_CNTRL_L1, +/* U+90 DCS */ _CC_CNTRL_L1, +/* U+91 PU1 */ _CC_CNTRL_L1, +/* U+92 PU2 */ _CC_CNTRL_L1, +/* U+93 STS */ _CC_CNTRL_L1, +/* U+94 CCH */ _CC_CNTRL_L1, +/* U+95 MW */ _CC_CNTRL_L1, +/* U+96 SPA */ _CC_CNTRL_L1, +/* U+97 EPA */ _CC_CNTRL_L1, +/* U+98 SOS */ _CC_CNTRL_L1, +/* U+99 SGC */ _CC_CNTRL_L1, +/* U+9A SCI */ _CC_CNTRL_L1, +/* U+9B CSI */ _CC_CNTRL_L1, +/* U+9C ST */ _CC_CNTRL_L1, +/* U+9D OSC */ _CC_CNTRL_L1, +/* U+9E PM */ _CC_CNTRL_L1, +/* U+9F APC */ _CC_CNTRL_L1, +/* U+A0 NO-BREAK SPACE */ _CC_BLANK_L1|_CC_CHARNAME_CONT|_CC_PRINT_L1|_CC_PSXSPC_L1|_CC_SPACE_L1, +/* U+A1 INVERTED EXCLAMATION MARK */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_PUNCT_L1, +/* U+A2 CENT SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+A3 POUND SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+A4 CURRENCY SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+A5 YEN SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+A6 BROKEN BAR */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+A7 SECTION SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+A8 DIAERESIS */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+A9 COPYRIGHT SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+AA FEMININE ORDINAL INDICATOR */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_PUNCT_L1, +/* U+AC NOT SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+AD SOFT HYPHEN */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+AE REGISTERED SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+AF MACRON */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+B0 DEGREE SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+B1 PLUS-MINUS SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+B2 SUPERSCRIPT TWO */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+B3 SUPERSCRIPT THREE */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+B4 ACUTE ACCENT */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+B5 MICRO SIGN */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+B6 PILCROW SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+B7 MIDDLE DOT */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_PUNCT_L1, +/* U+B8 CEDILLA */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+B9 SUPERSCRIPT ONE */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+BA MASCULINE ORDINAL INDICATOR */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_PUNCT_L1, +/* U+BC VULGAR FRACTION ONE QUARTER */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+BD VULGAR FRACTION ONE HALF */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+BE VULGAR FRACTION THREE QUARTERS */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+BF INVERTED QUESTION MARK */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_PUNCT_L1, +/* U+C0 A WITH GRAVE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+C1 A WITH ACUTE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+C2 A WITH CIRCUMFLEX */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+C3 A WITH TILDE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+C4 A WITH DIAERESIS */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+C5 A WITH RING ABOVE */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+C6 AE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+C7 C WITH CEDILLA */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+C8 E WITH GRAVE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+C9 E WITH ACUTE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+CA E WITH CIRCUMFLEX */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+CB E WITH DIAERESIS */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+CC I WITH GRAVE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+CD I WITH ACUTE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+CE I WITH CIRCUMFLEX */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+CF I WITH DIAERESIS */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+D0 ETH */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+D1 N WITH TILDE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+D2 O WITH GRAVE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+D3 O WITH ACUTE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+D4 O WITH CIRCUMFLEX */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+D5 O WITH TILDE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+D6 O WITH DIAERESIS */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+D7 MULTIPLICATION SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+D8 O WITH STROKE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+D9 U WITH GRAVE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+DA U WITH ACUTE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+DB U WITH CIRCUMFLEX */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+DC U WITH DIAERESIS */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+DD Y WITH ACUTE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+DE THORN */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1, +/* U+DF sharp s */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+E0 a with grave */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+E1 a with acute */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+E2 a with circumflex */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+E3 a with tilde */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+E4 a with diaeresis */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+E5 a with ring above */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+E6 ae */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+E7 c with cedilla */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+E8 e with grave */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+E9 e with acute */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+EA e with circumflex */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+EB e with diaeresis */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+EC i with grave */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+ED i with acute */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+EE i with circumflex */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+EF i with diaeresis */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+F0 eth */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+F1 n with tilde */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+F2 o with grave */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+F3 o with acute */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+F4 o with circumflex */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+F5 o with tilde */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+F6 o with diaeresis */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+F7 DIVISION SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1, +/* U+F8 o with stroke */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+F9 u with grave */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+FA u with acute */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+FB u with circumflex */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+FC u with diaeresis */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+FD y with acute */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+FE thorn */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, +/* U+FF y with diaeresis */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1, + +/* ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/libperl512.a b/Master/tlpkg/tlperl/lib/CORE/libperl514.a Binary files differindex d837df3ee31..534fd81f84f 100644 --- a/Master/tlpkg/tlperl/lib/CORE/libperl512.a +++ b/Master/tlpkg/tlperl/lib/CORE/libperl514.a diff --git a/Master/tlpkg/tlperl/lib/CORE/malloc_ctl.h b/Master/tlpkg/tlperl/lib/CORE/malloc_ctl.h index 7a6aed0db73..d74637289b5 100644 --- a/Master/tlpkg/tlperl/lib/CORE/malloc_ctl.h +++ b/Master/tlpkg/tlperl/lib/CORE/malloc_ctl.h @@ -14,14 +14,12 @@ struct perl_mstats { }; typedef struct perl_mstats perl_mstats_t; -START_EXTERN_C -Malloc_t Perl_malloc (MEM_SIZE nbytes); -Malloc_t Perl_calloc (MEM_SIZE elements, MEM_SIZE size); -Malloc_t Perl_realloc (Malloc_t where, MEM_SIZE nbytes); +PERL_CALLCONV Malloc_t Perl_malloc (MEM_SIZE nbytes); +PERL_CALLCONV Malloc_t Perl_calloc (MEM_SIZE elements, MEM_SIZE size); +PERL_CALLCONV Malloc_t Perl_realloc (Malloc_t where, MEM_SIZE nbytes); /* 'mfree' rather than 'free', since there is already a 'perl_free' * that causes clashes with case-insensitive linkers */ -Free_t Perl_mfree (Malloc_t where); -END_EXTERN_C +PERL_CALLCONV Free_t Perl_mfree (Malloc_t where); #ifndef NO_MALLOC_DYNAMIC_CFG diff --git a/Master/tlpkg/tlperl/lib/CORE/metaconfig.h b/Master/tlpkg/tlperl/lib/CORE/metaconfig.h new file mode 100644 index 00000000000..95aba26b87e --- /dev/null +++ b/Master/tlpkg/tlperl/lib/CORE/metaconfig.h @@ -0,0 +1,44 @@ +/* This is a placeholder file for symbols that should be exported + * into config_h.SH and Porting/Glossary. See also metaconfig.SH + * + * First version was created from the part in handy.h (which includes this) + * H.Merijn Brand 21 Dec 2010 (Tux) + * + * Mentioned variables are forced to be included into config_h.SH + * as they are only included if meta finds them referenced. That + * implies that noone can use them unless they are available and + * they won't be available unless used. When new symbols are probed + * in Configure, this is the way to force them into availability. + * + * CHARBITS + * GMTIME_MAX + * GMTIME_MIN + * HAS_ASCTIME64 + * HAS_CTIME64 + * HAS_DIFFTIME64 + * HAS_GETADDRINFO + * HAS_GETNAMEINFO + * HAS_GMTIME64 + * HAS_INETNTOP + * HAS_INETPTON + * HAS_LOCALTIME64 + * HAS_MKTIME64 + * HAS_PRCTL + * HAS_PSEUDOFORK + * HAS_SIN6_SCOPE_ID + * HAS_SOCKADDR_SA_LEN + * HAS_TIMEGM + * I16SIZE + * I32SIZE + * I64SIZE + * I8SIZE + * LOCALTIME_MAX + * LOCALTIME_MIN + * LOCALTIME_R_NEEDS_TZSET + * U16SIZE + * U32SIZE + * U64SIZE + * U8SIZE + * USE_DTRACE + * + */ diff --git a/Master/tlpkg/tlperl/lib/CORE/mg.h b/Master/tlpkg/tlperl/lib/CORE/mg.h index fcac4111131..848f735d6cb 100644 --- a/Master/tlpkg/tlperl/lib/CORE/mg.h +++ b/Master/tlpkg/tlperl/lib/CORE/mg.h @@ -12,15 +12,15 @@ STRUCT_MGVTBL_DEFINITION; #else struct mgvtbl { - int (CPERLscope(*svt_get)) (pTHX_ SV *sv, MAGIC* mg); - int (CPERLscope(*svt_set)) (pTHX_ SV *sv, MAGIC* mg); - U32 (CPERLscope(*svt_len)) (pTHX_ SV *sv, MAGIC* mg); - int (CPERLscope(*svt_clear))(pTHX_ SV *sv, MAGIC* mg); - int (CPERLscope(*svt_free)) (pTHX_ SV *sv, MAGIC* mg); - int (CPERLscope(*svt_copy)) (pTHX_ SV *sv, MAGIC* mg, + int (*svt_get) (pTHX_ SV *sv, MAGIC* mg); + int (*svt_set) (pTHX_ SV *sv, MAGIC* mg); + U32 (*svt_len) (pTHX_ SV *sv, MAGIC* mg); + int (*svt_clear)(pTHX_ SV *sv, MAGIC* mg); + int (*svt_free) (pTHX_ SV *sv, MAGIC* mg); + int (*svt_copy) (pTHX_ SV *sv, MAGIC* mg, SV *nsv, const char *name, I32 namlen); - int (CPERLscope(*svt_dup)) (pTHX_ MAGIC *mg, CLONE_PARAMS *param); - int (CPERLscope(*svt_local))(pTHX_ SV *nsv, MAGIC *mg); + int (*svt_dup) (pTHX_ MAGIC *mg, CLONE_PARAMS *param); + int (*svt_local)(pTHX_ SV *nsv, MAGIC *mg); }; #endif @@ -38,7 +38,7 @@ struct magic { #define MGf_TAINTEDDIR 1 /* PERL_MAGIC_envelem only */ #define MGf_MINMATCH 1 /* PERL_MAGIC_regex_global only */ #define MGf_REFCOUNTED 2 -#define MGf_GSKIP 4 +#define MGf_GSKIP 4 /* skip further GETs until after next SET */ #define MGf_COPY 8 /* has an svt_copy MGVTBL entry */ #define MGf_DUP 0x10 /* has an svt_dup MGVTBL entry */ #define MGf_LOCAL 0x20 /* has an svt_local MGVTBL entry */ diff --git a/Master/tlpkg/tlperl/lib/CORE/mydtrace.h b/Master/tlpkg/tlperl/lib/CORE/mydtrace.h index daabcfa0b9c..75e6918015d 100644 --- a/Master/tlpkg/tlperl/lib/CORE/mydtrace.h +++ b/Master/tlpkg/tlperl/lib/CORE/mydtrace.h @@ -13,21 +13,21 @@ # include "perldtrace.h" -# define ENTRY_PROBE(func, file, line) \ - if (PERL_SUB_ENTRY_ENABLED()) { \ - PERL_SUB_ENTRY(func, file, line); \ +# define ENTRY_PROBE(func, file, line, stash) \ + if (PERL_SUB_ENTRY_ENABLED()) { \ + PERL_SUB_ENTRY(func, file, line, stash); \ } -# define RETURN_PROBE(func, file, line) \ - if (PERL_SUB_RETURN_ENABLED()) { \ - PERL_SUB_RETURN(func, file, line); \ +# define RETURN_PROBE(func, file, line, stash) \ + if (PERL_SUB_RETURN_ENABLED()) { \ + PERL_SUB_RETURN(func, file, line, stash); \ } #else /* NOPs */ -# define ENTRY_PROBE(func, file, line) -# define RETURN_PROBE(func, file, line) +# define ENTRY_PROBE(func, file, line, stash) +# define RETURN_PROBE(func, file, line, stash) #endif diff --git a/Master/tlpkg/tlperl/lib/CORE/op.h b/Master/tlpkg/tlperl/lib/CORE/op.h index 25b59ea5c22..ae6989acb89 100644 --- a/Master/tlpkg/tlperl/lib/CORE/op.h +++ b/Master/tlpkg/tlperl/lib/CORE/op.h @@ -36,6 +36,7 @@ * the operation is privatized by a check routine, * which may or may not check number of children). */ +#include "op_reg_common.h" #define OPCODE U16 @@ -53,7 +54,7 @@ typedef PERL_BITFIELD16 Optype; #define BASEOP \ OP* op_next; \ OP* op_sibling; \ - OP* (CPERLscope(*op_ppaddr))(pTHX); \ + OP* (*op_ppaddr)(pTHX); \ MADPROP_IN_BASEOP \ PADOFFSET op_targ; \ PERL_BITFIELD16 op_type:9; \ @@ -85,7 +86,7 @@ typedef PERL_BITFIELD16 Optype; =for apidoc Amn|U32|GIMME_V The XSUB-writer's equivalent to Perl's C<wantarray>. Returns C<G_VOID>, C<G_SCALAR> or C<G_ARRAY> for void, scalar or list context, -respectively. +respectively. See L<perlcall> for a usage example. =for apidoc Amn|U32|GIMME A backward-compatible version of C<GIMME_V> which can only return @@ -122,7 +123,6 @@ Deprecated. Use C<GIMME_V> instead. /* On OP_ENTERSUB || OP_NULL, saw a "do". */ /* On OP_EXISTS, treat av as av, not avhv. */ /* On OP_(ENTER|LEAVE)EVAL, don't clear $@ */ - /* On OP_ENTERITER, loop var is per-thread */ /* On pushre, rx is used as part of split, e.g. split " " */ /* On regcomp, "use re 'eval'" was in scope */ /* On OP_READLINE, was <$filehandle> */ @@ -130,7 +130,7 @@ Deprecated. Use C<GIMME_V> instead. defined()*/ /* On OP_DBSTATE, indicates breakpoint * (runtime property) */ - /* On OP_AELEMFAST, indiciates pad var */ + /* On OP_AELEMFAST, indicates pad var */ /* On OP_REQUIRE, was seen as CORE::require */ /* On OP_ENTERWHEN, there's no condition */ /* On OP_BREAK, an implicit break */ @@ -141,6 +141,12 @@ Deprecated. Use C<GIMME_V> instead. /* On OP_HELEM and OP_HSLICE, localization will be followed by assignment, so do not wipe the target if it is special (e.g. a glob or a magic SV) */ + /* On OP_MATCH, OP_SUBST & OP_TRANS, the + operand of a logical or conditional + that was optimised away, so it should + not be bound via =~ */ + /* On OP_CONST, from a constant CV */ + /* On OP_GLOB, use Perl glob function */ /* old names; don't use in new code, but don't break them, either */ #define OPf_LIST OPf_WANT_LIST @@ -153,7 +159,7 @@ Deprecated. Use C<GIMME_V> instead. : G_SCALAR) \ : dowantarray()) -/* NOTE: OP_NEXTSTATE, OP_DBSTATE, and OP_SETSTATE (i.e. COPs) carry lower +/* NOTE: OP_NEXTSTATE and OP_DBSTATE (i.e. COPs) carry lower * bits of PL_hints in op_private */ /* Private for lvalues */ @@ -191,10 +197,12 @@ Deprecated. Use C<GIMME_V> instead. #define OPpDEREF_AV 32 /* Want ref to AV. */ #define OPpDEREF_HV 64 /* Want ref to HV. */ #define OPpDEREF_SV (32|64) /* Want ref to SV. */ +/* Private for OP_RV2SV, OP_RV2AV, OP_RV2AV */ +#define OPpDEREFed 4 /* prev op was OPpDEREF */ /* OP_ENTERSUB only */ #define OPpENTERSUB_DB 16 /* Debug subroutine. */ #define OPpENTERSUB_HASTARG 32 /* Called from OP tree. */ -#define OPpENTERSUB_NOMOD 64 /* Immune to mod() for :attrlist. */ +#define OPpENTERSUB_NOMOD 64 /* Immune to op_lvalue() for :attrlist. */ /* OP_ENTERSUB and OP_RV2CV only */ #define OPpENTERSUB_AMPER 8 /* Used & form to call. */ #define OPpENTERSUB_NOPAREN 128 /* bare sub call (without parens) */ @@ -230,7 +238,7 @@ Deprecated. Use C<GIMME_V> instead. /* Private for OP_CONST */ #define OPpCONST_NOVER 2 /* no 6; */ #define OPpCONST_SHORTCIRCUIT 4 /* eg the constant 5 in (5 || foo) */ -#define OPpCONST_STRICT 8 /* bearword subject to strict 'subs' */ +#define OPpCONST_STRICT 8 /* bareword subject to strict 'subs' */ #define OPpCONST_ENTERED 16 /* Has been entered as symbol. */ #define OPpCONST_ARYBASE 32 /* Was a $[ translated to constant. */ #define OPpCONST_BARE 64 /* Was a bare word (filehandle?). */ @@ -357,39 +365,44 @@ struct pmop { #define PM_SETRE(o,r) ((o)->op_pmregexp = (r)) #endif +/* Leave some space, so future bit allocations can go either in the shared or + * unshared area without affecting binary compatibility */ +#define PMf_BASE_SHIFT (_RXf_PMf_SHIFT_NEXT+6) -#define PMf_RETAINT 0x00000040 /* taint $1 etc. if target tainted */ -#define PMf_ONCE 0x00000080 /* match successfully only once per - reset, with related flag RXf_USED - in re->extflags holding state. - This is used only for ?? matches, - and only on OP_MATCH and OP_QR */ +/* 'use re "taint"' in scope: taint $1 etc. if target tainted */ +#define PMf_RETAINT (1<<(PMf_BASE_SHIFT+0)) -#define PMf_UNUSED 0x00000100 /* free for use */ -#define PMf_MAYBE_CONST 0x00000200 /* replacement contains variables */ +/* match successfully only once per reset, with related flag RXf_USED in + * re->extflags holding state. This is used only for ?? matches, and only on + * OP_MATCH and OP_QR */ +#define PMf_ONCE (1<<(PMf_BASE_SHIFT+1)) -#define PMf_USED 0x00000400 /* PMf_ONCE has matched successfully. - Not used under threading. */ +/* replacement contains variables */ +#define PMf_MAYBE_CONST (1<<(PMf_BASE_SHIFT+2)) -#define PMf_CONST 0x00000800 /* subst replacement is constant */ -#define PMf_KEEP 0x00001000 /* keep 1st runtime pattern forever */ -#define PMf_GLOBAL 0x00002000 /* pattern had a g modifier */ -#define PMf_CONTINUE 0x00004000 /* don't reset pos() if //g fails */ -#define PMf_EVAL 0x00008000 /* evaluating replacement as expr */ +/* PMf_ONCE has matched successfully. Not used under threading. */ +#define PMf_USED (1<<(PMf_BASE_SHIFT+3)) -/* The following flags have exact equivalents in regcomp.h with the prefix RXf_ - * which are stored in the regexp->extflags member. If you change them here, - * you have to change them there, and vice versa. - */ -#define PMf_MULTILINE 0x00000001 /* assume multiple lines */ -#define PMf_SINGLELINE 0x00000002 /* assume single line */ -#define PMf_FOLD 0x00000004 /* case insensitivity */ -#define PMf_EXTENDED 0x00000008 /* chuck embedded whitespace */ -#define PMf_KEEPCOPY 0x00000010 /* copy the string when matching */ -#define PMf_LOCALE 0x00000020 /* use locale for character types */ +/* subst replacement is constant */ +#define PMf_CONST (1<<(PMf_BASE_SHIFT+4)) + +/* keep 1st runtime pattern forever */ +#define PMf_KEEP (1<<(PMf_BASE_SHIFT+5)) + +#define PMf_GLOBAL (1<<(PMf_BASE_SHIFT+6)) /* pattern had a g modifier */ + +/* don't reset pos() if //g fails */ +#define PMf_CONTINUE (1<<(PMf_BASE_SHIFT+7)) -/* mask of bits that need to be transfered to re->extflags */ -#define PMf_COMPILETIME (PMf_MULTILINE|PMf_SINGLELINE|PMf_LOCALE|PMf_FOLD|PMf_EXTENDED|PMf_KEEPCOPY) +/* evaluating replacement as expr */ +#define PMf_EVAL (1<<(PMf_BASE_SHIFT+8)) + +/* Return substituted string instead of modifying it. */ +#define PMf_NONDESTRUCT (1<<(PMf_BASE_SHIFT+9)) + +#if PMf_BASE_SHIFT+9 > 31 +# error Too many PMf_ bits used. See above and regnodes.h for any spare in middle +#endif #ifdef USE_ITHREADS @@ -530,14 +543,13 @@ struct loop { #define OA_FOLDCONST 2 #define OA_RETSCALAR 4 #define OA_TARGET 8 -#define OA_RETINTEGER 16 +#define OA_TARGLEX 16 #define OA_OTHERINT 32 #define OA_DANGEROUS 64 #define OA_DEFGV 128 -#define OA_TARGLEX 256 /* The next 4 bits encode op class information */ -#define OCSHIFT 9 +#define OCSHIFT 8 #define OA_CLASS_MASK (15 << OCSHIFT) @@ -556,7 +568,7 @@ struct loop { #define OA_FILESTATOP (12 << OCSHIFT) #define OA_LOOPEXOP (13 << OCSHIFT) -#define OASHIFT 13 +#define OASHIFT 12 /* Remaining nybbles of PL_opargs */ #define OA_SCALAR 1 @@ -612,6 +624,21 @@ struct loop { #define ref(o, type) doref(o, type, TRUE) #endif +/* +=head1 Optree Manipulation Functions + +=for apidoc Am|OP*|LINKLIST|OP *o +Given the root of an optree, link the tree in execution order using the +C<op_next> pointers and return the first op executed. If this has +already been done, it will not be redone, and C<< o->op_next >> will be +returned. If C<< o->op_next >> is not already set, I<o> should be at +least an C<UNOP>. + +=cut +*/ + +#define LINKLIST(o) ((o)->op_next ? (o)->op_next : op_linklist((OP*)o)) + /* no longer used anywhere in core */ #ifndef PERL_CORE #define cv_ckproto(cv, gv, p) \ @@ -641,6 +668,195 @@ struct loop { #define FreeOp(p) PerlMemShared_free(p) #endif +struct block_hooks { + U32 bhk_flags; + void (*bhk_start) (pTHX_ int full); + void (*bhk_pre_end) (pTHX_ OP **seq); + void (*bhk_post_end) (pTHX_ OP **seq); + void (*bhk_eval) (pTHX_ OP *const saveop); +}; + +/* +=head1 Compile-time scope hooks + +=for apidoc mx|U32|BhkFLAGS|BHK *hk +Return the BHK's flags. + +=for apidoc mx|void *|BhkENTRY|BHK *hk|which +Return an entry from the BHK structure. I<which> is a preprocessor token +indicating which entry to return. If the appropriate flag is not set +this will return NULL. The type of the return value depends on which +entry you ask for. + +=for apidoc Amx|void|BhkENTRY_set|BHK *hk|which|void *ptr +Set an entry in the BHK structure, and set the flags to indicate it is +valid. I<which> is a preprocessing token indicating which entry to set. +The type of I<ptr> depends on the entry. + +=for apidoc Amx|void|BhkDISABLE|BHK *hk|which +Temporarily disable an entry in this BHK structure, by clearing the +appropriate flag. I<which> is a preprocessor token indicating which +entry to disable. + +=for apidoc Amx|void|BhkENABLE|BHK *hk|which +Re-enable an entry in this BHK structure, by setting the appropriate +flag. I<which> is a preprocessor token indicating which entry to enable. +This will assert (under -DDEBUGGING) if the entry doesn't contain a valid +pointer. + +=for apidoc mx|void|CALL_BLOCK_HOOKS|which|arg +Call all the registered block hooks for type I<which>. I<which> is a +preprocessing token; the type of I<arg> depends on I<which>. + +=cut +*/ + +#define BhkFLAGS(hk) ((hk)->bhk_flags) + +#define BHKf_bhk_start 0x01 +#define BHKf_bhk_pre_end 0x02 +#define BHKf_bhk_post_end 0x04 +#define BHKf_bhk_eval 0x08 + +#define BhkENTRY(hk, which) \ + ((BhkFLAGS(hk) & BHKf_ ## which) ? ((hk)->which) : NULL) + +#define BhkENABLE(hk, which) \ + STMT_START { \ + BhkFLAGS(hk) |= BHKf_ ## which; \ + assert(BhkENTRY(hk, which)); \ + } STMT_END + +#define BhkDISABLE(hk, which) \ + STMT_START { \ + BhkFLAGS(hk) &= ~(BHKf_ ## which); \ + } STMT_END + +#define BhkENTRY_set(hk, which, ptr) \ + STMT_START { \ + (hk)->which = ptr; \ + BhkENABLE(hk, which); \ + } STMT_END + +#define CALL_BLOCK_HOOKS(which, arg) \ + STMT_START { \ + if (PL_blockhooks) { \ + I32 i; \ + for (i = av_len(PL_blockhooks); i >= 0; i--) { \ + SV *sv = AvARRAY(PL_blockhooks)[i]; \ + BHK *hk; \ + \ + assert(SvIOK(sv)); \ + if (SvUOK(sv)) \ + hk = INT2PTR(BHK *, SvUVX(sv)); \ + else \ + hk = INT2PTR(BHK *, SvIVX(sv)); \ + \ + if (BhkENTRY(hk, which)) \ + BhkENTRY(hk, which)(aTHX_ arg); \ + } \ + } \ + } STMT_END + +/* flags for rv2cv_op_cv */ + +#define RV2CVOPCV_MARK_EARLY 0x00000001 +#define RV2CVOPCV_RETURN_NAME_GV 0x00000002 + +/* +=head1 Custom Operators + +=for apidoc Am|U32|XopFLAGS|XOP *xop +Return the XOP's flags. + +=for apidoc Am||XopENTRY|XOP *xop|which +Return a member of the XOP structure. I<which> is a cpp token indicating +which entry to return. If the member is not set this will return a +default value. The return type depends on I<which>. + +=for apidoc Am|void|XopENTRY_set|XOP *xop|which|value +Set a member of the XOP structure. I<which> is a cpp token indicating +which entry to set. See L<perlguts/"Custom Operators"> for details about +the available members and how they are used. + +=for apidoc Am|void|XopDISABLE|XOP *xop|which +Temporarily disable a member of the XOP, by clearing the appropriate flag. + +=for apidoc Am|void|XopENABLE|XOP *xop|which +Reenable a member of the XOP which has been disabled. + +=cut +*/ + +struct custom_op { + U32 xop_flags; + const char *xop_name; + const char *xop_desc; + U32 xop_class; + void (*xop_peep)(pTHX_ OP *o, OP *oldop); +}; + +#define XopFLAGS(xop) ((xop)->xop_flags) + +#define XOPf_xop_name 0x01 +#define XOPf_xop_desc 0x02 +#define XOPf_xop_class 0x04 +#define XOPf_xop_peep 0x08 + +#define XOPd_xop_name PL_op_name[OP_CUSTOM] +#define XOPd_xop_desc PL_op_desc[OP_CUSTOM] +#define XOPd_xop_class OA_BASEOP +#define XOPd_xop_peep ((Perl_cpeep_t)0) + +#define XopENTRY_set(xop, which, to) \ + STMT_START { \ + (xop)->which = (to); \ + (xop)->xop_flags |= XOPf_ ## which; \ + } STMT_END + +#define XopENTRY(xop, which) \ + ((XopFLAGS(xop) & XOPf_ ## which) ? (xop)->which : XOPd_ ## which) + +#define XopDISABLE(xop, which) ((xop)->xop_flags &= ~XOPf_ ## which) +#define XopENABLE(xop, which) \ + STMT_START { \ + (xop)->xop_flags |= XOPf_ ## which; \ + assert(XopENTRY(xop, which)); \ + } STMT_END + +/* +=head1 Optree Manipulation Functions + +=for apidoc Am|const char *|OP_NAME|OP *o +Return the name of the provided OP. For core ops this looks up the name +from the op_type; for custom ops from the op_ppaddr. + +=for apidoc Am|const char *|OP_DESC|OP *o +Return a short description of the provided OP. + +=for apidoc Am|U32|OP_CLASS|OP *o +Return the class of the provided OP: that is, which of the *OP +structures it uses. For core ops this currently gets the information out +of PL_opargs, which does not always accurately reflect the type used. +For custom ops the type is returned from the registration, and it is up +to the registree to ensure it is accurate. The value returned will be +one of the OA_* constants from op.h. + +=cut +*/ + +#define OP_NAME(o) ((o)->op_type == OP_CUSTOM \ + ? XopENTRY(Perl_custom_op_xop(aTHX_ o), xop_name) \ + : PL_op_name[(o)->op_type]) +#define OP_DESC(o) ((o)->op_type == OP_CUSTOM \ + ? XopENTRY(Perl_custom_op_xop(aTHX_ o), xop_desc) \ + : PL_op_desc[(o)->op_type]) +#define OP_CLASS(o) ((o)->op_type == OP_CUSTOM \ + ? XopENTRY(Perl_custom_op_xop(aTHX_ o), xop_class) \ + : (PL_opargs[(o)->op_type] & OA_CLASS_MASK)) + +#define newSUB(f, o, p, b) Perl_newATTRSUB(aTHX_ (f), (o), (p), NULL, (b)) + #ifdef PERL_MAD # define MAD_NULL 1 # define MAD_PV 2 diff --git a/Master/tlpkg/tlperl/lib/CORE/op_reg_common.h b/Master/tlpkg/tlperl/lib/CORE/op_reg_common.h new file mode 100644 index 00000000000..4c3fe2c42c2 --- /dev/null +++ b/Master/tlpkg/tlperl/lib/CORE/op_reg_common.h @@ -0,0 +1,110 @@ +/* op_reg_common.h + * + * Definitions common to by op.h and regexp.h + * + * Copyright (C) 2010 by Larry Wall and others + * + * You may distribute under the terms of either the GNU General Public + * License or the Artistic License, as specified in the README file. + * + */ + +/* These defines are used in both op.h and regexp.h The definitions use the + * shift form so that ext/B/defsubs_h.PL will pick them up. + * + * Data structures used in the two headers have common fields, and in fact one + * is copied onto the other. This makes it easy to keep them in sync */ + +/* This tells where the first of these bits is. Setting it to 0 saved cycles + * and memory. I (khw) think the code will work if changed back, but haven't + * tested it */ +/* Make sure to update ext/re/re.pm when changing this! */ +#ifndef RXf_PMf_STD_PMMOD_SHIFT /* Only expand #include of this file once */ + +#define RXf_PMf_STD_PMMOD_SHIFT 0 + +/* The bits need to be ordered so that the msix are contiguous starting at bit + * RXf_PMf_STD_PMMOD_SHIFT, followed by the p. See STD_PAT_MODS and + * INT_PAT_MODS in regexp.h for the reason contiguity is needed */ +/* Make sure to update lib/re.pm when changing these! */ +#define RXf_PMf_MULTILINE (1 << (RXf_PMf_STD_PMMOD_SHIFT+0)) /* /m */ +#define RXf_PMf_SINGLELINE (1 << (RXf_PMf_STD_PMMOD_SHIFT+1)) /* /s */ +#define RXf_PMf_FOLD (1 << (RXf_PMf_STD_PMMOD_SHIFT+2)) /* /i */ +#define RXf_PMf_EXTENDED (1 << (RXf_PMf_STD_PMMOD_SHIFT+3)) /* /x */ +#define RXf_PMf_KEEPCOPY (1 << (RXf_PMf_STD_PMMOD_SHIFT+4)) /* /p */ + +/* The character set for the regex is stored in a field of more than one bit + * using an enum, for reasons of compactness and to ensure that the options are + * mutually exclusive */ +/* Make sure to update ext/re/re.pm when changing this! */ +typedef enum { + REGEX_DEPENDS_CHARSET = 0, + REGEX_LOCALE_CHARSET, + REGEX_UNICODE_CHARSET, + REGEX_ASCII_RESTRICTED_CHARSET, + REGEX_ASCII_MORE_RESTRICTED_CHARSET +} regex_charset; + +#define _RXf_PMf_CHARSET_SHIFT ((RXf_PMf_STD_PMMOD_SHIFT)+5) +#define RXf_PMf_CHARSET (7 << (_RXf_PMf_CHARSET_SHIFT)) /* 3 bits */ + +/* embed.pl doesn't yet know how to handle static inline functions, so + manually decorate them here with gcc-style attributes. +*/ +PERL_STATIC_INLINE void +set_regex_charset(U32 * const flags, const regex_charset cs) + __attribute__nonnull__(1); + +PERL_STATIC_INLINE void +set_regex_charset(U32 * const flags, const regex_charset cs) +{ + /* Sets the character set portion of 'flags' to 'cs', which is a member of + * the above enum */ + + *flags &= ~RXf_PMf_CHARSET; + *flags |= (cs << _RXf_PMf_CHARSET_SHIFT); +} + +PERL_STATIC_INLINE regex_charset +get_regex_charset(const U32 flags) + __attribute__warn_unused_result__; + +PERL_STATIC_INLINE regex_charset +get_regex_charset(const U32 flags) +{ + /* Returns the enum corresponding to the character set in 'flags' */ + + return (regex_charset) ((flags & RXf_PMf_CHARSET) >> _RXf_PMf_CHARSET_SHIFT); +} + +/* Next available bit after the above. Name begins with '_' so won't be + * exported by B */ +#define _RXf_PMf_SHIFT_NEXT (RXf_PMf_STD_PMMOD_SHIFT+8) + +/* Mask of the above bits. These need to be transferred from op_pmflags to + * re->extflags during compilation */ +#define RXf_PMf_COMPILETIME (RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_CHARSET|RXf_PMf_FOLD|RXf_PMf_EXTENDED|RXf_PMf_KEEPCOPY) + +/* These copies need to be numerical or defsubs_h.PL won't know about them. */ +#define PMf_MULTILINE 1<<0 +#define PMf_SINGLELINE 1<<1 +#define PMf_FOLD 1<<2 +#define PMf_EXTENDED 1<<3 +#define PMf_KEEPCOPY 1<<4 + +#if PMf_MULTILINE != RXf_PMf_MULTILINE || PMf_SINGLELINE != RXf_PMf_SINGLELINE || PMf_FOLD != RXf_PMf_FOLD || PMf_EXTENDED != RXf_PMf_EXTENDED || PMf_KEEPCOPY != RXf_PMf_KEEPCOPY +# error RXf_PMf defines are wrong +#endif + +#define PMf_COMPILETIME RXf_PMf_COMPILETIME + +/* Error check that haven't left something out of this. This isn't done + * directly in the #define because doing so confuses regcomp.pl. + * (2**n - 1) is n 1 bits, so the below gets the contiguous bits between the + * beginning and ending shifts */ +#if RXf_PMf_COMPILETIME != (((1 << (_RXf_PMf_SHIFT_NEXT))-1) \ + & (~((1 << RXf_PMf_STD_PMMOD_SHIFT)-1))) +# error RXf_PMf_COMPILETIME is invalid +#endif + +#endif /* Include only once */ diff --git a/Master/tlpkg/tlperl/lib/CORE/opcode.h b/Master/tlpkg/tlperl/lib/CORE/opcode.h index 0849839c7a5..4f0e1c658a4 100644 --- a/Master/tlpkg/tlperl/lib/CORE/opcode.h +++ b/Master/tlpkg/tlperl/lib/CORE/opcode.h @@ -2,33 +2,145 @@ * * opcode.h * - * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - * 2001, 2002, 2003, 2004, 2005, 2006, 2007 by Larry Wall and others + * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, + * 2002, 2003, 2004, 2005, 2006, 2007 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - * This file is built by opcode.pl from its data. Any changes made here - * will be lost! + * This file is built by regen/opcode.pl from its data. + * Any changes made here will be lost! */ #ifndef PERL_GLOBAL_STRUCT_INIT +#define Perl_pp_scalar Perl_pp_null +#define Perl_pp_padany Perl_unimplemented_op +#define Perl_pp_regcmaybe Perl_pp_null +#define Perl_pp_chomp Perl_pp_chop +#define Perl_pp_schomp Perl_pp_schop #define Perl_pp_i_preinc Perl_pp_preinc #define Perl_pp_i_predec Perl_pp_predec #define Perl_pp_i_postinc Perl_pp_postinc #define Perl_pp_i_postdec Perl_pp_postdec - -PERL_PPDEF(Perl_unimplemented_op) - +#define Perl_pp_slt Perl_pp_sle +#define Perl_pp_sgt Perl_pp_sle +#define Perl_pp_sge Perl_pp_sle +#define Perl_pp_bit_xor Perl_pp_bit_or +#define Perl_pp_cos Perl_pp_sin +#define Perl_pp_exp Perl_pp_sin +#define Perl_pp_log Perl_pp_sin +#define Perl_pp_sqrt Perl_pp_sin +#define Perl_pp_hex Perl_pp_oct +#define Perl_pp_rindex Perl_pp_index +#define Perl_pp_lcfirst Perl_pp_ucfirst +#define Perl_pp_avalues Perl_pp_akeys +#define Perl_pp_values Perl_do_kv +#define Perl_pp_keys Perl_do_kv +#define Perl_pp_rv2hv Perl_pp_rv2av +#define Perl_pp_pop Perl_pp_shift +#define Perl_pp_mapstart Perl_unimplemented_op +#define Perl_pp_dor Perl_pp_defined +#define Perl_pp_andassign Perl_pp_and +#define Perl_pp_orassign Perl_pp_or +#define Perl_pp_dorassign Perl_pp_defined +#define Perl_pp_lineseq Perl_pp_null +#define Perl_pp_scope Perl_pp_null +#define Perl_pp_dump Perl_pp_goto +#define Perl_pp_dbmclose Perl_pp_untie +#define Perl_pp_read Perl_pp_sysread +#define Perl_pp_say Perl_pp_print +#define Perl_pp_seek Perl_pp_sysseek +#define Perl_pp_fcntl Perl_pp_ioctl +#ifdef HAS_SOCKET +#define Perl_pp_send Perl_pp_syswrite +#define Perl_pp_recv Perl_pp_sysread +#else +#define Perl_pp_send Perl_unimplemented_op +#define Perl_pp_recv Perl_unimplemented_op +#define Perl_pp_socket Perl_unimplemented_op +#endif +#ifdef HAS_SOCKET +#define Perl_pp_connect Perl_pp_bind +#define Perl_pp_gsockopt Perl_pp_ssockopt +#define Perl_pp_getsockname Perl_pp_getpeername +#else +#define Perl_pp_bind Perl_unimplemented_op +#define Perl_pp_connect Perl_unimplemented_op +#define Perl_pp_listen Perl_unimplemented_op +#define Perl_pp_accept Perl_unimplemented_op +#define Perl_pp_shutdown Perl_unimplemented_op +#define Perl_pp_gsockopt Perl_unimplemented_op +#define Perl_pp_ssockopt Perl_unimplemented_op +#define Perl_pp_getsockname Perl_unimplemented_op +#define Perl_pp_getpeername Perl_unimplemented_op +#endif +#define Perl_pp_lstat Perl_pp_stat +#define Perl_pp_ftrwrite Perl_pp_ftrread +#define Perl_pp_ftrexec Perl_pp_ftrread +#define Perl_pp_fteread Perl_pp_ftrread +#define Perl_pp_ftewrite Perl_pp_ftrread +#define Perl_pp_fteexec Perl_pp_ftrread +#define Perl_pp_ftsize Perl_pp_ftis +#define Perl_pp_ftmtime Perl_pp_ftis +#define Perl_pp_ftatime Perl_pp_ftis +#define Perl_pp_ftctime Perl_pp_ftis +#define Perl_pp_fteowned Perl_pp_ftrowned +#define Perl_pp_ftzero Perl_pp_ftrowned +#define Perl_pp_ftsock Perl_pp_ftrowned +#define Perl_pp_ftchr Perl_pp_ftrowned +#define Perl_pp_ftblk Perl_pp_ftrowned +#define Perl_pp_ftfile Perl_pp_ftrowned +#define Perl_pp_ftdir Perl_pp_ftrowned +#define Perl_pp_ftpipe Perl_pp_ftrowned +#define Perl_pp_ftsuid Perl_pp_ftrowned +#define Perl_pp_ftsgid Perl_pp_ftrowned +#define Perl_pp_ftsvtx Perl_pp_ftrowned +#define Perl_pp_ftbinary Perl_pp_fttext +#define Perl_pp_unlink Perl_pp_chown +#define Perl_pp_chmod Perl_pp_chown +#define Perl_pp_utime Perl_pp_chown +#define Perl_pp_symlink Perl_pp_link +#define Perl_pp_kill Perl_pp_chown +#define Perl_pp_localtime Perl_pp_gmtime +#define Perl_pp_shmget Perl_pp_semget +#define Perl_pp_shmctl Perl_pp_semctl +#define Perl_pp_shmread Perl_pp_shmwrite +#define Perl_pp_msgget Perl_pp_semget +#define Perl_pp_msgctl Perl_pp_semctl +#define Perl_pp_msgsnd Perl_pp_shmwrite +#define Perl_pp_msgrcv Perl_pp_shmwrite +#define Perl_pp_semop Perl_pp_shmwrite +#define Perl_pp_dofile Perl_pp_require +#define Perl_pp_ghbyname Perl_pp_ghostent +#define Perl_pp_ghbyaddr Perl_pp_ghostent +#define Perl_pp_gnbyname Perl_pp_gnetent +#define Perl_pp_gnbyaddr Perl_pp_gnetent +#define Perl_pp_gpbyname Perl_pp_gprotoent +#define Perl_pp_gpbynumber Perl_pp_gprotoent +#define Perl_pp_gsbyname Perl_pp_gservent +#define Perl_pp_gsbyport Perl_pp_gservent +#define Perl_pp_snetent Perl_pp_shostent +#define Perl_pp_sprotoent Perl_pp_shostent +#define Perl_pp_sservent Perl_pp_shostent +#define Perl_pp_enetent Perl_pp_ehostent +#define Perl_pp_eprotoent Perl_pp_ehostent +#define Perl_pp_eservent Perl_pp_ehostent +#define Perl_pp_gpwnam Perl_pp_gpwent +#define Perl_pp_gpwuid Perl_pp_gpwent +#define Perl_pp_spwent Perl_pp_ehostent +#define Perl_pp_epwent Perl_pp_ehostent +#define Perl_pp_ggrnam Perl_pp_ggrent +#define Perl_pp_ggrgid Perl_pp_ggrent +#define Perl_pp_sgrent Perl_pp_ehostent +#define Perl_pp_egrent Perl_pp_ehostent +#define Perl_pp_custom Perl_unimplemented_op +#define Perl_pp_reach Perl_pp_rkeys +#define Perl_pp_rvalues Perl_pp_rkeys +#define Perl_pp_transr Perl_pp_trans START_EXTERN_C -#define OP_NAME(o) ((o)->op_type == OP_CUSTOM ? custom_op_name(o) : \ - PL_op_name[(o)->op_type]) -#define OP_DESC(o) ((o)->op_type == OP_CUSTOM ? custom_op_desc(o) : \ - PL_op_desc[(o)->op_type]) - #ifndef DOINIT EXTCONST char* const PL_op_name[]; #else @@ -399,6 +511,10 @@ EXTCONST char* const PL_op_name[] = { "lock", "once", "custom", + "reach", + "rkeys", + "rvalues", + "transr", }; #endif @@ -772,6 +888,10 @@ EXTCONST char* const PL_op_desc[] = { "lock", "once", "unknown custom operator", + "each on reference", + "keys on reference", + "values on reference", + "transliteration (tr///)", }; #endif @@ -793,372 +913,376 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ #if (defined(DOINIT) && !defined(PERL_GLOBAL_STRUCT)) || defined(PERL_GLOBAL_STRUCT_INIT) # define PERL_PPADDR_INITED = { - MEMBER_TO_FPTR(Perl_pp_null), - MEMBER_TO_FPTR(Perl_pp_stub), - MEMBER_TO_FPTR(Perl_pp_null), /* Perl_pp_scalar */ - MEMBER_TO_FPTR(Perl_pp_pushmark), - MEMBER_TO_FPTR(Perl_pp_wantarray), - MEMBER_TO_FPTR(Perl_pp_const), - MEMBER_TO_FPTR(Perl_pp_gvsv), - MEMBER_TO_FPTR(Perl_pp_gv), - MEMBER_TO_FPTR(Perl_pp_gelem), - MEMBER_TO_FPTR(Perl_pp_padsv), - MEMBER_TO_FPTR(Perl_pp_padav), - MEMBER_TO_FPTR(Perl_pp_padhv), - MEMBER_TO_FPTR(Perl_unimplemented_op), /* Perl_pp_padany */ - MEMBER_TO_FPTR(Perl_pp_pushre), - MEMBER_TO_FPTR(Perl_pp_rv2gv), - MEMBER_TO_FPTR(Perl_pp_rv2sv), - MEMBER_TO_FPTR(Perl_pp_av2arylen), - MEMBER_TO_FPTR(Perl_pp_rv2cv), - MEMBER_TO_FPTR(Perl_pp_anoncode), - MEMBER_TO_FPTR(Perl_pp_prototype), - MEMBER_TO_FPTR(Perl_pp_refgen), - MEMBER_TO_FPTR(Perl_pp_srefgen), - MEMBER_TO_FPTR(Perl_pp_ref), - MEMBER_TO_FPTR(Perl_pp_bless), - MEMBER_TO_FPTR(Perl_pp_backtick), - MEMBER_TO_FPTR(Perl_pp_glob), - MEMBER_TO_FPTR(Perl_pp_readline), - MEMBER_TO_FPTR(Perl_pp_rcatline), - MEMBER_TO_FPTR(Perl_pp_null), /* Perl_pp_regcmaybe */ - MEMBER_TO_FPTR(Perl_pp_regcreset), - MEMBER_TO_FPTR(Perl_pp_regcomp), - MEMBER_TO_FPTR(Perl_pp_match), - MEMBER_TO_FPTR(Perl_pp_qr), - MEMBER_TO_FPTR(Perl_pp_subst), - MEMBER_TO_FPTR(Perl_pp_substcont), - MEMBER_TO_FPTR(Perl_pp_trans), - MEMBER_TO_FPTR(Perl_pp_sassign), - MEMBER_TO_FPTR(Perl_pp_aassign), - MEMBER_TO_FPTR(Perl_pp_chop), - MEMBER_TO_FPTR(Perl_pp_schop), - MEMBER_TO_FPTR(Perl_pp_chomp), - MEMBER_TO_FPTR(Perl_pp_schomp), - MEMBER_TO_FPTR(Perl_pp_defined), - MEMBER_TO_FPTR(Perl_pp_undef), - MEMBER_TO_FPTR(Perl_pp_study), - MEMBER_TO_FPTR(Perl_pp_pos), - MEMBER_TO_FPTR(Perl_pp_preinc), - MEMBER_TO_FPTR(Perl_pp_i_preinc), - MEMBER_TO_FPTR(Perl_pp_predec), - MEMBER_TO_FPTR(Perl_pp_i_predec), - MEMBER_TO_FPTR(Perl_pp_postinc), - MEMBER_TO_FPTR(Perl_pp_i_postinc), - MEMBER_TO_FPTR(Perl_pp_postdec), - MEMBER_TO_FPTR(Perl_pp_i_postdec), - MEMBER_TO_FPTR(Perl_pp_pow), - MEMBER_TO_FPTR(Perl_pp_multiply), - MEMBER_TO_FPTR(Perl_pp_i_multiply), - MEMBER_TO_FPTR(Perl_pp_divide), - MEMBER_TO_FPTR(Perl_pp_i_divide), - MEMBER_TO_FPTR(Perl_pp_modulo), - MEMBER_TO_FPTR(Perl_pp_i_modulo), - MEMBER_TO_FPTR(Perl_pp_repeat), - MEMBER_TO_FPTR(Perl_pp_add), - MEMBER_TO_FPTR(Perl_pp_i_add), - MEMBER_TO_FPTR(Perl_pp_subtract), - MEMBER_TO_FPTR(Perl_pp_i_subtract), - MEMBER_TO_FPTR(Perl_pp_concat), - MEMBER_TO_FPTR(Perl_pp_stringify), - MEMBER_TO_FPTR(Perl_pp_left_shift), - MEMBER_TO_FPTR(Perl_pp_right_shift), - MEMBER_TO_FPTR(Perl_pp_lt), - MEMBER_TO_FPTR(Perl_pp_i_lt), - MEMBER_TO_FPTR(Perl_pp_gt), - MEMBER_TO_FPTR(Perl_pp_i_gt), - MEMBER_TO_FPTR(Perl_pp_le), - MEMBER_TO_FPTR(Perl_pp_i_le), - MEMBER_TO_FPTR(Perl_pp_ge), - MEMBER_TO_FPTR(Perl_pp_i_ge), - MEMBER_TO_FPTR(Perl_pp_eq), - MEMBER_TO_FPTR(Perl_pp_i_eq), - MEMBER_TO_FPTR(Perl_pp_ne), - MEMBER_TO_FPTR(Perl_pp_i_ne), - MEMBER_TO_FPTR(Perl_pp_ncmp), - MEMBER_TO_FPTR(Perl_pp_i_ncmp), - MEMBER_TO_FPTR(Perl_pp_sle), /* Perl_pp_slt */ - MEMBER_TO_FPTR(Perl_pp_sle), /* Perl_pp_sgt */ - MEMBER_TO_FPTR(Perl_pp_sle), - MEMBER_TO_FPTR(Perl_pp_sle), /* Perl_pp_sge */ - MEMBER_TO_FPTR(Perl_pp_seq), - MEMBER_TO_FPTR(Perl_pp_sne), - MEMBER_TO_FPTR(Perl_pp_scmp), - MEMBER_TO_FPTR(Perl_pp_bit_and), - MEMBER_TO_FPTR(Perl_pp_bit_or), /* Perl_pp_bit_xor */ - MEMBER_TO_FPTR(Perl_pp_bit_or), - MEMBER_TO_FPTR(Perl_pp_negate), - MEMBER_TO_FPTR(Perl_pp_i_negate), - MEMBER_TO_FPTR(Perl_pp_not), - MEMBER_TO_FPTR(Perl_pp_complement), - MEMBER_TO_FPTR(Perl_pp_smartmatch), - MEMBER_TO_FPTR(Perl_pp_atan2), - MEMBER_TO_FPTR(Perl_pp_sin), - MEMBER_TO_FPTR(Perl_pp_sin), /* Perl_pp_cos */ - MEMBER_TO_FPTR(Perl_pp_rand), - MEMBER_TO_FPTR(Perl_pp_srand), - MEMBER_TO_FPTR(Perl_pp_sin), /* Perl_pp_exp */ - MEMBER_TO_FPTR(Perl_pp_sin), /* Perl_pp_log */ - MEMBER_TO_FPTR(Perl_pp_sin), /* Perl_pp_sqrt */ - MEMBER_TO_FPTR(Perl_pp_int), - MEMBER_TO_FPTR(Perl_pp_oct), /* Perl_pp_hex */ - MEMBER_TO_FPTR(Perl_pp_oct), - MEMBER_TO_FPTR(Perl_pp_abs), - MEMBER_TO_FPTR(Perl_pp_length), - MEMBER_TO_FPTR(Perl_pp_substr), - MEMBER_TO_FPTR(Perl_pp_vec), - MEMBER_TO_FPTR(Perl_pp_index), - MEMBER_TO_FPTR(Perl_pp_index), /* Perl_pp_rindex */ - MEMBER_TO_FPTR(Perl_pp_sprintf), - MEMBER_TO_FPTR(Perl_pp_formline), - MEMBER_TO_FPTR(Perl_pp_ord), - MEMBER_TO_FPTR(Perl_pp_chr), - MEMBER_TO_FPTR(Perl_pp_crypt), - MEMBER_TO_FPTR(Perl_pp_ucfirst), - MEMBER_TO_FPTR(Perl_pp_ucfirst), /* Perl_pp_lcfirst */ - MEMBER_TO_FPTR(Perl_pp_uc), - MEMBER_TO_FPTR(Perl_pp_lc), - MEMBER_TO_FPTR(Perl_pp_quotemeta), - MEMBER_TO_FPTR(Perl_pp_rv2av), - MEMBER_TO_FPTR(Perl_pp_aelemfast), - MEMBER_TO_FPTR(Perl_pp_aelem), - MEMBER_TO_FPTR(Perl_pp_aslice), - MEMBER_TO_FPTR(Perl_pp_aeach), - MEMBER_TO_FPTR(Perl_pp_akeys), - MEMBER_TO_FPTR(Perl_pp_akeys), /* Perl_pp_avalues */ - MEMBER_TO_FPTR(Perl_pp_each), - MEMBER_TO_FPTR(Perl_do_kv), /* Perl_pp_values */ - MEMBER_TO_FPTR(Perl_do_kv), /* Perl_pp_keys */ - MEMBER_TO_FPTR(Perl_pp_delete), - MEMBER_TO_FPTR(Perl_pp_exists), - MEMBER_TO_FPTR(Perl_pp_rv2av), /* Perl_pp_rv2hv */ - MEMBER_TO_FPTR(Perl_pp_helem), - MEMBER_TO_FPTR(Perl_pp_hslice), - MEMBER_TO_FPTR(Perl_pp_boolkeys), - MEMBER_TO_FPTR(Perl_pp_unpack), - MEMBER_TO_FPTR(Perl_pp_pack), - MEMBER_TO_FPTR(Perl_pp_split), - MEMBER_TO_FPTR(Perl_pp_join), - MEMBER_TO_FPTR(Perl_pp_list), - MEMBER_TO_FPTR(Perl_pp_lslice), - MEMBER_TO_FPTR(Perl_pp_anonlist), - MEMBER_TO_FPTR(Perl_pp_anonhash), - MEMBER_TO_FPTR(Perl_pp_splice), - MEMBER_TO_FPTR(Perl_pp_push), - MEMBER_TO_FPTR(Perl_pp_shift), /* Perl_pp_pop */ - MEMBER_TO_FPTR(Perl_pp_shift), - MEMBER_TO_FPTR(Perl_pp_unshift), - MEMBER_TO_FPTR(Perl_pp_sort), - MEMBER_TO_FPTR(Perl_pp_reverse), - MEMBER_TO_FPTR(Perl_pp_grepstart), - MEMBER_TO_FPTR(Perl_pp_grepwhile), - MEMBER_TO_FPTR(Perl_unimplemented_op), /* Perl_pp_mapstart */ - MEMBER_TO_FPTR(Perl_pp_mapwhile), - MEMBER_TO_FPTR(Perl_pp_range), - MEMBER_TO_FPTR(Perl_pp_flip), - MEMBER_TO_FPTR(Perl_pp_flop), - MEMBER_TO_FPTR(Perl_pp_and), - MEMBER_TO_FPTR(Perl_pp_or), - MEMBER_TO_FPTR(Perl_pp_xor), - MEMBER_TO_FPTR(Perl_pp_defined), /* Perl_pp_dor */ - MEMBER_TO_FPTR(Perl_pp_cond_expr), - MEMBER_TO_FPTR(Perl_pp_and), /* Perl_pp_andassign */ - MEMBER_TO_FPTR(Perl_pp_or), /* Perl_pp_orassign */ - MEMBER_TO_FPTR(Perl_pp_defined), /* Perl_pp_dorassign */ - MEMBER_TO_FPTR(Perl_pp_method), - MEMBER_TO_FPTR(Perl_pp_entersub), - MEMBER_TO_FPTR(Perl_pp_leavesub), - MEMBER_TO_FPTR(Perl_pp_leavesublv), - MEMBER_TO_FPTR(Perl_pp_caller), - MEMBER_TO_FPTR(Perl_pp_warn), - MEMBER_TO_FPTR(Perl_pp_die), - MEMBER_TO_FPTR(Perl_pp_reset), - MEMBER_TO_FPTR(Perl_pp_null), /* Perl_pp_lineseq */ - MEMBER_TO_FPTR(Perl_pp_nextstate), - MEMBER_TO_FPTR(Perl_pp_dbstate), - MEMBER_TO_FPTR(Perl_pp_unstack), - MEMBER_TO_FPTR(Perl_pp_enter), - MEMBER_TO_FPTR(Perl_pp_leave), - MEMBER_TO_FPTR(Perl_pp_null), /* Perl_pp_scope */ - MEMBER_TO_FPTR(Perl_pp_enteriter), - MEMBER_TO_FPTR(Perl_pp_iter), - MEMBER_TO_FPTR(Perl_pp_enterloop), - MEMBER_TO_FPTR(Perl_pp_leaveloop), - MEMBER_TO_FPTR(Perl_pp_return), - MEMBER_TO_FPTR(Perl_pp_last), - MEMBER_TO_FPTR(Perl_pp_next), - MEMBER_TO_FPTR(Perl_pp_redo), - MEMBER_TO_FPTR(Perl_pp_goto), /* Perl_pp_dump */ - MEMBER_TO_FPTR(Perl_pp_goto), - MEMBER_TO_FPTR(Perl_pp_exit), - MEMBER_TO_FPTR(Perl_pp_method_named), - MEMBER_TO_FPTR(Perl_pp_entergiven), - MEMBER_TO_FPTR(Perl_pp_leavegiven), - MEMBER_TO_FPTR(Perl_pp_enterwhen), - MEMBER_TO_FPTR(Perl_pp_leavewhen), - MEMBER_TO_FPTR(Perl_pp_break), - MEMBER_TO_FPTR(Perl_pp_continue), - MEMBER_TO_FPTR(Perl_pp_open), - MEMBER_TO_FPTR(Perl_pp_close), - MEMBER_TO_FPTR(Perl_pp_pipe_op), - MEMBER_TO_FPTR(Perl_pp_fileno), - MEMBER_TO_FPTR(Perl_pp_umask), - MEMBER_TO_FPTR(Perl_pp_binmode), - MEMBER_TO_FPTR(Perl_pp_tie), - MEMBER_TO_FPTR(Perl_pp_untie), - MEMBER_TO_FPTR(Perl_pp_tied), - MEMBER_TO_FPTR(Perl_pp_dbmopen), - MEMBER_TO_FPTR(Perl_pp_untie), /* Perl_pp_dbmclose */ - MEMBER_TO_FPTR(Perl_pp_sselect), - MEMBER_TO_FPTR(Perl_pp_select), - MEMBER_TO_FPTR(Perl_pp_getc), - MEMBER_TO_FPTR(Perl_pp_sysread), /* Perl_pp_read */ - MEMBER_TO_FPTR(Perl_pp_enterwrite), - MEMBER_TO_FPTR(Perl_pp_leavewrite), - MEMBER_TO_FPTR(Perl_pp_prtf), - MEMBER_TO_FPTR(Perl_pp_print), - MEMBER_TO_FPTR(Perl_pp_print), /* Perl_pp_say */ - MEMBER_TO_FPTR(Perl_pp_sysopen), - MEMBER_TO_FPTR(Perl_pp_sysseek), - MEMBER_TO_FPTR(Perl_pp_sysread), - MEMBER_TO_FPTR(Perl_pp_send), /* Perl_pp_syswrite */ - MEMBER_TO_FPTR(Perl_pp_eof), - MEMBER_TO_FPTR(Perl_pp_tell), - MEMBER_TO_FPTR(Perl_pp_sysseek), /* Perl_pp_seek */ - MEMBER_TO_FPTR(Perl_pp_truncate), - MEMBER_TO_FPTR(Perl_pp_ioctl), /* Perl_pp_fcntl */ - MEMBER_TO_FPTR(Perl_pp_ioctl), - MEMBER_TO_FPTR(Perl_pp_flock), - MEMBER_TO_FPTR(Perl_pp_send), - MEMBER_TO_FPTR(Perl_pp_sysread), /* Perl_pp_recv */ - MEMBER_TO_FPTR(Perl_pp_socket), - MEMBER_TO_FPTR(Perl_pp_sockpair), - MEMBER_TO_FPTR(Perl_pp_bind), - MEMBER_TO_FPTR(Perl_pp_connect), - MEMBER_TO_FPTR(Perl_pp_listen), - MEMBER_TO_FPTR(Perl_pp_accept), - MEMBER_TO_FPTR(Perl_pp_shutdown), - MEMBER_TO_FPTR(Perl_pp_ssockopt), /* Perl_pp_gsockopt */ - MEMBER_TO_FPTR(Perl_pp_ssockopt), - MEMBER_TO_FPTR(Perl_pp_getpeername), /* Perl_pp_getsockname */ - MEMBER_TO_FPTR(Perl_pp_getpeername), - MEMBER_TO_FPTR(Perl_pp_stat), /* Perl_pp_lstat */ - MEMBER_TO_FPTR(Perl_pp_stat), - MEMBER_TO_FPTR(Perl_pp_ftrread), - MEMBER_TO_FPTR(Perl_pp_ftrread), /* Perl_pp_ftrwrite */ - MEMBER_TO_FPTR(Perl_pp_ftrread), /* Perl_pp_ftrexec */ - MEMBER_TO_FPTR(Perl_pp_ftrread), /* Perl_pp_fteread */ - MEMBER_TO_FPTR(Perl_pp_ftrread), /* Perl_pp_ftewrite */ - MEMBER_TO_FPTR(Perl_pp_ftrread), /* Perl_pp_fteexec */ - MEMBER_TO_FPTR(Perl_pp_ftis), - MEMBER_TO_FPTR(Perl_pp_ftis), /* Perl_pp_ftsize */ - MEMBER_TO_FPTR(Perl_pp_ftis), /* Perl_pp_ftmtime */ - MEMBER_TO_FPTR(Perl_pp_ftis), /* Perl_pp_ftatime */ - MEMBER_TO_FPTR(Perl_pp_ftis), /* Perl_pp_ftctime */ - MEMBER_TO_FPTR(Perl_pp_ftrowned), - MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_fteowned */ - MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftzero */ - MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftsock */ - MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftchr */ - MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftblk */ - MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftfile */ - MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftdir */ - MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftpipe */ - MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftsuid */ - MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftsgid */ - MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftsvtx */ - MEMBER_TO_FPTR(Perl_pp_ftlink), - MEMBER_TO_FPTR(Perl_pp_fttty), - MEMBER_TO_FPTR(Perl_pp_fttext), - MEMBER_TO_FPTR(Perl_pp_fttext), /* Perl_pp_ftbinary */ - MEMBER_TO_FPTR(Perl_pp_chdir), - MEMBER_TO_FPTR(Perl_pp_chown), - MEMBER_TO_FPTR(Perl_pp_chroot), - MEMBER_TO_FPTR(Perl_pp_chown), /* Perl_pp_unlink */ - MEMBER_TO_FPTR(Perl_pp_chown), /* Perl_pp_chmod */ - MEMBER_TO_FPTR(Perl_pp_chown), /* Perl_pp_utime */ - MEMBER_TO_FPTR(Perl_pp_rename), - MEMBER_TO_FPTR(Perl_pp_link), - MEMBER_TO_FPTR(Perl_pp_link), /* Perl_pp_symlink */ - MEMBER_TO_FPTR(Perl_pp_readlink), - MEMBER_TO_FPTR(Perl_pp_mkdir), - MEMBER_TO_FPTR(Perl_pp_rmdir), - MEMBER_TO_FPTR(Perl_pp_open_dir), - MEMBER_TO_FPTR(Perl_pp_readdir), - MEMBER_TO_FPTR(Perl_pp_telldir), - MEMBER_TO_FPTR(Perl_pp_seekdir), - MEMBER_TO_FPTR(Perl_pp_rewinddir), - MEMBER_TO_FPTR(Perl_pp_closedir), - MEMBER_TO_FPTR(Perl_pp_fork), - MEMBER_TO_FPTR(Perl_pp_wait), - MEMBER_TO_FPTR(Perl_pp_waitpid), - MEMBER_TO_FPTR(Perl_pp_system), - MEMBER_TO_FPTR(Perl_pp_exec), - MEMBER_TO_FPTR(Perl_pp_chown), /* Perl_pp_kill */ - MEMBER_TO_FPTR(Perl_pp_getppid), - MEMBER_TO_FPTR(Perl_pp_getpgrp), - MEMBER_TO_FPTR(Perl_pp_setpgrp), - MEMBER_TO_FPTR(Perl_pp_getpriority), - MEMBER_TO_FPTR(Perl_pp_setpriority), - MEMBER_TO_FPTR(Perl_pp_time), - MEMBER_TO_FPTR(Perl_pp_tms), - MEMBER_TO_FPTR(Perl_pp_gmtime), /* Perl_pp_localtime */ - MEMBER_TO_FPTR(Perl_pp_gmtime), - MEMBER_TO_FPTR(Perl_pp_alarm), - MEMBER_TO_FPTR(Perl_pp_sleep), - MEMBER_TO_FPTR(Perl_pp_semget), /* Perl_pp_shmget */ - MEMBER_TO_FPTR(Perl_pp_semctl), /* Perl_pp_shmctl */ - MEMBER_TO_FPTR(Perl_pp_shmwrite), /* Perl_pp_shmread */ - MEMBER_TO_FPTR(Perl_pp_shmwrite), - MEMBER_TO_FPTR(Perl_pp_semget), /* Perl_pp_msgget */ - MEMBER_TO_FPTR(Perl_pp_semctl), /* Perl_pp_msgctl */ - MEMBER_TO_FPTR(Perl_pp_shmwrite), /* Perl_pp_msgsnd */ - MEMBER_TO_FPTR(Perl_pp_shmwrite), /* Perl_pp_msgrcv */ - MEMBER_TO_FPTR(Perl_pp_shmwrite), /* Perl_pp_semop */ - MEMBER_TO_FPTR(Perl_pp_semget), - MEMBER_TO_FPTR(Perl_pp_semctl), - MEMBER_TO_FPTR(Perl_pp_require), - MEMBER_TO_FPTR(Perl_pp_require), /* Perl_pp_dofile */ - MEMBER_TO_FPTR(Perl_pp_hintseval), - MEMBER_TO_FPTR(Perl_pp_entereval), - MEMBER_TO_FPTR(Perl_pp_leaveeval), - MEMBER_TO_FPTR(Perl_pp_entertry), - MEMBER_TO_FPTR(Perl_pp_leavetry), - MEMBER_TO_FPTR(Perl_pp_ghostent), /* Perl_pp_ghbyname */ - MEMBER_TO_FPTR(Perl_pp_ghostent), /* Perl_pp_ghbyaddr */ - MEMBER_TO_FPTR(Perl_pp_ghostent), - MEMBER_TO_FPTR(Perl_pp_gnetent), /* Perl_pp_gnbyname */ - MEMBER_TO_FPTR(Perl_pp_gnetent), /* Perl_pp_gnbyaddr */ - MEMBER_TO_FPTR(Perl_pp_gnetent), - MEMBER_TO_FPTR(Perl_pp_gprotoent), /* Perl_pp_gpbyname */ - MEMBER_TO_FPTR(Perl_pp_gprotoent), /* Perl_pp_gpbynumber */ - MEMBER_TO_FPTR(Perl_pp_gprotoent), - MEMBER_TO_FPTR(Perl_pp_gservent), /* Perl_pp_gsbyname */ - MEMBER_TO_FPTR(Perl_pp_gservent), /* Perl_pp_gsbyport */ - MEMBER_TO_FPTR(Perl_pp_gservent), - MEMBER_TO_FPTR(Perl_pp_shostent), - MEMBER_TO_FPTR(Perl_pp_snetent), - MEMBER_TO_FPTR(Perl_pp_sprotoent), - MEMBER_TO_FPTR(Perl_pp_sservent), - MEMBER_TO_FPTR(Perl_pp_ehostent), - MEMBER_TO_FPTR(Perl_pp_enetent), - MEMBER_TO_FPTR(Perl_pp_eprotoent), - MEMBER_TO_FPTR(Perl_pp_eservent), - MEMBER_TO_FPTR(Perl_pp_gpwent), /* Perl_pp_gpwnam */ - MEMBER_TO_FPTR(Perl_pp_gpwent), /* Perl_pp_gpwuid */ - MEMBER_TO_FPTR(Perl_pp_gpwent), - MEMBER_TO_FPTR(Perl_pp_spwent), - MEMBER_TO_FPTR(Perl_pp_epwent), - MEMBER_TO_FPTR(Perl_pp_ggrent), /* Perl_pp_ggrnam */ - MEMBER_TO_FPTR(Perl_pp_ggrent), /* Perl_pp_ggrgid */ - MEMBER_TO_FPTR(Perl_pp_ggrent), - MEMBER_TO_FPTR(Perl_pp_sgrent), - MEMBER_TO_FPTR(Perl_pp_egrent), - MEMBER_TO_FPTR(Perl_pp_getlogin), - MEMBER_TO_FPTR(Perl_pp_syscall), - MEMBER_TO_FPTR(Perl_pp_lock), - MEMBER_TO_FPTR(Perl_pp_once), - MEMBER_TO_FPTR(Perl_unimplemented_op), /* Perl_pp_custom */ + Perl_pp_null, + Perl_pp_stub, + Perl_pp_scalar, /* implemented by Perl_pp_null */ + Perl_pp_pushmark, + Perl_pp_wantarray, + Perl_pp_const, + Perl_pp_gvsv, + Perl_pp_gv, + Perl_pp_gelem, + Perl_pp_padsv, + Perl_pp_padav, + Perl_pp_padhv, + Perl_pp_padany, /* implemented by Perl_unimplemented_op */ + Perl_pp_pushre, + Perl_pp_rv2gv, + Perl_pp_rv2sv, + Perl_pp_av2arylen, + Perl_pp_rv2cv, + Perl_pp_anoncode, + Perl_pp_prototype, + Perl_pp_refgen, + Perl_pp_srefgen, + Perl_pp_ref, + Perl_pp_bless, + Perl_pp_backtick, + Perl_pp_glob, + Perl_pp_readline, + Perl_pp_rcatline, + Perl_pp_regcmaybe, /* implemented by Perl_pp_null */ + Perl_pp_regcreset, + Perl_pp_regcomp, + Perl_pp_match, + Perl_pp_qr, + Perl_pp_subst, + Perl_pp_substcont, + Perl_pp_trans, + Perl_pp_sassign, + Perl_pp_aassign, + Perl_pp_chop, + Perl_pp_schop, + Perl_pp_chomp, /* implemented by Perl_pp_chop */ + Perl_pp_schomp, /* implemented by Perl_pp_schop */ + Perl_pp_defined, + Perl_pp_undef, + Perl_pp_study, + Perl_pp_pos, + Perl_pp_preinc, + Perl_pp_i_preinc, /* implemented by Perl_pp_preinc */ + Perl_pp_predec, + Perl_pp_i_predec, /* implemented by Perl_pp_predec */ + Perl_pp_postinc, + Perl_pp_i_postinc, /* implemented by Perl_pp_postinc */ + Perl_pp_postdec, + Perl_pp_i_postdec, /* implemented by Perl_pp_postdec */ + Perl_pp_pow, + Perl_pp_multiply, + Perl_pp_i_multiply, + Perl_pp_divide, + Perl_pp_i_divide, + Perl_pp_modulo, + Perl_pp_i_modulo, + Perl_pp_repeat, + Perl_pp_add, + Perl_pp_i_add, + Perl_pp_subtract, + Perl_pp_i_subtract, + Perl_pp_concat, + Perl_pp_stringify, + Perl_pp_left_shift, + Perl_pp_right_shift, + Perl_pp_lt, + Perl_pp_i_lt, + Perl_pp_gt, + Perl_pp_i_gt, + Perl_pp_le, + Perl_pp_i_le, + Perl_pp_ge, + Perl_pp_i_ge, + Perl_pp_eq, + Perl_pp_i_eq, + Perl_pp_ne, + Perl_pp_i_ne, + Perl_pp_ncmp, + Perl_pp_i_ncmp, + Perl_pp_slt, /* implemented by Perl_pp_sle */ + Perl_pp_sgt, /* implemented by Perl_pp_sle */ + Perl_pp_sle, + Perl_pp_sge, /* implemented by Perl_pp_sle */ + Perl_pp_seq, + Perl_pp_sne, + Perl_pp_scmp, + Perl_pp_bit_and, + Perl_pp_bit_xor, /* implemented by Perl_pp_bit_or */ + Perl_pp_bit_or, + Perl_pp_negate, + Perl_pp_i_negate, + Perl_pp_not, + Perl_pp_complement, + Perl_pp_smartmatch, + Perl_pp_atan2, + Perl_pp_sin, + Perl_pp_cos, /* implemented by Perl_pp_sin */ + Perl_pp_rand, + Perl_pp_srand, + Perl_pp_exp, /* implemented by Perl_pp_sin */ + Perl_pp_log, /* implemented by Perl_pp_sin */ + Perl_pp_sqrt, /* implemented by Perl_pp_sin */ + Perl_pp_int, + Perl_pp_hex, /* implemented by Perl_pp_oct */ + Perl_pp_oct, + Perl_pp_abs, + Perl_pp_length, + Perl_pp_substr, + Perl_pp_vec, + Perl_pp_index, + Perl_pp_rindex, /* implemented by Perl_pp_index */ + Perl_pp_sprintf, + Perl_pp_formline, + Perl_pp_ord, + Perl_pp_chr, + Perl_pp_crypt, + Perl_pp_ucfirst, + Perl_pp_lcfirst, /* implemented by Perl_pp_ucfirst */ + Perl_pp_uc, + Perl_pp_lc, + Perl_pp_quotemeta, + Perl_pp_rv2av, + Perl_pp_aelemfast, + Perl_pp_aelem, + Perl_pp_aslice, + Perl_pp_aeach, + Perl_pp_akeys, + Perl_pp_avalues, /* implemented by Perl_pp_akeys */ + Perl_pp_each, + Perl_pp_values, /* implemented by Perl_do_kv */ + Perl_pp_keys, /* implemented by Perl_do_kv */ + Perl_pp_delete, + Perl_pp_exists, + Perl_pp_rv2hv, /* implemented by Perl_pp_rv2av */ + Perl_pp_helem, + Perl_pp_hslice, + Perl_pp_boolkeys, + Perl_pp_unpack, + Perl_pp_pack, + Perl_pp_split, + Perl_pp_join, + Perl_pp_list, + Perl_pp_lslice, + Perl_pp_anonlist, + Perl_pp_anonhash, + Perl_pp_splice, + Perl_pp_push, + Perl_pp_pop, /* implemented by Perl_pp_shift */ + Perl_pp_shift, + Perl_pp_unshift, + Perl_pp_sort, + Perl_pp_reverse, + Perl_pp_grepstart, + Perl_pp_grepwhile, + Perl_pp_mapstart, /* implemented by Perl_unimplemented_op */ + Perl_pp_mapwhile, + Perl_pp_range, + Perl_pp_flip, + Perl_pp_flop, + Perl_pp_and, + Perl_pp_or, + Perl_pp_xor, + Perl_pp_dor, /* implemented by Perl_pp_defined */ + Perl_pp_cond_expr, + Perl_pp_andassign, /* implemented by Perl_pp_and */ + Perl_pp_orassign, /* implemented by Perl_pp_or */ + Perl_pp_dorassign, /* implemented by Perl_pp_defined */ + Perl_pp_method, + Perl_pp_entersub, + Perl_pp_leavesub, + Perl_pp_leavesublv, + Perl_pp_caller, + Perl_pp_warn, + Perl_pp_die, + Perl_pp_reset, + Perl_pp_lineseq, /* implemented by Perl_pp_null */ + Perl_pp_nextstate, + Perl_pp_dbstate, + Perl_pp_unstack, + Perl_pp_enter, + Perl_pp_leave, + Perl_pp_scope, /* implemented by Perl_pp_null */ + Perl_pp_enteriter, + Perl_pp_iter, + Perl_pp_enterloop, + Perl_pp_leaveloop, + Perl_pp_return, + Perl_pp_last, + Perl_pp_next, + Perl_pp_redo, + Perl_pp_dump, /* implemented by Perl_pp_goto */ + Perl_pp_goto, + Perl_pp_exit, + Perl_pp_method_named, + Perl_pp_entergiven, + Perl_pp_leavegiven, + Perl_pp_enterwhen, + Perl_pp_leavewhen, + Perl_pp_break, + Perl_pp_continue, + Perl_pp_open, + Perl_pp_close, + Perl_pp_pipe_op, + Perl_pp_fileno, + Perl_pp_umask, + Perl_pp_binmode, + Perl_pp_tie, + Perl_pp_untie, + Perl_pp_tied, + Perl_pp_dbmopen, + Perl_pp_dbmclose, /* implemented by Perl_pp_untie */ + Perl_pp_sselect, + Perl_pp_select, + Perl_pp_getc, + Perl_pp_read, /* implemented by Perl_pp_sysread */ + Perl_pp_enterwrite, + Perl_pp_leavewrite, + Perl_pp_prtf, + Perl_pp_print, + Perl_pp_say, /* implemented by Perl_pp_print */ + Perl_pp_sysopen, + Perl_pp_sysseek, + Perl_pp_sysread, + Perl_pp_syswrite, + Perl_pp_eof, + Perl_pp_tell, + Perl_pp_seek, /* implemented by Perl_pp_sysseek */ + Perl_pp_truncate, + Perl_pp_fcntl, /* implemented by Perl_pp_ioctl */ + Perl_pp_ioctl, + Perl_pp_flock, + Perl_pp_send, /* implemented by Perl_pp_syswrite */ + Perl_pp_recv, /* implemented by Perl_pp_sysread */ + Perl_pp_socket, + Perl_pp_sockpair, + Perl_pp_bind, + Perl_pp_connect, /* implemented by Perl_pp_bind */ + Perl_pp_listen, + Perl_pp_accept, + Perl_pp_shutdown, + Perl_pp_gsockopt, /* implemented by Perl_pp_ssockopt */ + Perl_pp_ssockopt, + Perl_pp_getsockname, /* implemented by Perl_pp_getpeername */ + Perl_pp_getpeername, + Perl_pp_lstat, /* implemented by Perl_pp_stat */ + Perl_pp_stat, + Perl_pp_ftrread, + Perl_pp_ftrwrite, /* implemented by Perl_pp_ftrread */ + Perl_pp_ftrexec, /* implemented by Perl_pp_ftrread */ + Perl_pp_fteread, /* implemented by Perl_pp_ftrread */ + Perl_pp_ftewrite, /* implemented by Perl_pp_ftrread */ + Perl_pp_fteexec, /* implemented by Perl_pp_ftrread */ + Perl_pp_ftis, + Perl_pp_ftsize, /* implemented by Perl_pp_ftis */ + Perl_pp_ftmtime, /* implemented by Perl_pp_ftis */ + Perl_pp_ftatime, /* implemented by Perl_pp_ftis */ + Perl_pp_ftctime, /* implemented by Perl_pp_ftis */ + Perl_pp_ftrowned, + Perl_pp_fteowned, /* implemented by Perl_pp_ftrowned */ + Perl_pp_ftzero, /* implemented by Perl_pp_ftrowned */ + Perl_pp_ftsock, /* implemented by Perl_pp_ftrowned */ + Perl_pp_ftchr, /* implemented by Perl_pp_ftrowned */ + Perl_pp_ftblk, /* implemented by Perl_pp_ftrowned */ + Perl_pp_ftfile, /* implemented by Perl_pp_ftrowned */ + Perl_pp_ftdir, /* implemented by Perl_pp_ftrowned */ + Perl_pp_ftpipe, /* implemented by Perl_pp_ftrowned */ + Perl_pp_ftsuid, /* implemented by Perl_pp_ftrowned */ + Perl_pp_ftsgid, /* implemented by Perl_pp_ftrowned */ + Perl_pp_ftsvtx, /* implemented by Perl_pp_ftrowned */ + Perl_pp_ftlink, + Perl_pp_fttty, + Perl_pp_fttext, + Perl_pp_ftbinary, /* implemented by Perl_pp_fttext */ + Perl_pp_chdir, + Perl_pp_chown, + Perl_pp_chroot, + Perl_pp_unlink, /* implemented by Perl_pp_chown */ + Perl_pp_chmod, /* implemented by Perl_pp_chown */ + Perl_pp_utime, /* implemented by Perl_pp_chown */ + Perl_pp_rename, + Perl_pp_link, + Perl_pp_symlink, /* implemented by Perl_pp_link */ + Perl_pp_readlink, + Perl_pp_mkdir, + Perl_pp_rmdir, + Perl_pp_open_dir, + Perl_pp_readdir, + Perl_pp_telldir, + Perl_pp_seekdir, + Perl_pp_rewinddir, + Perl_pp_closedir, + Perl_pp_fork, + Perl_pp_wait, + Perl_pp_waitpid, + Perl_pp_system, + Perl_pp_exec, + Perl_pp_kill, /* implemented by Perl_pp_chown */ + Perl_pp_getppid, + Perl_pp_getpgrp, + Perl_pp_setpgrp, + Perl_pp_getpriority, + Perl_pp_setpriority, + Perl_pp_time, + Perl_pp_tms, + Perl_pp_localtime, /* implemented by Perl_pp_gmtime */ + Perl_pp_gmtime, + Perl_pp_alarm, + Perl_pp_sleep, + Perl_pp_shmget, /* implemented by Perl_pp_semget */ + Perl_pp_shmctl, /* implemented by Perl_pp_semctl */ + Perl_pp_shmread, /* implemented by Perl_pp_shmwrite */ + Perl_pp_shmwrite, + Perl_pp_msgget, /* implemented by Perl_pp_semget */ + Perl_pp_msgctl, /* implemented by Perl_pp_semctl */ + Perl_pp_msgsnd, /* implemented by Perl_pp_shmwrite */ + Perl_pp_msgrcv, /* implemented by Perl_pp_shmwrite */ + Perl_pp_semop, /* implemented by Perl_pp_shmwrite */ + Perl_pp_semget, + Perl_pp_semctl, + Perl_pp_require, + Perl_pp_dofile, /* implemented by Perl_pp_require */ + Perl_pp_hintseval, + Perl_pp_entereval, + Perl_pp_leaveeval, + Perl_pp_entertry, + Perl_pp_leavetry, + Perl_pp_ghbyname, /* implemented by Perl_pp_ghostent */ + Perl_pp_ghbyaddr, /* implemented by Perl_pp_ghostent */ + Perl_pp_ghostent, + Perl_pp_gnbyname, /* implemented by Perl_pp_gnetent */ + Perl_pp_gnbyaddr, /* implemented by Perl_pp_gnetent */ + Perl_pp_gnetent, + Perl_pp_gpbyname, /* implemented by Perl_pp_gprotoent */ + Perl_pp_gpbynumber, /* implemented by Perl_pp_gprotoent */ + Perl_pp_gprotoent, + Perl_pp_gsbyname, /* implemented by Perl_pp_gservent */ + Perl_pp_gsbyport, /* implemented by Perl_pp_gservent */ + Perl_pp_gservent, + Perl_pp_shostent, + Perl_pp_snetent, /* implemented by Perl_pp_shostent */ + Perl_pp_sprotoent, /* implemented by Perl_pp_shostent */ + Perl_pp_sservent, /* implemented by Perl_pp_shostent */ + Perl_pp_ehostent, + Perl_pp_enetent, /* implemented by Perl_pp_ehostent */ + Perl_pp_eprotoent, /* implemented by Perl_pp_ehostent */ + Perl_pp_eservent, /* implemented by Perl_pp_ehostent */ + Perl_pp_gpwnam, /* implemented by Perl_pp_gpwent */ + Perl_pp_gpwuid, /* implemented by Perl_pp_gpwent */ + Perl_pp_gpwent, + Perl_pp_spwent, /* implemented by Perl_pp_ehostent */ + Perl_pp_epwent, /* implemented by Perl_pp_ehostent */ + Perl_pp_ggrnam, /* implemented by Perl_pp_ggrent */ + Perl_pp_ggrgid, /* implemented by Perl_pp_ggrent */ + Perl_pp_ggrent, + Perl_pp_sgrent, /* implemented by Perl_pp_ehostent */ + Perl_pp_egrent, /* implemented by Perl_pp_ehostent */ + Perl_pp_getlogin, + Perl_pp_syscall, + Perl_pp_lock, + Perl_pp_once, + Perl_pp_custom, /* implemented by Perl_unimplemented_op */ + Perl_pp_reach, /* implemented by Perl_pp_rkeys */ + Perl_pp_rkeys, + Perl_pp_rvalues, /* implemented by Perl_pp_rkeys */ + Perl_pp_transr, /* implemented by Perl_pp_trans */ } #endif #ifdef PERL_PPADDR_INITED @@ -1177,372 +1301,376 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ #if (defined(DOINIT) && !defined(PERL_GLOBAL_STRUCT)) || defined(PERL_GLOBAL_STRUCT_INIT) # define PERL_CHECK_INITED = { - MEMBER_TO_FPTR(Perl_ck_null), /* null */ - MEMBER_TO_FPTR(Perl_ck_null), /* stub */ - MEMBER_TO_FPTR(Perl_ck_fun), /* scalar */ - MEMBER_TO_FPTR(Perl_ck_null), /* pushmark */ - MEMBER_TO_FPTR(Perl_ck_null), /* wantarray */ - MEMBER_TO_FPTR(Perl_ck_svconst), /* const */ - MEMBER_TO_FPTR(Perl_ck_null), /* gvsv */ - MEMBER_TO_FPTR(Perl_ck_null), /* gv */ - MEMBER_TO_FPTR(Perl_ck_null), /* gelem */ - MEMBER_TO_FPTR(Perl_ck_null), /* padsv */ - MEMBER_TO_FPTR(Perl_ck_null), /* padav */ - MEMBER_TO_FPTR(Perl_ck_null), /* padhv */ - MEMBER_TO_FPTR(Perl_ck_null), /* padany */ - MEMBER_TO_FPTR(Perl_ck_null), /* pushre */ - MEMBER_TO_FPTR(Perl_ck_rvconst), /* rv2gv */ - MEMBER_TO_FPTR(Perl_ck_rvconst), /* rv2sv */ - MEMBER_TO_FPTR(Perl_ck_null), /* av2arylen */ - MEMBER_TO_FPTR(Perl_ck_rvconst), /* rv2cv */ - MEMBER_TO_FPTR(Perl_ck_anoncode), /* anoncode */ - MEMBER_TO_FPTR(Perl_ck_null), /* prototype */ - MEMBER_TO_FPTR(Perl_ck_spair), /* refgen */ - MEMBER_TO_FPTR(Perl_ck_null), /* srefgen */ - MEMBER_TO_FPTR(Perl_ck_fun), /* ref */ - MEMBER_TO_FPTR(Perl_ck_fun), /* bless */ - MEMBER_TO_FPTR(Perl_ck_open), /* backtick */ - MEMBER_TO_FPTR(Perl_ck_glob), /* glob */ - MEMBER_TO_FPTR(Perl_ck_readline), /* readline */ - MEMBER_TO_FPTR(Perl_ck_null), /* rcatline */ - MEMBER_TO_FPTR(Perl_ck_fun), /* regcmaybe */ - MEMBER_TO_FPTR(Perl_ck_fun), /* regcreset */ - MEMBER_TO_FPTR(Perl_ck_null), /* regcomp */ - MEMBER_TO_FPTR(Perl_ck_match), /* match */ - MEMBER_TO_FPTR(Perl_ck_match), /* qr */ - MEMBER_TO_FPTR(Perl_ck_match), /* subst */ - MEMBER_TO_FPTR(Perl_ck_null), /* substcont */ - MEMBER_TO_FPTR(Perl_ck_match), /* trans */ - MEMBER_TO_FPTR(Perl_ck_sassign), /* sassign */ - MEMBER_TO_FPTR(Perl_ck_null), /* aassign */ - MEMBER_TO_FPTR(Perl_ck_spair), /* chop */ - MEMBER_TO_FPTR(Perl_ck_null), /* schop */ - MEMBER_TO_FPTR(Perl_ck_spair), /* chomp */ - MEMBER_TO_FPTR(Perl_ck_null), /* schomp */ - MEMBER_TO_FPTR(Perl_ck_defined), /* defined */ - MEMBER_TO_FPTR(Perl_ck_lfun), /* undef */ - MEMBER_TO_FPTR(Perl_ck_fun), /* study */ - MEMBER_TO_FPTR(Perl_ck_lfun), /* pos */ - MEMBER_TO_FPTR(Perl_ck_lfun), /* preinc */ - MEMBER_TO_FPTR(Perl_ck_lfun), /* i_preinc */ - MEMBER_TO_FPTR(Perl_ck_lfun), /* predec */ - MEMBER_TO_FPTR(Perl_ck_lfun), /* i_predec */ - MEMBER_TO_FPTR(Perl_ck_lfun), /* postinc */ - MEMBER_TO_FPTR(Perl_ck_lfun), /* i_postinc */ - MEMBER_TO_FPTR(Perl_ck_lfun), /* postdec */ - MEMBER_TO_FPTR(Perl_ck_lfun), /* i_postdec */ - MEMBER_TO_FPTR(Perl_ck_null), /* pow */ - MEMBER_TO_FPTR(Perl_ck_null), /* multiply */ - MEMBER_TO_FPTR(Perl_ck_null), /* i_multiply */ - MEMBER_TO_FPTR(Perl_ck_null), /* divide */ - MEMBER_TO_FPTR(Perl_ck_null), /* i_divide */ - MEMBER_TO_FPTR(Perl_ck_null), /* modulo */ - MEMBER_TO_FPTR(Perl_ck_null), /* i_modulo */ - MEMBER_TO_FPTR(Perl_ck_repeat), /* repeat */ - MEMBER_TO_FPTR(Perl_ck_null), /* add */ - MEMBER_TO_FPTR(Perl_ck_null), /* i_add */ - MEMBER_TO_FPTR(Perl_ck_null), /* subtract */ - MEMBER_TO_FPTR(Perl_ck_null), /* i_subtract */ - MEMBER_TO_FPTR(Perl_ck_concat), /* concat */ - MEMBER_TO_FPTR(Perl_ck_fun), /* stringify */ - MEMBER_TO_FPTR(Perl_ck_bitop), /* left_shift */ - MEMBER_TO_FPTR(Perl_ck_bitop), /* right_shift */ - MEMBER_TO_FPTR(Perl_ck_null), /* lt */ - MEMBER_TO_FPTR(Perl_ck_null), /* i_lt */ - MEMBER_TO_FPTR(Perl_ck_null), /* gt */ - MEMBER_TO_FPTR(Perl_ck_null), /* i_gt */ - MEMBER_TO_FPTR(Perl_ck_null), /* le */ - MEMBER_TO_FPTR(Perl_ck_null), /* i_le */ - MEMBER_TO_FPTR(Perl_ck_null), /* ge */ - MEMBER_TO_FPTR(Perl_ck_null), /* i_ge */ - MEMBER_TO_FPTR(Perl_ck_null), /* eq */ - MEMBER_TO_FPTR(Perl_ck_null), /* i_eq */ - MEMBER_TO_FPTR(Perl_ck_null), /* ne */ - MEMBER_TO_FPTR(Perl_ck_null), /* i_ne */ - MEMBER_TO_FPTR(Perl_ck_null), /* ncmp */ - MEMBER_TO_FPTR(Perl_ck_null), /* i_ncmp */ - MEMBER_TO_FPTR(Perl_ck_null), /* slt */ - MEMBER_TO_FPTR(Perl_ck_null), /* sgt */ - MEMBER_TO_FPTR(Perl_ck_null), /* sle */ - MEMBER_TO_FPTR(Perl_ck_null), /* sge */ - MEMBER_TO_FPTR(Perl_ck_null), /* seq */ - MEMBER_TO_FPTR(Perl_ck_null), /* sne */ - MEMBER_TO_FPTR(Perl_ck_null), /* scmp */ - MEMBER_TO_FPTR(Perl_ck_bitop), /* bit_and */ - MEMBER_TO_FPTR(Perl_ck_bitop), /* bit_xor */ - MEMBER_TO_FPTR(Perl_ck_bitop), /* bit_or */ - MEMBER_TO_FPTR(Perl_ck_null), /* negate */ - MEMBER_TO_FPTR(Perl_ck_null), /* i_negate */ - MEMBER_TO_FPTR(Perl_ck_null), /* not */ - MEMBER_TO_FPTR(Perl_ck_bitop), /* complement */ - MEMBER_TO_FPTR(Perl_ck_smartmatch), /* smartmatch */ - MEMBER_TO_FPTR(Perl_ck_fun), /* atan2 */ - MEMBER_TO_FPTR(Perl_ck_fun), /* sin */ - MEMBER_TO_FPTR(Perl_ck_fun), /* cos */ - MEMBER_TO_FPTR(Perl_ck_fun), /* rand */ - MEMBER_TO_FPTR(Perl_ck_fun), /* srand */ - MEMBER_TO_FPTR(Perl_ck_fun), /* exp */ - MEMBER_TO_FPTR(Perl_ck_fun), /* log */ - MEMBER_TO_FPTR(Perl_ck_fun), /* sqrt */ - MEMBER_TO_FPTR(Perl_ck_fun), /* int */ - MEMBER_TO_FPTR(Perl_ck_fun), /* hex */ - MEMBER_TO_FPTR(Perl_ck_fun), /* oct */ - MEMBER_TO_FPTR(Perl_ck_fun), /* abs */ - MEMBER_TO_FPTR(Perl_ck_fun), /* length */ - MEMBER_TO_FPTR(Perl_ck_substr), /* substr */ - MEMBER_TO_FPTR(Perl_ck_fun), /* vec */ - MEMBER_TO_FPTR(Perl_ck_index), /* index */ - MEMBER_TO_FPTR(Perl_ck_index), /* rindex */ - MEMBER_TO_FPTR(Perl_ck_fun), /* sprintf */ - MEMBER_TO_FPTR(Perl_ck_fun), /* formline */ - MEMBER_TO_FPTR(Perl_ck_fun), /* ord */ - MEMBER_TO_FPTR(Perl_ck_fun), /* chr */ - MEMBER_TO_FPTR(Perl_ck_fun), /* crypt */ - MEMBER_TO_FPTR(Perl_ck_fun), /* ucfirst */ - MEMBER_TO_FPTR(Perl_ck_fun), /* lcfirst */ - MEMBER_TO_FPTR(Perl_ck_fun), /* uc */ - MEMBER_TO_FPTR(Perl_ck_fun), /* lc */ - MEMBER_TO_FPTR(Perl_ck_fun), /* quotemeta */ - MEMBER_TO_FPTR(Perl_ck_rvconst), /* rv2av */ - MEMBER_TO_FPTR(Perl_ck_null), /* aelemfast */ - MEMBER_TO_FPTR(Perl_ck_null), /* aelem */ - MEMBER_TO_FPTR(Perl_ck_null), /* aslice */ - MEMBER_TO_FPTR(Perl_ck_each), /* aeach */ - MEMBER_TO_FPTR(Perl_ck_each), /* akeys */ - MEMBER_TO_FPTR(Perl_ck_each), /* avalues */ - MEMBER_TO_FPTR(Perl_ck_each), /* each */ - MEMBER_TO_FPTR(Perl_ck_each), /* values */ - MEMBER_TO_FPTR(Perl_ck_each), /* keys */ - MEMBER_TO_FPTR(Perl_ck_delete), /* delete */ - MEMBER_TO_FPTR(Perl_ck_exists), /* exists */ - MEMBER_TO_FPTR(Perl_ck_rvconst), /* rv2hv */ - MEMBER_TO_FPTR(Perl_ck_null), /* helem */ - MEMBER_TO_FPTR(Perl_ck_null), /* hslice */ - MEMBER_TO_FPTR(Perl_ck_fun), /* boolkeys */ - MEMBER_TO_FPTR(Perl_ck_unpack), /* unpack */ - MEMBER_TO_FPTR(Perl_ck_fun), /* pack */ - MEMBER_TO_FPTR(Perl_ck_split), /* split */ - MEMBER_TO_FPTR(Perl_ck_join), /* join */ - MEMBER_TO_FPTR(Perl_ck_null), /* list */ - MEMBER_TO_FPTR(Perl_ck_null), /* lslice */ - MEMBER_TO_FPTR(Perl_ck_fun), /* anonlist */ - MEMBER_TO_FPTR(Perl_ck_fun), /* anonhash */ - MEMBER_TO_FPTR(Perl_ck_fun), /* splice */ - MEMBER_TO_FPTR(Perl_ck_fun), /* push */ - MEMBER_TO_FPTR(Perl_ck_shift), /* pop */ - MEMBER_TO_FPTR(Perl_ck_shift), /* shift */ - MEMBER_TO_FPTR(Perl_ck_fun), /* unshift */ - MEMBER_TO_FPTR(Perl_ck_sort), /* sort */ - MEMBER_TO_FPTR(Perl_ck_fun), /* reverse */ - MEMBER_TO_FPTR(Perl_ck_grep), /* grepstart */ - MEMBER_TO_FPTR(Perl_ck_null), /* grepwhile */ - MEMBER_TO_FPTR(Perl_ck_grep), /* mapstart */ - MEMBER_TO_FPTR(Perl_ck_null), /* mapwhile */ - MEMBER_TO_FPTR(Perl_ck_null), /* range */ - MEMBER_TO_FPTR(Perl_ck_null), /* flip */ - MEMBER_TO_FPTR(Perl_ck_null), /* flop */ - MEMBER_TO_FPTR(Perl_ck_null), /* and */ - MEMBER_TO_FPTR(Perl_ck_null), /* or */ - MEMBER_TO_FPTR(Perl_ck_null), /* xor */ - MEMBER_TO_FPTR(Perl_ck_null), /* dor */ - MEMBER_TO_FPTR(Perl_ck_null), /* cond_expr */ - MEMBER_TO_FPTR(Perl_ck_null), /* andassign */ - MEMBER_TO_FPTR(Perl_ck_null), /* orassign */ - MEMBER_TO_FPTR(Perl_ck_null), /* dorassign */ - MEMBER_TO_FPTR(Perl_ck_method), /* method */ - MEMBER_TO_FPTR(Perl_ck_subr), /* entersub */ - MEMBER_TO_FPTR(Perl_ck_null), /* leavesub */ - MEMBER_TO_FPTR(Perl_ck_null), /* leavesublv */ - MEMBER_TO_FPTR(Perl_ck_fun), /* caller */ - MEMBER_TO_FPTR(Perl_ck_fun), /* warn */ - MEMBER_TO_FPTR(Perl_ck_die), /* die */ - MEMBER_TO_FPTR(Perl_ck_fun), /* reset */ - MEMBER_TO_FPTR(Perl_ck_null), /* lineseq */ - MEMBER_TO_FPTR(Perl_ck_null), /* nextstate */ - MEMBER_TO_FPTR(Perl_ck_null), /* dbstate */ - MEMBER_TO_FPTR(Perl_ck_null), /* unstack */ - MEMBER_TO_FPTR(Perl_ck_null), /* enter */ - MEMBER_TO_FPTR(Perl_ck_null), /* leave */ - MEMBER_TO_FPTR(Perl_ck_null), /* scope */ - MEMBER_TO_FPTR(Perl_ck_null), /* enteriter */ - MEMBER_TO_FPTR(Perl_ck_null), /* iter */ - MEMBER_TO_FPTR(Perl_ck_null), /* enterloop */ - MEMBER_TO_FPTR(Perl_ck_null), /* leaveloop */ - MEMBER_TO_FPTR(Perl_ck_return), /* return */ - MEMBER_TO_FPTR(Perl_ck_null), /* last */ - MEMBER_TO_FPTR(Perl_ck_null), /* next */ - MEMBER_TO_FPTR(Perl_ck_null), /* redo */ - MEMBER_TO_FPTR(Perl_ck_null), /* dump */ - MEMBER_TO_FPTR(Perl_ck_null), /* goto */ - MEMBER_TO_FPTR(Perl_ck_exit), /* exit */ - MEMBER_TO_FPTR(Perl_ck_null), /* method_named */ - MEMBER_TO_FPTR(Perl_ck_null), /* entergiven */ - MEMBER_TO_FPTR(Perl_ck_null), /* leavegiven */ - MEMBER_TO_FPTR(Perl_ck_null), /* enterwhen */ - MEMBER_TO_FPTR(Perl_ck_null), /* leavewhen */ - MEMBER_TO_FPTR(Perl_ck_null), /* break */ - MEMBER_TO_FPTR(Perl_ck_null), /* continue */ - MEMBER_TO_FPTR(Perl_ck_open), /* open */ - MEMBER_TO_FPTR(Perl_ck_fun), /* close */ - MEMBER_TO_FPTR(Perl_ck_fun), /* pipe_op */ - MEMBER_TO_FPTR(Perl_ck_fun), /* fileno */ - MEMBER_TO_FPTR(Perl_ck_fun), /* umask */ - MEMBER_TO_FPTR(Perl_ck_fun), /* binmode */ - MEMBER_TO_FPTR(Perl_ck_fun), /* tie */ - MEMBER_TO_FPTR(Perl_ck_fun), /* untie */ - MEMBER_TO_FPTR(Perl_ck_fun), /* tied */ - MEMBER_TO_FPTR(Perl_ck_fun), /* dbmopen */ - MEMBER_TO_FPTR(Perl_ck_fun), /* dbmclose */ - MEMBER_TO_FPTR(Perl_ck_select), /* sselect */ - MEMBER_TO_FPTR(Perl_ck_select), /* select */ - MEMBER_TO_FPTR(Perl_ck_eof), /* getc */ - MEMBER_TO_FPTR(Perl_ck_fun), /* read */ - MEMBER_TO_FPTR(Perl_ck_fun), /* enterwrite */ - MEMBER_TO_FPTR(Perl_ck_null), /* leavewrite */ - MEMBER_TO_FPTR(Perl_ck_listiob), /* prtf */ - MEMBER_TO_FPTR(Perl_ck_listiob), /* print */ - MEMBER_TO_FPTR(Perl_ck_listiob), /* say */ - MEMBER_TO_FPTR(Perl_ck_fun), /* sysopen */ - MEMBER_TO_FPTR(Perl_ck_fun), /* sysseek */ - MEMBER_TO_FPTR(Perl_ck_fun), /* sysread */ - MEMBER_TO_FPTR(Perl_ck_fun), /* syswrite */ - MEMBER_TO_FPTR(Perl_ck_eof), /* eof */ - MEMBER_TO_FPTR(Perl_ck_fun), /* tell */ - MEMBER_TO_FPTR(Perl_ck_fun), /* seek */ - MEMBER_TO_FPTR(Perl_ck_trunc), /* truncate */ - MEMBER_TO_FPTR(Perl_ck_fun), /* fcntl */ - MEMBER_TO_FPTR(Perl_ck_fun), /* ioctl */ - MEMBER_TO_FPTR(Perl_ck_fun), /* flock */ - MEMBER_TO_FPTR(Perl_ck_fun), /* send */ - MEMBER_TO_FPTR(Perl_ck_fun), /* recv */ - MEMBER_TO_FPTR(Perl_ck_fun), /* socket */ - MEMBER_TO_FPTR(Perl_ck_fun), /* sockpair */ - MEMBER_TO_FPTR(Perl_ck_fun), /* bind */ - MEMBER_TO_FPTR(Perl_ck_fun), /* connect */ - MEMBER_TO_FPTR(Perl_ck_fun), /* listen */ - MEMBER_TO_FPTR(Perl_ck_fun), /* accept */ - MEMBER_TO_FPTR(Perl_ck_fun), /* shutdown */ - MEMBER_TO_FPTR(Perl_ck_fun), /* gsockopt */ - MEMBER_TO_FPTR(Perl_ck_fun), /* ssockopt */ - MEMBER_TO_FPTR(Perl_ck_fun), /* getsockname */ - MEMBER_TO_FPTR(Perl_ck_fun), /* getpeername */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* lstat */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* stat */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftrread */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftrwrite */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftrexec */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* fteread */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftewrite */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* fteexec */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftis */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftsize */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftmtime */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftatime */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftctime */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftrowned */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* fteowned */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftzero */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftsock */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftchr */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftblk */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftfile */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftdir */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftpipe */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftsuid */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftsgid */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftsvtx */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftlink */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* fttty */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* fttext */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftbinary */ - MEMBER_TO_FPTR(Perl_ck_chdir), /* chdir */ - MEMBER_TO_FPTR(Perl_ck_fun), /* chown */ - MEMBER_TO_FPTR(Perl_ck_fun), /* chroot */ - MEMBER_TO_FPTR(Perl_ck_fun), /* unlink */ - MEMBER_TO_FPTR(Perl_ck_fun), /* chmod */ - MEMBER_TO_FPTR(Perl_ck_fun), /* utime */ - MEMBER_TO_FPTR(Perl_ck_fun), /* rename */ - MEMBER_TO_FPTR(Perl_ck_fun), /* link */ - MEMBER_TO_FPTR(Perl_ck_fun), /* symlink */ - MEMBER_TO_FPTR(Perl_ck_fun), /* readlink */ - MEMBER_TO_FPTR(Perl_ck_fun), /* mkdir */ - MEMBER_TO_FPTR(Perl_ck_fun), /* rmdir */ - MEMBER_TO_FPTR(Perl_ck_fun), /* open_dir */ - MEMBER_TO_FPTR(Perl_ck_fun), /* readdir */ - MEMBER_TO_FPTR(Perl_ck_fun), /* telldir */ - MEMBER_TO_FPTR(Perl_ck_fun), /* seekdir */ - MEMBER_TO_FPTR(Perl_ck_fun), /* rewinddir */ - MEMBER_TO_FPTR(Perl_ck_fun), /* closedir */ - MEMBER_TO_FPTR(Perl_ck_null), /* fork */ - MEMBER_TO_FPTR(Perl_ck_null), /* wait */ - MEMBER_TO_FPTR(Perl_ck_fun), /* waitpid */ - MEMBER_TO_FPTR(Perl_ck_exec), /* system */ - MEMBER_TO_FPTR(Perl_ck_exec), /* exec */ - MEMBER_TO_FPTR(Perl_ck_fun), /* kill */ - MEMBER_TO_FPTR(Perl_ck_null), /* getppid */ - MEMBER_TO_FPTR(Perl_ck_fun), /* getpgrp */ - MEMBER_TO_FPTR(Perl_ck_fun), /* setpgrp */ - MEMBER_TO_FPTR(Perl_ck_fun), /* getpriority */ - MEMBER_TO_FPTR(Perl_ck_fun), /* setpriority */ - MEMBER_TO_FPTR(Perl_ck_null), /* time */ - MEMBER_TO_FPTR(Perl_ck_null), /* tms */ - MEMBER_TO_FPTR(Perl_ck_fun), /* localtime */ - MEMBER_TO_FPTR(Perl_ck_fun), /* gmtime */ - MEMBER_TO_FPTR(Perl_ck_fun), /* alarm */ - MEMBER_TO_FPTR(Perl_ck_fun), /* sleep */ - MEMBER_TO_FPTR(Perl_ck_fun), /* shmget */ - MEMBER_TO_FPTR(Perl_ck_fun), /* shmctl */ - MEMBER_TO_FPTR(Perl_ck_fun), /* shmread */ - MEMBER_TO_FPTR(Perl_ck_fun), /* shmwrite */ - MEMBER_TO_FPTR(Perl_ck_fun), /* msgget */ - MEMBER_TO_FPTR(Perl_ck_fun), /* msgctl */ - MEMBER_TO_FPTR(Perl_ck_fun), /* msgsnd */ - MEMBER_TO_FPTR(Perl_ck_fun), /* msgrcv */ - MEMBER_TO_FPTR(Perl_ck_fun), /* semop */ - MEMBER_TO_FPTR(Perl_ck_fun), /* semget */ - MEMBER_TO_FPTR(Perl_ck_fun), /* semctl */ - MEMBER_TO_FPTR(Perl_ck_require), /* require */ - MEMBER_TO_FPTR(Perl_ck_fun), /* dofile */ - MEMBER_TO_FPTR(Perl_ck_svconst), /* hintseval */ - MEMBER_TO_FPTR(Perl_ck_eval), /* entereval */ - MEMBER_TO_FPTR(Perl_ck_null), /* leaveeval */ - MEMBER_TO_FPTR(Perl_ck_eval), /* entertry */ - MEMBER_TO_FPTR(Perl_ck_null), /* leavetry */ - MEMBER_TO_FPTR(Perl_ck_fun), /* ghbyname */ - MEMBER_TO_FPTR(Perl_ck_fun), /* ghbyaddr */ - MEMBER_TO_FPTR(Perl_ck_null), /* ghostent */ - MEMBER_TO_FPTR(Perl_ck_fun), /* gnbyname */ - MEMBER_TO_FPTR(Perl_ck_fun), /* gnbyaddr */ - MEMBER_TO_FPTR(Perl_ck_null), /* gnetent */ - MEMBER_TO_FPTR(Perl_ck_fun), /* gpbyname */ - MEMBER_TO_FPTR(Perl_ck_fun), /* gpbynumber */ - MEMBER_TO_FPTR(Perl_ck_null), /* gprotoent */ - MEMBER_TO_FPTR(Perl_ck_fun), /* gsbyname */ - MEMBER_TO_FPTR(Perl_ck_fun), /* gsbyport */ - MEMBER_TO_FPTR(Perl_ck_null), /* gservent */ - MEMBER_TO_FPTR(Perl_ck_fun), /* shostent */ - MEMBER_TO_FPTR(Perl_ck_fun), /* snetent */ - MEMBER_TO_FPTR(Perl_ck_fun), /* sprotoent */ - MEMBER_TO_FPTR(Perl_ck_fun), /* sservent */ - MEMBER_TO_FPTR(Perl_ck_null), /* ehostent */ - MEMBER_TO_FPTR(Perl_ck_null), /* enetent */ - MEMBER_TO_FPTR(Perl_ck_null), /* eprotoent */ - MEMBER_TO_FPTR(Perl_ck_null), /* eservent */ - MEMBER_TO_FPTR(Perl_ck_fun), /* gpwnam */ - MEMBER_TO_FPTR(Perl_ck_fun), /* gpwuid */ - MEMBER_TO_FPTR(Perl_ck_null), /* gpwent */ - MEMBER_TO_FPTR(Perl_ck_null), /* spwent */ - MEMBER_TO_FPTR(Perl_ck_null), /* epwent */ - MEMBER_TO_FPTR(Perl_ck_fun), /* ggrnam */ - MEMBER_TO_FPTR(Perl_ck_fun), /* ggrgid */ - MEMBER_TO_FPTR(Perl_ck_null), /* ggrent */ - MEMBER_TO_FPTR(Perl_ck_null), /* sgrent */ - MEMBER_TO_FPTR(Perl_ck_null), /* egrent */ - MEMBER_TO_FPTR(Perl_ck_null), /* getlogin */ - MEMBER_TO_FPTR(Perl_ck_fun), /* syscall */ - MEMBER_TO_FPTR(Perl_ck_rfun), /* lock */ - MEMBER_TO_FPTR(Perl_ck_null), /* once */ - MEMBER_TO_FPTR(Perl_ck_null), /* custom */ + Perl_ck_null, /* null */ + Perl_ck_null, /* stub */ + Perl_ck_fun, /* scalar */ + Perl_ck_null, /* pushmark */ + Perl_ck_null, /* wantarray */ + Perl_ck_svconst, /* const */ + Perl_ck_null, /* gvsv */ + Perl_ck_null, /* gv */ + Perl_ck_null, /* gelem */ + Perl_ck_null, /* padsv */ + Perl_ck_null, /* padav */ + Perl_ck_null, /* padhv */ + Perl_ck_null, /* padany */ + Perl_ck_null, /* pushre */ + Perl_ck_rvconst, /* rv2gv */ + Perl_ck_rvconst, /* rv2sv */ + Perl_ck_null, /* av2arylen */ + Perl_ck_rvconst, /* rv2cv */ + Perl_ck_anoncode, /* anoncode */ + Perl_ck_null, /* prototype */ + Perl_ck_spair, /* refgen */ + Perl_ck_null, /* srefgen */ + Perl_ck_fun, /* ref */ + Perl_ck_fun, /* bless */ + Perl_ck_open, /* backtick */ + Perl_ck_glob, /* glob */ + Perl_ck_readline, /* readline */ + Perl_ck_null, /* rcatline */ + Perl_ck_fun, /* regcmaybe */ + Perl_ck_fun, /* regcreset */ + Perl_ck_null, /* regcomp */ + Perl_ck_match, /* match */ + Perl_ck_match, /* qr */ + Perl_ck_match, /* subst */ + Perl_ck_null, /* substcont */ + Perl_ck_match, /* trans */ + Perl_ck_sassign, /* sassign */ + Perl_ck_null, /* aassign */ + Perl_ck_spair, /* chop */ + Perl_ck_null, /* schop */ + Perl_ck_spair, /* chomp */ + Perl_ck_null, /* schomp */ + Perl_ck_defined, /* defined */ + Perl_ck_lfun, /* undef */ + Perl_ck_fun, /* study */ + Perl_ck_lfun, /* pos */ + Perl_ck_lfun, /* preinc */ + Perl_ck_lfun, /* i_preinc */ + Perl_ck_lfun, /* predec */ + Perl_ck_lfun, /* i_predec */ + Perl_ck_lfun, /* postinc */ + Perl_ck_lfun, /* i_postinc */ + Perl_ck_lfun, /* postdec */ + Perl_ck_lfun, /* i_postdec */ + Perl_ck_null, /* pow */ + Perl_ck_null, /* multiply */ + Perl_ck_null, /* i_multiply */ + Perl_ck_null, /* divide */ + Perl_ck_null, /* i_divide */ + Perl_ck_null, /* modulo */ + Perl_ck_null, /* i_modulo */ + Perl_ck_repeat, /* repeat */ + Perl_ck_null, /* add */ + Perl_ck_null, /* i_add */ + Perl_ck_null, /* subtract */ + Perl_ck_null, /* i_subtract */ + Perl_ck_concat, /* concat */ + Perl_ck_fun, /* stringify */ + Perl_ck_bitop, /* left_shift */ + Perl_ck_bitop, /* right_shift */ + Perl_ck_null, /* lt */ + Perl_ck_null, /* i_lt */ + Perl_ck_null, /* gt */ + Perl_ck_null, /* i_gt */ + Perl_ck_null, /* le */ + Perl_ck_null, /* i_le */ + Perl_ck_null, /* ge */ + Perl_ck_null, /* i_ge */ + Perl_ck_null, /* eq */ + Perl_ck_null, /* i_eq */ + Perl_ck_null, /* ne */ + Perl_ck_null, /* i_ne */ + Perl_ck_null, /* ncmp */ + Perl_ck_null, /* i_ncmp */ + Perl_ck_null, /* slt */ + Perl_ck_null, /* sgt */ + Perl_ck_null, /* sle */ + Perl_ck_null, /* sge */ + Perl_ck_null, /* seq */ + Perl_ck_null, /* sne */ + Perl_ck_null, /* scmp */ + Perl_ck_bitop, /* bit_and */ + Perl_ck_bitop, /* bit_xor */ + Perl_ck_bitop, /* bit_or */ + Perl_ck_null, /* negate */ + Perl_ck_null, /* i_negate */ + Perl_ck_null, /* not */ + Perl_ck_bitop, /* complement */ + Perl_ck_smartmatch, /* smartmatch */ + Perl_ck_fun, /* atan2 */ + Perl_ck_fun, /* sin */ + Perl_ck_fun, /* cos */ + Perl_ck_fun, /* rand */ + Perl_ck_fun, /* srand */ + Perl_ck_fun, /* exp */ + Perl_ck_fun, /* log */ + Perl_ck_fun, /* sqrt */ + Perl_ck_fun, /* int */ + Perl_ck_fun, /* hex */ + Perl_ck_fun, /* oct */ + Perl_ck_fun, /* abs */ + Perl_ck_fun, /* length */ + Perl_ck_substr, /* substr */ + Perl_ck_fun, /* vec */ + Perl_ck_index, /* index */ + Perl_ck_index, /* rindex */ + Perl_ck_fun, /* sprintf */ + Perl_ck_fun, /* formline */ + Perl_ck_fun, /* ord */ + Perl_ck_fun, /* chr */ + Perl_ck_fun, /* crypt */ + Perl_ck_fun, /* ucfirst */ + Perl_ck_fun, /* lcfirst */ + Perl_ck_fun, /* uc */ + Perl_ck_fun, /* lc */ + Perl_ck_fun, /* quotemeta */ + Perl_ck_rvconst, /* rv2av */ + Perl_ck_null, /* aelemfast */ + Perl_ck_null, /* aelem */ + Perl_ck_null, /* aslice */ + Perl_ck_each, /* aeach */ + Perl_ck_each, /* akeys */ + Perl_ck_each, /* avalues */ + Perl_ck_each, /* each */ + Perl_ck_each, /* values */ + Perl_ck_each, /* keys */ + Perl_ck_delete, /* delete */ + Perl_ck_exists, /* exists */ + Perl_ck_rvconst, /* rv2hv */ + Perl_ck_null, /* helem */ + Perl_ck_null, /* hslice */ + Perl_ck_fun, /* boolkeys */ + Perl_ck_unpack, /* unpack */ + Perl_ck_fun, /* pack */ + Perl_ck_split, /* split */ + Perl_ck_join, /* join */ + Perl_ck_null, /* list */ + Perl_ck_null, /* lslice */ + Perl_ck_fun, /* anonlist */ + Perl_ck_fun, /* anonhash */ + Perl_ck_fun, /* splice */ + Perl_ck_fun, /* push */ + Perl_ck_shift, /* pop */ + Perl_ck_shift, /* shift */ + Perl_ck_fun, /* unshift */ + Perl_ck_sort, /* sort */ + Perl_ck_fun, /* reverse */ + Perl_ck_grep, /* grepstart */ + Perl_ck_null, /* grepwhile */ + Perl_ck_grep, /* mapstart */ + Perl_ck_null, /* mapwhile */ + Perl_ck_null, /* range */ + Perl_ck_null, /* flip */ + Perl_ck_null, /* flop */ + Perl_ck_null, /* and */ + Perl_ck_null, /* or */ + Perl_ck_null, /* xor */ + Perl_ck_null, /* dor */ + Perl_ck_null, /* cond_expr */ + Perl_ck_null, /* andassign */ + Perl_ck_null, /* orassign */ + Perl_ck_null, /* dorassign */ + Perl_ck_method, /* method */ + Perl_ck_subr, /* entersub */ + Perl_ck_null, /* leavesub */ + Perl_ck_null, /* leavesublv */ + Perl_ck_fun, /* caller */ + Perl_ck_fun, /* warn */ + Perl_ck_die, /* die */ + Perl_ck_fun, /* reset */ + Perl_ck_null, /* lineseq */ + Perl_ck_null, /* nextstate */ + Perl_ck_null, /* dbstate */ + Perl_ck_null, /* unstack */ + Perl_ck_null, /* enter */ + Perl_ck_null, /* leave */ + Perl_ck_null, /* scope */ + Perl_ck_null, /* enteriter */ + Perl_ck_null, /* iter */ + Perl_ck_null, /* enterloop */ + Perl_ck_null, /* leaveloop */ + Perl_ck_return, /* return */ + Perl_ck_null, /* last */ + Perl_ck_null, /* next */ + Perl_ck_null, /* redo */ + Perl_ck_null, /* dump */ + Perl_ck_null, /* goto */ + Perl_ck_exit, /* exit */ + Perl_ck_null, /* method_named */ + Perl_ck_null, /* entergiven */ + Perl_ck_null, /* leavegiven */ + Perl_ck_null, /* enterwhen */ + Perl_ck_null, /* leavewhen */ + Perl_ck_null, /* break */ + Perl_ck_null, /* continue */ + Perl_ck_open, /* open */ + Perl_ck_fun, /* close */ + Perl_ck_fun, /* pipe_op */ + Perl_ck_fun, /* fileno */ + Perl_ck_fun, /* umask */ + Perl_ck_fun, /* binmode */ + Perl_ck_fun, /* tie */ + Perl_ck_fun, /* untie */ + Perl_ck_fun, /* tied */ + Perl_ck_fun, /* dbmopen */ + Perl_ck_fun, /* dbmclose */ + Perl_ck_select, /* sselect */ + Perl_ck_select, /* select */ + Perl_ck_eof, /* getc */ + Perl_ck_fun, /* read */ + Perl_ck_fun, /* enterwrite */ + Perl_ck_null, /* leavewrite */ + Perl_ck_listiob, /* prtf */ + Perl_ck_listiob, /* print */ + Perl_ck_listiob, /* say */ + Perl_ck_fun, /* sysopen */ + Perl_ck_fun, /* sysseek */ + Perl_ck_fun, /* sysread */ + Perl_ck_fun, /* syswrite */ + Perl_ck_eof, /* eof */ + Perl_ck_fun, /* tell */ + Perl_ck_fun, /* seek */ + Perl_ck_trunc, /* truncate */ + Perl_ck_fun, /* fcntl */ + Perl_ck_fun, /* ioctl */ + Perl_ck_fun, /* flock */ + Perl_ck_fun, /* send */ + Perl_ck_fun, /* recv */ + Perl_ck_fun, /* socket */ + Perl_ck_fun, /* sockpair */ + Perl_ck_fun, /* bind */ + Perl_ck_fun, /* connect */ + Perl_ck_fun, /* listen */ + Perl_ck_fun, /* accept */ + Perl_ck_fun, /* shutdown */ + Perl_ck_fun, /* gsockopt */ + Perl_ck_fun, /* ssockopt */ + Perl_ck_fun, /* getsockname */ + Perl_ck_fun, /* getpeername */ + Perl_ck_ftst, /* lstat */ + Perl_ck_ftst, /* stat */ + Perl_ck_ftst, /* ftrread */ + Perl_ck_ftst, /* ftrwrite */ + Perl_ck_ftst, /* ftrexec */ + Perl_ck_ftst, /* fteread */ + Perl_ck_ftst, /* ftewrite */ + Perl_ck_ftst, /* fteexec */ + Perl_ck_ftst, /* ftis */ + Perl_ck_ftst, /* ftsize */ + Perl_ck_ftst, /* ftmtime */ + Perl_ck_ftst, /* ftatime */ + Perl_ck_ftst, /* ftctime */ + Perl_ck_ftst, /* ftrowned */ + Perl_ck_ftst, /* fteowned */ + Perl_ck_ftst, /* ftzero */ + Perl_ck_ftst, /* ftsock */ + Perl_ck_ftst, /* ftchr */ + Perl_ck_ftst, /* ftblk */ + Perl_ck_ftst, /* ftfile */ + Perl_ck_ftst, /* ftdir */ + Perl_ck_ftst, /* ftpipe */ + Perl_ck_ftst, /* ftsuid */ + Perl_ck_ftst, /* ftsgid */ + Perl_ck_ftst, /* ftsvtx */ + Perl_ck_ftst, /* ftlink */ + Perl_ck_ftst, /* fttty */ + Perl_ck_ftst, /* fttext */ + Perl_ck_ftst, /* ftbinary */ + Perl_ck_chdir, /* chdir */ + Perl_ck_fun, /* chown */ + Perl_ck_fun, /* chroot */ + Perl_ck_fun, /* unlink */ + Perl_ck_fun, /* chmod */ + Perl_ck_fun, /* utime */ + Perl_ck_fun, /* rename */ + Perl_ck_fun, /* link */ + Perl_ck_fun, /* symlink */ + Perl_ck_fun, /* readlink */ + Perl_ck_fun, /* mkdir */ + Perl_ck_fun, /* rmdir */ + Perl_ck_fun, /* open_dir */ + Perl_ck_fun, /* readdir */ + Perl_ck_fun, /* telldir */ + Perl_ck_fun, /* seekdir */ + Perl_ck_fun, /* rewinddir */ + Perl_ck_fun, /* closedir */ + Perl_ck_null, /* fork */ + Perl_ck_null, /* wait */ + Perl_ck_fun, /* waitpid */ + Perl_ck_exec, /* system */ + Perl_ck_exec, /* exec */ + Perl_ck_fun, /* kill */ + Perl_ck_null, /* getppid */ + Perl_ck_fun, /* getpgrp */ + Perl_ck_fun, /* setpgrp */ + Perl_ck_fun, /* getpriority */ + Perl_ck_fun, /* setpriority */ + Perl_ck_null, /* time */ + Perl_ck_null, /* tms */ + Perl_ck_fun, /* localtime */ + Perl_ck_fun, /* gmtime */ + Perl_ck_fun, /* alarm */ + Perl_ck_fun, /* sleep */ + Perl_ck_fun, /* shmget */ + Perl_ck_fun, /* shmctl */ + Perl_ck_fun, /* shmread */ + Perl_ck_fun, /* shmwrite */ + Perl_ck_fun, /* msgget */ + Perl_ck_fun, /* msgctl */ + Perl_ck_fun, /* msgsnd */ + Perl_ck_fun, /* msgrcv */ + Perl_ck_fun, /* semop */ + Perl_ck_fun, /* semget */ + Perl_ck_fun, /* semctl */ + Perl_ck_require, /* require */ + Perl_ck_fun, /* dofile */ + Perl_ck_svconst, /* hintseval */ + Perl_ck_eval, /* entereval */ + Perl_ck_null, /* leaveeval */ + Perl_ck_eval, /* entertry */ + Perl_ck_null, /* leavetry */ + Perl_ck_fun, /* ghbyname */ + Perl_ck_fun, /* ghbyaddr */ + Perl_ck_null, /* ghostent */ + Perl_ck_fun, /* gnbyname */ + Perl_ck_fun, /* gnbyaddr */ + Perl_ck_null, /* gnetent */ + Perl_ck_fun, /* gpbyname */ + Perl_ck_fun, /* gpbynumber */ + Perl_ck_null, /* gprotoent */ + Perl_ck_fun, /* gsbyname */ + Perl_ck_fun, /* gsbyport */ + Perl_ck_null, /* gservent */ + Perl_ck_fun, /* shostent */ + Perl_ck_fun, /* snetent */ + Perl_ck_fun, /* sprotoent */ + Perl_ck_fun, /* sservent */ + Perl_ck_null, /* ehostent */ + Perl_ck_null, /* enetent */ + Perl_ck_null, /* eprotoent */ + Perl_ck_null, /* eservent */ + Perl_ck_fun, /* gpwnam */ + Perl_ck_fun, /* gpwuid */ + Perl_ck_null, /* gpwent */ + Perl_ck_null, /* spwent */ + Perl_ck_null, /* epwent */ + Perl_ck_fun, /* ggrnam */ + Perl_ck_fun, /* ggrgid */ + Perl_ck_null, /* ggrent */ + Perl_ck_null, /* sgrent */ + Perl_ck_null, /* egrent */ + Perl_ck_null, /* getlogin */ + Perl_ck_fun, /* syscall */ + Perl_ck_rfun, /* lock */ + Perl_ck_null, /* once */ + Perl_ck_null, /* custom */ + Perl_ck_each, /* reach */ + Perl_ck_each, /* rkeys */ + Perl_ck_each, /* rvalues */ + Perl_ck_match, /* transr */ } #endif #ifdef PERL_CHECK_INITED @@ -1557,370 +1685,374 @@ EXTCONST U32 PL_opargs[]; EXTCONST U32 PL_opargs[] = { 0x00000000, /* null */ 0x00000000, /* stub */ - 0x00003604, /* scalar */ + 0x00001b04, /* scalar */ 0x00000004, /* pushmark */ - 0x00000014, /* wantarray */ - 0x00000c04, /* const */ - 0x00000c44, /* gvsv */ - 0x00000c44, /* gv */ - 0x00022440, /* gelem */ + 0x00000004, /* wantarray */ + 0x00000604, /* const */ + 0x00000644, /* gvsv */ + 0x00000644, /* gv */ + 0x00011240, /* gelem */ 0x00000044, /* padsv */ 0x00000040, /* padav */ 0x00000040, /* padhv */ 0x00000040, /* padany */ - 0x00000a40, /* pushre */ - 0x00000244, /* rv2gv */ - 0x00000244, /* rv2sv */ - 0x00000214, /* av2arylen */ - 0x00000240, /* rv2cv */ - 0x00000c00, /* anoncode */ - 0x00003604, /* prototype */ - 0x00004201, /* refgen */ - 0x00002206, /* srefgen */ - 0x0001368c, /* ref */ - 0x00122804, /* bless */ - 0x00013688, /* backtick */ - 0x00012808, /* glob */ - 0x0001d608, /* readline */ - 0x00000c08, /* rcatline */ - 0x00002204, /* regcmaybe */ - 0x00002204, /* regcreset */ - 0x00002604, /* regcomp */ - 0x00000a40, /* match */ - 0x00000a04, /* qr */ - 0x00002a54, /* subst */ - 0x00000654, /* substcont */ - 0x00003014, /* trans */ + 0x00000540, /* pushre */ + 0x00000144, /* rv2gv */ + 0x00000144, /* rv2sv */ + 0x00000104, /* av2arylen */ + 0x00000140, /* rv2cv */ + 0x00000600, /* anoncode */ + 0x00001b04, /* prototype */ + 0x00002101, /* refgen */ + 0x00001106, /* srefgen */ + 0x00009b8c, /* ref */ + 0x00091404, /* bless */ + 0x00009b88, /* backtick */ + 0x00009408, /* glob */ + 0x0000eb08, /* readline */ + 0x00000608, /* rcatline */ + 0x00001104, /* regcmaybe */ + 0x00001104, /* regcreset */ + 0x00001304, /* regcomp */ + 0x00000540, /* match */ + 0x00000504, /* qr */ + 0x00001544, /* subst */ + 0x00000344, /* substcont */ + 0x00001804, /* trans */ 0x00000004, /* sassign */ - 0x00044408, /* aassign */ - 0x0000560d, /* chop */ - 0x0001368c, /* schop */ - 0x0000570d, /* chomp */ - 0x0001378c, /* schomp */ - 0x00013694, /* defined */ - 0x00013604, /* undef */ - 0x00013684, /* study */ - 0x0001368c, /* pos */ - 0x00002264, /* preinc */ - 0x00002254, /* i_preinc */ - 0x00002264, /* predec */ - 0x00002254, /* i_predec */ - 0x0000226c, /* postinc */ - 0x0000235c, /* i_postinc */ - 0x0000226c, /* postdec */ - 0x0000235c, /* i_postdec */ - 0x0002250e, /* pow */ - 0x0002252e, /* multiply */ - 0x0002251e, /* i_multiply */ - 0x0002252e, /* divide */ - 0x0002251e, /* i_divide */ - 0x0002253e, /* modulo */ - 0x0002251e, /* i_modulo */ - 0x00024409, /* repeat */ - 0x0002252e, /* add */ - 0x0002251e, /* i_add */ - 0x0002252e, /* subtract */ - 0x0002251e, /* i_subtract */ - 0x0002250e, /* concat */ - 0x0000290e, /* stringify */ - 0x0002250e, /* left_shift */ - 0x0002250e, /* right_shift */ - 0x00022436, /* lt */ - 0x00022416, /* i_lt */ - 0x00022436, /* gt */ - 0x00022416, /* i_gt */ - 0x00022436, /* le */ - 0x00022416, /* i_le */ - 0x00022436, /* ge */ - 0x00022416, /* i_ge */ - 0x00022436, /* eq */ - 0x00022416, /* i_eq */ - 0x00022436, /* ne */ - 0x00022416, /* i_ne */ - 0x0002243e, /* ncmp */ - 0x0002241e, /* i_ncmp */ - 0x00022416, /* slt */ - 0x00022416, /* sgt */ - 0x00022416, /* sle */ - 0x00022416, /* sge */ - 0x00022416, /* seq */ - 0x00022416, /* sne */ - 0x0002241e, /* scmp */ - 0x0002240e, /* bit_and */ - 0x0002240e, /* bit_xor */ - 0x0002240e, /* bit_or */ - 0x0000222e, /* negate */ - 0x0000231e, /* i_negate */ - 0x00002216, /* not */ - 0x0000220e, /* complement */ - 0x00000404, /* smartmatch */ - 0x0002290e, /* atan2 */ - 0x0001378e, /* sin */ - 0x0001378e, /* cos */ - 0x0001370c, /* rand */ - 0x00013604, /* srand */ - 0x0001378e, /* exp */ - 0x0001378e, /* log */ - 0x0001378e, /* sqrt */ - 0x0001378e, /* int */ - 0x0001378e, /* hex */ - 0x0001378e, /* oct */ - 0x0001378e, /* abs */ - 0x0001379e, /* length */ - 0x1322280c, /* substr */ - 0x0022281c, /* vec */ - 0x0122291c, /* index */ - 0x0122291c, /* rindex */ - 0x0004280f, /* sprintf */ - 0x00042805, /* formline */ - 0x0001379e, /* ord */ - 0x0001378e, /* chr */ - 0x0002290e, /* crypt */ - 0x0001368e, /* ucfirst */ - 0x0001368e, /* lcfirst */ - 0x0001368e, /* uc */ - 0x0001368e, /* lc */ - 0x0001368e, /* quotemeta */ - 0x00000248, /* rv2av */ - 0x00026c04, /* aelemfast */ - 0x00026404, /* aelem */ - 0x00046801, /* aslice */ - 0x00007600, /* aeach */ - 0x00007608, /* akeys */ - 0x00007608, /* avalues */ - 0x00009600, /* each */ - 0x00009608, /* values */ - 0x00009608, /* keys */ - 0x00003600, /* delete */ - 0x00003614, /* exists */ - 0x00000248, /* rv2hv */ - 0x00028404, /* helem */ - 0x00048801, /* hslice */ - 0x00009600, /* boolkeys */ - 0x00122800, /* unpack */ - 0x0004280d, /* pack */ - 0x00222808, /* split */ - 0x0004280d, /* join */ - 0x00004801, /* list */ - 0x00448400, /* lslice */ - 0x00004805, /* anonlist */ - 0x00004805, /* anonhash */ - 0x05326801, /* splice */ - 0x0004691d, /* push */ - 0x00017604, /* pop */ - 0x00017604, /* shift */ - 0x0004691d, /* unshift */ - 0x0005a841, /* sort */ - 0x00004809, /* reverse */ - 0x0004a841, /* grepstart */ - 0x00000648, /* grepwhile */ - 0x0004a841, /* mapstart */ - 0x00000648, /* mapwhile */ - 0x00022600, /* range */ - 0x00022200, /* flip */ - 0x00000200, /* flop */ - 0x00000600, /* and */ - 0x00000600, /* or */ - 0x00022406, /* xor */ - 0x00000600, /* dor */ - 0x00000640, /* cond_expr */ - 0x00000604, /* andassign */ - 0x00000604, /* orassign */ - 0x00000604, /* dorassign */ - 0x00000240, /* method */ - 0x00004249, /* entersub */ - 0x00000200, /* leavesub */ - 0x00000200, /* leavesublv */ - 0x00013608, /* caller */ - 0x0000481d, /* warn */ - 0x0000485d, /* die */ - 0x00013614, /* reset */ - 0x00000800, /* lineseq */ - 0x00001404, /* nextstate */ - 0x00001404, /* dbstate */ + 0x00022208, /* aassign */ + 0x00002b0d, /* chop */ + 0x00009b8c, /* schop */ + 0x00002b1d, /* chomp */ + 0x00009b9c, /* schomp */ + 0x00009b84, /* defined */ + 0x00009b04, /* undef */ + 0x00009b84, /* study */ + 0x00009b8c, /* pos */ + 0x00001164, /* preinc */ + 0x00001144, /* i_preinc */ + 0x00001164, /* predec */ + 0x00001144, /* i_predec */ + 0x0000116c, /* postinc */ + 0x0000115c, /* i_postinc */ + 0x0000116c, /* postdec */ + 0x0000115c, /* i_postdec */ + 0x0001121e, /* pow */ + 0x0001123e, /* multiply */ + 0x0001121e, /* i_multiply */ + 0x0001123e, /* divide */ + 0x0001121e, /* i_divide */ + 0x0001123e, /* modulo */ + 0x0001121e, /* i_modulo */ + 0x00012209, /* repeat */ + 0x0001123e, /* add */ + 0x0001121e, /* i_add */ + 0x0001123e, /* subtract */ + 0x0001121e, /* i_subtract */ + 0x0001121e, /* concat */ + 0x0000141e, /* stringify */ + 0x0001121e, /* left_shift */ + 0x0001121e, /* right_shift */ + 0x00011226, /* lt */ + 0x00011206, /* i_lt */ + 0x00011226, /* gt */ + 0x00011206, /* i_gt */ + 0x00011226, /* le */ + 0x00011206, /* i_le */ + 0x00011226, /* ge */ + 0x00011206, /* i_ge */ + 0x00011226, /* eq */ + 0x00011206, /* i_eq */ + 0x00011226, /* ne */ + 0x00011206, /* i_ne */ + 0x0001122e, /* ncmp */ + 0x0001120e, /* i_ncmp */ + 0x00011206, /* slt */ + 0x00011206, /* sgt */ + 0x00011206, /* sle */ + 0x00011206, /* sge */ + 0x00011206, /* seq */ + 0x00011206, /* sne */ + 0x0001120e, /* scmp */ + 0x0001120e, /* bit_and */ + 0x0001120e, /* bit_xor */ + 0x0001120e, /* bit_or */ + 0x0000112e, /* negate */ + 0x0000111e, /* i_negate */ + 0x00001106, /* not */ + 0x0000110e, /* complement */ + 0x00000204, /* smartmatch */ + 0x0001141e, /* atan2 */ + 0x00009b9e, /* sin */ + 0x00009b9e, /* cos */ + 0x00009b1c, /* rand */ + 0x00009b1c, /* srand */ + 0x00009b9e, /* exp */ + 0x00009b9e, /* log */ + 0x00009b9e, /* sqrt */ + 0x00009b9e, /* int */ + 0x00009b9e, /* hex */ + 0x00009b9e, /* oct */ + 0x00009b9e, /* abs */ + 0x00009b9e, /* length */ + 0x0991140c, /* substr */ + 0x0011140c, /* vec */ + 0x0091141c, /* index */ + 0x0091141c, /* rindex */ + 0x0002140f, /* sprintf */ + 0x00021405, /* formline */ + 0x00009b9e, /* ord */ + 0x00009b9e, /* chr */ + 0x0001141e, /* crypt */ + 0x00009b8e, /* ucfirst */ + 0x00009b8e, /* lcfirst */ + 0x00009b8e, /* uc */ + 0x00009b8e, /* lc */ + 0x00009b8e, /* quotemeta */ + 0x00000148, /* rv2av */ + 0x00013604, /* aelemfast */ + 0x00013204, /* aelem */ + 0x00023401, /* aslice */ + 0x00003b00, /* aeach */ + 0x00003b08, /* akeys */ + 0x00003b08, /* avalues */ + 0x00004b00, /* each */ + 0x00004b08, /* values */ + 0x00004b08, /* keys */ + 0x00001b00, /* delete */ + 0x00001b04, /* exists */ + 0x00000148, /* rv2hv */ + 0x00014204, /* helem */ + 0x00024401, /* hslice */ + 0x00004b00, /* boolkeys */ + 0x00091400, /* unpack */ + 0x0002140d, /* pack */ + 0x00111408, /* split */ + 0x0002140d, /* join */ + 0x00002401, /* list */ + 0x00224200, /* lslice */ + 0x00002405, /* anonlist */ + 0x00002405, /* anonhash */ + 0x02993401, /* splice */ + 0x0002341d, /* push */ + 0x0000bb04, /* pop */ + 0x0000bb04, /* shift */ + 0x0002341d, /* unshift */ + 0x0002d441, /* sort */ + 0x00002409, /* reverse */ + 0x00025441, /* grepstart */ + 0x00000348, /* grepwhile */ + 0x00025441, /* mapstart */ + 0x00000348, /* mapwhile */ + 0x00011300, /* range */ + 0x00011100, /* flip */ + 0x00000100, /* flop */ + 0x00000300, /* and */ + 0x00000300, /* or */ + 0x00011206, /* xor */ + 0x00000300, /* dor */ + 0x00000340, /* cond_expr */ + 0x00000304, /* andassign */ + 0x00000304, /* orassign */ + 0x00000304, /* dorassign */ + 0x00000140, /* method */ + 0x00002149, /* entersub */ + 0x00000100, /* leavesub */ + 0x00000100, /* leavesublv */ + 0x00009b08, /* caller */ + 0x0000240d, /* warn */ + 0x0000244d, /* die */ + 0x00009b04, /* reset */ + 0x00000400, /* lineseq */ + 0x00000a04, /* nextstate */ + 0x00000a04, /* dbstate */ 0x00000004, /* unstack */ 0x00000000, /* enter */ - 0x00000800, /* leave */ - 0x00000800, /* scope */ - 0x00001240, /* enteriter */ + 0x00000400, /* leave */ + 0x00000400, /* scope */ + 0x00000940, /* enteriter */ 0x00000000, /* iter */ - 0x00001240, /* enterloop */ - 0x00000400, /* leaveloop */ - 0x00004841, /* return */ - 0x00001a44, /* last */ - 0x00001a44, /* next */ - 0x00001a44, /* redo */ - 0x00001a44, /* dump */ - 0x00001a44, /* goto */ - 0x00013644, /* exit */ - 0x00000c40, /* method_named */ - 0x00000640, /* entergiven */ - 0x00000200, /* leavegiven */ - 0x00000640, /* enterwhen */ - 0x00000200, /* leavewhen */ + 0x00000940, /* enterloop */ + 0x00000200, /* leaveloop */ + 0x00002441, /* return */ + 0x00000d44, /* last */ + 0x00000d44, /* next */ + 0x00000d44, /* redo */ + 0x00000d44, /* dump */ + 0x00000d44, /* goto */ + 0x00009b44, /* exit */ + 0x00000640, /* method_named */ + 0x00000340, /* entergiven */ + 0x00000100, /* leavegiven */ + 0x00000340, /* enterwhen */ + 0x00000100, /* leavewhen */ 0x00000000, /* break */ 0x00000000, /* continue */ - 0x0052c81d, /* open */ - 0x0001d614, /* close */ - 0x000cc814, /* pipe_op */ - 0x0000d61c, /* fileno */ - 0x0001361c, /* umask */ - 0x0012c804, /* binmode */ - 0x0042e855, /* tie */ - 0x0000f614, /* untie */ - 0x0000f604, /* tied */ - 0x00228814, /* dbmopen */ - 0x00009614, /* dbmclose */ - 0x02222808, /* sselect */ - 0x0001c80c, /* select */ - 0x0001d60c, /* getc */ - 0x122ec81d, /* read */ - 0x0001d654, /* enterwrite */ - 0x00000200, /* leavewrite */ - 0x0005c815, /* prtf */ - 0x0005c815, /* print */ - 0x0005c815, /* say */ - 0x1222c804, /* sysopen */ - 0x0022c804, /* sysseek */ - 0x122ec81d, /* sysread */ - 0x1322c81d, /* syswrite */ - 0x0001d614, /* eof */ - 0x0001d60c, /* tell */ - 0x0022c804, /* seek */ - 0x00022814, /* truncate */ - 0x0022c80c, /* fcntl */ - 0x0022c80c, /* ioctl */ - 0x0002c91c, /* flock */ - 0x1222c81d, /* send */ - 0x022ec81d, /* recv */ - 0x0222c814, /* socket */ - 0x222cc814, /* sockpair */ - 0x0002c814, /* bind */ - 0x0002c814, /* connect */ - 0x0002c814, /* listen */ - 0x000cc81c, /* accept */ - 0x0002c81c, /* shutdown */ - 0x0022c814, /* gsockopt */ - 0x0222c814, /* ssockopt */ - 0x0000d614, /* getsockname */ - 0x0000d614, /* getpeername */ - 0x0000d880, /* lstat */ - 0x0000d880, /* stat */ - 0x0000d894, /* ftrread */ - 0x0000d894, /* ftrwrite */ - 0x0000d894, /* ftrexec */ - 0x0000d894, /* fteread */ - 0x0000d894, /* ftewrite */ - 0x0000d894, /* fteexec */ - 0x0000d894, /* ftis */ - 0x0000d89c, /* ftsize */ - 0x0000d88c, /* ftmtime */ - 0x0000d88c, /* ftatime */ - 0x0000d88c, /* ftctime */ - 0x0000d894, /* ftrowned */ - 0x0000d894, /* fteowned */ - 0x0000d894, /* ftzero */ - 0x0000d894, /* ftsock */ - 0x0000d894, /* ftchr */ - 0x0000d894, /* ftblk */ - 0x0000d894, /* ftfile */ - 0x0000d894, /* ftdir */ - 0x0000d894, /* ftpipe */ - 0x0000d894, /* ftsuid */ - 0x0000d894, /* ftsgid */ - 0x0000d894, /* ftsvtx */ - 0x0000d894, /* ftlink */ - 0x0000d814, /* fttty */ - 0x0000d894, /* fttext */ - 0x0000d894, /* ftbinary */ - 0x0001371c, /* chdir */ - 0x0000491d, /* chown */ - 0x0001379c, /* chroot */ - 0x0000499d, /* unlink */ - 0x0000491d, /* chmod */ - 0x0000491d, /* utime */ - 0x0002291c, /* rename */ - 0x0002291c, /* link */ - 0x0002291c, /* symlink */ - 0x0001368c, /* readlink */ - 0x0013299c, /* mkdir */ - 0x0001379c, /* rmdir */ - 0x0002c814, /* open_dir */ - 0x0000d600, /* readdir */ - 0x0000d60c, /* telldir */ - 0x0002c804, /* seekdir */ - 0x0000d604, /* rewinddir */ - 0x0000d614, /* closedir */ - 0x0000001c, /* fork */ - 0x0000011c, /* wait */ - 0x0002291c, /* waitpid */ - 0x0005291d, /* system */ - 0x0005295d, /* exec */ - 0x0000495d, /* kill */ - 0x0000011c, /* getppid */ - 0x0001371c, /* getpgrp */ - 0x0013291c, /* setpgrp */ - 0x0002291c, /* getpriority */ - 0x0022291c, /* setpriority */ - 0x0000011c, /* time */ + 0x0029640d, /* open */ + 0x0000eb04, /* close */ + 0x00066404, /* pipe_op */ + 0x00006b0c, /* fileno */ + 0x00009b0c, /* umask */ + 0x00096404, /* binmode */ + 0x00217445, /* tie */ + 0x00007b04, /* untie */ + 0x00007b04, /* tied */ + 0x00114404, /* dbmopen */ + 0x00004b04, /* dbmclose */ + 0x01111408, /* sselect */ + 0x0000e40c, /* select */ + 0x0000eb0c, /* getc */ + 0x0917640d, /* read */ + 0x0000eb44, /* enterwrite */ + 0x00000100, /* leavewrite */ + 0x0002e405, /* prtf */ + 0x0002e405, /* print */ + 0x0002e405, /* say */ + 0x09116404, /* sysopen */ + 0x00116404, /* sysseek */ + 0x0917640d, /* sysread */ + 0x0991640d, /* syswrite */ + 0x0000eb04, /* eof */ + 0x0000eb0c, /* tell */ + 0x00116404, /* seek */ + 0x00011404, /* truncate */ + 0x0011640c, /* fcntl */ + 0x0011640c, /* ioctl */ + 0x0001641c, /* flock */ + 0x0911640d, /* send */ + 0x0117640d, /* recv */ + 0x01116404, /* socket */ + 0x11166404, /* sockpair */ + 0x00016404, /* bind */ + 0x00016404, /* connect */ + 0x00016404, /* listen */ + 0x0006640c, /* accept */ + 0x0001640c, /* shutdown */ + 0x00116404, /* gsockopt */ + 0x01116404, /* ssockopt */ + 0x00006b04, /* getsockname */ + 0x00006b04, /* getpeername */ + 0x00006c80, /* lstat */ + 0x00006c80, /* stat */ + 0x00006c84, /* ftrread */ + 0x00006c84, /* ftrwrite */ + 0x00006c84, /* ftrexec */ + 0x00006c84, /* fteread */ + 0x00006c84, /* ftewrite */ + 0x00006c84, /* fteexec */ + 0x00006c84, /* ftis */ + 0x00006c8c, /* ftsize */ + 0x00006c8c, /* ftmtime */ + 0x00006c8c, /* ftatime */ + 0x00006c8c, /* ftctime */ + 0x00006c84, /* ftrowned */ + 0x00006c84, /* fteowned */ + 0x00006c84, /* ftzero */ + 0x00006c84, /* ftsock */ + 0x00006c84, /* ftchr */ + 0x00006c84, /* ftblk */ + 0x00006c84, /* ftfile */ + 0x00006c84, /* ftdir */ + 0x00006c84, /* ftpipe */ + 0x00006c84, /* ftsuid */ + 0x00006c84, /* ftsgid */ + 0x00006c84, /* ftsvtx */ + 0x00006c84, /* ftlink */ + 0x00006c04, /* fttty */ + 0x00006c84, /* fttext */ + 0x00006c84, /* ftbinary */ + 0x00009b1c, /* chdir */ + 0x0000241d, /* chown */ + 0x00009b9c, /* chroot */ + 0x0000249d, /* unlink */ + 0x0000241d, /* chmod */ + 0x0000241d, /* utime */ + 0x0001141c, /* rename */ + 0x0001141c, /* link */ + 0x0001141c, /* symlink */ + 0x00009b8c, /* readlink */ + 0x0009949c, /* mkdir */ + 0x00009b9c, /* rmdir */ + 0x00016404, /* open_dir */ + 0x00006b00, /* readdir */ + 0x00006b0c, /* telldir */ + 0x00016404, /* seekdir */ + 0x00006b04, /* rewinddir */ + 0x00006b04, /* closedir */ + 0x0000000c, /* fork */ + 0x0000001c, /* wait */ + 0x0001141c, /* waitpid */ + 0x0002941d, /* system */ + 0x0002945d, /* exec */ + 0x0000245d, /* kill */ + 0x0000001c, /* getppid */ + 0x00009b1c, /* getpgrp */ + 0x0009941c, /* setpgrp */ + 0x0001141c, /* getpriority */ + 0x0011141c, /* setpriority */ + 0x0000001c, /* time */ 0x00000000, /* tms */ - 0x00013608, /* localtime */ - 0x00013608, /* gmtime */ - 0x0001369c, /* alarm */ - 0x0001371c, /* sleep */ - 0x0022281d, /* shmget */ - 0x0022281d, /* shmctl */ - 0x0222281d, /* shmread */ - 0x0222281d, /* shmwrite */ - 0x0002281d, /* msgget */ - 0x0022281d, /* msgctl */ - 0x0022281d, /* msgsnd */ - 0x2222281d, /* msgrcv */ - 0x0002281d, /* semop */ - 0x0022281d, /* semget */ - 0x0222281d, /* semctl */ - 0x000136c0, /* require */ - 0x00002240, /* dofile */ - 0x00000c04, /* hintseval */ - 0x00003640, /* entereval */ - 0x00002200, /* leaveeval */ - 0x00001640, /* entertry */ - 0x00000800, /* leavetry */ - 0x00003600, /* ghbyname */ - 0x00022800, /* ghbyaddr */ + 0x00009b08, /* localtime */ + 0x00009b08, /* gmtime */ + 0x00009b8c, /* alarm */ + 0x00009b1c, /* sleep */ + 0x0011140d, /* shmget */ + 0x0011140d, /* shmctl */ + 0x0111140d, /* shmread */ + 0x0111140d, /* shmwrite */ + 0x0001140d, /* msgget */ + 0x0011140d, /* msgctl */ + 0x0011140d, /* msgsnd */ + 0x1111140d, /* msgrcv */ + 0x0001140d, /* semop */ + 0x0011140d, /* semget */ + 0x0111140d, /* semctl */ + 0x00009bc0, /* require */ + 0x00001140, /* dofile */ + 0x00000604, /* hintseval */ + 0x00001b40, /* entereval */ + 0x00001100, /* leaveeval */ + 0x00000340, /* entertry */ + 0x00000400, /* leavetry */ + 0x00001b00, /* ghbyname */ + 0x00011400, /* ghbyaddr */ 0x00000000, /* ghostent */ - 0x00003600, /* gnbyname */ - 0x00022800, /* gnbyaddr */ + 0x00001b00, /* gnbyname */ + 0x00011400, /* gnbyaddr */ 0x00000000, /* gnetent */ - 0x00003600, /* gpbyname */ - 0x00002800, /* gpbynumber */ + 0x00001b00, /* gpbyname */ + 0x00001400, /* gpbynumber */ 0x00000000, /* gprotoent */ - 0x00022800, /* gsbyname */ - 0x00022800, /* gsbyport */ + 0x00011400, /* gsbyname */ + 0x00011400, /* gsbyport */ 0x00000000, /* gservent */ - 0x00003614, /* shostent */ - 0x00003614, /* snetent */ - 0x00003614, /* sprotoent */ - 0x00003614, /* sservent */ - 0x00000014, /* ehostent */ - 0x00000014, /* enetent */ - 0x00000014, /* eprotoent */ - 0x00000014, /* eservent */ - 0x00003600, /* gpwnam */ - 0x00003600, /* gpwuid */ + 0x00001b04, /* shostent */ + 0x00001b04, /* snetent */ + 0x00001b04, /* sprotoent */ + 0x00001b04, /* sservent */ + 0x00000004, /* ehostent */ + 0x00000004, /* enetent */ + 0x00000004, /* eprotoent */ + 0x00000004, /* eservent */ + 0x00001b00, /* gpwnam */ + 0x00001b00, /* gpwuid */ 0x00000000, /* gpwent */ - 0x00000014, /* spwent */ - 0x00000014, /* epwent */ - 0x00003600, /* ggrnam */ - 0x00003600, /* ggrgid */ + 0x00000004, /* spwent */ + 0x00000004, /* epwent */ + 0x00001b00, /* ggrnam */ + 0x00001b00, /* ggrgid */ 0x00000000, /* ggrent */ - 0x00000014, /* sgrent */ - 0x00000014, /* egrent */ + 0x00000004, /* sgrent */ + 0x00000004, /* egrent */ 0x0000000c, /* getlogin */ - 0x0004281d, /* syscall */ - 0x0000f604, /* lock */ - 0x00000600, /* once */ + 0x0002140d, /* syscall */ + 0x00007b04, /* lock */ + 0x00000300, /* once */ 0x00000000, /* custom */ + 0x00001b00, /* reach */ + 0x00001b08, /* rkeys */ + 0x00001b08, /* rvalues */ + 0x00001804, /* transr */ }; #endif diff --git a/Master/tlpkg/tlperl/lib/CORE/opnames.h b/Master/tlpkg/tlperl/lib/CORE/opnames.h index d63e548bdef..f3fab8b1f86 100644 --- a/Master/tlpkg/tlperl/lib/CORE/opnames.h +++ b/Master/tlpkg/tlperl/lib/CORE/opnames.h @@ -2,16 +2,15 @@ * * opnames.h * - * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, - * 2007, 2008 by Larry Wall and others + * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, + * 2008 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * - * * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - * This file is built by opcode.pl from its data. Any changes made here - * will be lost! + * This file is built by regen/opcode.pl from its data. + * Any changes made here will be lost! */ typedef enum opcode { @@ -381,17 +380,18 @@ typedef enum opcode { OP_LOCK = 363, OP_ONCE = 364, OP_CUSTOM = 365, + OP_REACH = 366, + OP_RKEYS = 367, + OP_RVALUES = 368, + OP_TRANSR = 369, OP_max } opcode; -#define MAXO 366 -#define OP_phoney_INPUT_ONLY -1 -#define OP_phoney_OUTPUT_ONLY -2 - +#define MAXO 370 /* the OP_IS_(SOCKET|FILETEST) macros are optimized to a simple range check because all the member OPs are contiguous in opcode.pl - <DATA> table. opcode.pl verifies the range contiguity. */ + <OPS> table. opcode.pl verifies the range contiguity. */ #define OP_IS_SOCKET(op) \ ((op) >= OP_SEND && (op) <= OP_GETPEERNAME) diff --git a/Master/tlpkg/tlperl/lib/CORE/overload.h b/Master/tlpkg/tlperl/lib/CORE/overload.h index bbef5cb9a0c..24cde2ad131 100644 --- a/Master/tlpkg/tlperl/lib/CORE/overload.h +++ b/Master/tlpkg/tlperl/lib/CORE/overload.h @@ -2,89 +2,91 @@ * * overload.h * - * Copyright (C) 1997, 1998, 2000, 2001, 2005, 2006, 2007 by Larry Wall - * and others + * Copyright (C) 1997, 1998, 2000, 2001, 2005, 2006, 2007, 2011 + * by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * - * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - * This file is built by overload.pl + * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! + * This file is built by regen/overload.pl. + * Any changes made here will be lost! */ enum { - fallback_amg, - to_sv_amg, - to_av_amg, - to_hv_amg, - to_gv_amg, - to_cv_amg, - inc_amg, - dec_amg, - bool__amg, - numer_amg, - string_amg, - not_amg, - copy_amg, - abs_amg, - neg_amg, - iter_amg, - int_amg, - lt_amg, - le_amg, - gt_amg, - ge_amg, - eq_amg, - ne_amg, - slt_amg, - sle_amg, - sgt_amg, - sge_amg, - seq_amg, - sne_amg, - nomethod_amg, - add_amg, - add_ass_amg, - subtr_amg, - subtr_ass_amg, - mult_amg, - mult_ass_amg, - div_amg, - div_ass_amg, - modulo_amg, - modulo_ass_amg, - pow_amg, - pow_ass_amg, - lshift_amg, - lshift_ass_amg, - rshift_amg, - rshift_ass_amg, - band_amg, - band_ass_amg, - bor_amg, - bor_ass_amg, - bxor_amg, - bxor_ass_amg, - ncmp_amg, - scmp_amg, - compl_amg, - atan2_amg, - cos_amg, - sin_amg, - exp_amg, - log_amg, - sqrt_amg, - repeat_amg, - repeat_ass_amg, - concat_amg, - concat_ass_amg, - smart_amg, - ftest_amg, - regexp_amg, - DESTROY_amg, + fallback_amg, /* 0x00 fallback */ + to_sv_amg, /* 0x01 ${} */ + to_av_amg, /* 0x02 @{} */ + to_hv_amg, /* 0x03 %{} */ + to_gv_amg, /* 0x04 *{} */ + to_cv_amg, /* 0x05 &{} */ + inc_amg, /* 0x06 ++ */ + dec_amg, /* 0x07 -- */ + bool__amg, /* 0x08 bool */ + numer_amg, /* 0x09 0+ */ + string_amg, /* 0x0a "" */ + not_amg, /* 0x0b ! */ + copy_amg, /* 0x0c = */ + abs_amg, /* 0x0d abs */ + neg_amg, /* 0x0e neg */ + iter_amg, /* 0x0f <> */ + int_amg, /* 0x10 int */ + lt_amg, /* 0x11 < */ + le_amg, /* 0x12 <= */ + gt_amg, /* 0x13 > */ + ge_amg, /* 0x14 >= */ + eq_amg, /* 0x15 == */ + ne_amg, /* 0x16 != */ + slt_amg, /* 0x17 lt */ + sle_amg, /* 0x18 le */ + sgt_amg, /* 0x19 gt */ + sge_amg, /* 0x1a ge */ + seq_amg, /* 0x1b eq */ + sne_amg, /* 0x1c ne */ + nomethod_amg, /* 0x1d nomethod */ + add_amg, /* 0x1e + */ + add_ass_amg, /* 0x1f += */ + subtr_amg, /* 0x20 - */ + subtr_ass_amg, /* 0x21 -= */ + mult_amg, /* 0x22 * */ + mult_ass_amg, /* 0x23 *= */ + div_amg, /* 0x24 / */ + div_ass_amg, /* 0x25 /= */ + modulo_amg, /* 0x26 % */ + modulo_ass_amg, /* 0x27 %= */ + pow_amg, /* 0x28 ** */ + pow_ass_amg, /* 0x29 **= */ + lshift_amg, /* 0x2a << */ + lshift_ass_amg, /* 0x2b <<= */ + rshift_amg, /* 0x2c >> */ + rshift_ass_amg, /* 0x2d >>= */ + band_amg, /* 0x2e & */ + band_ass_amg, /* 0x2f &= */ + bor_amg, /* 0x30 | */ + bor_ass_amg, /* 0x31 |= */ + bxor_amg, /* 0x32 ^ */ + bxor_ass_amg, /* 0x33 ^= */ + ncmp_amg, /* 0x34 <=> */ + scmp_amg, /* 0x35 cmp */ + compl_amg, /* 0x36 ~ */ + atan2_amg, /* 0x37 atan2 */ + cos_amg, /* 0x38 cos */ + sin_amg, /* 0x39 sin */ + exp_amg, /* 0x3a exp */ + log_amg, /* 0x3b log */ + sqrt_amg, /* 0x3c sqrt */ + repeat_amg, /* 0x3d x */ + repeat_ass_amg, /* 0x3e x= */ + concat_amg, /* 0x3f . */ + concat_ass_amg, /* 0x40 .= */ + smart_amg, /* 0x41 ~~ */ + ftest_amg, /* 0x42 -X */ + regexp_amg, /* 0x43 qr */ + DESTROY_amg, /* 0x44 DESTROY */ max_amg_code /* Do not leave a trailing comma here. C9X allows it, C89 doesn't. */ }; #define NofAMmeth max_amg_code +/* ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/pad.h b/Master/tlpkg/tlperl/lib/CORE/pad.h index 8602eda7f78..dec267ae27b 100644 --- a/Master/tlpkg/tlperl/lib/CORE/pad.h +++ b/Master/tlpkg/tlperl/lib/CORE/pad.h @@ -31,6 +31,12 @@ typedef U64TYPE PADOFFSET; #endif #define NOT_IN_PAD ((PADOFFSET) -1) +/* a value that PL_cop_seqmax is guaranteed never to be, + * flagging that a lexical is being introduced, or has not yet left scope + */ +#define PERL_PADSEQ_INTRO U32_MAX + + /* B.xs needs these for the benefit of B::Deparse */ /* Low range end is exclusive (valid from the cop seq after this one) */ /* High range end is inclusive (valid up to this cop seq) */ diff --git a/Master/tlpkg/tlperl/lib/CORE/parser.h b/Master/tlpkg/tlperl/lib/CORE/parser.h index 4ef460836cc..17ced8f073a 100644 --- a/Master/tlpkg/tlperl/lib/CORE/parser.h +++ b/Master/tlpkg/tlperl/lib/CORE/parser.h @@ -39,7 +39,7 @@ typedef struct yy_parser { /* lexer state */ - I32 lex_brackets; /* bracket count */ + I32 lex_brackets; /* square and curly bracket count */ I32 lex_casemods; /* casemod count */ char *lex_brackstack;/* what kind of brackets to pop */ char *lex_casestack; /* what kind of case mods in effect */ @@ -61,7 +61,7 @@ typedef struct yy_parser { char multi_close; /* delimiter of said string */ char pending_ident; /* pending identifier lookup */ bool preambled; - /* XXX I32 space */ + I32 lex_allbrackets;/* (), [], {}, ?: bracket count */ SUBLEXINFO sublex_info; SV *linestr; /* current chunk of src text */ char *bufptr; @@ -105,11 +105,35 @@ typedef struct yy_parser { COP *saved_curcop; /* the previous PL_curcop */ char tokenbuf[256]; + bool in_pod; /* lexer is within a =pod section */ + U8 lex_fakeeof; /* precedence at which to fake EOF */ } yy_parser; /* flags for lexer API */ #define LEX_STUFF_UTF8 0x00000001 #define LEX_KEEP_PREVIOUS 0x00000002 +#ifdef PERL_CORE +# define LEX_START_SAME_FILTER 0x00000001 +#endif + +/* flags for parser API */ +#define PARSE_OPTIONAL 0x00000001 + +/* values for lex_fakeeof */ +enum { + LEX_FAKEEOF_NEVER, /* don't fake EOF */ + LEX_FAKEEOF_CLOSING, /* fake EOF at unmatched closing punctuation */ + LEX_FAKEEOF_NONEXPR, /* ... and at token that can't be in expression */ + LEX_FAKEEOF_LOWLOGIC, /* ... and at low-precedence logic operator */ + LEX_FAKEEOF_COMMA, /* ... and at comma */ + LEX_FAKEEOF_ASSIGN, /* ... and at assignment operator */ + LEX_FAKEEOF_IFELSE, /* ... and at ?: operator */ + LEX_FAKEEOF_RANGE, /* ... and at range operator */ + LEX_FAKEEOF_LOGIC, /* ... and at logic operator */ + LEX_FAKEEOF_BITWISE, /* ... and at bitwise operator */ + LEX_FAKEEOF_COMPARE, /* ... and at comparison operator */ + LEX_FAKEEOF_MAX +}; /* * Local variables: diff --git a/Master/tlpkg/tlperl/lib/CORE/patchlevel.h b/Master/tlpkg/tlperl/lib/CORE/patchlevel.h index af54dc98daf..5dc2a53beb1 100644 --- a/Master/tlpkg/tlperl/lib/CORE/patchlevel.h +++ b/Master/tlpkg/tlperl/lib/CORE/patchlevel.h @@ -14,8 +14,8 @@ * exactly on the third column */ #define PERL_REVISION 5 /* age */ -#define PERL_VERSION 12 /* epoch */ -#define PERL_SUBVERSION 3 /* generation */ +#define PERL_VERSION 14 /* epoch */ +#define PERL_SUBVERSION 2 /* generation */ /* The following numbers describe the earliest compatible version of Perl ("compatibility" here being defined as sufficient binary/API @@ -26,13 +26,17 @@ options such as usemultiplicity tend to break binary compatibility more often. - This is used by Configure et al to figure out + This is used by Configure et al to figure out PERL_INC_VERSION_LIST, which lists version libraries to include in @INC. See INSTALL for how this works. + + Porting/bump-perl-version will automatically set these to the version of perl + to be released for blead releases, and to 5.X.0 for maint releases. Manually + changing them should not be necessary. */ -#define PERL_API_REVISION 5 /* Adjust manually as needed. */ -#define PERL_API_VERSION 12 /* Adjust manually as needed. */ -#define PERL_API_SUBVERSION 0 /* Adjust manually as needed. */ +#define PERL_API_REVISION 5 +#define PERL_API_VERSION 14 +#define PERL_API_SUBVERSION 0 /* XXX Note: The selection of non-default Configure options, such as -Duselonglong may invalidate these settings. Currently, Configure @@ -66,8 +70,8 @@ + ,"MINE001 - my new patch" ,NULL }; - - please change it to + + please change it to *** patchlevel.h.orig <date here> --- patchlevel.h <date here> *** 41,43 *** @@ -75,7 +79,7 @@ + ,"MINE001 - my new patch" ,NULL }; - + (Note changes to line numbers as well as removal of context lines.) This will prevent patch from choking if someone has previously applied different patches than you. @@ -92,6 +96,8 @@ my $seen=0; while (<PLIN>) { if (/\t,NULL/ and $seen) { while (my $c = shift @ARGV){ + $c =~ s|\\|\\\\|g; + $c =~ s|"|\\"|g; print PLOUT qq{\t,"$c"\n}; } } diff --git a/Master/tlpkg/tlperl/lib/CORE/perl.h b/Master/tlpkg/tlperl/lib/CORE/perl.h index 5988e7845a8..facdacfbf49 100644 --- a/Master/tlpkg/tlperl/lib/CORE/perl.h +++ b/Master/tlpkg/tlperl/lib/CORE/perl.h @@ -140,6 +140,18 @@ # define EXTERN_C extern #endif +/* Fallback definitions in case we don't have definitions from config.h. + This should only matter for systems that don't use Configure and + haven't been modified to define PERL_STATIC_INLINE yet. +*/ +#if !defined(PERL_STATIC_INLINE) +# ifdef HAS_STATIC_INLINE +# define PERL_STATIC_INLINE static inline +# else +# define PERL_STATIC_INLINE static +# endif +#endif + #ifdef PERL_GLOBAL_STRUCT # ifndef PERL_GET_VARS # ifdef PERL_GLOBAL_STRUCT_PRIVATE @@ -198,6 +210,13 @@ #endif #define STATIC static + +#ifndef PERL_CORE +/* Do not use these macros. They were part of PERL_OBJECT, which was an + * implementation of multiplicity using C++ objects. They have been left + * here solely for the sake of XS code which has incorrectly + * cargo-culted them. + */ #define CPERLscope(x) x #define CPERLarg void #define CPERLarg_ @@ -206,76 +225,77 @@ #define _PERL_OBJECT_THIS #define PERL_OBJECT_THIS_ #define CALL_FPTR(fptr) (*fptr) +#define MEMBER_TO_FPTR(name) name +#endif /* !PERL_CORE */ -#define CALLRUNOPS CALL_FPTR(PL_runops) +#define CALLRUNOPS PL_runops #define CALLREGCOMP(sv, flags) Perl_pregcomp(aTHX_ (sv),(flags)) -#define CALLREGCOMP_ENG(prog, sv, flags) \ - CALL_FPTR(((prog)->comp))(aTHX_ sv, flags) +#define CALLREGCOMP_ENG(prog, sv, flags) (prog)->comp(aTHX_ sv, flags) #define CALLREGEXEC(prog,stringarg,strend,strbeg,minend,screamer,data,flags) \ - CALL_FPTR(RX_ENGINE(prog)->exec)(aTHX_ (prog),(stringarg),(strend), \ + RX_ENGINE(prog)->exec(aTHX_ (prog),(stringarg),(strend), \ (strbeg),(minend),(screamer),(data),(flags)) #define CALLREG_INTUIT_START(prog,sv,strpos,strend,flags,data) \ - CALL_FPTR(RX_ENGINE(prog)->intuit)(aTHX_ (prog), (sv), (strpos), \ + RX_ENGINE(prog)->intuit(aTHX_ (prog), (sv), (strpos), \ (strend),(flags),(data)) #define CALLREG_INTUIT_STRING(prog) \ - CALL_FPTR(RX_ENGINE(prog)->checkstr)(aTHX_ (prog)) + RX_ENGINE(prog)->checkstr(aTHX_ (prog)) #define CALLREGFREE(prog) \ Perl_pregfree(aTHX_ (prog)) #define CALLREGFREE_PVT(prog) \ - if(prog) CALL_FPTR(RX_ENGINE(prog)->free)(aTHX_ (prog)) + if(prog) RX_ENGINE(prog)->free(aTHX_ (prog)) #define CALLREG_NUMBUF_FETCH(rx,paren,usesv) \ - CALL_FPTR(RX_ENGINE(rx)->numbered_buff_FETCH)(aTHX_ (rx),(paren),(usesv)) + RX_ENGINE(rx)->numbered_buff_FETCH(aTHX_ (rx),(paren),(usesv)) #define CALLREG_NUMBUF_STORE(rx,paren,value) \ - CALL_FPTR(RX_ENGINE(rx)->numbered_buff_STORE)(aTHX_ (rx),(paren),(value)) + RX_ENGINE(rx)->numbered_buff_STORE(aTHX_ (rx),(paren),(value)) #define CALLREG_NUMBUF_LENGTH(rx,sv,paren) \ - CALL_FPTR(RX_ENGINE(rx)->numbered_buff_LENGTH)(aTHX_ (rx),(sv),(paren)) + RX_ENGINE(rx)->numbered_buff_LENGTH(aTHX_ (rx),(sv),(paren)) #define CALLREG_NAMED_BUFF_FETCH(rx, key, flags) \ - CALL_FPTR(RX_ENGINE(rx)->named_buff)(aTHX_ (rx), (key), NULL, ((flags) | RXapif_FETCH)) + RX_ENGINE(rx)->named_buff(aTHX_ (rx), (key), NULL, ((flags) | RXapif_FETCH)) #define CALLREG_NAMED_BUFF_STORE(rx, key, value, flags) \ - CALL_FPTR(RX_ENGINE(rx)->named_buff)(aTHX_ (rx), (key), (value), ((flags) | RXapif_STORE)) + RX_ENGINE(rx)->named_buff(aTHX_ (rx), (key), (value), ((flags) | RXapif_STORE)) #define CALLREG_NAMED_BUFF_DELETE(rx, key, flags) \ - CALL_FPTR(RX_ENGINE(rx)->named_buff)(aTHX_ (rx),(key), NULL, ((flags) | RXapif_DELETE)) + RX_ENGINE(rx)->named_buff(aTHX_ (rx),(key), NULL, ((flags) | RXapif_DELETE)) #define CALLREG_NAMED_BUFF_CLEAR(rx, flags) \ - CALL_FPTR(RX_ENGINE(rx)->named_buff)(aTHX_ (rx), NULL, NULL, ((flags) | RXapif_CLEAR)) + RX_ENGINE(rx)->named_buff(aTHX_ (rx), NULL, NULL, ((flags) | RXapif_CLEAR)) #define CALLREG_NAMED_BUFF_EXISTS(rx, key, flags) \ - CALL_FPTR(RX_ENGINE(rx)->named_buff)(aTHX_ (rx), (key), NULL, ((flags) | RXapif_EXISTS)) + RX_ENGINE(rx)->named_buff(aTHX_ (rx), (key), NULL, ((flags) | RXapif_EXISTS)) #define CALLREG_NAMED_BUFF_FIRSTKEY(rx, flags) \ - CALL_FPTR(RX_ENGINE(rx)->named_buff_iter)(aTHX_ (rx), NULL, ((flags) | RXapif_FIRSTKEY)) + RX_ENGINE(rx)->named_buff_iter(aTHX_ (rx), NULL, ((flags) | RXapif_FIRSTKEY)) #define CALLREG_NAMED_BUFF_NEXTKEY(rx, lastkey, flags) \ - CALL_FPTR(RX_ENGINE(rx)->named_buff_iter)(aTHX_ (rx), (lastkey), ((flags) | RXapif_NEXTKEY)) + RX_ENGINE(rx)->named_buff_iter(aTHX_ (rx), (lastkey), ((flags) | RXapif_NEXTKEY)) #define CALLREG_NAMED_BUFF_SCALAR(rx, flags) \ - CALL_FPTR(RX_ENGINE(rx)->named_buff)(aTHX_ (rx), NULL, NULL, ((flags) | RXapif_SCALAR)) + RX_ENGINE(rx)->named_buff(aTHX_ (rx), NULL, NULL, ((flags) | RXapif_SCALAR)) #define CALLREG_NAMED_BUFF_COUNT(rx) \ - CALL_FPTR(RX_ENGINE(rx)->named_buff)(aTHX_ (rx), NULL, NULL, RXapif_REGNAMES_COUNT) + RX_ENGINE(rx)->named_buff(aTHX_ (rx), NULL, NULL, RXapif_REGNAMES_COUNT) #define CALLREG_NAMED_BUFF_ALL(rx, flags) \ - CALL_FPTR(RX_ENGINE(rx)->named_buff)(aTHX_ (rx), NULL, NULL, flags) + RX_ENGINE(rx)->named_buff(aTHX_ (rx), NULL, NULL, flags) #define CALLREG_PACKAGE(rx) \ - CALL_FPTR(RX_ENGINE(rx)->qr_package)(aTHX_ (rx)) + RX_ENGINE(rx)->qr_package(aTHX_ (rx)) #if defined(USE_ITHREADS) #define CALLREGDUPE(prog,param) \ Perl_re_dup(aTHX_ (prog),(param)) #define CALLREGDUPE_PVT(prog,param) \ - (prog ? CALL_FPTR(RX_ENGINE(prog)->dupe)(aTHX_ (prog),(param)) \ + (prog ? RX_ENGINE(prog)->dupe(aTHX_ (prog),(param)) \ : (REGEXP *)NULL) #endif @@ -521,6 +541,15 @@ register struct op *Perl_op asm(stringify(OP_IN_REGISTER)); #define TAINT_ENV() if (PL_tainting) { taint_env(); } #define TAINT_PROPER(s) if (PL_tainting) { taint_proper(NULL, s); } +/* flags used internally only within pp_subst and pp_substcont */ +#ifdef PERL_CORE +# define SUBST_TAINT_STR 1 /* string tainted */ +# define SUBST_TAINT_PAT 2 /* pattern tainted */ +# define SUBST_TAINT_REPL 4 /* replacement tainted */ +# define SUBST_TAINT_RETAINT 8 /* use re'taint' in scope */ +# define SUBST_TAINT_BOOLRET 16 /* return is boolean (don't taint) */ +#endif + /* XXX All process group stuff is handled in pp_sys.c. Should these defines move there? If so, I could simplify this a lot. --AD 9/96. */ @@ -571,7 +600,7 @@ register struct op *Perl_op asm(stringify(OP_IN_REGISTER)); # endif #endif -/* HP-UX 10.X CMA (Common Multithreaded Architecure) insists that +/* HP-UX 10.X CMA (Common Multithreaded Architecture) insists that pthread.h must be included before all other header files. */ #if defined(USE_ITHREADS) && defined(PTHREAD_H_FIRST) && defined(I_PTHREAD) @@ -967,6 +996,14 @@ EXTERN_C int usleep(unsigned int); #define PERL_STRLEN_ROUNDUP_QUANTUM Size_t_size #endif +/* sv_grow() will expand strings by at least a certain percentage of + the previously *used* length to avoid excessive calls to realloc(). + The default is 25% of the current length. +*/ +#ifndef PERL_STRLEN_EXPAND_SHIFT +# define PERL_STRLEN_EXPAND_SHIFT 2 +#endif + #if defined(STANDARD_C) && defined(I_STDDEF) # include <stddef.h> # define STRUCT_OFFSET(s,m) offsetof(s,m) @@ -2198,7 +2235,7 @@ int isnan(double d); # include <limits.h> #endif /* Included values.h above if necessary; still including limits.h down here, - * despite doing above, because math.h might have overriden... XXX - Allen */ + * despite doing above, because math.h might have overridden... XXX - Allen */ /* * Try to figure out max and min values for the integral types. THE CORRECT @@ -2359,10 +2396,6 @@ int isnan(double d); #endif -#ifdef MYMALLOC -# include "malloc_ctl.h" -#endif - struct RExC_state_t; struct _reg_trie_data; @@ -2385,6 +2418,9 @@ typedef struct padop PADOP; typedef struct pvop PVOP; typedef struct loop LOOP; +typedef struct block_hooks BHK; +typedef struct custom_op XOP; + typedef struct interpreter PerlInterpreter; /* Amdahl's <ksync.h> has struct sv */ @@ -2398,7 +2434,6 @@ typedef struct STRUCT_SV SV; typedef struct av AV; typedef struct hv HV; typedef struct cv CV; -typedef struct regexp ORANGE; /* This is the body structure. */ typedef struct p5rx REGEXP; typedef struct gp GP; typedef struct gv GV; @@ -3094,10 +3129,6 @@ typedef pthread_key_t perl_key; #define PERL_EXIT_EXPECTED 0x01 #define PERL_EXIT_DESTRUCT_END 0x02 /* Run END in perl_destruct */ -#ifndef MEMBER_TO_FPTR -# define MEMBER_TO_FPTR(name) name -#endif - #ifndef PERL_CORE /* format to use for version numbers in file/directory names */ /* XXX move to Configure? */ @@ -3154,7 +3185,7 @@ typedef pthread_key_t perl_key; All that is required is that the perl source does not use "%-p" or "%-<number>p" or "%<number>p" formats. These formats will still work in perl code. - See comments in sv.c for futher details. + See comments in sv.c for further details. Robin Barker 2005-07-14 @@ -3180,7 +3211,7 @@ typedef pthread_key_t perl_key; #define SVfARG(p) ((void*)(p)) #ifdef PERL_CORE -/* not used; but needed for backward compatibilty with XS code? - RMB */ +/* not used; but needed for backward compatibility with XS code? - RMB */ # undef VDf #else # ifndef VDf @@ -3189,7 +3220,7 @@ typedef pthread_key_t perl_key; #endif #ifdef PERL_CORE -/* not used; but needed for backward compatibilty with XS code? - RMB */ +/* not used; but needed for backward compatibility with XS code? - RMB */ # undef UVf #else # ifndef UVf @@ -3197,14 +3228,6 @@ typedef pthread_key_t perl_key; # endif #endif -#if !defined(PERL_CORE) && !defined(PERL_NO_SHORT_NAMES) -# if defined(PERL_IMPLICIT_CONTEXT) -# define pmflag(a,b) Perl_pmflag(aTHX_ a,b) -# else -# define pmflag Perl_pmflag -# endif -#endif - #ifdef HASATTRIBUTE_DEPRECATED # define __attribute__deprecated__ __attribute__((deprecated)) #endif @@ -3332,6 +3355,7 @@ union any { void* any_ptr; I32 any_i32; IV any_iv; + UV any_uv; long any_long; bool any_bool; void (*any_dptr) (void*); @@ -3432,6 +3456,10 @@ struct nexttoken { #include "warnings.h" #include "utf8.h" +/* these would be in doio.h if there was such a file */ +#define my_stat() my_stat_flags(SV_GMAGIC) +#define my_lstat() my_lstat_flags(SV_GMAGIC) + /* defined in sv.c, but also used in [ach]v.c */ #undef _XPV_HEAD #undef _XPVMG_HEAD @@ -3453,9 +3481,6 @@ typedef struct magic_state MGS; /* struct magic_state defined in mg.c */ struct scan_data_t; /* Used in S_* functions in regcomp.c */ struct regnode_charclass_class; /* Used in S_* functions in regcomp.c */ -/* Keep next first in this structure, because sv_free_arenas take - advantage of this to share code between the pte arenas and the SV - body arenas */ struct ptr_tbl_ent { struct ptr_tbl_ent* next; const void* oldval; @@ -3466,6 +3491,9 @@ struct ptr_tbl { struct ptr_tbl_ent** tbl_ary; UV tbl_max; UV tbl_items; + struct ptr_tbl_arena *tbl_arena; + struct ptr_tbl_ent *tbl_arena_next; + struct ptr_tbl_ent *tbl_arena_end; }; #if defined(iAPX286) || defined(M_I286) || defined(I80286) @@ -3679,6 +3707,7 @@ Gid_t getegid (void); # define DEBUG_B_TEST_ (PL_debug & DEBUG_B_FLAG) # define DEBUG_Xv_TEST_ (DEBUG_X_TEST_ && DEBUG_v_TEST_) # define DEBUG_Uv_TEST_ (DEBUG_U_TEST_ && DEBUG_v_TEST_) +# define DEBUG_Pv_TEST_ (DEBUG_P_TEST_ && DEBUG_v_TEST_) #ifdef DEBUGGING @@ -3709,6 +3738,7 @@ Gid_t getegid (void); # define DEBUG_B_TEST DEBUG_B_TEST_ # define DEBUG_Xv_TEST DEBUG_Xv_TEST_ # define DEBUG_Uv_TEST DEBUG_Uv_TEST_ +# define DEBUG_Pv_TEST DEBUG_Pv_TEST_ # define PERL_DEB(a) a # define PERL_DEBUG(a) if (PL_debug) a @@ -3746,6 +3776,7 @@ Gid_t getegid (void); # define DEBUG_D(a) DEBUG__(DEBUG_D_TEST, a) # define DEBUG_Xv(a) DEBUG__(DEBUG_Xv_TEST, a) # define DEBUG_Uv(a) DEBUG__(DEBUG_Uv_TEST, a) +# define DEBUG_Pv(a) DEBUG__(DEBUG_Pv_TEST, a) # define DEBUG_T(a) DEBUG__(DEBUG_T_TEST, a) # define DEBUG_R(a) DEBUG__(DEBUG_R_TEST, a) @@ -3785,6 +3816,7 @@ Gid_t getegid (void); # define DEBUG_B_TEST (0) # define DEBUG_Xv_TEST (0) # define DEBUG_Uv_TEST (0) +# define DEBUG_Pv_TEST (0) # define PERL_DEB(a) # define PERL_DEBUG(a) @@ -3814,12 +3846,15 @@ Gid_t getegid (void); # define DEBUG_B(a) # define DEBUG_Xv(a) # define DEBUG_Uv(a) +# define DEBUG_Pv(a) #endif /* DEBUGGING */ #define DEBUG_SCOPE(where) \ - DEBUG_l(WITH_THR(Perl_deb(aTHX_ "%s scope %ld at %s:%d\n", \ - where, (long)PL_scopestack_ix, __FILE__, __LINE__))); + DEBUG_l( \ + Perl_deb(aTHX_ "%s scope %ld (savestack=%ld) at %s:%d\n", \ + where, (long)PL_scopestack_ix, (long)PL_savestack_ix, \ + __FILE__, __LINE__)); @@ -3876,6 +3911,7 @@ Gid_t getegid (void); #define PERL_MAGIC_rhash '%' /* extra data for restricted hashes */ #define PERL_MAGIC_arylen_p '@' /* to move arylen out of XPVAV */ #define PERL_MAGIC_ext '~' /* Available for use by extensions */ +#define PERL_MAGIC_checkcall ']' /* inlining/mutation of call to this CV */ #if defined(DEBUGGING) && defined(I_ASSERT) # include <assert.h> @@ -4189,14 +4225,12 @@ struct perl_memory_debug_header { # endif #endif -typedef int (CPERLscope(*runops_proc_t)) (pTHX); -typedef void (CPERLscope(*share_proc_t)) (pTHX_ SV *sv); -typedef int (CPERLscope(*thrhook_proc_t)) (pTHX); -typedef OP* (CPERLscope(*PPADDR_t)[]) (pTHX); -typedef bool (CPERLscope(*destroyable_proc_t)) (pTHX_ SV *sv); - -/* _ (for $_) must be first in the following list (DEFSV requires it) */ -#define THREADSV_NAMES "_123456789&`'+/.,\\\";^-%=|~:\001\005!@" +typedef int (*runops_proc_t)(pTHX); +typedef void (*share_proc_t) (pTHX_ SV *sv); +typedef int (*thrhook_proc_t) (pTHX); +typedef OP* (*PPADDR_t[]) (pTHX); +typedef bool (*destroyable_proc_t) (pTHX_ SV *sv); +typedef void (*despatch_signals_proc_t) (pTHX); /* NeXT has problems with crt0.o globals */ #if defined(__DYNAMIC__) && \ @@ -4292,45 +4326,16 @@ EXTCONST char* const PL_sig_name[]; EXTCONST int PL_sig_num[]; #endif -/* fast conversion and case folding tables */ +/* fast conversion and case folding tables. The folding tables complement the + * fold, so that 'a' maps to 'A' and 'A' maps to 'a', ignoring more complicated + * folds such as outside the range or to multiple characters. */ #ifdef DOINIT -#ifdef EBCDIC -EXTCONST unsigned char PL_fold[] = { /* fast EBCDIC case folding table */ - 0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, - 128, 'A', 'B', 'C', 'D', 'E', 'F', 'G', - 'H', 'I', 138, 139, 140, 141, 142, 143, - 144, 'J', 'K', 'L', 'M', 'N', 'O', 'P', - 'Q', 'R', 154, 155, 156, 157, 158, 159, - 160, 161, 'S', 'T', 'U', 'V', 'W', 'X', - 'Y', 'Z', 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, - 192, 'a', 'b', 'c', 'd', 'e', 'f', 'g', - 'h', 'i', 202, 203, 204, 205, 206, 207, - 208, 'j', 'k', 'l', 'm', 'n', 'o', 'p', - 'q', 'r', 218, 219, 220, 221, 222, 223, - 224, 225, 's', 't', 'u', 'v', 'w', 'x', - 'y', 'z', 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255 -}; -#else /* ascii rather than ebcdic */ +#ifndef EBCDIC + +/* The EBCDIC fold table depends on the code page, and hence is found in + * utfebcdic.h */ + EXTCONST unsigned char PL_fold[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, @@ -4365,6 +4370,49 @@ EXTCONST unsigned char PL_fold[] = { 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255 }; +EXTCONST unsigned char PL_fold_latin1[] = { + /* Full latin1 complement folding, except for three problematic code points: + * Micro sign (181 = 0xB5) and y with diearesis (255 = 0xFF) have their + * fold complements outside the Latin1 range, so can't match something + * that isn't in utf8. + * German lower case sharp s (223 = 0xDF) folds to two characters, 'ss', + * not one, so can't be represented in this table. + * + * All have to be specially handled */ + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + 64, 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', + 'x', 'y', 'z', 91, 92, 93, 94, 95, + 96, 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181 /*micro */, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, + 192+32, 193+32, 194+32, 195+32, 196+32, 197+32, 198+32, 199+32, + 200+32, 201+32, 202+32, 203+32, 204+32, 205+32, 206+32, 207+32, + 208+32, 209+32, 210+32, 211+32, 212+32, 213+32, 214+32, 215, + 216+32, 217+32, 218+32, 219+32, 220+32, 221+32, 222+32, 223 /* ss */, + 224-32, 225-32, 226-32, 227-32, 228-32, 229-32, 230-32, 231-32, + 232-32, 233-32, 234-32, 235-32, 236-32, 237-32, 238-32, 239-32, + 240-32, 241-32, 242-32, 243-32, 244-32, 245-32, 246-32, 247, + 248-32, 249-32, 250-32, 251-32, 252-32, 253-32, 254-32, + 255 /* y with diaeresis */ +}; #endif /* !EBCDIC, but still in DOINIT */ /* If these tables are accessed through ebcdic, the access will be converted to @@ -4442,6 +4490,7 @@ EXTCONST unsigned char PL_mod_latin1_uc[] = { }; #else /* ! DOINIT */ EXTCONST unsigned char PL_fold[]; +EXTCONST unsigned char PL_fold_latin1[]; EXTCONST unsigned char PL_mod_latin1_uc[]; EXTCONST unsigned char PL_latin1_lc[]; #endif @@ -4677,18 +4726,51 @@ EXTCONST char PL_bincompat_options[] = # endif # ifdef VMS_DO_SOCKETS " VMS_DO_SOCKETS" -# ifdef DECCRTL_SOCKETS - " DECCRTL_SOCKETS" -# endif # endif # ifdef VMS_WE_ARE_CASE_SENSITIVE " VMS_SYMBOL_CASE_AS_IS" # endif +# ifdef VMS_SHORTEN_LONG_SYMBOLS + " VMS_SHORTEN_LONG_SYMBOLS" +# endif ""; #else EXTCONST char PL_bincompat_options[]; #endif +/* The interpreter phases. If these ever change, PL_phase_names right below will + * need to be updated accordingly. */ +enum perl_phase { + PERL_PHASE_CONSTRUCT = 0, + PERL_PHASE_START = 1, + PERL_PHASE_CHECK = 2, + PERL_PHASE_INIT = 3, + PERL_PHASE_RUN = 4, + PERL_PHASE_END = 5, + PERL_PHASE_DESTRUCT = 6 +}; + +#ifdef DOINIT +EXTCONST char *const PL_phase_names[] = { + "CONSTRUCT", + "START", + "CHECK", + "INIT", + "RUN", + "END", + "DESTRUCT" +}; +#else +EXTCONST char *const PL_phase_names[]; +#endif + +#ifndef PERL_CORE +/* Do not use this macro. It only exists for extensions that rely on PL_dirty + * instead of using the newer PL_phase, which provides everything PL_dirty + * provided, and more. */ +# define PL_dirty (PL_phase == PERL_PHASE_DESTRUCT) +#endif /* !PERL_CORE */ + END_EXTERN_C /*****************************************************************************/ @@ -4793,6 +4875,8 @@ enum { /* pass one of these to get_vtbl */ #define HINT_NO_AMAGIC 0x01000000 /* overloading pragma */ +#define HINT_RE_FLAGS 0x02000000 /* re '/xism' pragma */ + /* The following are stored in $^H{sort}, not in PL_hints */ #define HINT_SORT_SORT_BITS 0x000000FF /* allow 256 different ones */ #define HINT_SORT_QUICKSORT 0x00000001 @@ -4819,18 +4903,19 @@ struct perl_debug_pad { PERL_DEBUG_PAD(i)) /* Enable variables which are pointers to functions */ -typedef void (CPERLscope(*peep_t))(pTHX_ OP* o); -typedef regexp*(CPERLscope(*regcomp_t)) (pTHX_ char* exp, char* xend, PMOP* pm); -typedef I32 (CPERLscope(*regexec_t)) (pTHX_ regexp* prog, char* stringarg, +typedef void (*peep_t)(pTHX_ OP* o); +typedef regexp* (*regcomp_t) (pTHX_ char* exp, char* xend, PMOP* pm); +typedef I32 (*regexec_t) (pTHX_ regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags); -typedef char* (CPERLscope(*re_intuit_start_t)) (pTHX_ regexp *prog, SV *sv, +typedef char* (*re_intuit_start_t) (pTHX_ regexp *prog, SV *sv, char *strpos, char *strend, U32 flags, re_scream_pos_data *d); -typedef SV* (CPERLscope(*re_intuit_string_t)) (pTHX_ regexp *prog); -typedef void (CPERLscope(*regfree_t)) (pTHX_ struct regexp* r); -typedef regexp*(CPERLscope(*regdupe_t)) (pTHX_ const regexp* r, CLONE_PARAMS *param); +typedef SV* (*re_intuit_string_t) (pTHX_ regexp *prog); +typedef void (*regfree_t) (pTHX_ struct regexp* r); +typedef regexp* (*regdupe_t) (pTHX_ const regexp* r, CLONE_PARAMS *param); +typedef I32 (*re_fold_t)(const char *, char const *, I32); typedef void (*DESTRUCTORFUNC_NOCONTEXT_t) (void*); typedef void (*DESTRUCTORFUNC_t) (pTHX_ void*); @@ -4847,10 +4932,11 @@ typedef void (*XSUBADDR_t) (pTHX_ CV *); #define PERLVARIC(var,type,init) type var; #define PERLVARISC(var,init) const char var[sizeof(init)]; -typedef OP* (CPERLscope(*Perl_ppaddr_t))(pTHX); -typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*); -typedef void(CPERLscope(*Perl_ophook_t))(pTHX_ OP*); -typedef int (CPERLscope(*Perl_keyword_plugin_t))(pTHX_ char*, STRLEN, OP**); +typedef OP* (*Perl_ppaddr_t)(pTHX); +typedef OP* (*Perl_check_t) (pTHX_ OP*); +typedef void(*Perl_ophook_t)(pTHX_ OP*); +typedef int (*Perl_keyword_plugin_t)(pTHX_ char*, STRLEN, OP**); +typedef void(*Perl_cpeep_t)(pTHX_ OP *, OP *); #define KEYWORD_PLUGIN_DECLINE 0 #define KEYWORD_PLUGIN_STMT 1 @@ -4880,6 +4966,10 @@ typedef struct exitlistentry { STRINGIFY(PERL_VERSION) "." \ STRINGIFY(PERL_SUBVERSION) +#define PERL_API_VERSION_STRING STRINGIFY(PERL_API_REVISION) "." \ + STRINGIFY(PERL_API_VERSION) "." \ + STRINGIFY(PERL_API_SUBVERSION) + #ifdef PERL_GLOBAL_STRUCT struct perl_vars { # include "perlvars.h" @@ -4943,6 +5033,10 @@ struct tempsym; /* defined in pp_pack.c */ #define PERL_CKDEF(s) PERL_CALLCONV OP *s (pTHX_ OP *o); #define PERL_PPDEF(s) PERL_CALLCONV OP *s (pTHX); +#ifdef MYMALLOC +# include "malloc_ctl.h" +#endif + #include "proto.h" /* this has structure inits, so it cannot be included before here */ @@ -5030,11 +5124,24 @@ START_EXTERN_C * not the same beast. ANSI doesn't allow the assignment from one to the other. * (although most, but not all, compilers are prepared to do it) */ + +/* args are: + vtable + get + set + len + clear + free + copy + dup + local +*/ + MGVTBL_SET( PL_vtbl_sv, - MEMBER_TO_FPTR(Perl_magic_get), - MEMBER_TO_FPTR(Perl_magic_set), - MEMBER_TO_FPTR(Perl_magic_len), + Perl_magic_get, + Perl_magic_set, + Perl_magic_len, 0, 0, 0, @@ -5045,9 +5152,9 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_env, 0, - MEMBER_TO_FPTR(Perl_magic_set_all_env), + Perl_magic_set_all_env, 0, - MEMBER_TO_FPTR(Perl_magic_clear_all_env), + Perl_magic_clear_all_env, 0, 0, 0, @@ -5057,9 +5164,9 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_envelem, 0, - MEMBER_TO_FPTR(Perl_magic_setenv), + Perl_magic_setenv, 0, - MEMBER_TO_FPTR(Perl_magic_clearenv), + Perl_magic_clearenv, 0, 0, 0, @@ -5094,10 +5201,10 @@ MGVTBL_SET( #else MGVTBL_SET( PL_vtbl_sigelem, - MEMBER_TO_FPTR(Perl_magic_getsig), - MEMBER_TO_FPTR(Perl_magic_setsig), + Perl_magic_getsig, + Perl_magic_setsig, 0, - MEMBER_TO_FPTR(Perl_magic_clearsig), + Perl_magic_clearsig, 0, 0, 0, @@ -5109,8 +5216,8 @@ MGVTBL_SET( PL_vtbl_pack, 0, 0, - MEMBER_TO_FPTR(Perl_magic_sizepack), - MEMBER_TO_FPTR(Perl_magic_wipepack), + Perl_magic_sizepack, + Perl_magic_wipepack, 0, 0, 0, @@ -5119,10 +5226,10 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_packelem, - MEMBER_TO_FPTR(Perl_magic_getpack), - MEMBER_TO_FPTR(Perl_magic_setpack), + Perl_magic_getpack, + Perl_magic_setpack, 0, - MEMBER_TO_FPTR(Perl_magic_clearpack), + Perl_magic_clearpack, 0, 0, 0, @@ -5132,7 +5239,7 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_dbline, 0, - MEMBER_TO_FPTR(Perl_magic_setdbline), + Perl_magic_setdbline, 0, 0, 0, @@ -5144,9 +5251,9 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_isa, 0, - MEMBER_TO_FPTR(Perl_magic_setisa), + Perl_magic_setisa, 0, - MEMBER_TO_FPTR(Perl_magic_clearisa), + Perl_magic_clearisa, 0, 0, 0, @@ -5156,7 +5263,7 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_isaelem, 0, - MEMBER_TO_FPTR(Perl_magic_setisa), + Perl_magic_setisa, 0, 0, 0, @@ -5167,8 +5274,8 @@ MGVTBL_SET( MGVTBL_SET_CONST_MAGIC_GET( PL_vtbl_arylen, - MEMBER_TO_FPTR(Perl_magic_getarylen), - MEMBER_TO_FPTR(Perl_magic_setarylen), + Perl_magic_getarylen, + Perl_magic_setarylen, 0, 0, 0, @@ -5183,7 +5290,7 @@ MGVTBL_SET( 0, 0, 0, - MEMBER_TO_FPTR(Perl_magic_freearylen_p), + Perl_magic_freearylen_p, 0, 0, 0 @@ -5192,7 +5299,7 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_mglob, 0, - MEMBER_TO_FPTR(Perl_magic_setmglob), + Perl_magic_setmglob, 0, 0, 0, @@ -5203,8 +5310,8 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_nkeys, - MEMBER_TO_FPTR(Perl_magic_getnkeys), - MEMBER_TO_FPTR(Perl_magic_setnkeys), + Perl_magic_getnkeys, + Perl_magic_setnkeys, 0, 0, 0, @@ -5215,8 +5322,8 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_taint, - MEMBER_TO_FPTR(Perl_magic_gettaint), - MEMBER_TO_FPTR(Perl_magic_settaint), + Perl_magic_gettaint, + Perl_magic_settaint, 0, 0, 0, @@ -5227,8 +5334,8 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_substr, - MEMBER_TO_FPTR(Perl_magic_getsubstr), - MEMBER_TO_FPTR(Perl_magic_setsubstr), + Perl_magic_getsubstr, + Perl_magic_setsubstr, 0, 0, 0, @@ -5239,8 +5346,8 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_vec, - MEMBER_TO_FPTR(Perl_magic_getvec), - MEMBER_TO_FPTR(Perl_magic_setvec), + Perl_magic_getvec, + Perl_magic_setvec, 0, 0, 0, @@ -5251,8 +5358,8 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_pos, - MEMBER_TO_FPTR(Perl_magic_getpos), - MEMBER_TO_FPTR(Perl_magic_setpos), + Perl_magic_getpos, + Perl_magic_setpos, 0, 0, 0, @@ -5264,7 +5371,7 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_bm, 0, - MEMBER_TO_FPTR(Perl_magic_setregexp), + Perl_magic_setregexp, 0, 0, 0, @@ -5276,7 +5383,7 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_fm, 0, - MEMBER_TO_FPTR(Perl_magic_setregexp), + Perl_magic_setregexp, 0, 0, 0, @@ -5287,8 +5394,8 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_uvar, - MEMBER_TO_FPTR(Perl_magic_getuvar), - MEMBER_TO_FPTR(Perl_magic_setuvar), + Perl_magic_getuvar, + Perl_magic_setuvar, 0, 0, 0, @@ -5299,8 +5406,8 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_defelem, - MEMBER_TO_FPTR(Perl_magic_getdefelem), - MEMBER_TO_FPTR(Perl_magic_setdefelem), + Perl_magic_getdefelem, + Perl_magic_setdefelem, 0, 0, 0, @@ -5312,7 +5419,7 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_regexp, 0, - MEMBER_TO_FPTR(Perl_magic_setregexp), + Perl_magic_setregexp, 0, 0, 0, @@ -5325,7 +5432,7 @@ MGVTBL_SET( PL_vtbl_regdata, 0, 0, - MEMBER_TO_FPTR(Perl_magic_regdata_cnt), + Perl_magic_regdata_cnt, 0, 0, 0, @@ -5335,8 +5442,8 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_regdatum, - MEMBER_TO_FPTR(Perl_magic_regdatum_get), - MEMBER_TO_FPTR(Perl_magic_regdatum_set), + Perl_magic_regdatum_get, + Perl_magic_regdatum_set, 0, 0, 0, @@ -5348,10 +5455,10 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_amagic, 0, - MEMBER_TO_FPTR(Perl_magic_setamagic), + Perl_magic_setamagic, 0, 0, - MEMBER_TO_FPTR(Perl_magic_setamagic), + Perl_magic_setamagic, 0, 0, 0 @@ -5360,10 +5467,10 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_amagicelem, 0, - MEMBER_TO_FPTR(Perl_magic_setamagic), + Perl_magic_setamagic, 0, 0, - MEMBER_TO_FPTR(Perl_magic_setamagic), + Perl_magic_setamagic, 0, 0, 0 @@ -5375,7 +5482,7 @@ MGVTBL_SET( 0, 0, 0, - MEMBER_TO_FPTR(Perl_magic_killbackrefs), + Perl_magic_killbackrefs, 0, 0, 0 @@ -5387,7 +5494,7 @@ MGVTBL_SET( 0, 0, 0, - MEMBER_TO_FPTR(Perl_magic_freeovrld), + Perl_magic_freeovrld, 0, 0, 0 @@ -5396,7 +5503,7 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_utf8, 0, - MEMBER_TO_FPTR(Perl_magic_setutf8), + Perl_magic_setutf8, 0, 0, 0, @@ -5408,7 +5515,7 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_collxfrm, 0, - MEMBER_TO_FPTR(Perl_magic_setcollxfrm), + Perl_magic_setcollxfrm, 0, 0, 0, @@ -5421,9 +5528,9 @@ MGVTBL_SET( MGVTBL_SET( PL_vtbl_hintselem, 0, - MEMBER_TO_FPTR(Perl_magic_sethint), + Perl_magic_sethint, 0, - MEMBER_TO_FPTR(Perl_magic_clearhint), + Perl_magic_clearhint, 0, 0, 0, @@ -5435,7 +5542,7 @@ MGVTBL_SET( 0, 0, 0, - MEMBER_TO_FPTR(Perl_magic_clearhints), + Perl_magic_clearhints, 0, 0, 0, @@ -5525,7 +5632,7 @@ typedef struct am_table_short AMTS; #define PERLDBf_NAMEEVAL 0x100 /* Informative names for evals */ #define PERLDBf_NAMEANON 0x200 /* Informative names for anon subs */ #define PERLDBf_SAVESRC 0x400 /* Save source lines into @{"_<$filename"} */ -#define PERLDBf_SAVESRC_NOSUBS 0x800 /* Including evals that generate no subrouties */ +#define PERLDBf_SAVESRC_NOSUBS 0x800 /* Including evals that generate no subroutines */ #define PERLDBf_SAVESRC_INVALID 0x1000 /* Save source that did not compile */ #define PERLDB_SUB (PL_perldb && (PL_perldb & PERLDBf_SUB)) @@ -5682,7 +5789,7 @@ typedef struct am_table_short AMTS; #ifndef PERL_MICRO # ifndef PERL_ASYNC_CHECK -# define PERL_ASYNC_CHECK() if (PL_sig_pending) despatch_signals() +# define PERL_ASYNC_CHECK() if (PL_sig_pending) PL_signalhook(aTHX) # endif #endif @@ -5756,98 +5863,72 @@ typedef struct am_table_short AMTS; #if defined(PERL_IMPLICIT_CONTEXT) -#ifdef PERL_GLOBAL_STRUCT_PRIVATE - -/* This must appear in all extensions that define a my_cxt_t structure, +/* START_MY_CXT must appear in all extensions that define a my_cxt_t structure, * right after the definition (i.e. at file scope). The non-threads * case below uses it to declare the data as static. */ -#define START_MY_CXT -#define MY_CXT_INDEX Perl_my_cxt_index(aTHX_ MY_CXT_KEY) +# ifdef PERL_GLOBAL_STRUCT_PRIVATE +# define START_MY_CXT +# define MY_CXT_INDEX Perl_my_cxt_index(aTHX_ MY_CXT_KEY) +# define MY_CXT_INIT_ARG MY_CXT_KEY +# else +# define START_MY_CXT static int my_cxt_index = -1; +# define MY_CXT_INDEX my_cxt_index +# define MY_CXT_INIT_ARG &my_cxt_index +# endif /* #ifdef PERL_GLOBAL_STRUCT_PRIVATE */ /* Creates and zeroes the per-interpreter data. * (We allocate my_cxtp in a Perl SV so that it will be released when * the interpreter goes away.) */ -#define MY_CXT_INIT \ +# define MY_CXT_INIT \ my_cxt_t *my_cxtp = \ - (my_cxt_t*)Perl_my_cxt_init(aTHX_ MY_CXT_KEY, sizeof(my_cxt_t)) -#define MY_CXT_INIT_INTERP(my_perl) \ + (my_cxt_t*)Perl_my_cxt_init(aTHX_ MY_CXT_INIT_ARG, sizeof(my_cxt_t)) +# define MY_CXT_INIT_INTERP(my_perl) \ my_cxt_t *my_cxtp = \ - (my_cxt_t*)Perl_my_cxt_init(my_perl, MY_CXT_KEY, sizeof(my_cxt_t)) + (my_cxt_t*)Perl_my_cxt_init(my_perl, MY_CXT_INIT_ARG, sizeof(my_cxt_t)) /* This declaration should be used within all functions that use the * interpreter-local data. */ -#define dMY_CXT \ +# define dMY_CXT \ my_cxt_t *my_cxtp = (my_cxt_t *)PL_my_cxt_list[MY_CXT_INDEX] -#define dMY_CXT_INTERP(my_perl) \ +# define dMY_CXT_INTERP(my_perl) \ my_cxt_t *my_cxtp = (my_cxt_t *)(my_perl)->Imy_cxt_list[MY_CXT_INDEX] /* Clones the per-interpreter data. */ -#define MY_CXT_CLONE \ +# define MY_CXT_CLONE \ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ Copy(PL_my_cxt_list[MY_CXT_INDEX], my_cxtp, 1, my_cxt_t);\ PL_my_cxt_list[MY_CXT_INDEX] = my_cxtp \ -#else /* #ifdef PERL_GLOBAL_STRUCT_PRIVATE */ - -/* This must appear in all extensions that define a my_cxt_t structure, - * right after the definition (i.e. at file scope). The non-threads - * case below uses it to declare the data as static. */ -#define START_MY_CXT static int my_cxt_index = -1; - -/* This declaration should be used within all functions that use the - * interpreter-local data. */ -#define dMY_CXT \ - my_cxt_t *my_cxtp = (my_cxt_t *)PL_my_cxt_list[my_cxt_index] -#define dMY_CXT_INTERP(my_perl) \ - my_cxt_t *my_cxtp = (my_cxt_t *)(my_perl)->Imy_cxt_list[my_cxt_index] - -/* Creates and zeroes the per-interpreter data. - * (We allocate my_cxtp in a Perl SV so that it will be released when - * the interpreter goes away.) */ -#define MY_CXT_INIT \ - my_cxt_t *my_cxtp = \ - (my_cxt_t*)Perl_my_cxt_init(aTHX_ &my_cxt_index, sizeof(my_cxt_t)) -#define MY_CXT_INIT_INTERP(my_perl) \ - my_cxt_t *my_cxtp = \ - (my_cxt_t*)Perl_my_cxt_init(my_perl, &my_cxt_index, sizeof(my_cxt_t)) - -/* Clones the per-interpreter data. */ -#define MY_CXT_CLONE \ - my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ - Copy(PL_my_cxt_list[my_cxt_index], my_cxtp, 1, my_cxt_t);\ - PL_my_cxt_list[my_cxt_index] = my_cxtp \ - -#endif /* #ifdef PERL_GLOBAL_STRUCT_PRIVATE */ /* This macro must be used to access members of the my_cxt_t structure. * e.g. MYCXT.some_data */ -#define MY_CXT (*my_cxtp) +# define MY_CXT (*my_cxtp) /* Judicious use of these macros can reduce the number of times dMY_CXT * is used. Use is similar to pTHX, aTHX etc. */ -#define pMY_CXT my_cxt_t *my_cxtp -#define pMY_CXT_ pMY_CXT, -#define _pMY_CXT ,pMY_CXT -#define aMY_CXT my_cxtp -#define aMY_CXT_ aMY_CXT, -#define _aMY_CXT ,aMY_CXT +# define pMY_CXT my_cxt_t *my_cxtp +# define pMY_CXT_ pMY_CXT, +# define _pMY_CXT ,pMY_CXT +# define aMY_CXT my_cxtp +# define aMY_CXT_ aMY_CXT, +# define _aMY_CXT ,aMY_CXT #else /* PERL_IMPLICIT_CONTEXT */ -#define START_MY_CXT static my_cxt_t my_cxt; -#define dMY_CXT_SV dNOOP -#define dMY_CXT dNOOP -#define dMY_CXT_INTERP(my_perl) dNOOP -#define MY_CXT_INIT NOOP -#define MY_CXT_CLONE NOOP -#define MY_CXT my_cxt - -#define pMY_CXT void -#define pMY_CXT_ -#define _pMY_CXT -#define aMY_CXT -#define aMY_CXT_ -#define _aMY_CXT +# define START_MY_CXT static my_cxt_t my_cxt; +# define dMY_CXT_SV dNOOP +# define dMY_CXT dNOOP +# define dMY_CXT_INTERP(my_perl) dNOOP +# define MY_CXT_INIT NOOP +# define MY_CXT_CLONE NOOP +# define MY_CXT my_cxt + +# define pMY_CXT void +# define pMY_CXT_ +# define _pMY_CXT +# define aMY_CXT +# define aMY_CXT_ +# define _aMY_CXT #endif /* !defined(PERL_IMPLICIT_CONTEXT) */ @@ -6013,36 +6094,6 @@ extern void moncontrol(int); #define PERL_SIGNALS_UNSAFE_FLAG 0x0001 -/* From sigaction(2) (FreeBSD man page): - * | Signal routines normally execute with the signal that - * | caused their invocation blocked, but other signals may - * | yet occur. - * Emulation of this behavior (from within Perl) is enabled - * by defining PERL_BLOCK_SIGNALS. - */ -#define PERL_BLOCK_SIGNALS - -#if defined(HAS_SIGPROCMASK) && defined(PERL_BLOCK_SIGNALS) -# define PERL_BLOCKSIG_ADD(set,sig) \ - sigset_t set; sigemptyset(&(set)); sigaddset(&(set), sig) -# define PERL_BLOCKSIG_BLOCK(set) \ - sigprocmask(SIG_BLOCK, &(set), NULL) -# define PERL_BLOCKSIG_UNBLOCK(set) \ - sigprocmask(SIG_UNBLOCK, &(set), NULL) -#endif /* HAS_SIGPROCMASK && PERL_BLOCK_SIGNALS */ - -/* How about the old style of sigblock()? */ - -#ifndef PERL_BLOCKSIG_ADD -# define PERL_BLOCKSIG_ADD(set, sig) NOOP -#endif -#ifndef PERL_BLOCKSIG_BLOCK -# define PERL_BLOCKSIG_BLOCK(set) NOOP -#endif -#ifndef PERL_BLOCKSIG_UNBLOCK -# define PERL_BLOCKSIG_UNBLOCK(set) NOOP -#endif - /* Use instead of abs() since abs() forces its argument to be an int, * but also beware since this evaluates its argument twice, so no x++. */ #define PERL_ABS(x) ((x) < 0 ? -(x) : (x)) @@ -6083,6 +6134,7 @@ extern void moncontrol(int); #define PERL_PV_ESCAPE_UNI 0x0100 #define PERL_PV_ESCAPE_UNI_DETECT 0x0200 +#define PERL_PV_ESCAPE_NONASCII 0x0400 #define PERL_PV_ESCAPE_ALL 0x1000 #define PERL_PV_ESCAPE_NOBACKSLASH 0x2000 @@ -6093,7 +6145,15 @@ extern void moncontrol(int); /* used by pv_display in dump.c*/ #define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE -#define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE +#define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE|PERL_PV_ESCAPE_NONASCII + +#ifdef PERL_CORE +# define FEATURE_IS_ENABLED(name) \ + ((0 != (PL_hints & HINT_LOCALIZE_HH)) \ + && Perl_feature_is_enabled(aTHX_ STR_WITH_LEN(name))) +/* The longest string we pass in. */ +# define MAX_FEATURE_LEN (sizeof("unicode_strings")-1) +#endif /* diff --git a/Master/tlpkg/tlperl/lib/CORE/perlapi.h b/Master/tlpkg/tlperl/lib/CORE/perlapi.h index 54ddab03108..d7d55d6d97e 100644 --- a/Master/tlpkg/tlperl/lib/CORE/perlapi.h +++ b/Master/tlpkg/tlperl/lib/CORE/perlapi.h @@ -1,16 +1,16 @@ -/* -*- buffer-read-only: t -*- +/* -*- buffer-read-only: t -*- * * perlapi.h * - * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, - * 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, by Larry Wall and others + * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, + * 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - * This file is built by embed.pl from data in embed.fnc, embed.pl, - * pp.sym, intrpvar.h, and perlvars.h. + * This file is built by regen/embed.pl from data in embed.fnc, + * regen/embed.pl, regen/opcodes, intrpvar.h and perlvars.h. * Any changes made here will be lost! * * Edit those files and run 'make regen_headers' to effect changes. @@ -20,7 +20,7 @@ #ifndef __perlapi_h__ #define __perlapi_h__ -#if defined (MULTIPLICITY) +#if defined (MULTIPLICITY) && defined (PERL_GLOBAL_STRUCT) START_EXTERN_C @@ -37,7 +37,6 @@ START_EXTERN_C #define PERLVARISC(v,i) typedef const char PL_##v##_t[sizeof(i)]; \ EXTERN_C PL_##v##_t* Perl_##v##_ptr(pTHX); -#include "intrpvar.h" #include "perlvars.h" #undef PERLVAR @@ -46,20 +45,11 @@ START_EXTERN_C #undef PERLVARIC #undef PERLVARISC -#ifndef PERL_GLOBAL_STRUCT -EXTERN_C Perl_ppaddr_t** Perl_Gppaddr_ptr(pTHX); -EXTERN_C Perl_check_t** Perl_Gcheck_ptr(pTHX); -EXTERN_C unsigned char** Perl_Gfold_locale_ptr(pTHX); -#define Perl_ppaddr_ptr Perl_Gppaddr_ptr -#define Perl_check_ptr Perl_Gcheck_ptr -#define Perl_fold_locale_ptr Perl_Gfold_locale_ptr -#endif - END_EXTERN_C #if defined(PERL_CORE) -/* accessor functions for Perl variables (provide binary compatibility) */ +/* accessor functions for Perl "global" variables */ /* these need to be mentioned here, or most linkers won't put them in the perl executable */ @@ -95,7 +85,6 @@ EXTCONST void * const PL_force_link_funcs[] = { #pragma message disable (nonstandcast) #endif -#include "intrpvar.h" #include "perlvars.h" #if defined(__DECC) && defined(__osf__) @@ -116,656 +105,14 @@ END_EXTERN_C #else /* !PERL_CORE */ -#undef PL_Argv -#define PL_Argv (*Perl_IArgv_ptr(aTHX)) -#undef PL_Cmd -#define PL_Cmd (*Perl_ICmd_ptr(aTHX)) -#undef PL_DBcv -#define PL_DBcv (*Perl_IDBcv_ptr(aTHX)) -#undef PL_DBgv -#define PL_DBgv (*Perl_IDBgv_ptr(aTHX)) -#undef PL_DBline -#define PL_DBline (*Perl_IDBline_ptr(aTHX)) -#undef PL_DBsignal -#define PL_DBsignal (*Perl_IDBsignal_ptr(aTHX)) -#undef PL_DBsingle -#define PL_DBsingle (*Perl_IDBsingle_ptr(aTHX)) -#undef PL_DBsub -#define PL_DBsub (*Perl_IDBsub_ptr(aTHX)) -#undef PL_DBtrace -#define PL_DBtrace (*Perl_IDBtrace_ptr(aTHX)) -#undef PL_Dir -#define PL_Dir (*Perl_IDir_ptr(aTHX)) -#undef PL_Env -#define PL_Env (*Perl_IEnv_ptr(aTHX)) -#undef PL_LIO -#define PL_LIO (*Perl_ILIO_ptr(aTHX)) -#undef PL_Mem -#define PL_Mem (*Perl_IMem_ptr(aTHX)) -#undef PL_MemParse -#define PL_MemParse (*Perl_IMemParse_ptr(aTHX)) -#undef PL_MemShared -#define PL_MemShared (*Perl_IMemShared_ptr(aTHX)) -#undef PL_OpPtr -#define PL_OpPtr (*Perl_IOpPtr_ptr(aTHX)) -#undef PL_OpSlab -#define PL_OpSlab (*Perl_IOpSlab_ptr(aTHX)) -#undef PL_OpSpace -#define PL_OpSpace (*Perl_IOpSpace_ptr(aTHX)) -#undef PL_Proc -#define PL_Proc (*Perl_IProc_ptr(aTHX)) -#undef PL_Sock -#define PL_Sock (*Perl_ISock_ptr(aTHX)) -#undef PL_StdIO -#define PL_StdIO (*Perl_IStdIO_ptr(aTHX)) -#undef PL_Sv -#define PL_Sv (*Perl_ISv_ptr(aTHX)) -#undef PL_Xpv -#define PL_Xpv (*Perl_IXpv_ptr(aTHX)) -#undef PL_amagic_generation -#define PL_amagic_generation (*Perl_Iamagic_generation_ptr(aTHX)) -#undef PL_an -#define PL_an (*Perl_Ian_ptr(aTHX)) -#undef PL_argvgv -#define PL_argvgv (*Perl_Iargvgv_ptr(aTHX)) -#undef PL_argvout_stack -#define PL_argvout_stack (*Perl_Iargvout_stack_ptr(aTHX)) -#undef PL_argvoutgv -#define PL_argvoutgv (*Perl_Iargvoutgv_ptr(aTHX)) -#undef PL_basetime -#define PL_basetime (*Perl_Ibasetime_ptr(aTHX)) -#undef PL_beginav -#define PL_beginav (*Perl_Ibeginav_ptr(aTHX)) -#undef PL_beginav_save -#define PL_beginav_save (*Perl_Ibeginav_save_ptr(aTHX)) -#undef PL_body_arenas -#define PL_body_arenas (*Perl_Ibody_arenas_ptr(aTHX)) -#undef PL_body_roots -#define PL_body_roots (*Perl_Ibody_roots_ptr(aTHX)) -#undef PL_bodytarget -#define PL_bodytarget (*Perl_Ibodytarget_ptr(aTHX)) -#undef PL_breakable_sub_gen -#define PL_breakable_sub_gen (*Perl_Ibreakable_sub_gen_ptr(aTHX)) -#undef PL_checkav -#define PL_checkav (*Perl_Icheckav_ptr(aTHX)) -#undef PL_checkav_save -#define PL_checkav_save (*Perl_Icheckav_save_ptr(aTHX)) -#undef PL_chopset -#define PL_chopset (*Perl_Ichopset_ptr(aTHX)) -#undef PL_clocktick -#define PL_clocktick (*Perl_Iclocktick_ptr(aTHX)) -#undef PL_collation_ix -#define PL_collation_ix (*Perl_Icollation_ix_ptr(aTHX)) -#undef PL_collation_name -#define PL_collation_name (*Perl_Icollation_name_ptr(aTHX)) -#undef PL_collation_standard -#define PL_collation_standard (*Perl_Icollation_standard_ptr(aTHX)) -#undef PL_collxfrm_base -#define PL_collxfrm_base (*Perl_Icollxfrm_base_ptr(aTHX)) -#undef PL_collxfrm_mult -#define PL_collxfrm_mult (*Perl_Icollxfrm_mult_ptr(aTHX)) -#undef PL_colors -#define PL_colors (*Perl_Icolors_ptr(aTHX)) -#undef PL_colorset -#define PL_colorset (*Perl_Icolorset_ptr(aTHX)) -#undef PL_compcv -#define PL_compcv (*Perl_Icompcv_ptr(aTHX)) -#undef PL_compiling -#define PL_compiling (*Perl_Icompiling_ptr(aTHX)) -#undef PL_comppad -#define PL_comppad (*Perl_Icomppad_ptr(aTHX)) -#undef PL_comppad_name -#define PL_comppad_name (*Perl_Icomppad_name_ptr(aTHX)) -#undef PL_comppad_name_fill -#define PL_comppad_name_fill (*Perl_Icomppad_name_fill_ptr(aTHX)) -#undef PL_comppad_name_floor -#define PL_comppad_name_floor (*Perl_Icomppad_name_floor_ptr(aTHX)) -#undef PL_cop_seqmax -#define PL_cop_seqmax (*Perl_Icop_seqmax_ptr(aTHX)) -#undef PL_cryptseen -#define PL_cryptseen (*Perl_Icryptseen_ptr(aTHX)) -#undef PL_curcop -#define PL_curcop (*Perl_Icurcop_ptr(aTHX)) -#undef PL_curcopdb -#define PL_curcopdb (*Perl_Icurcopdb_ptr(aTHX)) -#undef PL_curpad -#define PL_curpad (*Perl_Icurpad_ptr(aTHX)) -#undef PL_curpm -#define PL_curpm (*Perl_Icurpm_ptr(aTHX)) -#undef PL_curstack -#define PL_curstack (*Perl_Icurstack_ptr(aTHX)) -#undef PL_curstackinfo -#define PL_curstackinfo (*Perl_Icurstackinfo_ptr(aTHX)) -#undef PL_curstash -#define PL_curstash (*Perl_Icurstash_ptr(aTHX)) -#undef PL_curstname -#define PL_curstname (*Perl_Icurstname_ptr(aTHX)) -#undef PL_custom_op_descs -#define PL_custom_op_descs (*Perl_Icustom_op_descs_ptr(aTHX)) -#undef PL_custom_op_names -#define PL_custom_op_names (*Perl_Icustom_op_names_ptr(aTHX)) -#undef PL_cv_has_eval -#define PL_cv_has_eval (*Perl_Icv_has_eval_ptr(aTHX)) -#undef PL_dbargs -#define PL_dbargs (*Perl_Idbargs_ptr(aTHX)) -#undef PL_debstash -#define PL_debstash (*Perl_Idebstash_ptr(aTHX)) -#undef PL_debug -#define PL_debug (*Perl_Idebug_ptr(aTHX)) -#undef PL_debug_pad -#define PL_debug_pad (*Perl_Idebug_pad_ptr(aTHX)) -#undef PL_def_layerlist -#define PL_def_layerlist (*Perl_Idef_layerlist_ptr(aTHX)) -#undef PL_defgv -#define PL_defgv (*Perl_Idefgv_ptr(aTHX)) -#undef PL_defoutgv -#define PL_defoutgv (*Perl_Idefoutgv_ptr(aTHX)) -#undef PL_defstash -#define PL_defstash (*Perl_Idefstash_ptr(aTHX)) -#undef PL_delaymagic -#define PL_delaymagic (*Perl_Idelaymagic_ptr(aTHX)) -#undef PL_destroyhook -#define PL_destroyhook (*Perl_Idestroyhook_ptr(aTHX)) -#undef PL_diehook -#define PL_diehook (*Perl_Idiehook_ptr(aTHX)) -#undef PL_dirty -#define PL_dirty (*Perl_Idirty_ptr(aTHX)) -#undef PL_doextract -#define PL_doextract (*Perl_Idoextract_ptr(aTHX)) -#undef PL_doswitches -#define PL_doswitches (*Perl_Idoswitches_ptr(aTHX)) -#undef PL_dowarn -#define PL_dowarn (*Perl_Idowarn_ptr(aTHX)) -#undef PL_dumper_fd -#define PL_dumper_fd (*Perl_Idumper_fd_ptr(aTHX)) -#undef PL_dumpindent -#define PL_dumpindent (*Perl_Idumpindent_ptr(aTHX)) -#undef PL_e_script -#define PL_e_script (*Perl_Ie_script_ptr(aTHX)) -#undef PL_efloatbuf -#define PL_efloatbuf (*Perl_Iefloatbuf_ptr(aTHX)) -#undef PL_efloatsize -#define PL_efloatsize (*Perl_Iefloatsize_ptr(aTHX)) -#undef PL_egid -#define PL_egid (*Perl_Iegid_ptr(aTHX)) -#undef PL_encoding -#define PL_encoding (*Perl_Iencoding_ptr(aTHX)) -#undef PL_endav -#define PL_endav (*Perl_Iendav_ptr(aTHX)) -#undef PL_envgv -#define PL_envgv (*Perl_Ienvgv_ptr(aTHX)) -#undef PL_errgv -#define PL_errgv (*Perl_Ierrgv_ptr(aTHX)) -#undef PL_errors -#define PL_errors (*Perl_Ierrors_ptr(aTHX)) -#undef PL_euid -#define PL_euid (*Perl_Ieuid_ptr(aTHX)) -#undef PL_eval_root -#define PL_eval_root (*Perl_Ieval_root_ptr(aTHX)) -#undef PL_eval_start -#define PL_eval_start (*Perl_Ieval_start_ptr(aTHX)) -#undef PL_evalseq -#define PL_evalseq (*Perl_Ievalseq_ptr(aTHX)) -#undef PL_exit_flags -#define PL_exit_flags (*Perl_Iexit_flags_ptr(aTHX)) -#undef PL_exitlist -#define PL_exitlist (*Perl_Iexitlist_ptr(aTHX)) -#undef PL_exitlistlen -#define PL_exitlistlen (*Perl_Iexitlistlen_ptr(aTHX)) -#undef PL_fdpid -#define PL_fdpid (*Perl_Ifdpid_ptr(aTHX)) -#undef PL_filemode -#define PL_filemode (*Perl_Ifilemode_ptr(aTHX)) -#undef PL_firstgv -#define PL_firstgv (*Perl_Ifirstgv_ptr(aTHX)) -#undef PL_forkprocess -#define PL_forkprocess (*Perl_Iforkprocess_ptr(aTHX)) -#undef PL_formfeed -#define PL_formfeed (*Perl_Iformfeed_ptr(aTHX)) -#undef PL_formtarget -#define PL_formtarget (*Perl_Iformtarget_ptr(aTHX)) -#undef PL_generation -#define PL_generation (*Perl_Igeneration_ptr(aTHX)) -#undef PL_gensym -#define PL_gensym (*Perl_Igensym_ptr(aTHX)) -#undef PL_gid -#define PL_gid (*Perl_Igid_ptr(aTHX)) -#undef PL_glob_index -#define PL_glob_index (*Perl_Iglob_index_ptr(aTHX)) -#undef PL_globalstash -#define PL_globalstash (*Perl_Iglobalstash_ptr(aTHX)) -#undef PL_hash_seed -#define PL_hash_seed (*Perl_Ihash_seed_ptr(aTHX)) -#undef PL_hintgv -#define PL_hintgv (*Perl_Ihintgv_ptr(aTHX)) -#undef PL_hints -#define PL_hints (*Perl_Ihints_ptr(aTHX)) -#undef PL_hv_fetch_ent_mh -#define PL_hv_fetch_ent_mh (*Perl_Ihv_fetch_ent_mh_ptr(aTHX)) -#undef PL_in_clean_all -#define PL_in_clean_all (*Perl_Iin_clean_all_ptr(aTHX)) -#undef PL_in_clean_objs -#define PL_in_clean_objs (*Perl_Iin_clean_objs_ptr(aTHX)) -#undef PL_in_eval -#define PL_in_eval (*Perl_Iin_eval_ptr(aTHX)) -#undef PL_in_load_module -#define PL_in_load_module (*Perl_Iin_load_module_ptr(aTHX)) -#undef PL_incgv -#define PL_incgv (*Perl_Iincgv_ptr(aTHX)) -#undef PL_initav -#define PL_initav (*Perl_Iinitav_ptr(aTHX)) -#undef PL_inplace -#define PL_inplace (*Perl_Iinplace_ptr(aTHX)) -#undef PL_isarev -#define PL_isarev (*Perl_Iisarev_ptr(aTHX)) -#undef PL_known_layers -#define PL_known_layers (*Perl_Iknown_layers_ptr(aTHX)) -#undef PL_last_in_gv -#define PL_last_in_gv (*Perl_Ilast_in_gv_ptr(aTHX)) -#undef PL_last_swash_hv -#define PL_last_swash_hv (*Perl_Ilast_swash_hv_ptr(aTHX)) -#undef PL_last_swash_key -#define PL_last_swash_key (*Perl_Ilast_swash_key_ptr(aTHX)) -#undef PL_last_swash_klen -#define PL_last_swash_klen (*Perl_Ilast_swash_klen_ptr(aTHX)) -#undef PL_last_swash_slen -#define PL_last_swash_slen (*Perl_Ilast_swash_slen_ptr(aTHX)) -#undef PL_last_swash_tmps -#define PL_last_swash_tmps (*Perl_Ilast_swash_tmps_ptr(aTHX)) -#undef PL_lastfd -#define PL_lastfd (*Perl_Ilastfd_ptr(aTHX)) -#undef PL_lastgotoprobe -#define PL_lastgotoprobe (*Perl_Ilastgotoprobe_ptr(aTHX)) -#undef PL_lastscream -#define PL_lastscream (*Perl_Ilastscream_ptr(aTHX)) -#undef PL_laststatval -#define PL_laststatval (*Perl_Ilaststatval_ptr(aTHX)) -#undef PL_laststype -#define PL_laststype (*Perl_Ilaststype_ptr(aTHX)) -#undef PL_localizing -#define PL_localizing (*Perl_Ilocalizing_ptr(aTHX)) -#undef PL_localpatches -#define PL_localpatches (*Perl_Ilocalpatches_ptr(aTHX)) -#undef PL_lockhook -#define PL_lockhook (*Perl_Ilockhook_ptr(aTHX)) -#undef PL_madskills -#define PL_madskills (*Perl_Imadskills_ptr(aTHX)) -#undef PL_main_cv -#define PL_main_cv (*Perl_Imain_cv_ptr(aTHX)) -#undef PL_main_root -#define PL_main_root (*Perl_Imain_root_ptr(aTHX)) -#undef PL_main_start -#define PL_main_start (*Perl_Imain_start_ptr(aTHX)) -#undef PL_mainstack -#define PL_mainstack (*Perl_Imainstack_ptr(aTHX)) -#undef PL_markstack -#define PL_markstack (*Perl_Imarkstack_ptr(aTHX)) -#undef PL_markstack_max -#define PL_markstack_max (*Perl_Imarkstack_max_ptr(aTHX)) -#undef PL_markstack_ptr -#define PL_markstack_ptr (*Perl_Imarkstack_ptr_ptr(aTHX)) -#undef PL_max_intro_pending -#define PL_max_intro_pending (*Perl_Imax_intro_pending_ptr(aTHX)) -#undef PL_maxo -#define PL_maxo (*Perl_Imaxo_ptr(aTHX)) -#undef PL_maxscream -#define PL_maxscream (*Perl_Imaxscream_ptr(aTHX)) -#undef PL_maxsysfd -#define PL_maxsysfd (*Perl_Imaxsysfd_ptr(aTHX)) -#undef PL_memory_debug_header -#define PL_memory_debug_header (*Perl_Imemory_debug_header_ptr(aTHX)) -#undef PL_mess_sv -#define PL_mess_sv (*Perl_Imess_sv_ptr(aTHX)) -#undef PL_min_intro_pending -#define PL_min_intro_pending (*Perl_Imin_intro_pending_ptr(aTHX)) -#undef PL_minus_E -#define PL_minus_E (*Perl_Iminus_E_ptr(aTHX)) -#undef PL_minus_F -#define PL_minus_F (*Perl_Iminus_F_ptr(aTHX)) -#undef PL_minus_a -#define PL_minus_a (*Perl_Iminus_a_ptr(aTHX)) -#undef PL_minus_c -#define PL_minus_c (*Perl_Iminus_c_ptr(aTHX)) -#undef PL_minus_l -#define PL_minus_l (*Perl_Iminus_l_ptr(aTHX)) -#undef PL_minus_n -#define PL_minus_n (*Perl_Iminus_n_ptr(aTHX)) -#undef PL_minus_p -#define PL_minus_p (*Perl_Iminus_p_ptr(aTHX)) -#undef PL_modcount -#define PL_modcount (*Perl_Imodcount_ptr(aTHX)) -#undef PL_modglobal -#define PL_modglobal (*Perl_Imodglobal_ptr(aTHX)) -#undef PL_my_cxt_keys -#define PL_my_cxt_keys (*Perl_Imy_cxt_keys_ptr(aTHX)) -#undef PL_my_cxt_list -#define PL_my_cxt_list (*Perl_Imy_cxt_list_ptr(aTHX)) -#undef PL_my_cxt_size -#define PL_my_cxt_size (*Perl_Imy_cxt_size_ptr(aTHX)) -#undef PL_na -#define PL_na (*Perl_Ina_ptr(aTHX)) -#undef PL_nice_chunk -#define PL_nice_chunk (*Perl_Inice_chunk_ptr(aTHX)) -#undef PL_nice_chunk_size -#define PL_nice_chunk_size (*Perl_Inice_chunk_size_ptr(aTHX)) -#undef PL_nomemok -#define PL_nomemok (*Perl_Inomemok_ptr(aTHX)) -#undef PL_numeric_local -#define PL_numeric_local (*Perl_Inumeric_local_ptr(aTHX)) -#undef PL_numeric_name -#define PL_numeric_name (*Perl_Inumeric_name_ptr(aTHX)) -#undef PL_numeric_radix_sv -#define PL_numeric_radix_sv (*Perl_Inumeric_radix_sv_ptr(aTHX)) -#undef PL_numeric_standard -#define PL_numeric_standard (*Perl_Inumeric_standard_ptr(aTHX)) -#undef PL_ofsgv -#define PL_ofsgv (*Perl_Iofsgv_ptr(aTHX)) -#undef PL_oldname -#define PL_oldname (*Perl_Ioldname_ptr(aTHX)) -#undef PL_op -#define PL_op (*Perl_Iop_ptr(aTHX)) -#undef PL_op_mask -#define PL_op_mask (*Perl_Iop_mask_ptr(aTHX)) -#undef PL_opfreehook -#define PL_opfreehook (*Perl_Iopfreehook_ptr(aTHX)) -#undef PL_opsave -#define PL_opsave (*Perl_Iopsave_ptr(aTHX)) -#undef PL_origalen -#define PL_origalen (*Perl_Iorigalen_ptr(aTHX)) -#undef PL_origargc -#define PL_origargc (*Perl_Iorigargc_ptr(aTHX)) -#undef PL_origargv -#define PL_origargv (*Perl_Iorigargv_ptr(aTHX)) -#undef PL_origenviron -#define PL_origenviron (*Perl_Iorigenviron_ptr(aTHX)) -#undef PL_origfilename -#define PL_origfilename (*Perl_Iorigfilename_ptr(aTHX)) -#undef PL_ors_sv -#define PL_ors_sv (*Perl_Iors_sv_ptr(aTHX)) -#undef PL_osname -#define PL_osname (*Perl_Iosname_ptr(aTHX)) -#undef PL_pad_reset_pending -#define PL_pad_reset_pending (*Perl_Ipad_reset_pending_ptr(aTHX)) -#undef PL_padix -#define PL_padix (*Perl_Ipadix_ptr(aTHX)) -#undef PL_padix_floor -#define PL_padix_floor (*Perl_Ipadix_floor_ptr(aTHX)) -#undef PL_parser -#define PL_parser (*Perl_Iparser_ptr(aTHX)) -#undef PL_patchlevel -#define PL_patchlevel (*Perl_Ipatchlevel_ptr(aTHX)) -#undef PL_peepp -#define PL_peepp (*Perl_Ipeepp_ptr(aTHX)) -#undef PL_perl_destruct_level -#define PL_perl_destruct_level (*Perl_Iperl_destruct_level_ptr(aTHX)) -#undef PL_perldb -#define PL_perldb (*Perl_Iperldb_ptr(aTHX)) -#undef PL_perlio -#define PL_perlio (*Perl_Iperlio_ptr(aTHX)) -#undef PL_pidstatus -#define PL_pidstatus (*Perl_Ipidstatus_ptr(aTHX)) -#undef PL_ppid -#define PL_ppid (*Perl_Ippid_ptr(aTHX)) -#undef PL_preambleav -#define PL_preambleav (*Perl_Ipreambleav_ptr(aTHX)) -#undef PL_profiledata -#define PL_profiledata (*Perl_Iprofiledata_ptr(aTHX)) -#undef PL_psig_name -#define PL_psig_name (*Perl_Ipsig_name_ptr(aTHX)) -#undef PL_psig_pend -#define PL_psig_pend (*Perl_Ipsig_pend_ptr(aTHX)) -#undef PL_psig_ptr -#define PL_psig_ptr (*Perl_Ipsig_ptr_ptr(aTHX)) -#undef PL_ptr_table -#define PL_ptr_table (*Perl_Iptr_table_ptr(aTHX)) -#undef PL_reentrant_buffer -#define PL_reentrant_buffer (*Perl_Ireentrant_buffer_ptr(aTHX)) -#undef PL_reentrant_retint -#define PL_reentrant_retint (*Perl_Ireentrant_retint_ptr(aTHX)) -#undef PL_reg_state -#define PL_reg_state (*Perl_Ireg_state_ptr(aTHX)) -#undef PL_regdummy -#define PL_regdummy (*Perl_Iregdummy_ptr(aTHX)) -#undef PL_regex_pad -#define PL_regex_pad (*Perl_Iregex_pad_ptr(aTHX)) -#undef PL_regex_padav -#define PL_regex_padav (*Perl_Iregex_padav_ptr(aTHX)) -#undef PL_reginterp_cnt -#define PL_reginterp_cnt (*Perl_Ireginterp_cnt_ptr(aTHX)) -#undef PL_registered_mros -#define PL_registered_mros (*Perl_Iregistered_mros_ptr(aTHX)) -#undef PL_regmatch_slab -#define PL_regmatch_slab (*Perl_Iregmatch_slab_ptr(aTHX)) -#undef PL_regmatch_state -#define PL_regmatch_state (*Perl_Iregmatch_state_ptr(aTHX)) -#undef PL_rehash_seed -#define PL_rehash_seed (*Perl_Irehash_seed_ptr(aTHX)) -#undef PL_rehash_seed_set -#define PL_rehash_seed_set (*Perl_Irehash_seed_set_ptr(aTHX)) -#undef PL_replgv -#define PL_replgv (*Perl_Ireplgv_ptr(aTHX)) -#undef PL_restartop -#define PL_restartop (*Perl_Irestartop_ptr(aTHX)) -#undef PL_rs -#define PL_rs (*Perl_Irs_ptr(aTHX)) -#undef PL_runops -#define PL_runops (*Perl_Irunops_ptr(aTHX)) -#undef PL_savebegin -#define PL_savebegin (*Perl_Isavebegin_ptr(aTHX)) -#undef PL_savestack -#define PL_savestack (*Perl_Isavestack_ptr(aTHX)) -#undef PL_savestack_ix -#define PL_savestack_ix (*Perl_Isavestack_ix_ptr(aTHX)) -#undef PL_savestack_max -#define PL_savestack_max (*Perl_Isavestack_max_ptr(aTHX)) -#undef PL_sawampersand -#define PL_sawampersand (*Perl_Isawampersand_ptr(aTHX)) -#undef PL_scopestack -#define PL_scopestack (*Perl_Iscopestack_ptr(aTHX)) -#undef PL_scopestack_ix -#define PL_scopestack_ix (*Perl_Iscopestack_ix_ptr(aTHX)) -#undef PL_scopestack_max -#define PL_scopestack_max (*Perl_Iscopestack_max_ptr(aTHX)) -#undef PL_scopestack_name -#define PL_scopestack_name (*Perl_Iscopestack_name_ptr(aTHX)) -#undef PL_screamfirst -#define PL_screamfirst (*Perl_Iscreamfirst_ptr(aTHX)) -#undef PL_screamnext -#define PL_screamnext (*Perl_Iscreamnext_ptr(aTHX)) -#undef PL_secondgv -#define PL_secondgv (*Perl_Isecondgv_ptr(aTHX)) -#undef PL_sharehook -#define PL_sharehook (*Perl_Isharehook_ptr(aTHX)) -#undef PL_sig_pending -#define PL_sig_pending (*Perl_Isig_pending_ptr(aTHX)) -#undef PL_sighandlerp -#define PL_sighandlerp (*Perl_Isighandlerp_ptr(aTHX)) -#undef PL_signals -#define PL_signals (*Perl_Isignals_ptr(aTHX)) -#undef PL_slab_count -#define PL_slab_count (*Perl_Islab_count_ptr(aTHX)) -#undef PL_slabs -#define PL_slabs (*Perl_Islabs_ptr(aTHX)) -#undef PL_sort_RealCmp -#define PL_sort_RealCmp (*Perl_Isort_RealCmp_ptr(aTHX)) -#undef PL_sortcop -#define PL_sortcop (*Perl_Isortcop_ptr(aTHX)) -#undef PL_sortstash -#define PL_sortstash (*Perl_Isortstash_ptr(aTHX)) -#undef PL_splitstr -#define PL_splitstr (*Perl_Isplitstr_ptr(aTHX)) -#undef PL_srand_called -#define PL_srand_called (*Perl_Isrand_called_ptr(aTHX)) -#undef PL_stack_base -#define PL_stack_base (*Perl_Istack_base_ptr(aTHX)) -#undef PL_stack_max -#define PL_stack_max (*Perl_Istack_max_ptr(aTHX)) -#undef PL_stack_sp -#define PL_stack_sp (*Perl_Istack_sp_ptr(aTHX)) -#undef PL_start_env -#define PL_start_env (*Perl_Istart_env_ptr(aTHX)) -#undef PL_stashcache -#define PL_stashcache (*Perl_Istashcache_ptr(aTHX)) -#undef PL_statbuf -#define PL_statbuf (*Perl_Istatbuf_ptr(aTHX)) -#undef PL_statcache -#define PL_statcache (*Perl_Istatcache_ptr(aTHX)) -#undef PL_statgv -#define PL_statgv (*Perl_Istatgv_ptr(aTHX)) -#undef PL_statname -#define PL_statname (*Perl_Istatname_ptr(aTHX)) -#undef PL_statusvalue -#define PL_statusvalue (*Perl_Istatusvalue_ptr(aTHX)) -#undef PL_statusvalue_posix -#define PL_statusvalue_posix (*Perl_Istatusvalue_posix_ptr(aTHX)) -#undef PL_statusvalue_vms -#define PL_statusvalue_vms (*Perl_Istatusvalue_vms_ptr(aTHX)) -#undef PL_stderrgv -#define PL_stderrgv (*Perl_Istderrgv_ptr(aTHX)) -#undef PL_stdingv -#define PL_stdingv (*Perl_Istdingv_ptr(aTHX)) -#undef PL_strtab -#define PL_strtab (*Perl_Istrtab_ptr(aTHX)) -#undef PL_sub_generation -#define PL_sub_generation (*Perl_Isub_generation_ptr(aTHX)) -#undef PL_subline -#define PL_subline (*Perl_Isubline_ptr(aTHX)) -#undef PL_subname -#define PL_subname (*Perl_Isubname_ptr(aTHX)) -#undef PL_sv_arenaroot -#define PL_sv_arenaroot (*Perl_Isv_arenaroot_ptr(aTHX)) -#undef PL_sv_count -#define PL_sv_count (*Perl_Isv_count_ptr(aTHX)) -#undef PL_sv_no -#define PL_sv_no (*Perl_Isv_no_ptr(aTHX)) -#undef PL_sv_objcount -#define PL_sv_objcount (*Perl_Isv_objcount_ptr(aTHX)) -#undef PL_sv_root -#define PL_sv_root (*Perl_Isv_root_ptr(aTHX)) -#undef PL_sv_serial -#define PL_sv_serial (*Perl_Isv_serial_ptr(aTHX)) -#undef PL_sv_undef -#define PL_sv_undef (*Perl_Isv_undef_ptr(aTHX)) -#undef PL_sv_yes -#define PL_sv_yes (*Perl_Isv_yes_ptr(aTHX)) -#undef PL_sys_intern -#define PL_sys_intern (*Perl_Isys_intern_ptr(aTHX)) -#undef PL_taint_warn -#define PL_taint_warn (*Perl_Itaint_warn_ptr(aTHX)) -#undef PL_tainted -#define PL_tainted (*Perl_Itainted_ptr(aTHX)) -#undef PL_tainting -#define PL_tainting (*Perl_Itainting_ptr(aTHX)) -#undef PL_threadhook -#define PL_threadhook (*Perl_Ithreadhook_ptr(aTHX)) -#undef PL_timesbuf -#define PL_timesbuf (*Perl_Itimesbuf_ptr(aTHX)) -#undef PL_tmps_floor -#define PL_tmps_floor (*Perl_Itmps_floor_ptr(aTHX)) -#undef PL_tmps_ix -#define PL_tmps_ix (*Perl_Itmps_ix_ptr(aTHX)) -#undef PL_tmps_max -#define PL_tmps_max (*Perl_Itmps_max_ptr(aTHX)) -#undef PL_tmps_stack -#define PL_tmps_stack (*Perl_Itmps_stack_ptr(aTHX)) -#undef PL_top_env -#define PL_top_env (*Perl_Itop_env_ptr(aTHX)) -#undef PL_toptarget -#define PL_toptarget (*Perl_Itoptarget_ptr(aTHX)) -#undef PL_uid -#define PL_uid (*Perl_Iuid_ptr(aTHX)) -#undef PL_unicode -#define PL_unicode (*Perl_Iunicode_ptr(aTHX)) -#undef PL_unitcheckav -#define PL_unitcheckav (*Perl_Iunitcheckav_ptr(aTHX)) -#undef PL_unitcheckav_save -#define PL_unitcheckav_save (*Perl_Iunitcheckav_save_ptr(aTHX)) -#undef PL_unlockhook -#define PL_unlockhook (*Perl_Iunlockhook_ptr(aTHX)) -#undef PL_unsafe -#define PL_unsafe (*Perl_Iunsafe_ptr(aTHX)) -#undef PL_utf8_X_L -#define PL_utf8_X_L (*Perl_Iutf8_X_L_ptr(aTHX)) -#undef PL_utf8_X_LV -#define PL_utf8_X_LV (*Perl_Iutf8_X_LV_ptr(aTHX)) -#undef PL_utf8_X_LVT -#define PL_utf8_X_LVT (*Perl_Iutf8_X_LVT_ptr(aTHX)) -#undef PL_utf8_X_LV_LVT_V -#define PL_utf8_X_LV_LVT_V (*Perl_Iutf8_X_LV_LVT_V_ptr(aTHX)) -#undef PL_utf8_X_T -#define PL_utf8_X_T (*Perl_Iutf8_X_T_ptr(aTHX)) -#undef PL_utf8_X_V -#define PL_utf8_X_V (*Perl_Iutf8_X_V_ptr(aTHX)) -#undef PL_utf8_X_begin -#define PL_utf8_X_begin (*Perl_Iutf8_X_begin_ptr(aTHX)) -#undef PL_utf8_X_extend -#define PL_utf8_X_extend (*Perl_Iutf8_X_extend_ptr(aTHX)) -#undef PL_utf8_X_non_hangul -#define PL_utf8_X_non_hangul (*Perl_Iutf8_X_non_hangul_ptr(aTHX)) -#undef PL_utf8_X_prepend -#define PL_utf8_X_prepend (*Perl_Iutf8_X_prepend_ptr(aTHX)) -#undef PL_utf8_alnum -#define PL_utf8_alnum (*Perl_Iutf8_alnum_ptr(aTHX)) -#undef PL_utf8_alpha -#define PL_utf8_alpha (*Perl_Iutf8_alpha_ptr(aTHX)) -#undef PL_utf8_ascii -#define PL_utf8_ascii (*Perl_Iutf8_ascii_ptr(aTHX)) -#undef PL_utf8_cntrl -#define PL_utf8_cntrl (*Perl_Iutf8_cntrl_ptr(aTHX)) -#undef PL_utf8_digit -#define PL_utf8_digit (*Perl_Iutf8_digit_ptr(aTHX)) -#undef PL_utf8_graph -#define PL_utf8_graph (*Perl_Iutf8_graph_ptr(aTHX)) -#undef PL_utf8_idcont -#define PL_utf8_idcont (*Perl_Iutf8_idcont_ptr(aTHX)) -#undef PL_utf8_idstart -#define PL_utf8_idstart (*Perl_Iutf8_idstart_ptr(aTHX)) -#undef PL_utf8_lower -#define PL_utf8_lower (*Perl_Iutf8_lower_ptr(aTHX)) -#undef PL_utf8_mark -#define PL_utf8_mark (*Perl_Iutf8_mark_ptr(aTHX)) -#undef PL_utf8_perl_space -#define PL_utf8_perl_space (*Perl_Iutf8_perl_space_ptr(aTHX)) -#undef PL_utf8_perl_word -#define PL_utf8_perl_word (*Perl_Iutf8_perl_word_ptr(aTHX)) -#undef PL_utf8_posix_digit -#define PL_utf8_posix_digit (*Perl_Iutf8_posix_digit_ptr(aTHX)) -#undef PL_utf8_print -#define PL_utf8_print (*Perl_Iutf8_print_ptr(aTHX)) -#undef PL_utf8_punct -#define PL_utf8_punct (*Perl_Iutf8_punct_ptr(aTHX)) -#undef PL_utf8_space -#define PL_utf8_space (*Perl_Iutf8_space_ptr(aTHX)) -#undef PL_utf8_tofold -#define PL_utf8_tofold (*Perl_Iutf8_tofold_ptr(aTHX)) -#undef PL_utf8_tolower -#define PL_utf8_tolower (*Perl_Iutf8_tolower_ptr(aTHX)) -#undef PL_utf8_totitle -#define PL_utf8_totitle (*Perl_Iutf8_totitle_ptr(aTHX)) -#undef PL_utf8_toupper -#define PL_utf8_toupper (*Perl_Iutf8_toupper_ptr(aTHX)) -#undef PL_utf8_upper -#define PL_utf8_upper (*Perl_Iutf8_upper_ptr(aTHX)) -#undef PL_utf8_xdigit -#define PL_utf8_xdigit (*Perl_Iutf8_xdigit_ptr(aTHX)) -#undef PL_utf8cache -#define PL_utf8cache (*Perl_Iutf8cache_ptr(aTHX)) -#undef PL_utf8locale -#define PL_utf8locale (*Perl_Iutf8locale_ptr(aTHX)) -#undef PL_warnhook -#define PL_warnhook (*Perl_Iwarnhook_ptr(aTHX)) -#undef PL_watchaddr -#define PL_watchaddr (*Perl_Iwatchaddr_ptr(aTHX)) -#undef PL_watchok -#define PL_watchok (*Perl_Iwatchok_ptr(aTHX)) -#undef PL_xmlfp -#define PL_xmlfp (*Perl_Ixmlfp_ptr(aTHX)) #undef PL_No #define PL_No (*Perl_GNo_ptr(NULL)) #undef PL_Yes #define PL_Yes (*Perl_GYes_ptr(NULL)) #undef PL_appctx #define PL_appctx (*Perl_Gappctx_ptr(NULL)) +#undef PL_charclass +#define PL_charclass (*Perl_Gcharclass_ptr(NULL)) #undef PL_check #define PL_check (*Perl_Gcheck_ptr(NULL)) #undef PL_csighandlerp @@ -830,8 +177,6 @@ END_EXTERN_C #define PL_sig_handlers_initted (*Perl_Gsig_handlers_initted_ptr(NULL)) #undef PL_sig_ignoring #define PL_sig_ignoring (*Perl_Gsig_ignoring_ptr(NULL)) -#undef PL_sig_sv -#define PL_sig_sv (*Perl_Gsig_sv_ptr(NULL)) #undef PL_sig_trapped #define PL_sig_trapped (*Perl_Gsig_trapped_ptr(NULL)) #undef PL_sigfpe_saved @@ -854,7 +199,7 @@ END_EXTERN_C #define PL_watch_pvx (*Perl_Gwatch_pvx_ptr(NULL)) #endif /* !PERL_CORE */ -#endif /* MULTIPLICITY */ +#endif /* MULTIPLICITY && PERL_GLOBAL_STRUCT */ #endif /* __perlapi_h__ */ diff --git a/Master/tlpkg/tlperl/lib/CORE/perlhost.h b/Master/tlpkg/tlperl/lib/CORE/perlhost.h index be7d61de02c..0240044c114 100644 --- a/Master/tlpkg/tlperl/lib/CORE/perlhost.h +++ b/Master/tlpkg/tlperl/lib/CORE/perlhost.h @@ -663,19 +663,19 @@ PerlStdIOGetPtr(struct IPerlStdIO* piPerl, FILE* pf) } char* -PerlStdIOGets(struct IPerlStdIO* piPerl, FILE* pf, char* s, int n) +PerlStdIOGets(struct IPerlStdIO* piPerl, char* s, int n, FILE* pf) { return win32_fgets(s, n, pf); } int -PerlStdIOPutc(struct IPerlStdIO* piPerl, FILE* pf, int c) +PerlStdIOPutc(struct IPerlStdIO* piPerl, int c, FILE* pf) { return win32_fputc(c, pf); } int -PerlStdIOPuts(struct IPerlStdIO* piPerl, FILE* pf, const char *s) +PerlStdIOPuts(struct IPerlStdIO* piPerl, const char *s, FILE* pf) { return win32_fputs(s, pf); } @@ -1727,11 +1727,6 @@ win32_start_child(LPVOID arg) w32_pseudo_id = id; #else w32_pseudo_id = GetCurrentThreadId(); - if (IsWin95()) { - int pid = (int)w32_pseudo_id; - if (pid < 0) - w32_pseudo_id = -pid; - } #endif if (tmpgv = gv_fetchpv("$", TRUE, SVt_PV)) { SV *sv = GvSV(tmpgv); @@ -1880,13 +1875,9 @@ PerlProcFork(struct IPerlProc* piPerl) errno = EAGAIN; return -1; } - if (IsWin95()) { - int pid = (int)id; - if (pid < 0) - id = -pid; - } w32_pseudo_child_handles[w32_num_pseudo_children] = handle; w32_pseudo_child_pids[w32_num_pseudo_children] = id; + w32_pseudo_child_sigterm[w32_num_pseudo_children] = 0; ++w32_num_pseudo_children; # endif return -(int)id; diff --git a/Master/tlpkg/tlperl/lib/CORE/perlio.h b/Master/tlpkg/tlperl/lib/CORE/perlio.h index a6902d4a956..0575cb17bdf 100644 --- a/Master/tlpkg/tlperl/lib/CORE/perlio.h +++ b/Master/tlpkg/tlperl/lib/CORE/perlio.h @@ -25,7 +25,7 @@ then there are two modes determined by USE_SFIO: USE_SFIO - If set causes PerlIO_xxx() to be #define-d onto sfio functions. - A backward compatability mode for some specialist applications. + A backward compatibility mode for some specialist applications. If USE_SFIO is not set then PerlIO_xxx() are real functions defined in perlio.c which implement extra functionality @@ -189,6 +189,11 @@ PERL_EXPORT_C void PerlIO_clone(pTHX_ PerlInterpreter *proto, #define BUFSIZ 1024 #endif +/* The default buffer size for the perlio buffering layer */ +#ifndef PERLIOBUF_DEFAULT_BUFSIZ +#define PERLIOBUF_DEFAULT_BUFSIZ (BUFSIZ > 8192 ? BUFSIZ : 8192) +#endif + #ifndef SEEK_SET #define SEEK_SET 0 #endif diff --git a/Master/tlpkg/tlperl/lib/CORE/perliol.h b/Master/tlpkg/tlperl/lib/CORE/perliol.h index 6b714bb6efa..a51f99b9039 100644 --- a/Master/tlpkg/tlperl/lib/CORE/perliol.h +++ b/Master/tlpkg/tlperl/lib/CORE/perliol.h @@ -67,6 +67,7 @@ struct _PerlIO { PerlIOl *next; /* Lower layer */ PerlIO_funcs *tab; /* Functions for this layer */ U32 flags; /* Various flags for state */ + PerlIOl *head; /* our ultimate parent pointer */ }; /*--------------------------------------------------------------------------------------*/ @@ -89,6 +90,7 @@ struct _PerlIO { #define PERLIO_F_FASTGETS 0x00400000 #define PERLIO_F_TTY 0x00800000 #define PERLIO_F_NOTREG 0x01000000 +#define PERLIO_F_CLEARED 0x02000000 /* layer cleared but not freed */ #define PerlIOBase(f) (*(f)) #define PerlIOSelf(f,type) ((type *)PerlIOBase(f)) @@ -150,7 +152,7 @@ PERL_EXPORT_C PerlIO_funcs *PerlIO_layer_fetch(pTHX_ PerlIO_list_t *av, IV n, Pe PERL_EXPORT_C SV *PerlIO_sv_dup(pTHX_ SV *arg, CLONE_PARAMS *param); -PERL_EXPORT_C void PerlIO_cleantable(pTHX_ PerlIO **tablep); +PERL_EXPORT_C void PerlIO_cleantable(pTHX_ PerlIOl **tablep); PERL_EXPORT_C SV * PerlIO_tab_sv(pTHX_ PerlIO_funcs *tab); PERL_EXPORT_C void PerlIO_default_buffer(pTHX_ PerlIO_list_t *av); PERL_EXPORT_C void PerlIO_stdstreams(pTHX); @@ -187,6 +189,7 @@ PERL_EXPORT_C IV PerlIOBase_noop_fail(pTHX_ PerlIO *f); PERL_EXPORT_C IV PerlIOBase_noop_ok(pTHX_ PerlIO *f); PERL_EXPORT_C IV PerlIOBase_popped(pTHX_ PerlIO *f); PERL_EXPORT_C IV PerlIOBase_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab); +PERL_EXPORT_C PerlIO * PerlIOBase_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers, IV n, const char *mode, int fd, int imode, int perm, PerlIO *old, int narg, SV **args); PERL_EXPORT_C SSize_t PerlIOBase_read(pTHX_ PerlIO *f, void *vbuf, Size_t count); PERL_EXPORT_C void PerlIOBase_setlinebuf(pTHX_ PerlIO *f); PERL_EXPORT_C SSize_t PerlIOBase_unread(pTHX_ PerlIO *f, const void *vbuf, Size_t count); @@ -244,7 +247,6 @@ PERL_EXPORT_C void PerlIOPending_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR * ptr, PERL_EXPORT_C IV PerlIOPop_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab); /* Raw */ -PERL_EXPORT_C PerlIO * PerlIORaw_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers, IV n, const char *mode, int fd, int imode, int perm, PerlIO *old, int narg, SV **args); PERL_EXPORT_C IV PerlIORaw_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab); /* Stdio */ @@ -277,6 +279,7 @@ PERL_EXPORT_C IV PerlIOUnix_pushed(pTHX_ PerlIO *f, const char *mode, SV PERL_EXPORT_C SSize_t PerlIOUnix_read(pTHX_ PerlIO *f, void *vbuf, Size_t count); PERL_EXPORT_C int PerlIOUnix_refcnt_dec(int fd); PERL_EXPORT_C void PerlIOUnix_refcnt_inc(int fd); +PERL_EXPORT_C int PerlIOUnix_refcnt(int fd); PERL_EXPORT_C IV PerlIOUnix_seek(pTHX_ PerlIO *f, Off_t offset, int whence); PERL_EXPORT_C Off_t PerlIOUnix_tell(pTHX_ PerlIO *f); PERL_EXPORT_C SSize_t PerlIOUnix_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count); diff --git a/Master/tlpkg/tlperl/lib/CORE/perlsdio.h b/Master/tlpkg/tlperl/lib/CORE/perlsdio.h index 1a6f2f01c4c..691ee325711 100644 --- a/Master/tlpkg/tlperl/lib/CORE/perlsdio.h +++ b/Master/tlpkg/tlperl/lib/CORE/perlsdio.h @@ -34,11 +34,11 @@ #define PerlIO_fdopen PerlSIO_fdopen #define PerlIO_reopen PerlSIO_freopen #define PerlIO_close(f) PerlSIO_fclose(f) -#define PerlIO_puts(f,s) PerlSIO_fputs(f,s) -#define PerlIO_putc(f,c) PerlSIO_fputc(f,c) +#define PerlIO_puts(f,s) PerlSIO_fputs(s,f) +#define PerlIO_putc(f,c) PerlSIO_fputc(c,f) #if defined(VMS) # if defined(__DECC) - /* Unusual definition of ungetc() here to accomodate fast_sv_gets()' + /* Unusual definition of ungetc() here to accommodate fast_sv_gets()' * belief that it can mix getc/ungetc with reads from stdio buffer */ int decc$ungetc(int __c, FILE *__stream); # define PerlIO_ungetc(f,c) ((c) == EOF ? EOF : \ diff --git a/Master/tlpkg/tlperl/lib/CORE/perlvars.h b/Master/tlpkg/tlperl/lib/CORE/perlvars.h index 3d378917c94..1a44e22e4e9 100644 --- a/Master/tlpkg/tlperl/lib/CORE/perlvars.h +++ b/Master/tlpkg/tlperl/lib/CORE/perlvars.h @@ -12,7 +12,7 @@ =head1 Global Variables */ -/* Don't forget to re-run embed.pl to propagate changes! */ +/* Don't forget to re-run regen/embed.pl to propagate changes! */ /* This file describes the "global" variables used by perl * This used to be in perl.h directly but we want to abstract out into @@ -102,10 +102,6 @@ PERLVARA(Gsig_ignoring, SIG_SIZE, int) /* which signals we are ignoring */ PERLVARA(Gsig_defaulting, SIG_SIZE, int) #endif -#ifndef PERL_IMPLICIT_CONTEXT -PERLVAR(Gsig_sv, SV*) -#endif - /* XXX signals are process-wide anyway, so we * ignore the implications of this for threading */ #ifndef HAS_SIGACTION @@ -120,6 +116,7 @@ PERLVAR(Gwatch_pvx, char*) PERLVAR(Gppaddr, Perl_ppaddr_t*) /* or opcode.h */ PERLVAR(Gcheck, Perl_check_t *) /* or opcode.h */ PERLVARA(Gfold_locale, 256, unsigned char) /* or perl.h */ +PERLVARA(Gcharclass, 256, U32) #endif #ifdef PERL_NEED_APPCTX @@ -157,8 +154,8 @@ PERLVARI(Gveto_cleanup, int, FALSE) /* exit without cleanup */ /* dummy variables that hold pointers to both runops functions, thus forcing * them *both* to get linked in (useful for Peek.xs, debugging etc) */ -PERLVARI(Grunops_std, runops_proc_t, MEMBER_TO_FPTR(Perl_runops_standard)) -PERLVARI(Grunops_dbg, runops_proc_t, MEMBER_TO_FPTR(Perl_runops_debug)) +PERLVARI(Grunops_std, runops_proc_t, Perl_runops_standard) +PERLVARI(Grunops_dbg, runops_proc_t, Perl_runops_debug) /* These are baked at compile time into any shared perl library. @@ -212,7 +209,7 @@ introduced by the keyword. See L</Lexer interface> for details. When a keyword is being handled, the plugin function must build a tree of C<OP> structures, representing the code that was parsed. The root of the tree must be stored in C<*op_ptr>. The function then -returns a contant indicating the syntactic role of the construct that +returns a constant indicating the syntactic role of the construct that it has parsed: C<KEYWORD_PLUGIN_STMT> if it is a complete statement, or C<KEYWORD_PLUGIN_EXPR> if it is an expression. Note that a statement construct cannot be used inside an expression (except via C<do BLOCK> @@ -240,4 +237,4 @@ the Perl core) will normally return C<KEYWORD_PLUGIN_DECLINE>. =cut */ -PERLVARI(Gkeyword_plugin, Perl_keyword_plugin_t, MEMBER_TO_FPTR(Perl_keyword_plugin_standard)) +PERLVARI(Gkeyword_plugin, Perl_keyword_plugin_t, Perl_keyword_plugin_standard) diff --git a/Master/tlpkg/tlperl/lib/CORE/perly.h b/Master/tlpkg/tlperl/lib/CORE/perly.h index b40a968c106..6c282bfae14 100644 --- a/Master/tlpkg/tlperl/lib/CORE/perly.h +++ b/Master/tlpkg/tlperl/lib/CORE/perly.h @@ -1,24 +1,31 @@ -#ifdef PERL_CORE +/* -*- buffer-read-only: t -*- + !!!!!!! DO NOT EDIT THIS FILE !!!!!!! + This file is built by regen_perly.pl from perly.y. + Any changes made here will be lost! + */ -/* A Bison parser, made by GNU Bison 2.4.1. */ +#ifdef PERL_CORE +/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C - - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify + + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - + the Free Software Foundation; either version 2, or (at your option) + any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -29,163 +36,176 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ - /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { - WORD = 258, - METHOD = 259, - FUNCMETH = 260, - THING = 261, - PMFUNC = 262, - PRIVATEREF = 263, - FUNC0SUB = 264, - UNIOPSUB = 265, - LSTOPSUB = 266, - PLUGEXPR = 267, - PLUGSTMT = 268, - LABEL = 269, - FORMAT = 270, - SUB = 271, - ANONSUB = 272, - PACKAGE = 273, - USE = 274, - WHILE = 275, - UNTIL = 276, - IF = 277, - UNLESS = 278, - ELSE = 279, - ELSIF = 280, - CONTINUE = 281, - FOR = 282, - GIVEN = 283, - WHEN = 284, - DEFAULT = 285, - LOOPEX = 286, - DOTDOT = 287, - YADAYADA = 288, - FUNC0 = 289, - FUNC1 = 290, - FUNC = 291, - UNIOP = 292, - LSTOP = 293, - RELOP = 294, - EQOP = 295, - MULOP = 296, - ADDOP = 297, - DOLSHARP = 298, - DO = 299, - HASHBRACK = 300, - NOAMP = 301, - LOCAL = 302, - MY = 303, - MYSUB = 304, - REQUIRE = 305, - COLONATTR = 306, - PREC_LOW = 307, - DOROP = 308, - OROP = 309, - ANDOP = 310, - NOTOP = 311, - ASSIGNOP = 312, - DORDOR = 313, - OROR = 314, - ANDAND = 315, - BITOROP = 316, - BITANDOP = 317, - SHIFTOP = 318, - MATCHOP = 319, - REFGEN = 320, - UMINUS = 321, - POWOP = 322, - POSTDEC = 323, - POSTINC = 324, - PREDEC = 325, - PREINC = 326, - ARROW = 327, - PEG = 328 + GRAMPROG = 258, + GRAMEXPR = 259, + GRAMBLOCK = 260, + GRAMBARESTMT = 261, + GRAMFULLSTMT = 262, + GRAMSTMTSEQ = 263, + WORD = 264, + METHOD = 265, + FUNCMETH = 266, + THING = 267, + PMFUNC = 268, + PRIVATEREF = 269, + QWLIST = 270, + FUNC0SUB = 271, + UNIOPSUB = 272, + LSTOPSUB = 273, + PLUGEXPR = 274, + PLUGSTMT = 275, + LABEL = 276, + FORMAT = 277, + SUB = 278, + ANONSUB = 279, + PACKAGE = 280, + USE = 281, + WHILE = 282, + UNTIL = 283, + IF = 284, + UNLESS = 285, + ELSE = 286, + ELSIF = 287, + CONTINUE = 288, + FOR = 289, + GIVEN = 290, + WHEN = 291, + DEFAULT = 292, + LOOPEX = 293, + DOTDOT = 294, + YADAYADA = 295, + FUNC0 = 296, + FUNC1 = 297, + FUNC = 298, + UNIOP = 299, + LSTOP = 300, + RELOP = 301, + EQOP = 302, + MULOP = 303, + ADDOP = 304, + DOLSHARP = 305, + DO = 306, + HASHBRACK = 307, + NOAMP = 308, + LOCAL = 309, + MY = 310, + MYSUB = 311, + REQUIRE = 312, + COLONATTR = 313, + PREC_LOW = 314, + DOROP = 315, + OROP = 316, + ANDOP = 317, + NOTOP = 318, + ASSIGNOP = 319, + DORDOR = 320, + OROR = 321, + ANDAND = 322, + BITOROP = 323, + BITANDOP = 324, + SHIFTOP = 325, + MATCHOP = 326, + REFGEN = 327, + UMINUS = 328, + POWOP = 329, + POSTDEC = 330, + POSTINC = 331, + PREDEC = 332, + PREINC = 333, + ARROW = 334, + PEG = 335 }; #endif - /* Tokens. */ -#define WORD 258 -#define METHOD 259 -#define FUNCMETH 260 -#define THING 261 -#define PMFUNC 262 -#define PRIVATEREF 263 -#define FUNC0SUB 264 -#define UNIOPSUB 265 -#define LSTOPSUB 266 -#define PLUGEXPR 267 -#define PLUGSTMT 268 -#define LABEL 269 -#define FORMAT 270 -#define SUB 271 -#define ANONSUB 272 -#define PACKAGE 273 -#define USE 274 -#define WHILE 275 -#define UNTIL 276 -#define IF 277 -#define UNLESS 278 -#define ELSE 279 -#define ELSIF 280 -#define CONTINUE 281 -#define FOR 282 -#define GIVEN 283 -#define WHEN 284 -#define DEFAULT 285 -#define LOOPEX 286 -#define DOTDOT 287 -#define YADAYADA 288 -#define FUNC0 289 -#define FUNC1 290 -#define FUNC 291 -#define UNIOP 292 -#define LSTOP 293 -#define RELOP 294 -#define EQOP 295 -#define MULOP 296 -#define ADDOP 297 -#define DOLSHARP 298 -#define DO 299 -#define HASHBRACK 300 -#define NOAMP 301 -#define LOCAL 302 -#define MY 303 -#define MYSUB 304 -#define REQUIRE 305 -#define COLONATTR 306 -#define PREC_LOW 307 -#define DOROP 308 -#define OROP 309 -#define ANDOP 310 -#define NOTOP 311 -#define ASSIGNOP 312 -#define DORDOR 313 -#define OROR 314 -#define ANDAND 315 -#define BITOROP 316 -#define BITANDOP 317 -#define SHIFTOP 318 -#define MATCHOP 319 -#define REFGEN 320 -#define UMINUS 321 -#define POWOP 322 -#define POSTDEC 323 -#define POSTINC 324 -#define PREDEC 325 -#define PREINC 326 -#define ARROW 327 -#define PEG 328 +#define GRAMPROG 258 +#define GRAMEXPR 259 +#define GRAMBLOCK 260 +#define GRAMBARESTMT 261 +#define GRAMFULLSTMT 262 +#define GRAMSTMTSEQ 263 +#define WORD 264 +#define METHOD 265 +#define FUNCMETH 266 +#define THING 267 +#define PMFUNC 268 +#define PRIVATEREF 269 +#define QWLIST 270 +#define FUNC0SUB 271 +#define UNIOPSUB 272 +#define LSTOPSUB 273 +#define PLUGEXPR 274 +#define PLUGSTMT 275 +#define LABEL 276 +#define FORMAT 277 +#define SUB 278 +#define ANONSUB 279 +#define PACKAGE 280 +#define USE 281 +#define WHILE 282 +#define UNTIL 283 +#define IF 284 +#define UNLESS 285 +#define ELSE 286 +#define ELSIF 287 +#define CONTINUE 288 +#define FOR 289 +#define GIVEN 290 +#define WHEN 291 +#define DEFAULT 292 +#define LOOPEX 293 +#define DOTDOT 294 +#define YADAYADA 295 +#define FUNC0 296 +#define FUNC1 297 +#define FUNC 298 +#define UNIOP 299 +#define LSTOP 300 +#define RELOP 301 +#define EQOP 302 +#define MULOP 303 +#define ADDOP 304 +#define DOLSHARP 305 +#define DO 306 +#define HASHBRACK 307 +#define NOAMP 308 +#define LOCAL 309 +#define MY 310 +#define MYSUB 311 +#define REQUIRE 312 +#define COLONATTR 313 +#define PREC_LOW 314 +#define DOROP 315 +#define OROP 316 +#define ANDOP 317 +#define NOTOP 318 +#define ASSIGNOP 319 +#define DORDOR 320 +#define OROR 321 +#define ANDAND 322 +#define BITOROP 323 +#define BITANDOP 324 +#define SHIFTOP 325 +#define MATCHOP 326 +#define REFGEN 327 +#define UMINUS 328 +#define POWOP 329 +#define POSTDEC 330 +#define POSTINC 331 +#define PREDEC 332 +#define PREINC 333 +#define ARROW 334 +#define PEG 335 + @@ -193,9 +213,6 @@ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { - -/* Line 1676 of yacc.c */ - I32 ival; /* __DEFAULT__ (marker for regen_perly.pl; must always be 1st union member) */ char *pval; @@ -211,16 +228,18 @@ typedef union YYSTYPE #ifdef PERL_MAD TOKEN* tkval; #endif - - - -/* Line 1676 of yacc.c */ -} YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 +} +/* Line 1489 of yacc.c. */ + YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 #endif +/* Generated from: + * bd41fc813e5d2d23ff7edef2ab1ef88bbb054176476b7d989db7522dce1c9328 perly.y + * dc72db91baa0a3c17a6c95718e5ad70e9ac7b75919df1317df7fe6c3f1649239 regen_perly.pl + * ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/pp.h b/Master/tlpkg/tlperl/lib/CORE/pp.h index c36502a03fa..5cde92b047e 100644 --- a/Master/tlpkg/tlperl/lib/CORE/pp.h +++ b/Master/tlpkg/tlperl/lib/CORE/pp.h @@ -86,7 +86,7 @@ Refetch the stack pointer. Used after a callback. See L<perlcall>. #define dTARG SV *targ #define NORMAL PL_op->op_next -#define DIE Perl_die +#define DIE return Perl_die /* =for apidoc Ams||PUTBACK @@ -328,6 +328,7 @@ Does not use C<TARG>. See also C<XPUSHu>, C<mPUSHu> and C<PUSHu>. #define dPOPss SV *sv = POPs #define dTOPnv NV value = TOPn #define dPOPnv NV value = POPn +#define dPOPnv_nomg NV value = (sp--, SvNV_nomg(TOPp1s)) #define dTOPiv IV value = TOPi #define dPOPiv IV value = POPi #define dTOPuv UV value = TOPu @@ -353,6 +354,10 @@ Does not use C<TARG>. See also C<XPUSHu>, C<mPUSHu> and C<PUSHu>. IV right = POPi; \ SV *leftsv = CAT2(X,s); \ IV left = USE_LEFT(leftsv) ? SvIV(leftsv) : 0 +#define dPOPXiirl_ul_nomg(X) \ + IV right = (sp--, SvIV_nomg(TOPp1s)); \ + SV *leftsv = CAT2(X,s); \ + IV left = USE_LEFT(leftsv) ? SvIV_nomg(leftsv) : 0 #define dPOPPOPssrl dPOPXssrl(POP) #define dPOPPOPnnrl dPOPXnnrl(POP) @@ -363,8 +368,13 @@ Does not use C<TARG>. See also C<XPUSHu>, C<mPUSHu> and C<PUSHu>. #define dPOPTOPssrl dPOPXssrl(TOP) #define dPOPTOPnnrl dPOPXnnrl(TOP) #define dPOPTOPnnrl_ul dPOPXnnrl_ul(TOP) +#define dPOPTOPnnrl_nomg \ + NV right = SvNV_nomg(TOPs); NV left = (sp--, SvNV_nomg(TOPs)) #define dPOPTOPiirl dPOPXiirl(TOP) #define dPOPTOPiirl_ul dPOPXiirl_ul(TOP) +#define dPOPTOPiirl_ul_nomg dPOPXiirl_ul_nomg(TOP) +#define dPOPTOPiirl_nomg \ + IV right = SvIV_nomg(TOPs); IV left = (sp--, SvIV_nomg(TOPs)) #define RETPUSHYES RETURNX(PUSHs(&PL_sv_yes)) #define RETPUSHNO RETURNX(PUSHs(&PL_sv_no)) @@ -398,107 +408,59 @@ Does not use C<TARG>. See also C<XPUSHu>, C<mPUSHu> and C<PUSHu>. #define AMGf_noleft 2 #define AMGf_assign 4 #define AMGf_unary 8 +#define AMGf_numeric 0x10 /* for Perl_try_amagic_bin */ +#define AMGf_set 0x20 /* for Perl_try_amagic_bin */ -#define tryAMAGICbinW_var(meth_enum,assign,set) STMT_START { \ - SV* const left = *(sp-1); \ - SV* const right = *(sp); \ - if ((SvAMAGIC(left)||SvAMAGIC(right))) {\ - SV * const tmpsv = amagic_call(left, \ - right, \ - (meth_enum), \ - (assign)? AMGf_assign: 0); \ - if (tmpsv) { \ - SPAGAIN; \ - (void)POPs; set(tmpsv); RETURN; } \ - } \ - } STMT_END - -#define tryAMAGICbinW(meth,assign,set) \ - tryAMAGICbinW_var(CAT2(meth,_amg),assign,set) - -#define tryAMAGICbin_var(meth_enum,assign) \ - tryAMAGICbinW_var(meth_enum,assign,SETsv) -#define tryAMAGICbin(meth,assign) \ - tryAMAGICbin_var(CAT2(meth,_amg),assign) -#define tryAMAGICbinSET(meth,assign) tryAMAGICbinW(meth,assign,SETs) +/* do SvGETMAGIC on the stack args before checking for overload */ -#define tryAMAGICbinSET_var(meth_enum,assign) \ - tryAMAGICbinW_var(meth_enum,assign,SETs) - -#define AMG_CALLun_var(sv,meth_enum) amagic_call(sv,&PL_sv_undef, \ - meth_enum,AMGf_noright | AMGf_unary) -#define AMG_CALLun(sv,meth) AMG_CALLun_var(sv,CAT2(meth,_amg)) - -#define AMG_CALLbinL(left,right,meth) \ - amagic_call(left,right,CAT2(meth,_amg),AMGf_noright) +#define tryAMAGICun_MG(method, flags) STMT_START { \ + if ( (SvFLAGS(TOPs) & (SVf_ROK|SVs_GMG)) \ + && Perl_try_amagic_un(aTHX_ method, flags)) \ + return NORMAL; \ + } STMT_END +#define tryAMAGICbin_MG(method, flags) STMT_START { \ + if ( ((SvFLAGS(TOPm1s)|SvFLAGS(TOPs)) & (SVf_ROK|SVs_GMG)) \ + && Perl_try_amagic_bin(aTHX_ method, flags)) \ + return NORMAL; \ + } STMT_END -#define tryAMAGICunW_var(meth_enum,set,shift,ret) STMT_START { \ - SV* tmpsv; \ - SV* arg= sp[shift]; \ - if(0) goto am_again; /* shut up unused warning */ \ - am_again: \ - if ((SvAMAGIC(arg))&&\ - (tmpsv=AMG_CALLun_var(arg,(meth_enum)))) {\ - SPAGAIN; if (shift) sp += shift; \ - set(tmpsv); ret; } \ - } STMT_END -#define tryAMAGICunW(meth,set,shift,ret) \ - tryAMAGICunW_var(CAT2(meth,_amg),set,shift,ret) - -#define FORCE_SETs(sv) STMT_START { sv_setsv(TARG, (sv)); SETTARG; } STMT_END - -#define tryAMAGICun_var(meth_enum) tryAMAGICunW_var(meth_enum,SETsvUN,0,RETURN) -#define tryAMAGICun(meth) tryAMAGICun_var(CAT2(meth,_amg)) -#define tryAMAGICunSET(meth) tryAMAGICunW(meth,SETs,0,RETURN) -#define tryAMAGICunTARGET(meth, shift) \ - STMT_START { dSP; sp--; /* get TARGET from below PL_stack_sp */ \ - { dTARGETSTACKED; \ - { dSP; tryAMAGICunW(meth,FORCE_SETs,shift,RETURN);}}} STMT_END - -#define setAGAIN(ref) \ - STMT_START { \ - sv = ref; \ - if (!SvROK(ref)) \ - Perl_croak(aTHX_ "Overloaded dereference did not return a reference"); \ - if (ref != arg && SvRV(ref) != SvRV(arg)) { \ - arg = ref; \ - goto am_again; \ - } \ +#define AMG_CALLunary(sv,meth) \ + amagic_call(sv,&PL_sv_undef, meth, AMGf_noright | AMGf_unary) + +/* No longer used in core. Use AMG_CALLunary instead */ +#define AMG_CALLun(sv,meth) AMG_CALLunary(sv, CAT2(meth,_amg)) + +#define tryAMAGICunTARGET(meth, shift, jump) \ + STMT_START { \ + dATARGET; \ + dSP; \ + SV *tmpsv; \ + SV *arg= sp[shift]; \ + if (SvAMAGIC(arg) && \ + (tmpsv = amagic_call(arg, &PL_sv_undef, meth, \ + AMGf_noright | AMGf_unary))) { \ + SPAGAIN; \ + sp += shift; \ + sv_setsv(TARG, tmpsv); \ + if (opASSIGN) \ + sp--; \ + SETTARG; \ + PUTBACK; \ + if (jump) { \ + PL_markstack_ptr--; \ + return NORMAL->op_next->op_next; \ + } \ + return NORMAL; \ + } \ } STMT_END -#define tryAMAGICunDEREF(meth) tryAMAGICunW(meth,setAGAIN,0,(void)0) -#define tryAMAGICunDEREF_var(meth_enum) \ - tryAMAGICunW_var(meth_enum,setAGAIN,0,(void)0) - -#define tryAMAGICftest(chr) \ - STMT_START { \ - assert(chr != '?'); \ - if ((PL_op->op_flags & OPf_KIDS) \ - && SvAMAGIC(TOPs)) { \ - const char tmpchr = (chr); \ - SV * const tmpsv = amagic_call(TOPs, \ - newSVpvn_flags(&tmpchr, 1, SVs_TEMP), \ - ftest_amg, AMGf_unary); \ - \ - if (tmpsv) { \ - const OP *next = PL_op->op_next; \ - \ - SPAGAIN; \ - \ - if (next->op_type >= OP_FTRREAD && \ - next->op_type <= OP_FTBINARY && \ - next->op_private & OPpFT_STACKED \ - ) { \ - if (SvTRUE(tmpsv)) \ - /* leave the object alone */ \ - RETURN; \ - } \ - \ - SETs(tmpsv); \ - RETURN; \ - } \ - } \ +/* This is no longer used anywhere in the core. You might wish to consider + calling amagic_deref_call() directly, as it has a cleaner interface. */ +#define tryAMAGICunDEREF(meth) \ + STMT_START { \ + sv = amagic_deref_call(*sp, CAT2(meth,_amg)); \ + SPAGAIN; \ } STMT_END @@ -513,17 +475,6 @@ Does not use C<TARG>. See also C<XPUSHu>, C<mPUSHu> and C<PUSHu>. { sv_setsv(TARG, (sv)); SETTARG; } \ else SETs(sv); } STMT_END -/* newSVsv does not behave as advertised, so we copy missing - * information by hand */ - -/* SV* ref causes confusion with the member variable - changed SV* ref to SV* tmpRef */ -#define RvDEEPCP(rv) STMT_START { SV* tmpRef=SvRV(rv); SV* rv_copy; \ - if (SvREFCNT(tmpRef)>1 && (rv_copy = AMG_CALLun(rv,copy))) { \ - SvRV_set(rv, rv_copy); \ - SvREFCNT_dec(tmpRef); \ - } } STMT_END - /* =for apidoc mU||LVRET True if this op will be the return value of an lvalue subroutine @@ -540,6 +491,15 @@ True if this op will be the return value of an lvalue subroutine ) \ ) +#ifdef PERL_CORE +/* These are just for Perl_tied_method(), which is not part of the public API. + Use 0x04 rather than the next available bit, to help the compiler if the + architecture can generate more efficient instructions. */ +# define TIED_METHOD_MORTALIZE_NOT_NEEDED 0x04 +# define TIED_METHOD_ARGUMENTS_ON_STACK 0x08 +# define TIED_METHOD_SAY 0x10 +#endif + /* * Local variables: * c-indentation-style: bsd diff --git a/Master/tlpkg/tlperl/lib/CORE/pp_proto.h b/Master/tlpkg/tlperl/lib/CORE/pp_proto.h index d7da4538710..2b01d6b0b66 100644 --- a/Master/tlpkg/tlperl/lib/CORE/pp_proto.h +++ b/Master/tlpkg/tlperl/lib/CORE/pp_proto.h @@ -1,414 +1,274 @@ /* -*- buffer-read-only: t -*- !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - This file is built by opcode.pl from its data. Any changes made here - will be lost! -*/ + This file is built by opcode.pl from its data. + Any changes made here will be lost! + */ -PERL_CKDEF(Perl_ck_anoncode) -PERL_CKDEF(Perl_ck_bitop) -PERL_CKDEF(Perl_ck_chdir) -PERL_CKDEF(Perl_ck_concat) -PERL_CKDEF(Perl_ck_defined) -PERL_CKDEF(Perl_ck_delete) -PERL_CKDEF(Perl_ck_die) -PERL_CKDEF(Perl_ck_each) -PERL_CKDEF(Perl_ck_eof) -PERL_CKDEF(Perl_ck_eval) -PERL_CKDEF(Perl_ck_exec) -PERL_CKDEF(Perl_ck_exists) -PERL_CKDEF(Perl_ck_exit) -PERL_CKDEF(Perl_ck_ftst) -PERL_CKDEF(Perl_ck_fun) -PERL_CKDEF(Perl_ck_glob) -PERL_CKDEF(Perl_ck_grep) -PERL_CKDEF(Perl_ck_index) -PERL_CKDEF(Perl_ck_join) -PERL_CKDEF(Perl_ck_lfun) -PERL_CKDEF(Perl_ck_listiob) -PERL_CKDEF(Perl_ck_match) -PERL_CKDEF(Perl_ck_method) -PERL_CKDEF(Perl_ck_null) -PERL_CKDEF(Perl_ck_open) -PERL_CKDEF(Perl_ck_readline) -PERL_CKDEF(Perl_ck_repeat) -PERL_CKDEF(Perl_ck_require) -PERL_CKDEF(Perl_ck_return) -PERL_CKDEF(Perl_ck_rfun) -PERL_CKDEF(Perl_ck_rvconst) -PERL_CKDEF(Perl_ck_sassign) -PERL_CKDEF(Perl_ck_select) -PERL_CKDEF(Perl_ck_shift) -PERL_CKDEF(Perl_ck_smartmatch) -PERL_CKDEF(Perl_ck_sort) -PERL_CKDEF(Perl_ck_spair) -PERL_CKDEF(Perl_ck_split) -PERL_CKDEF(Perl_ck_subr) -PERL_CKDEF(Perl_ck_substr) -PERL_CKDEF(Perl_ck_svconst) -PERL_CKDEF(Perl_ck_trunc) -PERL_CKDEF(Perl_ck_unpack) - - -PERL_PPDEF(Perl_pp_null) -PERL_PPDEF(Perl_pp_stub) -PERL_PPDEF(Perl_pp_scalar) -PERL_PPDEF(Perl_pp_pushmark) -PERL_PPDEF(Perl_pp_wantarray) -PERL_PPDEF(Perl_pp_const) -PERL_PPDEF(Perl_pp_gvsv) -PERL_PPDEF(Perl_pp_gv) -PERL_PPDEF(Perl_pp_gelem) -PERL_PPDEF(Perl_pp_padsv) -PERL_PPDEF(Perl_pp_padav) -PERL_PPDEF(Perl_pp_padhv) -PERL_PPDEF(Perl_pp_padany) -PERL_PPDEF(Perl_pp_pushre) -PERL_PPDEF(Perl_pp_rv2gv) -PERL_PPDEF(Perl_pp_rv2sv) -PERL_PPDEF(Perl_pp_av2arylen) -PERL_PPDEF(Perl_pp_rv2cv) -PERL_PPDEF(Perl_pp_anoncode) -PERL_PPDEF(Perl_pp_prototype) -PERL_PPDEF(Perl_pp_refgen) -PERL_PPDEF(Perl_pp_srefgen) -PERL_PPDEF(Perl_pp_ref) -PERL_PPDEF(Perl_pp_bless) -PERL_PPDEF(Perl_pp_backtick) -PERL_PPDEF(Perl_pp_glob) -PERL_PPDEF(Perl_pp_readline) -PERL_PPDEF(Perl_pp_rcatline) -PERL_PPDEF(Perl_pp_regcmaybe) -PERL_PPDEF(Perl_pp_regcreset) -PERL_PPDEF(Perl_pp_regcomp) -PERL_PPDEF(Perl_pp_match) -PERL_PPDEF(Perl_pp_qr) -PERL_PPDEF(Perl_pp_subst) -PERL_PPDEF(Perl_pp_substcont) -PERL_PPDEF(Perl_pp_trans) -PERL_PPDEF(Perl_pp_sassign) -PERL_PPDEF(Perl_pp_aassign) -PERL_PPDEF(Perl_pp_chop) -PERL_PPDEF(Perl_pp_schop) -PERL_PPDEF(Perl_pp_chomp) -PERL_PPDEF(Perl_pp_schomp) -PERL_PPDEF(Perl_pp_defined) -PERL_PPDEF(Perl_pp_undef) -PERL_PPDEF(Perl_pp_study) -PERL_PPDEF(Perl_pp_pos) -PERL_PPDEF(Perl_pp_preinc) -PERL_PPDEF(Perl_pp_predec) -PERL_PPDEF(Perl_pp_postinc) -PERL_PPDEF(Perl_pp_postdec) -PERL_PPDEF(Perl_pp_pow) -PERL_PPDEF(Perl_pp_multiply) -PERL_PPDEF(Perl_pp_i_multiply) -PERL_PPDEF(Perl_pp_divide) -PERL_PPDEF(Perl_pp_i_divide) -PERL_PPDEF(Perl_pp_modulo) -PERL_PPDEF(Perl_pp_i_modulo) -PERL_PPDEF(Perl_pp_repeat) -PERL_PPDEF(Perl_pp_add) -PERL_PPDEF(Perl_pp_i_add) -PERL_PPDEF(Perl_pp_subtract) -PERL_PPDEF(Perl_pp_i_subtract) -PERL_PPDEF(Perl_pp_concat) -PERL_PPDEF(Perl_pp_stringify) -PERL_PPDEF(Perl_pp_left_shift) -PERL_PPDEF(Perl_pp_right_shift) -PERL_PPDEF(Perl_pp_lt) -PERL_PPDEF(Perl_pp_i_lt) -PERL_PPDEF(Perl_pp_gt) -PERL_PPDEF(Perl_pp_i_gt) -PERL_PPDEF(Perl_pp_le) -PERL_PPDEF(Perl_pp_i_le) -PERL_PPDEF(Perl_pp_ge) -PERL_PPDEF(Perl_pp_i_ge) -PERL_PPDEF(Perl_pp_eq) -PERL_PPDEF(Perl_pp_i_eq) -PERL_PPDEF(Perl_pp_ne) -PERL_PPDEF(Perl_pp_i_ne) -PERL_PPDEF(Perl_pp_ncmp) -PERL_PPDEF(Perl_pp_i_ncmp) -PERL_PPDEF(Perl_pp_slt) -PERL_PPDEF(Perl_pp_sgt) -PERL_PPDEF(Perl_pp_sle) -PERL_PPDEF(Perl_pp_sge) -PERL_PPDEF(Perl_pp_seq) -PERL_PPDEF(Perl_pp_sne) -PERL_PPDEF(Perl_pp_scmp) -PERL_PPDEF(Perl_pp_bit_and) -PERL_PPDEF(Perl_pp_bit_xor) -PERL_PPDEF(Perl_pp_bit_or) -PERL_PPDEF(Perl_pp_negate) -PERL_PPDEF(Perl_pp_i_negate) -PERL_PPDEF(Perl_pp_not) -PERL_PPDEF(Perl_pp_complement) -PERL_PPDEF(Perl_pp_smartmatch) -PERL_PPDEF(Perl_pp_atan2) -PERL_PPDEF(Perl_pp_sin) -PERL_PPDEF(Perl_pp_cos) -PERL_PPDEF(Perl_pp_rand) -PERL_PPDEF(Perl_pp_srand) -PERL_PPDEF(Perl_pp_exp) -PERL_PPDEF(Perl_pp_log) -PERL_PPDEF(Perl_pp_sqrt) -PERL_PPDEF(Perl_pp_int) -PERL_PPDEF(Perl_pp_hex) -PERL_PPDEF(Perl_pp_oct) -PERL_PPDEF(Perl_pp_abs) -PERL_PPDEF(Perl_pp_length) -PERL_PPDEF(Perl_pp_substr) -PERL_PPDEF(Perl_pp_vec) -PERL_PPDEF(Perl_pp_index) -PERL_PPDEF(Perl_pp_rindex) -PERL_PPDEF(Perl_pp_sprintf) -PERL_PPDEF(Perl_pp_formline) -PERL_PPDEF(Perl_pp_ord) -PERL_PPDEF(Perl_pp_chr) -PERL_PPDEF(Perl_pp_crypt) -PERL_PPDEF(Perl_pp_ucfirst) -PERL_PPDEF(Perl_pp_lcfirst) -PERL_PPDEF(Perl_pp_uc) -PERL_PPDEF(Perl_pp_lc) -PERL_PPDEF(Perl_pp_quotemeta) -PERL_PPDEF(Perl_pp_rv2av) -PERL_PPDEF(Perl_pp_aelemfast) -PERL_PPDEF(Perl_pp_aelem) -PERL_PPDEF(Perl_pp_aslice) -PERL_PPDEF(Perl_pp_aeach) -PERL_PPDEF(Perl_pp_akeys) -PERL_PPDEF(Perl_pp_avalues) -PERL_PPDEF(Perl_pp_each) -PERL_PPDEF(Perl_pp_values) -PERL_PPDEF(Perl_pp_keys) -PERL_PPDEF(Perl_pp_delete) -PERL_PPDEF(Perl_pp_exists) -PERL_PPDEF(Perl_pp_rv2hv) -PERL_PPDEF(Perl_pp_helem) -PERL_PPDEF(Perl_pp_hslice) -PERL_PPDEF(Perl_pp_boolkeys) -PERL_PPDEF(Perl_pp_unpack) -PERL_PPDEF(Perl_pp_pack) -PERL_PPDEF(Perl_pp_split) -PERL_PPDEF(Perl_pp_join) -PERL_PPDEF(Perl_pp_list) -PERL_PPDEF(Perl_pp_lslice) -PERL_PPDEF(Perl_pp_anonlist) -PERL_PPDEF(Perl_pp_anonhash) -PERL_PPDEF(Perl_pp_splice) -PERL_PPDEF(Perl_pp_push) -PERL_PPDEF(Perl_pp_pop) -PERL_PPDEF(Perl_pp_shift) -PERL_PPDEF(Perl_pp_unshift) -PERL_PPDEF(Perl_pp_sort) -PERL_PPDEF(Perl_pp_reverse) -PERL_PPDEF(Perl_pp_grepstart) -PERL_PPDEF(Perl_pp_grepwhile) -PERL_PPDEF(Perl_pp_mapstart) -PERL_PPDEF(Perl_pp_mapwhile) -PERL_PPDEF(Perl_pp_range) -PERL_PPDEF(Perl_pp_flip) -PERL_PPDEF(Perl_pp_flop) -PERL_PPDEF(Perl_pp_and) -PERL_PPDEF(Perl_pp_or) -PERL_PPDEF(Perl_pp_xor) -PERL_PPDEF(Perl_pp_dor) -PERL_PPDEF(Perl_pp_cond_expr) -PERL_PPDEF(Perl_pp_andassign) -PERL_PPDEF(Perl_pp_orassign) -PERL_PPDEF(Perl_pp_dorassign) -PERL_PPDEF(Perl_pp_method) -PERL_PPDEF(Perl_pp_entersub) -PERL_PPDEF(Perl_pp_leavesub) -PERL_PPDEF(Perl_pp_leavesublv) -PERL_PPDEF(Perl_pp_caller) -PERL_PPDEF(Perl_pp_warn) -PERL_PPDEF(Perl_pp_die) -PERL_PPDEF(Perl_pp_reset) -PERL_PPDEF(Perl_pp_lineseq) -PERL_PPDEF(Perl_pp_nextstate) -PERL_PPDEF(Perl_pp_dbstate) -PERL_PPDEF(Perl_pp_unstack) -PERL_PPDEF(Perl_pp_enter) -PERL_PPDEF(Perl_pp_leave) -PERL_PPDEF(Perl_pp_scope) -PERL_PPDEF(Perl_pp_enteriter) -PERL_PPDEF(Perl_pp_iter) -PERL_PPDEF(Perl_pp_enterloop) -PERL_PPDEF(Perl_pp_leaveloop) -PERL_PPDEF(Perl_pp_return) -PERL_PPDEF(Perl_pp_last) -PERL_PPDEF(Perl_pp_next) -PERL_PPDEF(Perl_pp_redo) -PERL_PPDEF(Perl_pp_dump) -PERL_PPDEF(Perl_pp_goto) -PERL_PPDEF(Perl_pp_exit) -PERL_PPDEF(Perl_pp_method_named) -PERL_PPDEF(Perl_pp_entergiven) -PERL_PPDEF(Perl_pp_leavegiven) -PERL_PPDEF(Perl_pp_enterwhen) -PERL_PPDEF(Perl_pp_leavewhen) -PERL_PPDEF(Perl_pp_break) -PERL_PPDEF(Perl_pp_continue) -PERL_PPDEF(Perl_pp_open) -PERL_PPDEF(Perl_pp_close) -PERL_PPDEF(Perl_pp_pipe_op) -PERL_PPDEF(Perl_pp_fileno) -PERL_PPDEF(Perl_pp_umask) -PERL_PPDEF(Perl_pp_binmode) -PERL_PPDEF(Perl_pp_tie) -PERL_PPDEF(Perl_pp_untie) -PERL_PPDEF(Perl_pp_tied) -PERL_PPDEF(Perl_pp_dbmopen) -PERL_PPDEF(Perl_pp_dbmclose) -PERL_PPDEF(Perl_pp_sselect) -PERL_PPDEF(Perl_pp_select) -PERL_PPDEF(Perl_pp_getc) -PERL_PPDEF(Perl_pp_read) -PERL_PPDEF(Perl_pp_enterwrite) -PERL_PPDEF(Perl_pp_leavewrite) -PERL_PPDEF(Perl_pp_prtf) -PERL_PPDEF(Perl_pp_print) -PERL_PPDEF(Perl_pp_say) -PERL_PPDEF(Perl_pp_sysopen) -PERL_PPDEF(Perl_pp_sysseek) -PERL_PPDEF(Perl_pp_sysread) -PERL_PPDEF(Perl_pp_syswrite) -PERL_PPDEF(Perl_pp_eof) -PERL_PPDEF(Perl_pp_tell) -PERL_PPDEF(Perl_pp_seek) -PERL_PPDEF(Perl_pp_truncate) -PERL_PPDEF(Perl_pp_fcntl) -PERL_PPDEF(Perl_pp_ioctl) -PERL_PPDEF(Perl_pp_flock) -PERL_PPDEF(Perl_pp_send) -PERL_PPDEF(Perl_pp_recv) -PERL_PPDEF(Perl_pp_socket) -PERL_PPDEF(Perl_pp_sockpair) -PERL_PPDEF(Perl_pp_bind) -PERL_PPDEF(Perl_pp_connect) -PERL_PPDEF(Perl_pp_listen) -PERL_PPDEF(Perl_pp_accept) -PERL_PPDEF(Perl_pp_shutdown) -PERL_PPDEF(Perl_pp_gsockopt) -PERL_PPDEF(Perl_pp_ssockopt) -PERL_PPDEF(Perl_pp_getsockname) -PERL_PPDEF(Perl_pp_getpeername) -PERL_PPDEF(Perl_pp_lstat) -PERL_PPDEF(Perl_pp_stat) -PERL_PPDEF(Perl_pp_ftrread) -PERL_PPDEF(Perl_pp_ftrwrite) -PERL_PPDEF(Perl_pp_ftrexec) -PERL_PPDEF(Perl_pp_fteread) -PERL_PPDEF(Perl_pp_ftewrite) -PERL_PPDEF(Perl_pp_fteexec) -PERL_PPDEF(Perl_pp_ftis) -PERL_PPDEF(Perl_pp_ftsize) -PERL_PPDEF(Perl_pp_ftmtime) -PERL_PPDEF(Perl_pp_ftatime) -PERL_PPDEF(Perl_pp_ftctime) -PERL_PPDEF(Perl_pp_ftrowned) -PERL_PPDEF(Perl_pp_fteowned) -PERL_PPDEF(Perl_pp_ftzero) -PERL_PPDEF(Perl_pp_ftsock) -PERL_PPDEF(Perl_pp_ftchr) -PERL_PPDEF(Perl_pp_ftblk) -PERL_PPDEF(Perl_pp_ftfile) -PERL_PPDEF(Perl_pp_ftdir) -PERL_PPDEF(Perl_pp_ftpipe) -PERL_PPDEF(Perl_pp_ftsuid) -PERL_PPDEF(Perl_pp_ftsgid) -PERL_PPDEF(Perl_pp_ftsvtx) -PERL_PPDEF(Perl_pp_ftlink) -PERL_PPDEF(Perl_pp_fttty) -PERL_PPDEF(Perl_pp_fttext) -PERL_PPDEF(Perl_pp_ftbinary) -PERL_PPDEF(Perl_pp_chdir) -PERL_PPDEF(Perl_pp_chown) -PERL_PPDEF(Perl_pp_chroot) -PERL_PPDEF(Perl_pp_unlink) -PERL_PPDEF(Perl_pp_chmod) -PERL_PPDEF(Perl_pp_utime) -PERL_PPDEF(Perl_pp_rename) -PERL_PPDEF(Perl_pp_link) -PERL_PPDEF(Perl_pp_symlink) -PERL_PPDEF(Perl_pp_readlink) -PERL_PPDEF(Perl_pp_mkdir) -PERL_PPDEF(Perl_pp_rmdir) -PERL_PPDEF(Perl_pp_open_dir) -PERL_PPDEF(Perl_pp_readdir) -PERL_PPDEF(Perl_pp_telldir) -PERL_PPDEF(Perl_pp_seekdir) -PERL_PPDEF(Perl_pp_rewinddir) -PERL_PPDEF(Perl_pp_closedir) -PERL_PPDEF(Perl_pp_fork) -PERL_PPDEF(Perl_pp_wait) -PERL_PPDEF(Perl_pp_waitpid) -PERL_PPDEF(Perl_pp_system) -PERL_PPDEF(Perl_pp_exec) -PERL_PPDEF(Perl_pp_kill) -PERL_PPDEF(Perl_pp_getppid) -PERL_PPDEF(Perl_pp_getpgrp) -PERL_PPDEF(Perl_pp_setpgrp) -PERL_PPDEF(Perl_pp_getpriority) -PERL_PPDEF(Perl_pp_setpriority) -PERL_PPDEF(Perl_pp_time) -PERL_PPDEF(Perl_pp_tms) -PERL_PPDEF(Perl_pp_localtime) -PERL_PPDEF(Perl_pp_gmtime) -PERL_PPDEF(Perl_pp_alarm) -PERL_PPDEF(Perl_pp_sleep) -PERL_PPDEF(Perl_pp_shmget) -PERL_PPDEF(Perl_pp_shmctl) -PERL_PPDEF(Perl_pp_shmread) -PERL_PPDEF(Perl_pp_shmwrite) -PERL_PPDEF(Perl_pp_msgget) -PERL_PPDEF(Perl_pp_msgctl) -PERL_PPDEF(Perl_pp_msgsnd) -PERL_PPDEF(Perl_pp_msgrcv) -PERL_PPDEF(Perl_pp_semop) -PERL_PPDEF(Perl_pp_semget) -PERL_PPDEF(Perl_pp_semctl) -PERL_PPDEF(Perl_pp_require) -PERL_PPDEF(Perl_pp_dofile) -PERL_PPDEF(Perl_pp_hintseval) -PERL_PPDEF(Perl_pp_entereval) -PERL_PPDEF(Perl_pp_leaveeval) -PERL_PPDEF(Perl_pp_entertry) -PERL_PPDEF(Perl_pp_leavetry) -PERL_PPDEF(Perl_pp_ghbyname) -PERL_PPDEF(Perl_pp_ghbyaddr) -PERL_PPDEF(Perl_pp_ghostent) -PERL_PPDEF(Perl_pp_gnbyname) -PERL_PPDEF(Perl_pp_gnbyaddr) -PERL_PPDEF(Perl_pp_gnetent) -PERL_PPDEF(Perl_pp_gpbyname) -PERL_PPDEF(Perl_pp_gpbynumber) -PERL_PPDEF(Perl_pp_gprotoent) -PERL_PPDEF(Perl_pp_gsbyname) -PERL_PPDEF(Perl_pp_gsbyport) -PERL_PPDEF(Perl_pp_gservent) -PERL_PPDEF(Perl_pp_shostent) -PERL_PPDEF(Perl_pp_snetent) -PERL_PPDEF(Perl_pp_sprotoent) -PERL_PPDEF(Perl_pp_sservent) -PERL_PPDEF(Perl_pp_ehostent) -PERL_PPDEF(Perl_pp_enetent) -PERL_PPDEF(Perl_pp_eprotoent) -PERL_PPDEF(Perl_pp_eservent) -PERL_PPDEF(Perl_pp_gpwnam) -PERL_PPDEF(Perl_pp_gpwuid) -PERL_PPDEF(Perl_pp_gpwent) -PERL_PPDEF(Perl_pp_spwent) -PERL_PPDEF(Perl_pp_epwent) -PERL_PPDEF(Perl_pp_ggrnam) -PERL_PPDEF(Perl_pp_ggrgid) -PERL_PPDEF(Perl_pp_ggrent) -PERL_PPDEF(Perl_pp_sgrent) -PERL_PPDEF(Perl_pp_egrent) -PERL_PPDEF(Perl_pp_getlogin) -PERL_PPDEF(Perl_pp_syscall) -PERL_PPDEF(Perl_pp_lock) -PERL_PPDEF(Perl_pp_once) +PERL_CALLCONV OP *Perl_do_kv(pTHX); +PERL_CALLCONV OP *Perl_pp_aassign(pTHX); +PERL_CALLCONV OP *Perl_pp_abs(pTHX); +PERL_CALLCONV OP *Perl_pp_accept(pTHX); +PERL_CALLCONV OP *Perl_pp_add(pTHX); +PERL_CALLCONV OP *Perl_pp_aeach(pTHX); +PERL_CALLCONV OP *Perl_pp_aelem(pTHX); +PERL_CALLCONV OP *Perl_pp_aelemfast(pTHX); +PERL_CALLCONV OP *Perl_pp_akeys(pTHX); +PERL_CALLCONV OP *Perl_pp_alarm(pTHX); +PERL_CALLCONV OP *Perl_pp_and(pTHX); +PERL_CALLCONV OP *Perl_pp_anoncode(pTHX); +PERL_CALLCONV OP *Perl_pp_anonhash(pTHX); +PERL_CALLCONV OP *Perl_pp_anonlist(pTHX); +PERL_CALLCONV OP *Perl_pp_aslice(pTHX); +PERL_CALLCONV OP *Perl_pp_atan2(pTHX); +PERL_CALLCONV OP *Perl_pp_av2arylen(pTHX); +PERL_CALLCONV OP *Perl_pp_backtick(pTHX); +PERL_CALLCONV OP *Perl_pp_bind(pTHX); +PERL_CALLCONV OP *Perl_pp_binmode(pTHX); +PERL_CALLCONV OP *Perl_pp_bit_and(pTHX); +PERL_CALLCONV OP *Perl_pp_bit_or(pTHX); +PERL_CALLCONV OP *Perl_pp_bless(pTHX); +PERL_CALLCONV OP *Perl_pp_boolkeys(pTHX); +PERL_CALLCONV OP *Perl_pp_break(pTHX); +PERL_CALLCONV OP *Perl_pp_caller(pTHX); +PERL_CALLCONV OP *Perl_pp_chdir(pTHX); +PERL_CALLCONV OP *Perl_pp_chop(pTHX); +PERL_CALLCONV OP *Perl_pp_chown(pTHX); +PERL_CALLCONV OP *Perl_pp_chr(pTHX); +PERL_CALLCONV OP *Perl_pp_chroot(pTHX); +PERL_CALLCONV OP *Perl_pp_close(pTHX); +PERL_CALLCONV OP *Perl_pp_closedir(pTHX); +PERL_CALLCONV OP *Perl_pp_complement(pTHX); +PERL_CALLCONV OP *Perl_pp_concat(pTHX); +PERL_CALLCONV OP *Perl_pp_cond_expr(pTHX); +PERL_CALLCONV OP *Perl_pp_const(pTHX); +PERL_CALLCONV OP *Perl_pp_continue(pTHX); +PERL_CALLCONV OP *Perl_pp_crypt(pTHX); +PERL_CALLCONV OP *Perl_pp_dbmopen(pTHX); +PERL_CALLCONV OP *Perl_pp_dbstate(pTHX); +PERL_CALLCONV OP *Perl_pp_defined(pTHX); +PERL_CALLCONV OP *Perl_pp_delete(pTHX); +PERL_CALLCONV OP *Perl_pp_die(pTHX); +PERL_CALLCONV OP *Perl_pp_divide(pTHX); +PERL_CALLCONV OP *Perl_pp_each(pTHX); +PERL_CALLCONV OP *Perl_pp_ehostent(pTHX); +PERL_CALLCONV OP *Perl_pp_enter(pTHX); +PERL_CALLCONV OP *Perl_pp_entereval(pTHX); +PERL_CALLCONV OP *Perl_pp_entergiven(pTHX); +PERL_CALLCONV OP *Perl_pp_enteriter(pTHX); +PERL_CALLCONV OP *Perl_pp_enterloop(pTHX); +PERL_CALLCONV OP *Perl_pp_entersub(pTHX); +PERL_CALLCONV OP *Perl_pp_entertry(pTHX); +PERL_CALLCONV OP *Perl_pp_enterwhen(pTHX); +PERL_CALLCONV OP *Perl_pp_enterwrite(pTHX); +PERL_CALLCONV OP *Perl_pp_eof(pTHX); +PERL_CALLCONV OP *Perl_pp_eq(pTHX); +PERL_CALLCONV OP *Perl_pp_exec(pTHX); +PERL_CALLCONV OP *Perl_pp_exists(pTHX); +PERL_CALLCONV OP *Perl_pp_exit(pTHX); +PERL_CALLCONV OP *Perl_pp_fileno(pTHX); +PERL_CALLCONV OP *Perl_pp_flip(pTHX); +PERL_CALLCONV OP *Perl_pp_flock(pTHX); +PERL_CALLCONV OP *Perl_pp_flop(pTHX); +PERL_CALLCONV OP *Perl_pp_fork(pTHX); +PERL_CALLCONV OP *Perl_pp_formline(pTHX); +PERL_CALLCONV OP *Perl_pp_ftis(pTHX); +PERL_CALLCONV OP *Perl_pp_ftlink(pTHX); +PERL_CALLCONV OP *Perl_pp_ftrowned(pTHX); +PERL_CALLCONV OP *Perl_pp_ftrread(pTHX); +PERL_CALLCONV OP *Perl_pp_fttext(pTHX); +PERL_CALLCONV OP *Perl_pp_fttty(pTHX); +PERL_CALLCONV OP *Perl_pp_ge(pTHX); +PERL_CALLCONV OP *Perl_pp_gelem(pTHX); +PERL_CALLCONV OP *Perl_pp_getc(pTHX); +PERL_CALLCONV OP *Perl_pp_getlogin(pTHX); +PERL_CALLCONV OP *Perl_pp_getpeername(pTHX); +PERL_CALLCONV OP *Perl_pp_getpgrp(pTHX); +PERL_CALLCONV OP *Perl_pp_getppid(pTHX); +PERL_CALLCONV OP *Perl_pp_getpriority(pTHX); +PERL_CALLCONV OP *Perl_pp_ggrent(pTHX); +PERL_CALLCONV OP *Perl_pp_ghostent(pTHX); +PERL_CALLCONV OP *Perl_pp_glob(pTHX); +PERL_CALLCONV OP *Perl_pp_gmtime(pTHX); +PERL_CALLCONV OP *Perl_pp_gnetent(pTHX); +PERL_CALLCONV OP *Perl_pp_goto(pTHX); +PERL_CALLCONV OP *Perl_pp_gprotoent(pTHX); +PERL_CALLCONV OP *Perl_pp_gpwent(pTHX); +PERL_CALLCONV OP *Perl_pp_grepstart(pTHX); +PERL_CALLCONV OP *Perl_pp_grepwhile(pTHX); +PERL_CALLCONV OP *Perl_pp_gservent(pTHX); +PERL_CALLCONV OP *Perl_pp_gt(pTHX); +PERL_CALLCONV OP *Perl_pp_gv(pTHX); +PERL_CALLCONV OP *Perl_pp_gvsv(pTHX); +PERL_CALLCONV OP *Perl_pp_helem(pTHX); +PERL_CALLCONV OP *Perl_pp_hintseval(pTHX); +PERL_CALLCONV OP *Perl_pp_hslice(pTHX); +PERL_CALLCONV OP *Perl_pp_i_add(pTHX); +PERL_CALLCONV OP *Perl_pp_i_divide(pTHX); +PERL_CALLCONV OP *Perl_pp_i_eq(pTHX); +PERL_CALLCONV OP *Perl_pp_i_ge(pTHX); +PERL_CALLCONV OP *Perl_pp_i_gt(pTHX); +PERL_CALLCONV OP *Perl_pp_i_le(pTHX); +PERL_CALLCONV OP *Perl_pp_i_lt(pTHX); +PERL_CALLCONV OP *Perl_pp_i_modulo(pTHX); +PERL_CALLCONV OP *Perl_pp_i_multiply(pTHX); +PERL_CALLCONV OP *Perl_pp_i_ncmp(pTHX); +PERL_CALLCONV OP *Perl_pp_i_ne(pTHX); +PERL_CALLCONV OP *Perl_pp_i_negate(pTHX); +PERL_CALLCONV OP *Perl_pp_i_subtract(pTHX); +PERL_CALLCONV OP *Perl_pp_index(pTHX); +PERL_CALLCONV OP *Perl_pp_int(pTHX); +PERL_CALLCONV OP *Perl_pp_ioctl(pTHX); +PERL_CALLCONV OP *Perl_pp_iter(pTHX); +PERL_CALLCONV OP *Perl_pp_join(pTHX); +PERL_CALLCONV OP *Perl_pp_last(pTHX); +PERL_CALLCONV OP *Perl_pp_lc(pTHX); +PERL_CALLCONV OP *Perl_pp_le(pTHX); +PERL_CALLCONV OP *Perl_pp_leave(pTHX); +PERL_CALLCONV OP *Perl_pp_leaveeval(pTHX); +PERL_CALLCONV OP *Perl_pp_leavegiven(pTHX); +PERL_CALLCONV OP *Perl_pp_leaveloop(pTHX); +PERL_CALLCONV OP *Perl_pp_leavesub(pTHX); +PERL_CALLCONV OP *Perl_pp_leavesublv(pTHX); +PERL_CALLCONV OP *Perl_pp_leavetry(pTHX); +PERL_CALLCONV OP *Perl_pp_leavewhen(pTHX); +PERL_CALLCONV OP *Perl_pp_leavewrite(pTHX); +PERL_CALLCONV OP *Perl_pp_left_shift(pTHX); +PERL_CALLCONV OP *Perl_pp_length(pTHX); +PERL_CALLCONV OP *Perl_pp_link(pTHX); +PERL_CALLCONV OP *Perl_pp_list(pTHX); +PERL_CALLCONV OP *Perl_pp_listen(pTHX); +PERL_CALLCONV OP *Perl_pp_lock(pTHX); +PERL_CALLCONV OP *Perl_pp_lslice(pTHX); +PERL_CALLCONV OP *Perl_pp_lt(pTHX); +PERL_CALLCONV OP *Perl_pp_mapwhile(pTHX); +PERL_CALLCONV OP *Perl_pp_match(pTHX); +PERL_CALLCONV OP *Perl_pp_method(pTHX); +PERL_CALLCONV OP *Perl_pp_method_named(pTHX); +PERL_CALLCONV OP *Perl_pp_mkdir(pTHX); +PERL_CALLCONV OP *Perl_pp_modulo(pTHX); +PERL_CALLCONV OP *Perl_pp_multiply(pTHX); +PERL_CALLCONV OP *Perl_pp_ncmp(pTHX); +PERL_CALLCONV OP *Perl_pp_ne(pTHX); +PERL_CALLCONV OP *Perl_pp_negate(pTHX); +PERL_CALLCONV OP *Perl_pp_next(pTHX); +PERL_CALLCONV OP *Perl_pp_nextstate(pTHX); +PERL_CALLCONV OP *Perl_pp_not(pTHX); +PERL_CALLCONV OP *Perl_pp_null(pTHX); +PERL_CALLCONV OP *Perl_pp_oct(pTHX); +PERL_CALLCONV OP *Perl_pp_once(pTHX); +PERL_CALLCONV OP *Perl_pp_open(pTHX); +PERL_CALLCONV OP *Perl_pp_open_dir(pTHX); +PERL_CALLCONV OP *Perl_pp_or(pTHX); +PERL_CALLCONV OP *Perl_pp_ord(pTHX); +PERL_CALLCONV OP *Perl_pp_pack(pTHX); +PERL_CALLCONV OP *Perl_pp_padav(pTHX); +PERL_CALLCONV OP *Perl_pp_padhv(pTHX); +PERL_CALLCONV OP *Perl_pp_padsv(pTHX); +PERL_CALLCONV OP *Perl_pp_pipe_op(pTHX); +PERL_CALLCONV OP *Perl_pp_pos(pTHX); +PERL_CALLCONV OP *Perl_pp_postdec(pTHX); +PERL_CALLCONV OP *Perl_pp_postinc(pTHX); +PERL_CALLCONV OP *Perl_pp_pow(pTHX); +PERL_CALLCONV OP *Perl_pp_predec(pTHX); +PERL_CALLCONV OP *Perl_pp_preinc(pTHX); +PERL_CALLCONV OP *Perl_pp_print(pTHX); +PERL_CALLCONV OP *Perl_pp_prototype(pTHX); +PERL_CALLCONV OP *Perl_pp_prtf(pTHX); +PERL_CALLCONV OP *Perl_pp_push(pTHX); +PERL_CALLCONV OP *Perl_pp_pushmark(pTHX); +PERL_CALLCONV OP *Perl_pp_pushre(pTHX); +PERL_CALLCONV OP *Perl_pp_qr(pTHX); +PERL_CALLCONV OP *Perl_pp_quotemeta(pTHX); +PERL_CALLCONV OP *Perl_pp_rand(pTHX); +PERL_CALLCONV OP *Perl_pp_range(pTHX); +PERL_CALLCONV OP *Perl_pp_rcatline(pTHX); +PERL_CALLCONV OP *Perl_pp_readdir(pTHX); +PERL_CALLCONV OP *Perl_pp_readline(pTHX); +PERL_CALLCONV OP *Perl_pp_readlink(pTHX); +PERL_CALLCONV OP *Perl_pp_redo(pTHX); +PERL_CALLCONV OP *Perl_pp_ref(pTHX); +PERL_CALLCONV OP *Perl_pp_refgen(pTHX); +PERL_CALLCONV OP *Perl_pp_regcomp(pTHX); +PERL_CALLCONV OP *Perl_pp_regcreset(pTHX); +PERL_CALLCONV OP *Perl_pp_rename(pTHX); +PERL_CALLCONV OP *Perl_pp_repeat(pTHX); +PERL_CALLCONV OP *Perl_pp_require(pTHX); +PERL_CALLCONV OP *Perl_pp_reset(pTHX); +PERL_CALLCONV OP *Perl_pp_return(pTHX); +PERL_CALLCONV OP *Perl_pp_reverse(pTHX); +PERL_CALLCONV OP *Perl_pp_rewinddir(pTHX); +PERL_CALLCONV OP *Perl_pp_right_shift(pTHX); +PERL_CALLCONV OP *Perl_pp_rkeys(pTHX); +PERL_CALLCONV OP *Perl_pp_rmdir(pTHX); +PERL_CALLCONV OP *Perl_pp_rv2av(pTHX); +PERL_CALLCONV OP *Perl_pp_rv2cv(pTHX); +PERL_CALLCONV OP *Perl_pp_rv2gv(pTHX); +PERL_CALLCONV OP *Perl_pp_rv2sv(pTHX); +PERL_CALLCONV OP *Perl_pp_sassign(pTHX); +PERL_CALLCONV OP *Perl_pp_schop(pTHX); +PERL_CALLCONV OP *Perl_pp_scmp(pTHX); +PERL_CALLCONV OP *Perl_pp_seekdir(pTHX); +PERL_CALLCONV OP *Perl_pp_select(pTHX); +PERL_CALLCONV OP *Perl_pp_semctl(pTHX); +PERL_CALLCONV OP *Perl_pp_semget(pTHX); +PERL_CALLCONV OP *Perl_pp_seq(pTHX); +PERL_CALLCONV OP *Perl_pp_setpgrp(pTHX); +PERL_CALLCONV OP *Perl_pp_setpriority(pTHX); +PERL_CALLCONV OP *Perl_pp_shift(pTHX); +PERL_CALLCONV OP *Perl_pp_shmwrite(pTHX); +PERL_CALLCONV OP *Perl_pp_shostent(pTHX); +PERL_CALLCONV OP *Perl_pp_shutdown(pTHX); +PERL_CALLCONV OP *Perl_pp_sin(pTHX); +PERL_CALLCONV OP *Perl_pp_sle(pTHX); +PERL_CALLCONV OP *Perl_pp_sleep(pTHX); +PERL_CALLCONV OP *Perl_pp_smartmatch(pTHX); +PERL_CALLCONV OP *Perl_pp_sne(pTHX); +PERL_CALLCONV OP *Perl_pp_socket(pTHX); +PERL_CALLCONV OP *Perl_pp_sockpair(pTHX); +PERL_CALLCONV OP *Perl_pp_sort(pTHX); +PERL_CALLCONV OP *Perl_pp_splice(pTHX); +PERL_CALLCONV OP *Perl_pp_split(pTHX); +PERL_CALLCONV OP *Perl_pp_sprintf(pTHX); +PERL_CALLCONV OP *Perl_pp_srand(pTHX); +PERL_CALLCONV OP *Perl_pp_srefgen(pTHX); +PERL_CALLCONV OP *Perl_pp_sselect(pTHX); +PERL_CALLCONV OP *Perl_pp_ssockopt(pTHX); +PERL_CALLCONV OP *Perl_pp_stat(pTHX); +PERL_CALLCONV OP *Perl_pp_stringify(pTHX); +PERL_CALLCONV OP *Perl_pp_stub(pTHX); +PERL_CALLCONV OP *Perl_pp_study(pTHX); +PERL_CALLCONV OP *Perl_pp_subst(pTHX); +PERL_CALLCONV OP *Perl_pp_substcont(pTHX); +PERL_CALLCONV OP *Perl_pp_substr(pTHX); +PERL_CALLCONV OP *Perl_pp_subtract(pTHX); +PERL_CALLCONV OP *Perl_pp_syscall(pTHX); +PERL_CALLCONV OP *Perl_pp_sysopen(pTHX); +PERL_CALLCONV OP *Perl_pp_sysread(pTHX); +PERL_CALLCONV OP *Perl_pp_sysseek(pTHX); +PERL_CALLCONV OP *Perl_pp_system(pTHX); +PERL_CALLCONV OP *Perl_pp_syswrite(pTHX); +PERL_CALLCONV OP *Perl_pp_tell(pTHX); +PERL_CALLCONV OP *Perl_pp_telldir(pTHX); +PERL_CALLCONV OP *Perl_pp_tie(pTHX); +PERL_CALLCONV OP *Perl_pp_tied(pTHX); +PERL_CALLCONV OP *Perl_pp_time(pTHX); +PERL_CALLCONV OP *Perl_pp_tms(pTHX); +PERL_CALLCONV OP *Perl_pp_trans(pTHX); +PERL_CALLCONV OP *Perl_pp_truncate(pTHX); +PERL_CALLCONV OP *Perl_pp_uc(pTHX); +PERL_CALLCONV OP *Perl_pp_ucfirst(pTHX); +PERL_CALLCONV OP *Perl_pp_umask(pTHX); +PERL_CALLCONV OP *Perl_pp_undef(pTHX); +PERL_CALLCONV OP *Perl_pp_unpack(pTHX); +PERL_CALLCONV OP *Perl_pp_unshift(pTHX); +PERL_CALLCONV OP *Perl_pp_unstack(pTHX); +PERL_CALLCONV OP *Perl_pp_untie(pTHX); +PERL_CALLCONV OP *Perl_pp_vec(pTHX); +PERL_CALLCONV OP *Perl_pp_wait(pTHX); +PERL_CALLCONV OP *Perl_pp_waitpid(pTHX); +PERL_CALLCONV OP *Perl_pp_wantarray(pTHX); +PERL_CALLCONV OP *Perl_pp_warn(pTHX); +PERL_CALLCONV OP *Perl_pp_xor(pTHX); +PERL_CALLCONV OP *Perl_unimplemented_op(pTHX); /* ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/proto.h b/Master/tlpkg/tlperl/lib/CORE/proto.h index 3306ab0d052..0b46a791149 100644 --- a/Master/tlpkg/tlperl/lib/CORE/proto.h +++ b/Master/tlpkg/tlperl/lib/CORE/proto.h @@ -1,153 +1,76 @@ -/* -*- buffer-read-only: t -*- +/* -*- buffer-read-only: t -*- * * proto.h * - * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, - * 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, by Larry Wall and others + * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, + * 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - * This file is built by embed.pl from data in embed.fnc, embed.pl, - * pp.sym, intrpvar.h, and perlvars.h. + * This file is built by regen/embed.pl from data in embed.fnc, + * regen/embed.pl, regen/opcodes, intrpvar.h and perlvars.h. * Any changes made here will be lost! * * Edit those files and run 'make regen_headers' to effect changes. */ START_EXTERN_C +PERL_CALLCONV int Perl_Gv_AMupdate(pTHX_ HV* stash, bool destructing) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GV_AMUPDATE \ + assert(stash) -#if defined(PERL_IMPLICIT_SYS) -PERL_CALLCONV PerlInterpreter* perl_alloc_using(struct IPerlMem *ipM, struct IPerlMem *ipMS, struct IPerlMem *ipMP, struct IPerlEnv *ipE, struct IPerlStdIO *ipStd, struct IPerlLIO *ipLIO, struct IPerlDir *ipD, struct IPerlSock *ipS, struct IPerlProc *ipP) - __attribute__nonnull__(1) - __attribute__nonnull__(2) - __attribute__nonnull__(3) - __attribute__nonnull__(4) - __attribute__nonnull__(5) - __attribute__nonnull__(6) - __attribute__nonnull__(7) - __attribute__nonnull__(8) - __attribute__nonnull__(9); -#define PERL_ARGS_ASSERT_PERL_ALLOC_USING \ - assert(ipM); assert(ipMS); assert(ipMP); assert(ipE); assert(ipStd); assert(ipLIO); assert(ipD); assert(ipS); assert(ipP) - -#endif -PERL_CALLCONV PerlInterpreter* perl_alloc(void); -PERL_CALLCONV void perl_construct(PerlInterpreter *my_perl) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_PERL_CONSTRUCT \ - assert(my_perl) - -PERL_CALLCONV int perl_destruct(PerlInterpreter *my_perl) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_PERL_DESTRUCT \ - assert(my_perl) - -PERL_CALLCONV void perl_free(PerlInterpreter *my_perl) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_PERL_FREE \ - assert(my_perl) - -PERL_CALLCONV int perl_run(PerlInterpreter *my_perl) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_PERL_RUN \ - assert(my_perl) - -PERL_CALLCONV int perl_parse(PerlInterpreter *my_perl, XSINIT_t xsinit, int argc, char** argv, char** env) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_PERL_PARSE \ - assert(my_perl) - -PERL_CALLCONV bool Perl_doing_taint(int argc, char** argv, char** env) - __attribute__warn_unused_result__; - -#if defined(USE_ITHREADS) -PERL_CALLCONV PerlInterpreter* perl_clone(PerlInterpreter *proto_perl, UV flags) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_PERL_CLONE \ - assert(proto_perl) - -# if defined(PERL_IMPLICIT_SYS) -PERL_CALLCONV PerlInterpreter* perl_clone_using(PerlInterpreter *proto_perl, UV flags, struct IPerlMem* ipM, struct IPerlMem* ipMS, struct IPerlMem* ipMP, struct IPerlEnv* ipE, struct IPerlStdIO* ipStd, struct IPerlLIO* ipLIO, struct IPerlDir* ipD, struct IPerlSock* ipS, struct IPerlProc* ipP) - __attribute__nonnull__(1) - __attribute__nonnull__(3) - __attribute__nonnull__(4) - __attribute__nonnull__(5) - __attribute__nonnull__(6) - __attribute__nonnull__(7) - __attribute__nonnull__(8) - __attribute__nonnull__(9) - __attribute__nonnull__(10) - __attribute__nonnull__(11); -#define PERL_ARGS_ASSERT_PERL_CLONE_USING \ - assert(proto_perl); assert(ipM); assert(ipMS); assert(ipMP); assert(ipE); assert(ipStd); assert(ipLIO); assert(ipD); assert(ipS); assert(ipP) - -# endif -#endif - -PERL_CALLCONV Malloc_t Perl_malloc(MEM_SIZE nbytes) - __attribute__malloc__ - __attribute__warn_unused_result__; - -PERL_CALLCONV Malloc_t Perl_calloc(MEM_SIZE elements, MEM_SIZE size) - __attribute__malloc__ - __attribute__warn_unused_result__; +PERL_CALLCONV const char * Perl_PerlIO_context_layers(pTHX_ const char *mode); +PERL_CALLCONV void Perl__append_range_to_invlist(pTHX_ HV* const invlist, const UV start, const UV end) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT__APPEND_RANGE_TO_INVLIST \ + assert(invlist) -PERL_CALLCONV Malloc_t Perl_realloc(Malloc_t where, MEM_SIZE nbytes) - __attribute__malloc__ +PERL_CALLCONV HV* Perl__new_invlist(pTHX_ IV initial_size) __attribute__warn_unused_result__; -PERL_CALLCONV Free_t Perl_mfree(Malloc_t where); -#if defined(MYMALLOC) -PERL_CALLCONV MEM_SIZE Perl_malloced_size(void *p) +PERL_CALLCONV HV* Perl__swash_inversion_hash(pTHX_ SV* const swash) __attribute__warn_unused_result__ - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_MALLOCED_SIZE \ - assert(p) - -PERL_CALLCONV MEM_SIZE Perl_malloc_good_size(size_t nbytes) - __attribute__warn_unused_result__; - -#endif - -PERL_CALLCONV void* Perl_get_context(void) - __attribute__warn_unused_result__; - -PERL_CALLCONV void Perl_set_context(void *t) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_SET_CONTEXT \ - assert(t) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT__SWASH_INVERSION_HASH \ + assert(swash) -PERL_CALLCONV I32 Perl_regcurly(const char *s) +PERL_CALLCONV HV* Perl__swash_to_invlist(pTHX_ SV* const swash) __attribute__warn_unused_result__ - __attribute__pure__ - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_REGCURLY \ - assert(s) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT__SWASH_TO_INVLIST \ + assert(swash) +PERL_CALLCONV UV Perl__to_uni_fold_flags(pTHX_ UV c, U8 *p, STRLEN *lenp, U8 flags) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT__TO_UNI_FOLD_FLAGS \ + assert(p); assert(lenp) -END_EXTERN_C +PERL_CALLCONV UV Perl__to_utf8_fold_flags(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp, U8 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT__TO_UTF8_FOLD_FLAGS \ + assert(p); assert(ustrp) + +PERL_CALLCONV PADOFFSET Perl_allocmy(pTHX_ const char *const name, const STRLEN len, const U32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_ALLOCMY \ + assert(name) -/* functions with flag 'n' should come before here */ -START_EXTERN_C -# include "pp_proto.h" PERL_CALLCONV SV* Perl_amagic_call(pTHX_ SV* left, SV* right, int method, int dir) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_AMAGIC_CALL \ assert(left); assert(right) -PERL_CALLCONV int Perl_Gv_AMupdate(pTHX_ HV* stash, bool destructing) +PERL_CALLCONV SV * Perl_amagic_deref_call(pTHX_ SV *ref, int method) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GV_AMUPDATE \ - assert(stash) - -PERL_CALLCONV CV* Perl_gv_handler(pTHX_ HV* stash, I32 id) - __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL \ + assert(ref) -PERL_CALLCONV OP* Perl_append_elem(pTHX_ I32 optype, OP* first, OP* last); -PERL_CALLCONV OP* Perl_append_list(pTHX_ I32 optype, LISTOP* first, LISTOP* last); PERL_CALLCONV I32 Perl_apply(pTHX_ I32 type, SV** mark, SV** sp) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); @@ -161,11 +84,30 @@ PERL_CALLCONV void Perl_apply_attrs_string(pTHX_ const char *stashpv, CV *cv, co #define PERL_ARGS_ASSERT_APPLY_ATTRS_STRING \ assert(stashpv); assert(cv); assert(attrstr) +PERL_CALLCONV void Perl_atfork_lock(void); +PERL_CALLCONV void Perl_atfork_unlock(void); +PERL_CALLCONV SV** Perl_av_arylen_p(pTHX_ AV *av) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_AV_ARYLEN_P \ + assert(av) + PERL_CALLCONV void Perl_av_clear(pTHX_ AV *av) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_AV_CLEAR \ assert(av) +PERL_CALLCONV void Perl_av_create_and_push(pTHX_ AV **const avp, SV *const val) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_AV_CREATE_AND_PUSH \ + assert(avp); assert(val) + +PERL_CALLCONV SV** Perl_av_create_and_unshift_one(pTHX_ AV **const avp, SV *const val) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_AV_CREATE_AND_UNSHIFT_ONE \ + assert(avp); assert(val) + PERL_CALLCONV SV* Perl_av_delete(pTHX_ AV *av, I32 key, I32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_AV_DELETE \ @@ -193,6 +135,11 @@ PERL_CALLCONV void Perl_av_fill(pTHX_ AV *av, I32 fill) #define PERL_ARGS_ASSERT_AV_FILL \ assert(av) +PERL_CALLCONV IV* Perl_av_iter_p(pTHX_ AV *av) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_AV_ITER_P \ + assert(av) + PERL_CALLCONV I32 Perl_av_len(pTHX_ AV *av) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -210,12 +157,6 @@ PERL_CALLCONV SV* Perl_av_pop(pTHX_ AV *av) #define PERL_ARGS_ASSERT_AV_POP \ assert(av) -PERL_CALLCONV void Perl_av_create_and_push(pTHX_ AV **const avp, SV *const val) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_AV_CREATE_AND_PUSH \ - assert(avp); assert(val) - PERL_CALLCONV void Perl_av_push(pTHX_ AV *av, SV *val) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -243,34 +184,11 @@ PERL_CALLCONV void Perl_av_undef(pTHX_ AV *av) #define PERL_ARGS_ASSERT_AV_UNDEF \ assert(av) -PERL_CALLCONV SV** Perl_av_create_and_unshift_one(pTHX_ AV **const avp, SV *const val) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_AV_CREATE_AND_UNSHIFT_ONE \ - assert(avp); assert(val) - PERL_CALLCONV void Perl_av_unshift(pTHX_ AV *av, I32 num) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_AV_UNSHIFT \ assert(av) -PERL_CALLCONV SV** Perl_av_arylen_p(pTHX_ AV *av) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_AV_ARYLEN_P \ - assert(av) - -PERL_CALLCONV IV* Perl_av_iter_p(pTHX_ AV *av) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_AV_ITER_P \ - assert(av) - -#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT) -STATIC MAGIC* S_get_aux_mg(pTHX_ AV *av) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GET_AUX_MG \ - assert(av) - -#endif PERL_CALLCONV OP* Perl_bind_match(pTHX_ I32 type, OP *left, OP *right) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2) @@ -287,209 +205,472 @@ PERL_CALLCONV I32 Perl_block_gimme(pTHX) PERL_CALLCONV int Perl_block_start(pTHX_ int full) __attribute__warn_unused_result__; -PERL_CALLCONV void Perl_boot_core_UNIVERSAL(pTHX); +PERL_CALLCONV void Perl_blockhook_register(pTHX_ BHK *hk) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_BLOCKHOOK_REGISTER \ + assert(hk) + PERL_CALLCONV void Perl_boot_core_PerlIO(pTHX); +PERL_CALLCONV void Perl_boot_core_UNIVERSAL(pTHX); +PERL_CALLCONV void Perl_boot_core_mro(pTHX); +PERL_CALLCONV int Perl_bytes_cmp_utf8(pTHX_ const U8 *b, STRLEN blen, const U8 *u, STRLEN ulen) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_BYTES_CMP_UTF8 \ + assert(b); assert(u) + +PERL_CALLCONV U8* Perl_bytes_from_utf8(pTHX_ const U8 *s, STRLEN *len, bool *is_utf8) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_BYTES_FROM_UTF8 \ + assert(s); assert(len) + +PERL_CALLCONV U8* Perl_bytes_to_utf8(pTHX_ const U8 *s, STRLEN *len) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_BYTES_TO_UTF8 \ + assert(s); assert(len) + +PERL_CALLCONV I32 Perl_call_argv(pTHX_ const char* sub_name, I32 flags, char** argv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_CALL_ARGV \ + assert(sub_name); assert(argv) + +PERL_CALLCONV void Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr); PERL_CALLCONV void Perl_call_list(pTHX_ I32 oldscope, AV *paramList) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_CALL_LIST \ assert(paramList) +PERL_CALLCONV I32 Perl_call_method(pTHX_ const char* methname, I32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CALL_METHOD \ + assert(methname) + +PERL_CALLCONV I32 Perl_call_pv(pTHX_ const char* sub_name, I32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CALL_PV \ + assert(sub_name) + +PERL_CALLCONV I32 Perl_call_sv(pTHX_ SV* sv, VOL I32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CALL_SV \ + assert(sv) + +PERL_CALLCONV const PERL_CONTEXT * Perl_caller_cx(pTHX_ I32 level, const PERL_CONTEXT **dbcxp); +PERL_CALLCONV Malloc_t Perl_calloc(MEM_SIZE elements, MEM_SIZE size) + __attribute__malloc__ + __attribute__warn_unused_result__; + PERL_CALLCONV bool Perl_cando(pTHX_ Mode_t mode, bool effective, const Stat_t* statbufp) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_3); #define PERL_ARGS_ASSERT_CANDO \ assert(statbufp) -PERL_CALLCONV U32 Perl_cast_ulong(pTHX_ NV f) - __attribute__warn_unused_result__; - PERL_CALLCONV I32 Perl_cast_i32(pTHX_ NV f) __attribute__warn_unused_result__; PERL_CALLCONV IV Perl_cast_iv(pTHX_ NV f) __attribute__warn_unused_result__; -PERL_CALLCONV UV Perl_cast_uv(pTHX_ NV f) +PERL_CALLCONV U32 Perl_cast_ulong(pTHX_ NV f) __attribute__warn_unused_result__; -#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) -PERL_CALLCONV I32 Perl_my_chsize(pTHX_ int fd, Off_t length) +PERL_CALLCONV UV Perl_cast_uv(pTHX_ NV f) __attribute__warn_unused_result__; -#endif -PERL_CALLCONV OP* Perl_convert(pTHX_ I32 optype, I32 flags, OP* o) - __attribute__warn_unused_result__; +PERL_CALLCONV bool Perl_check_utf8_print(pTHX_ const U8 *s, const STRLEN len) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CHECK_UTF8_PRINT \ + assert(s) -PERL_CALLCONV PERL_CONTEXT* Perl_create_eval_scope(pTHX_ U32 flags); -PERL_CALLCONV void Perl_croak(pTHX_ const char* pat, ...) - __attribute__noreturn__ - __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); +PERL_CALLCONV OP * Perl_ck_anoncode(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_ANONCODE \ + assert(o) -PERL_CALLCONV void Perl_vcroak(pTHX_ const char* pat, va_list* args) - __attribute__noreturn__; +PERL_CALLCONV OP * Perl_ck_bitop(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_BITOP \ + assert(o) -PERL_CALLCONV void Perl_croak_xs_usage(pTHX_ const CV *const cv, const char *const params) - __attribute__noreturn__ +PERL_CALLCONV OP * Perl_ck_chdir(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_CHDIR \ + assert(o) + +PERL_CALLCONV OP * Perl_ck_concat(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_CONCAT \ + assert(o) + +PERL_CALLCONV OP * Perl_ck_defined(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_DEFINED \ + assert(o) + +PERL_CALLCONV OP * Perl_ck_delete(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_DELETE \ + assert(o) + +PERL_CALLCONV OP * Perl_ck_die(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_DIE \ + assert(o) + +PERL_CALLCONV OP * Perl_ck_each(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_EACH \ + assert(o) + +PERL_CALLCONV OP* Perl_ck_entersub_args_list(pTHX_ OP *entersubop) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_LIST \ + assert(entersubop) + +PERL_CALLCONV OP* Perl_ck_entersub_args_proto(pTHX_ OP *entersubop, GV *namegv, SV *protosv) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_CROAK_XS_USAGE \ - assert(cv); assert(params) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO \ + assert(entersubop); assert(namegv); assert(protosv) +PERL_CALLCONV OP* Perl_ck_entersub_args_proto_or_list(pTHX_ OP *entersubop, GV *namegv, SV *protosv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO_OR_LIST \ + assert(entersubop); assert(namegv); assert(protosv) -#if defined(PERL_IMPLICIT_CONTEXT) -PERL_CALLCONV void Perl_croak_nocontext(const char* pat, ...) - __attribute__noreturn__ - __attribute__format__null_ok__(__printf__,1,2); +PERL_CALLCONV OP * Perl_ck_eof(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_EOF \ + assert(o) -PERL_CALLCONV OP* Perl_die_nocontext(const char* pat, ...) - __attribute__format__null_ok__(__printf__,1,2); +PERL_CALLCONV OP * Perl_ck_eval(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_EVAL \ + assert(o) -PERL_CALLCONV void Perl_deb_nocontext(const char* pat, ...) - __attribute__format__(__printf__,1,2) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_DEB_NOCONTEXT \ - assert(pat) +PERL_CALLCONV OP * Perl_ck_exec(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_EXEC \ + assert(o) -PERL_CALLCONV char* Perl_form_nocontext(const char* pat, ...) - __attribute__format__(__printf__,1,2) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_FORM_NOCONTEXT \ - assert(pat) +PERL_CALLCONV OP * Perl_ck_exists(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_EXISTS \ + assert(o) -PERL_CALLCONV void Perl_load_module_nocontext(U32 flags, SV* name, SV* ver, ...) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_LOAD_MODULE_NOCONTEXT \ - assert(name) +PERL_CALLCONV OP * Perl_ck_exit(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_EXIT \ + assert(o) -PERL_CALLCONV SV* Perl_mess_nocontext(const char* pat, ...) - __attribute__format__(__printf__,1,2) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_MESS_NOCONTEXT \ - assert(pat) +PERL_CALLCONV OP * Perl_ck_ftst(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_FTST \ + assert(o) -PERL_CALLCONV void Perl_warn_nocontext(const char* pat, ...) - __attribute__format__(__printf__,1,2) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_WARN_NOCONTEXT \ - assert(pat) +PERL_CALLCONV OP * Perl_ck_fun(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_FUN \ + assert(o) -PERL_CALLCONV void Perl_warner_nocontext(U32 err, const char* pat, ...) - __attribute__format__(__printf__,2,3) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_WARNER_NOCONTEXT \ - assert(pat) +PERL_CALLCONV OP * Perl_ck_glob(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_GLOB \ + assert(o) -PERL_CALLCONV SV* Perl_newSVpvf_nocontext(const char *const pat, ...) - __attribute__format__(__printf__,1,2) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_NEWSVPVF_NOCONTEXT \ - assert(pat) +PERL_CALLCONV OP * Perl_ck_grep(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_GREP \ + assert(o) -PERL_CALLCONV void Perl_sv_catpvf_nocontext(SV *const sv, const char *const pat, ...) - __attribute__format__(__printf__,2,3) - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_SV_CATPVF_NOCONTEXT \ - assert(sv); assert(pat) +PERL_CALLCONV OP * Perl_ck_index(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_INDEX \ + assert(o) -PERL_CALLCONV void Perl_sv_setpvf_nocontext(SV *const sv, const char *const pat, ...) - __attribute__format__(__printf__,2,3) - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_SV_SETPVF_NOCONTEXT \ - assert(sv); assert(pat) +PERL_CALLCONV OP * Perl_ck_join(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_JOIN \ + assert(o) -PERL_CALLCONV void Perl_sv_catpvf_mg_nocontext(SV *const sv, const char *const pat, ...) - __attribute__format__(__printf__,2,3) - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_SV_CATPVF_MG_NOCONTEXT \ - assert(sv); assert(pat) +PERL_CALLCONV OP * Perl_ck_lfun(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_LFUN \ + assert(o) -PERL_CALLCONV void Perl_sv_setpvf_mg_nocontext(SV *const sv, const char *const pat, ...) - __attribute__format__(__printf__,2,3) - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_SV_SETPVF_MG_NOCONTEXT \ - assert(sv); assert(pat) +PERL_CALLCONV OP * Perl_ck_listiob(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_LISTIOB \ + assert(o) -PERL_CALLCONV int Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...) - __attribute__format__(__printf__,2,3) - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_FPRINTF_NOCONTEXT \ - assert(stream); assert(format) +PERL_CALLCONV OP * Perl_ck_match(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_MATCH \ + assert(o) -PERL_CALLCONV int Perl_printf_nocontext(const char *format, ...) - __attribute__format__(__printf__,1,2) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_PRINTF_NOCONTEXT \ - assert(format) +PERL_CALLCONV OP * Perl_ck_method(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_METHOD \ + assert(o) -#endif -PERL_CALLCONV void Perl_cv_ckproto_len(pTHX_ const CV* cv, const GV* gv, const char* p, const STRLEN len) +PERL_CALLCONV OP * Perl_ck_null(pTHX_ OP *o) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CV_CKPROTO_LEN \ - assert(cv) +#define PERL_ARGS_ASSERT_CK_NULL \ + assert(o) -PERL_CALLCONV CV* Perl_cv_clone(pTHX_ CV* proto) +PERL_CALLCONV OP * Perl_ck_open(pTHX_ OP *o) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CV_CLONE \ - assert(proto) +#define PERL_ARGS_ASSERT_CK_OPEN \ + assert(o) -PERL_CALLCONV SV* Perl_gv_const_sv(pTHX_ GV* gv) +PERL_CALLCONV OP * Perl_ck_readline(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GV_CONST_SV \ - assert(gv) +#define PERL_ARGS_ASSERT_CK_READLINE \ + assert(o) -PERL_CALLCONV SV* Perl_cv_const_sv(pTHX_ const CV *const cv) - __attribute__warn_unused_result__; +PERL_CALLCONV OP * Perl_ck_repeat(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_REPEAT \ + assert(o) -PERL_CALLCONV SV* Perl_op_const_sv(pTHX_ const OP* o, CV* cv) - __attribute__warn_unused_result__; +PERL_CALLCONV OP * Perl_ck_require(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_REQUIRE \ + assert(o) -PERL_CALLCONV void Perl_cv_undef(pTHX_ CV* cv) +PERL_CALLCONV OP * Perl_ck_return(pTHX_ OP *o) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CV_UNDEF \ - assert(cv) +#define PERL_ARGS_ASSERT_CK_RETURN \ + assert(o) -PERL_CALLCONV void Perl_cx_dump(pTHX_ PERL_CONTEXT* cx) +PERL_CALLCONV OP * Perl_ck_rfun(pTHX_ OP *o) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CX_DUMP \ - assert(cx) +#define PERL_ARGS_ASSERT_CK_RFUN \ + assert(o) -PERL_CALLCONV SV* Perl_filter_add(pTHX_ filter_t funcp, SV* datasv); -PERL_CALLCONV void Perl_filter_del(pTHX_ filter_t funcp) +PERL_CALLCONV OP * Perl_ck_rvconst(pTHX_ OP *o) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_FILTER_DEL \ - assert(funcp) +#define PERL_ARGS_ASSERT_CK_RVCONST \ + assert(o) -PERL_CALLCONV I32 Perl_filter_read(pTHX_ int idx, SV *buf_sv, int maxlen) +PERL_CALLCONV OP * Perl_ck_sassign(pTHX_ OP *o) __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_FILTER_READ \ - assert(buf_sv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_SASSIGN \ + assert(o) -PERL_CALLCONV char** Perl_get_op_descs(pTHX) +PERL_CALLCONV OP * Perl_ck_select(pTHX_ OP *o) __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_SELECT \ + assert(o) -PERL_CALLCONV char** Perl_get_op_names(pTHX) +PERL_CALLCONV OP * Perl_ck_shift(pTHX_ OP *o) __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_SHIFT \ + assert(o) -PERL_CALLCONV const char* Perl_get_no_modify(pTHX) +PERL_CALLCONV OP * Perl_ck_smartmatch(pTHX_ OP *o) __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_SMARTMATCH \ + assert(o) -PERL_CALLCONV U32* Perl_get_opargs(pTHX) +PERL_CALLCONV OP * Perl_ck_sort(pTHX_ OP *o) __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_SORT \ + assert(o) -PERL_CALLCONV PPADDR_t* Perl_get_ppaddr(pTHX) +PERL_CALLCONV OP * Perl_ck_spair(pTHX_ OP *o) __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_SPAIR \ + assert(o) + +PERL_CALLCONV OP * Perl_ck_split(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_SPLIT \ + assert(o) + +PERL_CALLCONV OP * Perl_ck_subr(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_SUBR \ + assert(o) + +PERL_CALLCONV OP * Perl_ck_substr(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_SUBSTR \ + assert(o) + +PERL_CALLCONV OP * Perl_ck_svconst(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_SVCONST \ + assert(o) + +PERL_CALLCONV OP * Perl_ck_trunc(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_TRUNC \ + assert(o) + +PERL_CALLCONV OP * Perl_ck_unpack(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_UNPACK \ + assert(o) + +PERL_CALLCONV void Perl_ck_warner(pTHX_ U32 err, const char* pat, ...) + __attribute__format__(__printf__,pTHX_2,pTHX_3) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_CK_WARNER \ + assert(pat) + +PERL_CALLCONV void Perl_ck_warner_d(pTHX_ U32 err, const char* pat, ...) + __attribute__format__(__printf__,pTHX_2,pTHX_3) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_CK_WARNER_D \ + assert(pat) + +PERL_CALLCONV bool Perl_ckwarn(pTHX_ U32 w); +PERL_CALLCONV bool Perl_ckwarn_d(pTHX_ U32 w); +PERL_CALLCONV OP* Perl_convert(pTHX_ I32 optype, I32 flags, OP* o) + __attribute__warn_unused_result__; + +PERL_CALLCONV PERL_CONTEXT* Perl_create_eval_scope(pTHX_ U32 flags); +PERL_CALLCONV void Perl_croak(pTHX_ const char* pat, ...) + __attribute__noreturn__ + __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); + +PERL_CALLCONV void Perl_croak_no_modify(pTHX) + __attribute__noreturn__; + +PERL_CALLCONV void Perl_croak_sv(pTHX_ SV *baseex) + __attribute__noreturn__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CROAK_SV \ + assert(baseex) + +PERL_CALLCONV void Perl_croak_xs_usage(pTHX_ const CV *const cv, const char *const params) + __attribute__noreturn__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_CROAK_XS_USAGE \ + assert(cv); assert(params) + +PERL_CALLCONV const char * Perl_custom_op_desc(pTHX_ const OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CUSTOM_OP_DESC \ + assert(o) + +PERL_CALLCONV const char * Perl_custom_op_name(pTHX_ const OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CUSTOM_OP_NAME \ + assert(o) + +PERL_CALLCONV void Perl_custom_op_register(pTHX_ Perl_ppaddr_t ppaddr, const XOP *xop) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_CUSTOM_OP_REGISTER \ + assert(ppaddr); assert(xop) + +PERL_CALLCONV const XOP * Perl_custom_op_xop(pTHX_ const OP *o) + __attribute__pure__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CUSTOM_OP_XOP \ + assert(o) + +PERL_CALLCONV void Perl_cv_ckproto_len(pTHX_ const CV* cv, const GV* gv, const char* p, const STRLEN len) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CV_CKPROTO_LEN \ + assert(cv) + +PERL_CALLCONV CV* Perl_cv_clone(pTHX_ CV* proto) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CV_CLONE \ + assert(proto) + +PERL_CALLCONV SV* Perl_cv_const_sv(pTHX_ const CV *const cv) + __attribute__warn_unused_result__; + +PERL_CALLCONV void Perl_cv_get_call_checker(pTHX_ CV *cv, Perl_call_checker *ckfun_p, SV **ckobj_p) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_CV_GET_CALL_CHECKER \ + assert(cv); assert(ckfun_p); assert(ckobj_p) + +PERL_CALLCONV void Perl_cv_set_call_checker(pTHX_ CV *cv, Perl_call_checker ckfun, SV *ckobj) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER \ + assert(cv); assert(ckfun); assert(ckobj) + +PERL_CALLCONV void Perl_cv_undef(pTHX_ CV* cv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CV_UNDEF \ + assert(cv) + +PERL_CALLCONV void Perl_cvgv_set(pTHX_ CV* cv, GV* gv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CVGV_SET \ + assert(cv) + +PERL_CALLCONV void Perl_cvstash_set(pTHX_ CV* cv, HV* stash) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CVSTASH_SET \ + assert(cv) + +PERL_CALLCONV void Perl_cx_dump(pTHX_ PERL_CONTEXT* cx) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CX_DUMP \ + assert(cx) PERL_CALLCONV I32 Perl_cxinc(pTHX) __attribute__warn_unused_result__; @@ -500,19 +681,16 @@ PERL_CALLCONV void Perl_deb(pTHX_ const char* pat, ...) #define PERL_ARGS_ASSERT_DEB \ assert(pat) -PERL_CALLCONV void Perl_vdeb(pTHX_ const char* pat, va_list* args) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_VDEB \ - assert(pat) - -PERL_CALLCONV void Perl_debprofdump(pTHX); +PERL_CALLCONV void Perl_deb_stack_all(pTHX); PERL_CALLCONV I32 Perl_debop(pTHX_ const OP* o) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_DEBOP \ assert(o) +PERL_CALLCONV void Perl_debprofdump(pTHX); PERL_CALLCONV I32 Perl_debstack(pTHX); PERL_CALLCONV I32 Perl_debstackptrs(pTHX); +PERL_CALLCONV void Perl_delete_eval_scope(pTHX); PERL_CALLCONV char* Perl_delimcpy(char* to, const char* toend, const char* from, const char* fromend, int delim, I32* retlen) __attribute__nonnull__(1) __attribute__nonnull__(2) @@ -522,17 +700,21 @@ PERL_CALLCONV char* Perl_delimcpy(char* to, const char* toend, const char* from, #define PERL_ARGS_ASSERT_DELIMCPY \ assert(to); assert(toend); assert(from); assert(fromend); assert(retlen) -PERL_CALLCONV void Perl_delete_eval_scope(pTHX); +PERL_CALLCONV void Perl_despatch_signals(pTHX); PERL_CALLCONV OP* Perl_die(pTHX_ const char* pat, ...) __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); -#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) -STATIC OP* S_vdie(pTHX_ const char* pat, va_list* args); -#endif -PERL_CALLCONV void Perl_die_where(pTHX_ SV* msv) - __attribute__noreturn__; +PERL_CALLCONV OP* Perl_die_sv(pTHX_ SV *baseex) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DIE_SV \ + assert(baseex) + +PERL_CALLCONV void Perl_die_unwind(pTHX_ SV* msv) + __attribute__noreturn__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DIE_UNWIND \ + assert(msv) -PERL_CALLCONV void Perl_dounwind(pTHX_ I32 cxix); /* PERL_CALLCONV bool Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); */ @@ -550,104 +732,36 @@ PERL_CALLCONV int Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int mode) #define PERL_ARGS_ASSERT_DO_BINMODE \ assert(fp) -PERL_CALLCONV void Perl_do_chop(pTHX_ SV *astr, SV *sv) - __attribute__nonnull__(pTHX_1) +PERL_CALLCONV bool Perl_do_close(pTHX_ GV* gv, bool not_implicit); +PERL_CALLCONV void Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_DO_CHOP \ - assert(astr); assert(sv) +#define PERL_ARGS_ASSERT_DO_DUMP_PAD \ + assert(file) -PERL_CALLCONV bool Perl_do_close(pTHX_ GV* gv, bool not_implicit); PERL_CALLCONV bool Perl_do_eof(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_DO_EOF \ assert(gv) - -#ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION -/* PERL_CALLCONV bool Perl_do_exec(pTHX_ const char* cmd) - __attribute__nonnull__(pTHX_1); */ -#define PERL_ARGS_ASSERT_DO_EXEC \ - assert(cmd) - -#else -PERL_CALLCONV bool Perl_do_exec(pTHX_ const char* cmd) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DO_EXEC \ - assert(cmd) - -#endif - -#if defined(WIN32) || defined(__SYMBIAN32__) || defined(VMS) -PERL_CALLCONV int Perl_do_aspawn(pTHX_ SV* really, SV** mark, SV** sp) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_DO_ASPAWN \ - assert(mark); assert(sp) - -PERL_CALLCONV int Perl_do_spawn(pTHX_ char* cmd) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DO_SPAWN \ - assert(cmd) - -PERL_CALLCONV int Perl_do_spawn_nowait(pTHX_ char* cmd) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DO_SPAWN_NOWAIT \ - assert(cmd) - -#endif -#if !defined(WIN32) -PERL_CALLCONV bool Perl_do_exec3(pTHX_ const char *incmd, int fd, int do_report) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DO_EXEC3 \ - assert(incmd) - -#endif PERL_CALLCONV void Perl_do_execfree(pTHX); -#if defined(PERL_IN_DOIO_C) || defined(PERL_DECL_PROT) -STATIC void S_exec_failed(pTHX_ const char *cmd, int fd, int do_report) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_EXEC_FAILED \ - assert(cmd) - -#endif -#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) -PERL_CALLCONV I32 Perl_do_ipcctl(pTHX_ I32 optype, SV** mark, SV** sp) +PERL_CALLCONV void Perl_do_gv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_DO_IPCCTL \ - assert(mark); assert(sp) +#define PERL_ARGS_ASSERT_DO_GV_DUMP \ + assert(file); assert(name) -PERL_CALLCONV I32 Perl_do_ipcget(pTHX_ I32 optype, SV** mark, SV** sp) +PERL_CALLCONV void Perl_do_gvgv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_DO_IPCGET \ - assert(mark); assert(sp) - -PERL_CALLCONV I32 Perl_do_msgrcv(pTHX_ SV** mark, SV** sp) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_DO_MSGRCV \ - assert(mark); assert(sp) - -PERL_CALLCONV I32 Perl_do_msgsnd(pTHX_ SV** mark, SV** sp) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_DO_MSGSND \ - assert(mark); assert(sp) - -PERL_CALLCONV I32 Perl_do_semop(pTHX_ SV** mark, SV** sp) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_DO_SEMOP \ - assert(mark); assert(sp) +#define PERL_ARGS_ASSERT_DO_GVGV_DUMP \ + assert(file); assert(name) -PERL_CALLCONV I32 Perl_do_shmio(pTHX_ I32 optype, SV** mark, SV** sp) +PERL_CALLCONV void Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, const char *name, HV *sv) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_DO_SHMIO \ - assert(mark); assert(sp) +#define PERL_ARGS_ASSERT_DO_HV_DUMP \ + assert(file); assert(name) -#endif PERL_CALLCONV void Perl_do_join(pTHX_ SV *sv, SV *delim, SV **mark, SV **sp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -656,7 +770,17 @@ PERL_CALLCONV void Perl_do_join(pTHX_ SV *sv, SV *delim, SV **mark, SV **sp) #define PERL_ARGS_ASSERT_DO_JOIN \ assert(sv); assert(delim); assert(mark); assert(sp) -PERL_CALLCONV OP* Perl_do_kv(pTHX); +PERL_CALLCONV void Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, const MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_DO_MAGIC_DUMP \ + assert(file); assert(mg) + +PERL_CALLCONV void Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, const OP *o) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_DO_OP_DUMP \ + assert(file) + /* PERL_CALLCONV bool Perl_do_open(pTHX_ GV* gv, const char* name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO* supplied_fp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); */ @@ -676,6 +800,11 @@ PERL_CALLCONV bool Perl_do_openn(pTHX_ GV *gv, const char *oname, I32 len, int a #define PERL_ARGS_ASSERT_DO_OPENN \ assert(gv); assert(oname) +PERL_CALLCONV void Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, const PMOP *pm) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_DO_PMOP_DUMP \ + assert(file) + PERL_CALLCONV bool Perl_do_print(pTHX_ SV* sv, PerlIO* fp) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_DO_PRINT \ @@ -684,11 +813,6 @@ PERL_CALLCONV bool Perl_do_print(pTHX_ SV* sv, PerlIO* fp) PERL_CALLCONV OP* Perl_do_readline(pTHX) __attribute__warn_unused_result__; -PERL_CALLCONV I32 Perl_do_chomp(pTHX_ SV* sv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DO_CHOMP \ - assert(sv) - PERL_CALLCONV bool Perl_do_seek(pTHX_ GV* gv, Off_t pos, int whence); PERL_CALLCONV void Perl_do_sprintf(pTHX_ SV* sv, I32 len, SV** sarg) __attribute__nonnull__(pTHX_1) @@ -696,6 +820,11 @@ PERL_CALLCONV void Perl_do_sprintf(pTHX_ SV* sv, I32 len, SV** sarg) #define PERL_ARGS_ASSERT_DO_SPRINTF \ assert(sv); assert(sarg) +PERL_CALLCONV void Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_DO_SV_DUMP \ + assert(file) + PERL_CALLCONV Off_t Perl_do_sysseek(pTHX_ GV* gv, Off_t pos, int whence) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_DO_SYSSEEK \ @@ -734,35 +863,33 @@ PERL_CALLCONV OP* Perl_dofile(pTHX_ OP* term, I32 force_builtin) #define PERL_ARGS_ASSERT_DOFILE \ assert(term) +PERL_CALLCONV bool Perl_doing_taint(int argc, char** argv, char** env) + __attribute__warn_unused_result__; + +PERL_CALLCONV OP * Perl_doref(pTHX_ OP *o, I32 type, bool set_op_ref) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DOREF \ + assert(o) + +PERL_CALLCONV void Perl_dounwind(pTHX_ I32 cxix); PERL_CALLCONV I32 Perl_dowantarray(pTHX) __attribute__warn_unused_result__; PERL_CALLCONV void Perl_dump_all(pTHX); PERL_CALLCONV void Perl_dump_all_perl(pTHX_ bool justperl); PERL_CALLCONV void Perl_dump_eval(pTHX); -#if defined(DUMP_FDS) -PERL_CALLCONV void Perl_dump_fds(pTHX_ char* s) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DUMP_FDS \ - assert(s) - -#endif PERL_CALLCONV void Perl_dump_form(pTHX_ const GV* gv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_DUMP_FORM \ assert(gv) -PERL_CALLCONV void Perl_gv_dump(pTHX_ GV* gv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GV_DUMP \ - assert(gv) - -PERL_CALLCONV void Perl_op_dump(pTHX_ const OP *o) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_OP_DUMP \ - assert(o) +PERL_CALLCONV void Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...) + __attribute__format__(__printf__,pTHX_3,pTHX_4) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_DUMP_INDENT \ + assert(file); assert(pat) -PERL_CALLCONV void Perl_pmop_dump(pTHX_ PMOP* pm); PERL_CALLCONV void Perl_dump_packsubs(pTHX_ const HV* stash) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_DUMP_PACKSUBS \ @@ -783,6 +910,28 @@ PERL_CALLCONV void Perl_dump_sub_perl(pTHX_ const GV* gv, bool justperl) #define PERL_ARGS_ASSERT_DUMP_SUB_PERL \ assert(gv) +PERL_CALLCONV void Perl_dump_vindent(pTHX_ I32 level, PerlIO *file, const char* pat, va_list *args) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_DUMP_VINDENT \ + assert(file); assert(pat) + +PERL_CALLCONV void Perl_emulate_cop_io(pTHX_ const COP *const c, SV *const sv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_EMULATE_COP_IO \ + assert(c); assert(sv) + +PERL_CALLCONV SV* Perl_eval_pv(pTHX_ const char* p, I32 croak_on_error) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_EVAL_PV \ + assert(p) + +PERL_CALLCONV I32 Perl_eval_sv(pTHX_ SV* sv, I32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_EVAL_SV \ + assert(sv) + PERL_CALLCONV void Perl_fbm_compile(pTHX_ SV* sv, U32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_FBM_COMPILE \ @@ -796,53 +945,183 @@ PERL_CALLCONV char* Perl_fbm_instr(pTHX_ unsigned char* big, unsigned char* bige #define PERL_ARGS_ASSERT_FBM_INSTR \ assert(big); assert(bigend); assert(littlestr) +PERL_CALLCONV bool Perl_feature_is_enabled(pTHX_ const char *const name, STRLEN namelen) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_FEATURE_IS_ENABLED \ + assert(name) + +PERL_CALLCONV const char * Perl_fetch_cop_label(pTHX_ COP *const cop, STRLEN *len, U32 *flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_FETCH_COP_LABEL \ + assert(cop) + +PERL_CALLCONV SV* Perl_filter_add(pTHX_ filter_t funcp, SV* datasv); +PERL_CALLCONV void Perl_filter_del(pTHX_ filter_t funcp) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_FILTER_DEL \ + assert(funcp) + +PERL_CALLCONV I32 Perl_filter_read(pTHX_ int idx, SV *buf_sv, int maxlen) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_FILTER_READ \ + assert(buf_sv) + +PERL_CALLCONV CV* Perl_find_runcv(pTHX_ U32 *db_seqp) + __attribute__warn_unused_result__; + +PERL_CALLCONV SV* Perl_find_rundefsv(pTHX); +PERL_CALLCONV PADOFFSET Perl_find_rundefsvoffset(pTHX) + __attribute__deprecated__; + PERL_CALLCONV char* Perl_find_script(pTHX_ const char *scriptname, bool dosearch, const char *const *const search_ext, I32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_FIND_SCRIPT \ assert(scriptname) -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -STATIC OP* S_force_list(pTHX_ OP* arg); -STATIC OP* S_fold_constants(pTHX_ OP *o) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_FOLD_CONSTANTS \ - assert(o) +PERL_CALLCONV I32 Perl_foldEQ(const char* a, const char* b, I32 len) + __attribute__pure__ + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_FOLDEQ \ + assert(a); assert(b) + +PERL_CALLCONV I32 Perl_foldEQ_latin1(const char* a, const char* b, I32 len) + __attribute__pure__ + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_FOLDEQ_LATIN1 \ + assert(a); assert(b) + +PERL_CALLCONV I32 Perl_foldEQ_locale(const char* a, const char* b, I32 len) + __attribute__pure__ + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_FOLDEQ_LOCALE \ + assert(a); assert(b) + +/* PERL_CALLCONV I32 foldEQ_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_5); */ + +PERL_CALLCONV I32 Perl_foldEQ_utf8_flags(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2, U32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_5); +#define PERL_ARGS_ASSERT_FOLDEQ_UTF8_FLAGS \ + assert(s1); assert(s2) -#endif PERL_CALLCONV char* Perl_form(pTHX_ const char* pat, ...) __attribute__format__(__printf__,pTHX_1,pTHX_2) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_FORM \ assert(pat) -PERL_CALLCONV char* Perl_vform(pTHX_ const char* pat, va_list* args) +PERL_CALLCONV void Perl_free_tied_hv_pool(pTHX); +PERL_CALLCONV void Perl_free_tmps(pTHX); +PERL_CALLCONV AV* Perl_get_av(pTHX_ const char *name, I32 flags) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_VFORM \ - assert(pat) +#define PERL_ARGS_ASSERT_GET_AV \ + assert(name) -PERL_CALLCONV void Perl_free_tmps(pTHX); -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -STATIC OP* S_gen_constant_list(pTHX_ OP* o); -#endif -#if !defined(HAS_GETENV_LEN) -PERL_CALLCONV char* Perl_getenv_len(pTHX_ const char *env_elem, unsigned long *len) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_GETENV_LEN \ - assert(env_elem); assert(len) +PERL_CALLCONV void* Perl_get_context(void) + __attribute__warn_unused_result__; + +PERL_CALLCONV CV* Perl_get_cv(pTHX_ const char* name, I32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GET_CV \ + assert(name) + +PERL_CALLCONV CV* Perl_get_cvn_flags(pTHX_ const char* name, STRLEN len, I32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GET_CVN_FLAGS \ + assert(name) -#endif PERL_CALLCONV void Perl_get_db_sub(pTHX_ SV **svp, CV *cv) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_GET_DB_SUB \ assert(cv) +PERL_CALLCONV UV Perl_get_hash_seed(pTHX) + __attribute__warn_unused_result__; + +PERL_CALLCONV HV* Perl_get_hv(pTHX_ const char *name, I32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GET_HV \ + assert(name) + +PERL_CALLCONV const char* Perl_get_no_modify(pTHX) + __attribute__warn_unused_result__ + __attribute__pure__; + +PERL_CALLCONV char** Perl_get_op_descs(pTHX) + __attribute__warn_unused_result__ + __attribute__pure__; + +PERL_CALLCONV char** Perl_get_op_names(pTHX) + __attribute__warn_unused_result__ + __attribute__pure__; + +PERL_CALLCONV U32* Perl_get_opargs(pTHX) + __attribute__warn_unused_result__ + __attribute__pure__; + +PERL_CALLCONV PPADDR_t* Perl_get_ppaddr(pTHX) + __attribute__warn_unused_result__ + __attribute__pure__; + +PERL_CALLCONV REGEXP * Perl_get_re_arg(pTHX_ SV *sv); +PERL_CALLCONV SV* Perl_get_sv(pTHX_ const char *name, I32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GET_SV \ + assert(name) + +PERL_CALLCONV MGVTBL* Perl_get_vtbl(pTHX_ int vtbl_id) + __attribute__warn_unused_result__; + +PERL_CALLCONV int Perl_getcwd_sv(pTHX_ SV* sv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GETCWD_SV \ + assert(sv) + PERL_CALLCONV void Perl_gp_free(pTHX_ GV* gv); PERL_CALLCONV GP* Perl_gp_ref(pTHX_ GP* gp); -PERL_CALLCONV GV* Perl_gv_add_by_type(pTHX_ GV *gv, svtype type); +PERL_CALLCONV UV Perl_grok_bin(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_GROK_BIN \ + assert(start); assert(len_p); assert(flags) + +PERL_CALLCONV UV Perl_grok_hex(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_GROK_HEX \ + assert(start); assert(len_p); assert(flags) + +PERL_CALLCONV int Perl_grok_number(pTHX_ const char *pv, STRLEN len, UV *valuep) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GROK_NUMBER \ + assert(pv) + +PERL_CALLCONV bool Perl_grok_numeric_radix(pTHX_ const char **sp, const char *send) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_GROK_NUMERIC_RADIX \ + assert(sp); assert(send) + +PERL_CALLCONV UV Perl_grok_oct(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_GROK_OCT \ + assert(start); assert(len_p); assert(flags) + /* PERL_CALLCONV GV* Perl_gv_AVadd(pTHX_ GV *gv); */ /* PERL_CALLCONV GV* Perl_gv_HVadd(pTHX_ GV *gv); */ /* PERL_CALLCONV GV* Perl_gv_IOadd(pTHX_ GV* gv); */ +PERL_CALLCONV GV* Perl_gv_add_by_type(pTHX_ GV *gv, svtype type); PERL_CALLCONV GV* Perl_gv_autoload4(pTHX_ HV* stash, const char* name, STRLEN len, I32 method) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); @@ -854,6 +1133,17 @@ PERL_CALLCONV void Perl_gv_check(pTHX_ const HV* stash) #define PERL_ARGS_ASSERT_GV_CHECK \ assert(stash) +PERL_CALLCONV SV* Perl_gv_const_sv(pTHX_ GV* gv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GV_CONST_SV \ + assert(gv) + +PERL_CALLCONV void Perl_gv_dump(pTHX_ GV* gv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GV_DUMP \ + assert(gv) + PERL_CALLCONV void Perl_gv_efullname(pTHX_ SV* sv, const GV* gv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -915,6 +1205,16 @@ PERL_CALLCONV GV* Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, const svtyp #define PERL_ARGS_ASSERT_GV_FETCHPV \ assert(nambeg) +PERL_CALLCONV GV* Perl_gv_fetchpvn_flags(pTHX_ const char* name, STRLEN len, I32 flags, const svtype sv_type) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS \ + assert(name) + +PERL_CALLCONV GV* Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_type) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GV_FETCHSV \ + assert(name) + PERL_CALLCONV void Perl_gv_fullname(pTHX_ SV* sv, const GV* gv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -933,10 +1233,8 @@ PERL_CALLCONV void Perl_gv_fullname4(pTHX_ SV* sv, const GV* gv, const char* pre #define PERL_ARGS_ASSERT_GV_FULLNAME4 \ assert(sv); assert(gv) -PERL_CALLCONV GP * Perl_newGP(pTHX_ GV *const gv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_NEWGP \ - assert(gv) +PERL_CALLCONV CV* Perl_gv_handler(pTHX_ HV* stash, I32 id) + __attribute__warn_unused_result__; PERL_CALLCONV void Perl_gv_init(pTHX_ GV* gv, HV* stash, const char* name, STRLEN len, int multi) __attribute__nonnull__(pTHX_1) @@ -950,11 +1248,6 @@ PERL_CALLCONV void Perl_gv_name_set(pTHX_ GV* gv, const char *name, U32 len, U32 #define PERL_ARGS_ASSERT_GV_NAME_SET \ assert(gv); assert(name) -PERL_CALLCONV void Perl_gv_try_downgrade(pTHX_ GV* gv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE \ - assert(gv) - PERL_CALLCONV HV* Perl_gv_stashpv(pTHX_ const char* name, I32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_GV_STASHPV \ @@ -970,8 +1263,31 @@ PERL_CALLCONV HV* Perl_gv_stashsv(pTHX_ SV* sv, I32 flags) #define PERL_ARGS_ASSERT_GV_STASHSV \ assert(sv) +PERL_CALLCONV void Perl_gv_try_downgrade(pTHX_ GV* gv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE \ + assert(gv) + +PERL_CALLCONV AV** Perl_hv_backreferences_p(pTHX_ HV *hv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_BACKREFERENCES_P \ + assert(hv) + PERL_CALLCONV void Perl_hv_clear(pTHX_ HV *hv); -PERL_CALLCONV HV * Perl_hv_copy_hints_hv(pTHX_ HV *const ohv); +PERL_CALLCONV void Perl_hv_clear_placeholders(pTHX_ HV *hv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_CLEAR_PLACEHOLDERS \ + assert(hv) + +PERL_CALLCONV void* Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char* key, STRLEN klen, int flags, int action, SV *val, U32 hash); +PERL_CALLCONV void* Perl_hv_common_key_len(pTHX_ HV *hv, const char *key, I32 klen_i32, const int action, SV *val, const U32 hash) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_HV_COMMON_KEY_LEN \ + assert(key) + +PERL_CALLCONV HV * Perl_hv_copy_hints_hv(pTHX_ HV *const ohv) + __attribute__warn_unused_result__; + PERL_CALLCONV void Perl_hv_delayfree_ent(pTHX_ HV *hv, HE *entry) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_HV_DELAYFREE_ENT \ @@ -987,6 +1303,29 @@ PERL_CALLCONV void Perl_hv_delayfree_ent(pTHX_ HV *hv, HE *entry) #define PERL_ARGS_ASSERT_HV_DELETE_ENT \ assert(keysv) +PERL_CALLCONV HE** Perl_hv_eiter_p(pTHX_ HV *hv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_EITER_P \ + assert(hv) + +PERL_CALLCONV void Perl_hv_eiter_set(pTHX_ HV *hv, HE *eiter) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_EITER_SET \ + assert(hv) + +PERL_CALLCONV void Perl_hv_ename_add(pTHX_ HV *hv, const char *name, U32 len, U32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_HV_ENAME_ADD \ + assert(hv); assert(name) + +PERL_CALLCONV void Perl_hv_ename_delete(pTHX_ HV *hv, const char *name, U32 len, U32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_HV_ENAME_DELETE \ + assert(hv); assert(name) + /* PERL_CALLCONV bool Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); */ @@ -1009,11 +1348,10 @@ PERL_CALLCONV void Perl_hv_delayfree_ent(pTHX_ HV *hv, HE *entry) #define PERL_ARGS_ASSERT_HV_FETCH_ENT \ assert(keysv) -PERL_CALLCONV void* Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char* key, STRLEN klen, int flags, int action, SV *val, U32 hash); -PERL_CALLCONV void* Perl_hv_common_key_len(pTHX_ HV *hv, const char *key, I32 klen_i32, const int action, SV *val, const U32 hash) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_HV_COMMON_KEY_LEN \ - assert(key) +PERL_CALLCONV STRLEN Perl_hv_fill(pTHX_ HV const *const hv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_FILL \ + assert(hv) PERL_CALLCONV void Perl_hv_free_ent(pTHX_ HV *hv, HE *entryK) __attribute__nonnull__(pTHX_1); @@ -1044,6 +1382,12 @@ PERL_CALLCONV SV* Perl_hv_iterkeysv(pTHX_ HE* entry) #define PERL_ARGS_ASSERT_HV_ITERNEXT \ assert(hv) +PERL_CALLCONV HE* Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_ITERNEXT_FLAGS \ + assert(hv) + PERL_CALLCONV SV* Perl_hv_iternextsv(pTHX_ HV *hv, char **key, I32 *retlen) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) @@ -1052,12 +1396,6 @@ PERL_CALLCONV SV* Perl_hv_iternextsv(pTHX_ HV *hv, char **key, I32 *retlen) #define PERL_ARGS_ASSERT_HV_ITERNEXTSV \ assert(hv); assert(key); assert(retlen) -PERL_CALLCONV HE* Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HV_ITERNEXT_FLAGS \ - assert(hv) - PERL_CALLCONV SV* Perl_hv_iterval(pTHX_ HV *hv, HE *entry) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) @@ -1075,47 +1413,62 @@ PERL_CALLCONV void Perl_hv_ksplit(pTHX_ HV *hv, IV newmax) #define PERL_ARGS_ASSERT_HV_MAGIC \ assert(hv) -PERL_CALLCONV HV * Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *c); -PERL_CALLCONV SV * Perl_refcounted_he_fetch(pTHX_ const struct refcounted_he *chain, SV *keysv, const char *key, STRLEN klen, int flags, U32 hash); -PERL_CALLCONV void Perl_refcounted_he_free(pTHX_ struct refcounted_he *he); -PERL_CALLCONV struct refcounted_he * Perl_refcounted_he_new(pTHX_ struct refcounted_he *const parent, SV *const key, SV *const value); -#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) -STATIC struct refcounted_he * S_refcounted_he_new_common(pTHX_ struct refcounted_he *const parent, const char *const key_p, const STRLEN key_len, const char flags, char value_type, const void *value, const STRLEN value_len) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_6); -#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_COMMON \ - assert(key_p); assert(value) +PERL_CALLCONV void Perl_hv_name_set(pTHX_ HV *hv, const char *name, U32 len, U32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_NAME_SET \ + assert(hv) + +PERL_CALLCONV I32 Perl_hv_placeholders_get(pTHX_ const HV *hv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_GET \ + assert(hv) + +PERL_CALLCONV I32* Perl_hv_placeholders_p(pTHX_ HV *hv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_P \ + assert(hv) + +PERL_CALLCONV void Perl_hv_placeholders_set(pTHX_ HV *hv, I32 ph) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_SET \ + assert(hv) + +PERL_CALLCONV I32* Perl_hv_riter_p(pTHX_ HV *hv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_RITER_P \ + assert(hv) + +PERL_CALLCONV void Perl_hv_riter_set(pTHX_ HV *hv, I32 riter) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_RITER_SET \ + assert(hv) + +PERL_CALLCONV SV* Perl_hv_scalar(pTHX_ HV *hv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_SCALAR \ + assert(hv) -#endif /* PERL_CALLCONV SV** Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash); */ /* PERL_CALLCONV HE* Perl_hv_store_ent(pTHX_ HV *hv, SV *key, SV *val, U32 hash); */ /* PERL_CALLCONV SV** Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, int flags); */ -PERL_CALLCONV void Perl_hv_undef(pTHX_ HV *hv); -PERL_CALLCONV I32 Perl_ibcmp(const char* a, const char* b, I32 len) - __attribute__pure__ - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_IBCMP \ - assert(a); assert(b) - -PERL_CALLCONV I32 Perl_ibcmp_locale(const char* a, const char* b, I32 len) - __attribute__pure__ - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_IBCMP_LOCALE \ - assert(a); assert(b) +/* PERL_CALLCONV void hv_undef(pTHX_ HV *hv); */ +PERL_CALLCONV void Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags); +/* PERL_CALLCONV I32 ibcmp(pTHX_ const char* a, const char* b, I32 len) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); */ -PERL_CALLCONV I32 Perl_ibcmp_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2) +/* PERL_CALLCONV I32 ibcmp_locale(pTHX_ const char* a, const char* b, I32 len) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_IBCMP_UTF8 \ - assert(s1); assert(s2) + __attribute__nonnull__(pTHX_2); */ -#if defined(PERL_IN_DOIO_C) || defined(PERL_DECL_PROT) -STATIC bool S_ingroup(pTHX_ Gid_t testgid, bool effective) - __attribute__warn_unused_result__; +/* PERL_CALLCONV I32 ibcmp_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_5); */ -#endif PERL_CALLCONV void Perl_init_argv_symbols(pTHX_ int argc, char **argv) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_INIT_ARGV_SYMBOLS \ @@ -1123,13 +1476,14 @@ PERL_CALLCONV void Perl_init_argv_symbols(pTHX_ int argc, char **argv) PERL_CALLCONV void Perl_init_dbargs(pTHX); PERL_CALLCONV void Perl_init_debugger(pTHX); +PERL_CALLCONV int Perl_init_i18nl10n(pTHX_ int printwarn); +PERL_CALLCONV int Perl_init_i18nl14n(pTHX_ int printwarn); PERL_CALLCONV void Perl_init_stacks(pTHX); PERL_CALLCONV void Perl_init_tm(pTHX_ struct tm *ptm) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_INIT_TM \ assert(ptm) -PERL_CALLCONV U32 Perl_intro_my(pTHX); PERL_CALLCONV char* Perl_instr(const char* big, const char* little) __attribute__warn_unused_result__ __attribute__pure__ @@ -1138,38 +1492,42 @@ PERL_CALLCONV char* Perl_instr(const char* big, const char* little) #define PERL_ARGS_ASSERT_INSTR \ assert(big); assert(little) +PERL_CALLCONV U32 Perl_intro_my(pTHX); +PERL_CALLCONV OP* Perl_invert(pTHX_ OP* cmd) + __attribute__warn_unused_result__; + PERL_CALLCONV bool Perl_io_close(pTHX_ IO* io, bool not_implicit) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_IO_CLOSE \ assert(io) -PERL_CALLCONV OP* Perl_invert(pTHX_ OP* cmd) - __attribute__warn_unused_result__; - -PERL_CALLCONV I32 Perl_is_lvalue_sub(pTHX) - __attribute__warn_unused_result__; +PERL_CALLCONV bool Perl_is_ascii_string(const U8 *s, STRLEN len) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_IS_ASCII_STRING \ + assert(s) -PERL_CALLCONV U32 Perl_to_uni_upper_lc(pTHX_ U32 c) +PERL_CALLCONV bool Perl_is_gv_magical_sv(pTHX_ SV *const name_sv, U32 flags) __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_GV_MAGICAL_SV \ + assert(name_sv) -PERL_CALLCONV U32 Perl_to_uni_title_lc(pTHX_ U32 c) - __attribute__warn_unused_result__ - __attribute__pure__; +PERL_CALLCONV I32 Perl_is_lvalue_sub(pTHX) + __attribute__warn_unused_result__; -PERL_CALLCONV U32 Perl_to_uni_lower_lc(pTHX_ U32 c) +PERL_CALLCONV bool Perl_is_uni_alnum(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_alnum(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_alnum_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_idfirst(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_alpha(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_alpha(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_alpha_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; @@ -1177,7 +1535,7 @@ PERL_CALLCONV bool Perl_is_uni_ascii(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_space(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_ascii_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; @@ -1185,7 +1543,7 @@ PERL_CALLCONV bool Perl_is_uni_cntrl(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_graph(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_cntrl_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; @@ -1193,95 +1551,67 @@ PERL_CALLCONV bool Perl_is_uni_digit(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_upper(pTHX_ UV c) - __attribute__warn_unused_result__ - __attribute__pure__; - -PERL_CALLCONV bool Perl_is_uni_lower(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_digit_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_print(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_graph(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_punct(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_graph_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_xdigit(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_idfirst(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV UV Perl_to_uni_upper(pTHX_ UV c, U8 *p, STRLEN *lenp) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_TO_UNI_UPPER \ - assert(p); assert(lenp) - -PERL_CALLCONV UV Perl_to_uni_title(pTHX_ UV c, U8 *p, STRLEN *lenp) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_TO_UNI_TITLE \ - assert(p); assert(lenp) - -PERL_CALLCONV UV Perl_to_uni_lower(pTHX_ UV c, U8 *p, STRLEN *lenp) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_TO_UNI_LOWER \ - assert(p); assert(lenp) - -PERL_CALLCONV UV Perl_to_uni_fold(pTHX_ UV c, U8 *p, STRLEN *lenp) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_TO_UNI_FOLD \ - assert(p); assert(lenp) - -PERL_CALLCONV bool Perl_is_uni_alnum_lc(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_idfirst_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_idfirst_lc(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_lower(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_alpha_lc(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_lower_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_ascii_lc(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_print(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_space_lc(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_print_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_cntrl_lc(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_punct(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_graph_lc(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_punct_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_digit_lc(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_space(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_upper_lc(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_space_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_lower_lc(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_upper(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_print_lc(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_upper_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_punct_lc(pTHX_ UV c) +PERL_CALLCONV bool Perl_is_uni_xdigit(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; @@ -1289,131 +1619,123 @@ PERL_CALLCONV bool Perl_is_uni_xdigit_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_ascii_string(const U8 *s, STRLEN len) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_IS_ASCII_STRING \ - assert(s) - -PERL_CALLCONV STRLEN Perl_is_utf8_char(const U8 *s) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_IS_UTF8_CHAR \ - assert(s) - -PERL_CALLCONV bool Perl_is_utf8_string(const U8 *s, STRLEN len) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_IS_UTF8_STRING \ - assert(s) - -/* PERL_CALLCONV bool Perl_is_utf8_string_loc(const U8 *s, STRLEN len, const U8 **p) - __attribute__nonnull__(1); */ -#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC \ - assert(s) +PERL_CALLCONV bool Perl_is_utf8_X_L(pTHX_ const U8 *p) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_UTF8_X_L \ + assert(p) -PERL_CALLCONV bool Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN \ - assert(s) +PERL_CALLCONV bool Perl_is_utf8_X_LV(pTHX_ const U8 *p) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_UTF8_X_LV \ + assert(p) -PERL_CALLCONV bool Perl_is_utf8_alnum(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_X_LVT(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_ALNUM \ +#define PERL_ARGS_ASSERT_IS_UTF8_X_LVT \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_idfirst(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_X_LV_LVT_V(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_IDFIRST \ +#define PERL_ARGS_ASSERT_IS_UTF8_X_LV_LVT_V \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_idcont(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_X_T(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_IDCONT \ +#define PERL_ARGS_ASSERT_IS_UTF8_X_T \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_alpha(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_X_V(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_ALPHA \ +#define PERL_ARGS_ASSERT_IS_UTF8_X_V \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_ascii(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_X_begin(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_ASCII \ +#define PERL_ARGS_ASSERT_IS_UTF8_X_BEGIN \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_space(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_X_extend(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_SPACE \ +#define PERL_ARGS_ASSERT_IS_UTF8_X_EXTEND \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_perl_space(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_X_non_hangul(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_PERL_SPACE \ +#define PERL_ARGS_ASSERT_IS_UTF8_X_NON_HANGUL \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_perl_word(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_X_prepend(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_PERL_WORD \ +#define PERL_ARGS_ASSERT_IS_UTF8_X_PREPEND \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_cntrl(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_alnum(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_CNTRL \ +#define PERL_ARGS_ASSERT_IS_UTF8_ALNUM \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_digit(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_alpha(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_DIGIT \ +#define PERL_ARGS_ASSERT_IS_UTF8_ALPHA \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_posix_digit(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_ascii(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_POSIX_DIGIT \ +#define PERL_ARGS_ASSERT_IS_UTF8_ASCII \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_graph(pTHX_ const U8 *p) +PERL_CALLCONV STRLEN Perl_is_utf8_char(const U8 *s) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_IS_UTF8_CHAR \ + assert(s) + +PERL_CALLCONV bool Perl_is_utf8_cntrl(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_GRAPH \ +#define PERL_ARGS_ASSERT_IS_UTF8_CNTRL \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_upper(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_digit(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_UPPER \ +#define PERL_ARGS_ASSERT_IS_UTF8_DIGIT \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_lower(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_graph(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_LOWER \ +#define PERL_ARGS_ASSERT_IS_UTF8_GRAPH \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_print(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_idcont(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_PRINT \ +#define PERL_ARGS_ASSERT_IS_UTF8_IDCONT \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_punct(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_idfirst(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_PUNCT \ +#define PERL_ARGS_ASSERT_IS_UTF8_IDFIRST \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_xdigit(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_lower(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_XDIGIT \ +#define PERL_ARGS_ASSERT_IS_UTF8_LOWER \ assert(p) PERL_CALLCONV bool Perl_is_utf8_mark(pTHX_ const U8 *p) @@ -1422,64 +1744,79 @@ PERL_CALLCONV bool Perl_is_utf8_mark(pTHX_ const U8 *p) #define PERL_ARGS_ASSERT_IS_UTF8_MARK \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_X_begin(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_perl_space(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_X_BEGIN \ +#define PERL_ARGS_ASSERT_IS_UTF8_PERL_SPACE \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_X_extend(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_perl_word(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_X_EXTEND \ +#define PERL_ARGS_ASSERT_IS_UTF8_PERL_WORD \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_X_prepend(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_posix_digit(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_X_PREPEND \ +#define PERL_ARGS_ASSERT_IS_UTF8_POSIX_DIGIT \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_X_non_hangul(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_print(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_X_NON_HANGUL \ +#define PERL_ARGS_ASSERT_IS_UTF8_PRINT \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_X_L(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_punct(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_X_L \ +#define PERL_ARGS_ASSERT_IS_UTF8_PUNCT \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_X_LV(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_space(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_X_LV \ +#define PERL_ARGS_ASSERT_IS_UTF8_SPACE \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_X_LVT(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_string(const U8 *s, STRLEN len) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_IS_UTF8_STRING \ + assert(s) + +/* PERL_CALLCONV bool Perl_is_utf8_string_loc(const U8 *s, STRLEN len, const U8 **p) + __attribute__nonnull__(1); */ +#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC \ + assert(s) + +PERL_CALLCONV bool Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN \ + assert(s) + +PERL_CALLCONV bool Perl_is_utf8_upper(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_X_LVT \ +#define PERL_ARGS_ASSERT_IS_UTF8_UPPER \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_X_LV_LVT_V(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_xdigit(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_X_LV_LVT_V \ +#define PERL_ARGS_ASSERT_IS_UTF8_XDIGIT \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_X_T(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_xidcont(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_X_T \ +#define PERL_ARGS_ASSERT_IS_UTF8_XIDCONT \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_X_V(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl_is_utf8_xidfirst(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_X_V \ +#define PERL_ARGS_ASSERT_IS_UTF8_XIDFIRST \ assert(p) PERL_CALLCONV OP* Perl_jmaybe(pTHX_ OP *o) @@ -1493,83 +1830,56 @@ PERL_CALLCONV I32 Perl_keyword(pTHX_ const char *name, I32 len, bool all_keyword #define PERL_ARGS_ASSERT_KEYWORD \ assert(name) -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -STATIC OP* S_opt_scalarhv(pTHX_ OP* rep_op) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_OPT_SCALARHV \ - assert(rep_op) - -STATIC OP* S_is_inplace_av(pTHX_ OP* o, OP* oright) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_INPLACE_AV \ - assert(o) +PERL_CALLCONV int Perl_keyword_plugin_standard(pTHX_ char* keyword_ptr, STRLEN keyword_len, OP** op_ptr) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_KEYWORD_PLUGIN_STANDARD \ + assert(keyword_ptr); assert(op_ptr) -#endif PERL_CALLCONV void Perl_leave_scope(pTHX_ I32 base); -PERL_CALLCONV void Perl_lex_end(pTHX); -PERL_CALLCONV void Perl_lex_start(pTHX_ SV* line, PerlIO *rsfp, bool new_filter); PERL_CALLCONV bool Perl_lex_bufutf8(pTHX); -PERL_CALLCONV char* Perl_lex_grow_linestr(pTHX_ STRLEN len); -PERL_CALLCONV void Perl_lex_stuff_pvn(pTHX_ char* pv, STRLEN len, U32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_LEX_STUFF_PVN \ - assert(pv) - -PERL_CALLCONV void Perl_lex_stuff_sv(pTHX_ SV* sv, U32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_LEX_STUFF_SV \ - assert(sv) - -PERL_CALLCONV void Perl_lex_unstuff(pTHX_ char* ptr) +PERL_CALLCONV void Perl_lex_discard_to(pTHX_ char* ptr) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_LEX_UNSTUFF \ +#define PERL_ARGS_ASSERT_LEX_DISCARD_TO \ assert(ptr) +PERL_CALLCONV char* Perl_lex_grow_linestr(pTHX_ STRLEN len); +PERL_CALLCONV bool Perl_lex_next_chunk(pTHX_ U32 flags); +PERL_CALLCONV I32 Perl_lex_peek_unichar(pTHX_ U32 flags); +PERL_CALLCONV void Perl_lex_read_space(pTHX_ U32 flags); PERL_CALLCONV void Perl_lex_read_to(pTHX_ char* ptr) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_LEX_READ_TO \ assert(ptr) -PERL_CALLCONV void Perl_lex_discard_to(pTHX_ char* ptr) +PERL_CALLCONV I32 Perl_lex_read_unichar(pTHX_ U32 flags); +PERL_CALLCONV void Perl_lex_start(pTHX_ SV* line, PerlIO *rsfp, U32 flags); +PERL_CALLCONV void Perl_lex_stuff_pv(pTHX_ const char* pv, U32 flags) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_LEX_DISCARD_TO \ - assert(ptr) +#define PERL_ARGS_ASSERT_LEX_STUFF_PV \ + assert(pv) -PERL_CALLCONV bool Perl_lex_next_chunk(pTHX_ U32 flags); -PERL_CALLCONV I32 Perl_lex_peek_unichar(pTHX_ U32 flags); -PERL_CALLCONV I32 Perl_lex_read_unichar(pTHX_ U32 flags); -PERL_CALLCONV void Perl_lex_read_space(pTHX_ U32 flags); -PERL_CALLCONV void Perl_op_null(pTHX_ OP* o) +PERL_CALLCONV void Perl_lex_stuff_pvn(pTHX_ const char* pv, STRLEN len, U32 flags) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_OP_NULL \ - assert(o) +#define PERL_ARGS_ASSERT_LEX_STUFF_PVN \ + assert(pv) -PERL_CALLCONV void Perl_op_clear(pTHX_ OP* o) +PERL_CALLCONV void Perl_lex_stuff_sv(pTHX_ SV* sv, U32 flags) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_OP_CLEAR \ - assert(o) +#define PERL_ARGS_ASSERT_LEX_STUFF_SV \ + assert(sv) -PERL_CALLCONV void Perl_op_refcnt_lock(pTHX); -PERL_CALLCONV void Perl_op_refcnt_unlock(pTHX); -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -STATIC OP* S_linklist(pTHX_ OP *o) +PERL_CALLCONV void Perl_lex_unstuff(pTHX_ char* ptr) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_LINKLIST \ - assert(o) +#define PERL_ARGS_ASSERT_LEX_UNSTUFF \ + assert(ptr) -STATIC OP* S_listkids(pTHX_ OP* o); -#endif PERL_CALLCONV OP* Perl_list(pTHX_ OP* o); PERL_CALLCONV void Perl_load_module(pTHX_ U32 flags, SV* name, SV* ver, ...) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_LOAD_MODULE \ assert(name) -PERL_CALLCONV void Perl_vload_module(pTHX_ U32 flags, SV* name, SV* ver, va_list* args) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_VLOAD_MODULE \ - assert(name) - PERL_CALLCONV OP* Perl_localize(pTHX_ OP *o, I32 lex) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_LOCALIZE \ @@ -1581,38 +1891,11 @@ PERL_CALLCONV I32 Perl_looks_like_number(pTHX_ SV *const sv) #define PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER \ assert(sv) -PERL_CALLCONV UV Perl_grok_bin(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_GROK_BIN \ - assert(start); assert(len_p); assert(flags) - -PERL_CALLCONV UV Perl_grok_hex(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_GROK_HEX \ - assert(start); assert(len_p); assert(flags) - -PERL_CALLCONV int Perl_grok_number(pTHX_ const char *pv, STRLEN len, UV *valuep) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GROK_NUMBER \ - assert(pv) - -PERL_CALLCONV bool Perl_grok_numeric_radix(pTHX_ const char **sp, const char *send) - __attribute__warn_unused_result__ +PERL_CALLCONV int Perl_magic_clear_all_env(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_GROK_NUMERIC_RADIX \ - assert(sp); assert(send) - -PERL_CALLCONV UV Perl_grok_oct(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_GROK_OCT \ - assert(start); assert(len_p); assert(flags) +#define PERL_ARGS_ASSERT_MAGIC_CLEAR_ALL_ENV \ + assert(sv); assert(mg) PERL_CALLCONV int Perl_magic_clearenv(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) @@ -1620,12 +1903,6 @@ PERL_CALLCONV int Perl_magic_clearenv(pTHX_ SV* sv, MAGIC* mg) #define PERL_ARGS_ASSERT_MAGIC_CLEARENV \ assert(sv); assert(mg) -PERL_CALLCONV int Perl_magic_clear_all_env(pTHX_ SV* sv, MAGIC* mg) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MAGIC_CLEAR_ALL_ENV \ - assert(sv); assert(mg) - PERL_CALLCONV int Perl_magic_clearhint(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -1655,12 +1932,19 @@ PERL_CALLCONV int Perl_magic_clearsig(pTHX_ SV* sv, MAGIC* mg) #define PERL_ARGS_ASSERT_MAGIC_CLEARSIG \ assert(sv); assert(mg) +PERL_CALLCONV void Perl_magic_dump(pTHX_ const MAGIC *mg); PERL_CALLCONV int Perl_magic_existspack(pTHX_ SV* sv, const MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_MAGIC_EXISTSPACK \ assert(sv); assert(mg) +PERL_CALLCONV int Perl_magic_freearylen_p(pTHX_ SV* sv, MAGIC* mg) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_MAGIC_FREEARYLEN_P \ + assert(sv); assert(mg) + PERL_CALLCONV int Perl_magic_freeovrld(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -1733,12 +2017,25 @@ PERL_CALLCONV int Perl_magic_getvec(pTHX_ SV* sv, MAGIC* mg) #define PERL_ARGS_ASSERT_MAGIC_GETVEC \ assert(sv); assert(mg) +PERL_CALLCONV int Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_MAGIC_KILLBACKREFS \ + assert(sv); assert(mg) + PERL_CALLCONV U32 Perl_magic_len(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_MAGIC_LEN \ assert(sv); assert(mg) +PERL_CALLCONV SV* Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, const char *meth, U32 flags, U32 argc, ...) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_MAGIC_METHCALL \ + assert(sv); assert(mg); assert(meth) + PERL_CALLCONV int Perl_magic_nextpack(pTHX_ SV *sv, MAGIC *mg, SV *key) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -1765,28 +2062,34 @@ PERL_CALLCONV int Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg) #define PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET \ assert(sv); assert(mg) +PERL_CALLCONV SV* Perl_magic_scalarpack(pTHX_ HV *hv, MAGIC *mg) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_MAGIC_SCALARPACK \ + assert(hv); assert(mg) + PERL_CALLCONV int Perl_magic_set(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_MAGIC_SET \ assert(sv); assert(mg) -PERL_CALLCONV int Perl_magic_setamagic(pTHX_ SV* sv, MAGIC* mg) +PERL_CALLCONV int Perl_magic_set_all_env(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MAGIC_SETAMAGIC \ +#define PERL_ARGS_ASSERT_MAGIC_SET_ALL_ENV \ assert(sv); assert(mg) -PERL_CALLCONV int Perl_magic_setarylen(pTHX_ SV* sv, MAGIC* mg) +PERL_CALLCONV int Perl_magic_setamagic(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MAGIC_SETARYLEN \ +#define PERL_ARGS_ASSERT_MAGIC_SETAMAGIC \ assert(sv); assert(mg) -PERL_CALLCONV int Perl_magic_freearylen_p(pTHX_ SV* sv, MAGIC* mg) +PERL_CALLCONV int Perl_magic_setarylen(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MAGIC_FREEARYLEN_P \ +#define PERL_ARGS_ASSERT_MAGIC_SETARYLEN \ assert(sv); assert(mg) PERL_CALLCONV int Perl_magic_setdbline(pTHX_ SV* sv, MAGIC* mg) @@ -1866,28 +2169,22 @@ PERL_CALLCONV int Perl_magic_settaint(pTHX_ SV* sv, MAGIC* mg) #define PERL_ARGS_ASSERT_MAGIC_SETTAINT \ assert(sv); assert(mg) -PERL_CALLCONV int Perl_magic_setuvar(pTHX_ SV* sv, MAGIC* mg) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MAGIC_SETUVAR \ - assert(sv); assert(mg) - -PERL_CALLCONV int Perl_magic_setvec(pTHX_ SV* sv, MAGIC* mg) +PERL_CALLCONV int Perl_magic_setutf8(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MAGIC_SETVEC \ +#define PERL_ARGS_ASSERT_MAGIC_SETUTF8 \ assert(sv); assert(mg) -PERL_CALLCONV int Perl_magic_setutf8(pTHX_ SV* sv, MAGIC* mg) +PERL_CALLCONV int Perl_magic_setuvar(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MAGIC_SETUTF8 \ +#define PERL_ARGS_ASSERT_MAGIC_SETUVAR \ assert(sv); assert(mg) -PERL_CALLCONV int Perl_magic_set_all_env(pTHX_ SV* sv, MAGIC* mg) +PERL_CALLCONV int Perl_magic_setvec(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MAGIC_SET_ALL_ENV \ +#define PERL_ARGS_ASSERT_MAGIC_SETVEC \ assert(sv); assert(mg) PERL_CALLCONV U32 Perl_magic_sizepack(pTHX_ SV* sv, MAGIC* mg) @@ -1902,47 +2199,23 @@ PERL_CALLCONV int Perl_magic_wipepack(pTHX_ SV* sv, MAGIC* mg) #define PERL_ARGS_ASSERT_MAGIC_WIPEPACK \ assert(sv); assert(mg) -PERL_CALLCONV void Perl_markstack_grow(pTHX); -#if defined(USE_LOCALE_COLLATE) -PERL_CALLCONV int Perl_magic_setcollxfrm(pTHX_ SV* sv, MAGIC* mg) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MAGIC_SETCOLLXFRM \ - assert(sv); assert(mg) - -PERL_CALLCONV char* Perl_mem_collxfrm(pTHX_ const char* s, STRLEN len, STRLEN* xlen) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_MEM_COLLXFRM \ - assert(s); assert(xlen) +PERL_CALLCONV Malloc_t Perl_malloc(MEM_SIZE nbytes) + __attribute__malloc__ + __attribute__warn_unused_result__; -#endif +PERL_CALLCONV void Perl_markstack_grow(pTHX); PERL_CALLCONV SV* Perl_mess(pTHX_ const char* pat, ...) __attribute__format__(__printf__,pTHX_1,pTHX_2) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_MESS \ assert(pat) -PERL_CALLCONV SV* Perl_vmess(pTHX_ const char* pat, va_list* args) +PERL_CALLCONV SV* Perl_mess_sv(pTHX_ SV* basemsg, bool consume) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_VMESS \ - assert(pat) - -PERL_CALLCONV void Perl_qerror(pTHX_ SV* err) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_QERROR \ - assert(err) - -PERL_CALLCONV void Perl_sortsv(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_SORTSV \ - assert(cmp) - -PERL_CALLCONV void Perl_sortsv_flags(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp, U32 flags) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_SORTSV_FLAGS \ - assert(cmp) +#define PERL_ARGS_ASSERT_MESS_SV \ + assert(basemsg) +PERL_CALLCONV Free_t Perl_mfree(Malloc_t where); PERL_CALLCONV int Perl_mg_clear(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_MG_CLEAR \ @@ -1954,20 +2227,22 @@ PERL_CALLCONV int Perl_mg_copy(pTHX_ SV *sv, SV *nsv, const char *key, I32 klen) #define PERL_ARGS_ASSERT_MG_COPY \ assert(sv); assert(nsv) -PERL_CALLCONV void Perl_mg_localize(pTHX_ SV* sv, SV* nsv, bool setmagic) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MG_LOCALIZE \ - assert(sv); assert(nsv) - PERL_CALLCONV MAGIC* Perl_mg_find(pTHX_ const SV* sv, int type) __attribute__warn_unused_result__; +PERL_CALLCONV MAGIC* Perl_mg_findext(pTHX_ const SV* sv, int type, const MGVTBL *vtbl) + __attribute__warn_unused_result__; + PERL_CALLCONV int Perl_mg_free(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_MG_FREE \ assert(sv) +PERL_CALLCONV void Perl_mg_free_type(pTHX_ SV* sv, int how) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_MG_FREE_TYPE \ + assert(sv) + PERL_CALLCONV int Perl_mg_get(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_MG_GET \ @@ -1978,6 +2253,12 @@ PERL_CALLCONV U32 Perl_mg_length(pTHX_ SV* sv) #define PERL_ARGS_ASSERT_MG_LENGTH \ assert(sv) +PERL_CALLCONV void Perl_mg_localize(pTHX_ SV* sv, SV* nsv, bool setmagic) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_MG_LOCALIZE \ + assert(sv); assert(nsv) + PERL_CALLCONV void Perl_mg_magical(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_MG_MAGICAL \ @@ -2000,31 +2281,89 @@ PERL_CALLCONV void Perl_mini_mktime(pTHX_ struct tm *ptm) PERL_CALLCONV OP* Perl_mod(pTHX_ OP* o, I32 type); PERL_CALLCONV int Perl_mode_from_discipline(pTHX_ const char* s, STRLEN len); +PERL_CALLCONV void * Perl_more_bodies(pTHX_ const svtype sv_type, const size_t body_size, const size_t arena_size); PERL_CALLCONV const char* Perl_moreswitches(pTHX_ const char* s) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_MORESWITCHES \ assert(s) +PERL_CALLCONV const struct mro_alg * Perl_mro_get_from_name(pTHX_ SV *name) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_MRO_GET_FROM_NAME \ + assert(name) + +PERL_CALLCONV AV* Perl_mro_get_linear_isa(pTHX_ HV* stash) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA \ + assert(stash) + +PERL_CALLCONV SV* Perl_mro_get_private_data(pTHX_ struct mro_meta *const smeta, const struct mro_alg *const which) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_MRO_GET_PRIVATE_DATA \ + assert(smeta); assert(which) + +PERL_CALLCONV void Perl_mro_isa_changed_in(pTHX_ HV* stash) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_MRO_ISA_CHANGED_IN \ + assert(stash) + +PERL_CALLCONV struct mro_meta* Perl_mro_meta_init(pTHX_ HV* stash) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_MRO_META_INIT \ + assert(stash) + +PERL_CALLCONV void Perl_mro_method_changed_in(pTHX_ HV* stash) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_MRO_METHOD_CHANGED_IN \ + assert(stash) + +PERL_CALLCONV void Perl_mro_package_moved(pTHX_ HV * const stash, HV * const oldstash, const GV * const gv, U32 flags) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_MRO_PACKAGE_MOVED \ + assert(gv) + +PERL_CALLCONV void Perl_mro_register(pTHX_ const struct mro_alg *mro) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_MRO_REGISTER \ + assert(mro) + +PERL_CALLCONV void Perl_mro_set_mro(pTHX_ struct mro_meta *const meta, SV *const name) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_MRO_SET_MRO \ + assert(meta); assert(name) + +PERL_CALLCONV SV* Perl_mro_set_private_data(pTHX_ struct mro_meta *const smeta, const struct mro_alg *const which, SV *const data) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_MRO_SET_PRIVATE_DATA \ + assert(smeta); assert(which); assert(data) + +PERL_CALLCONV void Perl_munge_qwlist_to_paren_list(pTHX_ OP* qwlist) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_MUNGE_QWLIST_TO_PAREN_LIST \ + assert(qwlist) + PERL_CALLCONV NV Perl_my_atof(pTHX_ const char *s) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_MY_ATOF \ assert(s) -#if (!defined(HAS_MEMCPY) && !defined(HAS_BCOPY)) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY) && !defined(HAS_SAFE_BCOPY)) -PERL_CALLCONV char* Perl_my_bcopy(const char* from, char* to, I32 len) - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_MY_BCOPY \ - assert(from); assert(to) +PERL_CALLCONV char* Perl_my_atof2(pTHX_ const char *s, NV* value) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_MY_ATOF2 \ + assert(s); assert(value) -#endif -#if !defined(HAS_BZERO) && !defined(HAS_MEMSET) -PERL_CALLCONV char* Perl_my_bzero(char* loc, I32 len) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_MY_BZERO \ - assert(loc) +PERL_CALLCONV OP * Perl_my_attrs(pTHX_ OP *o, OP *attrs) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_MY_ATTRS \ + assert(o) -#endif +PERL_CALLCONV void Perl_my_clearenv(pTHX); +PERL_CALLCONV int Perl_my_dirfd(pTHX_ DIR* dir); PERL_CALLCONV void Perl_my_exit(pTHX_ U32 status) __attribute__noreturn__; @@ -2033,25 +2372,8 @@ PERL_CALLCONV void Perl_my_failure_exit(pTHX) PERL_CALLCONV I32 Perl_my_fflush_all(pTHX); PERL_CALLCONV Pid_t Perl_my_fork(void); -PERL_CALLCONV void Perl_atfork_lock(void); -PERL_CALLCONV void Perl_atfork_unlock(void); -PERL_CALLCONV I32 Perl_my_lstat(pTHX); -#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) -PERL_CALLCONV I32 Perl_my_memcmp(const char* s1, const char* s2, I32 len) - __attribute__pure__ - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_MY_MEMCMP \ - assert(s1); assert(s2) - -#endif -#if !defined(HAS_MEMSET) -PERL_CALLCONV void* Perl_my_memset(char* loc, I32 ch, I32 len) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_MY_MEMSET \ - assert(loc) - -#endif +/* PERL_CALLCONV I32 Perl_my_lstat(pTHX); */ +PERL_CALLCONV I32 Perl_my_lstat_flags(pTHX_ const U32 flags); PERL_CALLCONV I32 Perl_my_pclose(pTHX_ PerlIO* ptr); PERL_CALLCONV PerlIO* Perl_my_popen(pTHX_ const char* cmd, const char* mode) __attribute__nonnull__(pTHX_1) @@ -2066,40 +2388,59 @@ PERL_CALLCONV PerlIO* Perl_my_popen_list(pTHX_ const char* mode, int n, SV ** ar assert(mode); assert(args) PERL_CALLCONV void Perl_my_setenv(pTHX_ const char* nam, const char* val); -PERL_CALLCONV I32 Perl_my_stat(pTHX); +PERL_CALLCONV int Perl_my_snprintf(char *buffer, const Size_t len, const char *format, ...) + __attribute__format__(__printf__,3,4) + __attribute__nonnull__(1) + __attribute__nonnull__(3); +#define PERL_ARGS_ASSERT_MY_SNPRINTF \ + assert(buffer); assert(format) + +PERL_CALLCONV int Perl_my_socketpair(int family, int type, int protocol, int fd[2]); +/* PERL_CALLCONV I32 Perl_my_stat(pTHX); */ +PERL_CALLCONV I32 Perl_my_stat_flags(pTHX_ const U32 flags); PERL_CALLCONV char * Perl_my_strftime(pTHX_ const char *fmt, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_MY_STRFTIME \ assert(fmt) -#if defined(MYSWAP) -PERL_CALLCONV short Perl_my_swap(pTHX_ short s) - __attribute__malloc__ - __attribute__warn_unused_result__ - __attribute__pure__; +PERL_CALLCONV void Perl_my_swabn(void* ptr, int n) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_MY_SWABN \ + assert(ptr) -PERL_CALLCONV long Perl_my_htonl(pTHX_ long l) - __attribute__malloc__ - __attribute__warn_unused_result__ - __attribute__pure__; +PERL_CALLCONV void Perl_my_unexec(pTHX); +PERL_CALLCONV int Perl_my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap) + __attribute__nonnull__(1) + __attribute__nonnull__(3); +#define PERL_ARGS_ASSERT_MY_VSNPRINTF \ + assert(buffer); assert(format) -PERL_CALLCONV long Perl_my_ntohl(pTHX_ long l) +PERL_CALLCONV OP* Perl_newANONATTRSUB(pTHX_ I32 floor, OP *proto, OP *attrs, OP *block); +PERL_CALLCONV OP* Perl_newANONHASH(pTHX_ OP* o) __attribute__malloc__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; -#endif -PERL_CALLCONV void Perl_my_unexec(pTHX); PERL_CALLCONV OP* Perl_newANONLIST(pTHX_ OP* o) __attribute__malloc__ __attribute__warn_unused_result__; -PERL_CALLCONV OP* Perl_newANONHASH(pTHX_ OP* o) +PERL_CALLCONV OP* Perl_newANONSUB(pTHX_ I32 floor, OP* proto, OP* block); +PERL_CALLCONV OP* Perl_newASSIGNOP(pTHX_ I32 flags, OP* left, I32 optype, OP* right) __attribute__malloc__ __attribute__warn_unused_result__; -PERL_CALLCONV OP* Perl_newANONSUB(pTHX_ I32 floor, OP* proto, OP* block); -PERL_CALLCONV OP* Perl_newASSIGNOP(pTHX_ I32 flags, OP* left, I32 optype, OP* right) +PERL_CALLCONV CV* Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block); +/* PERL_CALLCONV AV* Perl_newAV(pTHX) + __attribute__warn_unused_result__; */ + +PERL_CALLCONV OP* Perl_newAVREF(pTHX_ OP* o) + __attribute__malloc__ + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_NEWAVREF \ + assert(o) + +PERL_CALLCONV OP* Perl_newBINOP(pTHX_ I32 type, I32 flags, OP* first, OP* last) __attribute__malloc__ __attribute__warn_unused_result__; @@ -2111,15 +2452,14 @@ PERL_CALLCONV OP* Perl_newCONDOP(pTHX_ I32 flags, OP* first, OP* trueop, OP* fal assert(first) PERL_CALLCONV CV* Perl_newCONSTSUB(pTHX_ HV* stash, const char* name, SV* sv); -#ifdef PERL_MAD -PERL_CALLCONV OP* Perl_newFORM(pTHX_ I32 floor, OP* o, OP* block); -#else -PERL_CALLCONV void Perl_newFORM(pTHX_ I32 floor, OP* o, OP* block); -#endif -PERL_CALLCONV OP* Perl_newFOROP(pTHX_ I32 flags, char* label, line_t forline, OP* sv, OP* expr, OP* block, OP* cont) +PERL_CALLCONV OP* Perl_newCVREF(pTHX_ I32 flags, OP* o) + __attribute__malloc__ + __attribute__warn_unused_result__; + +PERL_CALLCONV OP* Perl_newFOROP(pTHX_ I32 flags, OP* sv, OP* expr, OP* block, OP* cont) __attribute__malloc__ __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_5); + __attribute__nonnull__(pTHX_3); #define PERL_ARGS_ASSERT_NEWFOROP \ assert(expr) @@ -2131,84 +2471,10 @@ PERL_CALLCONV OP* Perl_newGIVENOP(pTHX_ OP* cond, OP* block, PADOFFSET defsv_off #define PERL_ARGS_ASSERT_NEWGIVENOP \ assert(cond); assert(block) -PERL_CALLCONV OP* Perl_newLOGOP(pTHX_ I32 optype, I32 flags, OP *first, OP *other) - __attribute__malloc__ - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); -#define PERL_ARGS_ASSERT_NEWLOGOP \ - assert(first); assert(other) - -PERL_CALLCONV OP* Perl_newLOOPEX(pTHX_ I32 type, OP* label) - __attribute__malloc__ - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_NEWLOOPEX \ - assert(label) - -PERL_CALLCONV OP* Perl_newLOOPOP(pTHX_ I32 flags, I32 debuggable, OP* expr, OP* block) - __attribute__malloc__ - __attribute__warn_unused_result__; - -PERL_CALLCONV OP* Perl_newNULLLIST(pTHX) - __attribute__malloc__ - __attribute__warn_unused_result__; - -PERL_CALLCONV OP* Perl_newOP(pTHX_ I32 optype, I32 flags) - __attribute__malloc__ - __attribute__warn_unused_result__; - -PERL_CALLCONV void Perl_newPROG(pTHX_ OP* o) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_NEWPROG \ - assert(o) - -PERL_CALLCONV OP* Perl_newRANGE(pTHX_ I32 flags, OP* left, OP* right) - __attribute__malloc__ - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_NEWRANGE \ - assert(left); assert(right) - -PERL_CALLCONV OP* Perl_newSLICEOP(pTHX_ I32 flags, OP* subscript, OP* listop) - __attribute__malloc__ - __attribute__warn_unused_result__; - -PERL_CALLCONV OP* Perl_newSTATEOP(pTHX_ I32 flags, char* label, OP* o) - __attribute__malloc__ - __attribute__warn_unused_result__; - -PERL_CALLCONV CV* Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block); -PERL_CALLCONV CV * Perl_newXS_flags(pTHX_ const char *name, XSUBADDR_t subaddr, const char *const filename, const char *const proto, U32 flags) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_NEWXS_FLAGS \ - assert(subaddr); assert(filename) - -PERL_CALLCONV CV* Perl_newXS(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_NEWXS \ - assert(subaddr); assert(filename) - -/* PERL_CALLCONV AV* Perl_newAV(pTHX) - __attribute__warn_unused_result__; */ - -PERL_CALLCONV OP* Perl_newAVREF(pTHX_ OP* o) - __attribute__malloc__ - __attribute__warn_unused_result__ +PERL_CALLCONV GP * Perl_newGP(pTHX_ GV *const gv) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_NEWAVREF \ - assert(o) - -PERL_CALLCONV OP* Perl_newBINOP(pTHX_ I32 type, I32 flags, OP* first, OP* last) - __attribute__malloc__ - __attribute__warn_unused_result__; - -PERL_CALLCONV OP* Perl_newCVREF(pTHX_ I32 flags, OP* o) - __attribute__malloc__ - __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_NEWGP \ + assert(gv) PERL_CALLCONV OP* Perl_newGVOP(pTHX_ I32 type, I32 flags, GV* gv) __attribute__malloc__ @@ -2217,6 +2483,10 @@ PERL_CALLCONV OP* Perl_newGVOP(pTHX_ I32 type, I32 flags, GV* gv) #define PERL_ARGS_ASSERT_NEWGVOP \ assert(gv) +PERL_CALLCONV OP* Perl_newGVREF(pTHX_ I32 type, OP* o) + __attribute__malloc__ + __attribute__warn_unused_result__; + PERL_CALLCONV GV* Perl_newGVgen(pTHX_ const char* pack) __attribute__malloc__ __attribute__warn_unused_result__ @@ -2224,9 +2494,8 @@ PERL_CALLCONV GV* Perl_newGVgen(pTHX_ const char* pack) #define PERL_ARGS_ASSERT_NEWGVGEN \ assert(pack) -PERL_CALLCONV OP* Perl_newGVREF(pTHX_ I32 type, OP* o) - __attribute__malloc__ - __attribute__warn_unused_result__; +/* PERL_CALLCONV HV* Perl_newHV(pTHX) + __attribute__warn_unused_result__; */ PERL_CALLCONV OP* Perl_newHVREF(pTHX_ OP* o) __attribute__malloc__ @@ -2235,9 +2504,6 @@ PERL_CALLCONV OP* Perl_newHVREF(pTHX_ OP* o) #define PERL_ARGS_ASSERT_NEWHVREF \ assert(o) -/* PERL_CALLCONV HV* Perl_newHV(pTHX) - __attribute__warn_unused_result__; */ - PERL_CALLCONV HV* Perl_newHVhv(pTHX_ HV *hv) __attribute__malloc__ __attribute__warn_unused_result__; @@ -2250,23 +2516,54 @@ PERL_CALLCONV OP* Perl_newLISTOP(pTHX_ I32 type, I32 flags, OP* first, OP* last) __attribute__malloc__ __attribute__warn_unused_result__; -#ifdef USE_ITHREADS -PERL_CALLCONV OP* Perl_newPADOP(pTHX_ I32 type, I32 flags, SV* sv) +PERL_CALLCONV OP* Perl_newLOGOP(pTHX_ I32 optype, I32 flags, OP *first, OP *other) __attribute__malloc__ __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_NEWPADOP \ - assert(sv) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_NEWLOGOP \ + assert(first); assert(other) + +PERL_CALLCONV OP* Perl_newLOOPEX(pTHX_ I32 type, OP* label) + __attribute__malloc__ + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_NEWLOOPEX \ + assert(label) + +PERL_CALLCONV OP* Perl_newLOOPOP(pTHX_ I32 flags, I32 debuggable, OP* expr, OP* block) + __attribute__malloc__ + __attribute__warn_unused_result__; + +PERL_CALLCONV OP* Perl_newNULLLIST(pTHX) + __attribute__malloc__ + __attribute__warn_unused_result__; + +PERL_CALLCONV OP* Perl_newOP(pTHX_ I32 optype, I32 flags) + __attribute__malloc__ + __attribute__warn_unused_result__; -#endif PERL_CALLCONV OP* Perl_newPMOP(pTHX_ I32 type, I32 flags) __attribute__malloc__ __attribute__warn_unused_result__; +PERL_CALLCONV void Perl_newPROG(pTHX_ OP* o) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_NEWPROG \ + assert(o) + PERL_CALLCONV OP* Perl_newPVOP(pTHX_ I32 type, I32 flags, char* pv) __attribute__malloc__ __attribute__warn_unused_result__; +PERL_CALLCONV OP* Perl_newRANGE(pTHX_ I32 flags, OP* left, OP* right) + __attribute__malloc__ + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_NEWRANGE \ + assert(left); assert(right) + PERL_CALLCONV SV* Perl_newRV(pTHX_ SV *const sv) __attribute__malloc__ __attribute__warn_unused_result__ @@ -2281,16 +2578,18 @@ PERL_CALLCONV SV* Perl_newRV_noinc(pTHX_ SV *const sv) #define PERL_ARGS_ASSERT_NEWRV_NOINC \ assert(sv) -PERL_CALLCONV SV* Perl_newSV(pTHX_ const STRLEN len) +PERL_CALLCONV OP* Perl_newSLICEOP(pTHX_ I32 flags, OP* subscript, OP* listop) __attribute__malloc__ __attribute__warn_unused_result__; -PERL_CALLCONV OP* Perl_newSVREF(pTHX_ OP* o) +PERL_CALLCONV OP* Perl_newSTATEOP(pTHX_ I32 flags, char* label, OP* o) __attribute__malloc__ - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_NEWSVREF \ - assert(o) + __attribute__warn_unused_result__; + +/* PERL_CALLCONV CV* Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block); */ +PERL_CALLCONV SV* Perl_newSV(pTHX_ const STRLEN len) + __attribute__malloc__ + __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newSVOP(pTHX_ I32 type, I32 flags, SV* sv) __attribute__malloc__ @@ -2299,35 +2598,34 @@ PERL_CALLCONV OP* Perl_newSVOP(pTHX_ I32 type, I32 flags, SV* sv) #define PERL_ARGS_ASSERT_NEWSVOP \ assert(sv) -PERL_CALLCONV SV* Perl_newSViv(pTHX_ const IV i) - __attribute__malloc__ - __attribute__warn_unused_result__; - -PERL_CALLCONV SV* Perl_newSVuv(pTHX_ const UV u) +PERL_CALLCONV OP* Perl_newSVREF(pTHX_ OP* o) __attribute__malloc__ - __attribute__warn_unused_result__; + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_NEWSVREF \ + assert(o) -PERL_CALLCONV SV* Perl_newSVnv(pTHX_ const NV n) +PERL_CALLCONV SV* Perl_newSV_type(pTHX_ const svtype type) __attribute__malloc__ __attribute__warn_unused_result__; -PERL_CALLCONV SV* Perl_newSVpv(pTHX_ const char *const s, const STRLEN len) +PERL_CALLCONV SV* Perl_newSVhek(pTHX_ const HEK *const hek) __attribute__malloc__ __attribute__warn_unused_result__; -PERL_CALLCONV SV* Perl_newSVpvn(pTHX_ const char *const s, const STRLEN len) +PERL_CALLCONV SV* Perl_newSViv(pTHX_ const IV i) __attribute__malloc__ __attribute__warn_unused_result__; -PERL_CALLCONV SV* Perl_newSVpvn_flags(pTHX_ const char *const s, const STRLEN len, const U32 flags) +PERL_CALLCONV SV* Perl_newSVnv(pTHX_ const NV n) __attribute__malloc__ __attribute__warn_unused_result__; -PERL_CALLCONV SV* Perl_newSVhek(pTHX_ const HEK *const hek) +PERL_CALLCONV SV* Perl_newSVpv(pTHX_ const char *const s, const STRLEN len) __attribute__malloc__ __attribute__warn_unused_result__; -PERL_CALLCONV SV* Perl_newSVpvn_share(pTHX_ const char* s, I32 len, U32 hash) +PERL_CALLCONV SV* Perl_newSVpv_share(pTHX_ const char* s, U32 hash) __attribute__malloc__ __attribute__warn_unused_result__; @@ -2339,12 +2637,17 @@ PERL_CALLCONV SV* Perl_newSVpvf(pTHX_ const char *const pat, ...) #define PERL_ARGS_ASSERT_NEWSVPVF \ assert(pat) -PERL_CALLCONV SV* Perl_vnewSVpvf(pTHX_ const char *const pat, va_list *const args) +PERL_CALLCONV SV* Perl_newSVpvn(pTHX_ const char *const s, const STRLEN len) __attribute__malloc__ - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_VNEWSVPVF \ - assert(pat) + __attribute__warn_unused_result__; + +PERL_CALLCONV SV* Perl_newSVpvn_flags(pTHX_ const char *const s, const STRLEN len, const U32 flags) + __attribute__malloc__ + __attribute__warn_unused_result__; + +PERL_CALLCONV SV* Perl_newSVpvn_share(pTHX_ const char* s, I32 len, U32 hash) + __attribute__malloc__ + __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVrv(pTHX_ SV *const rv, const char *const classname) __attribute__nonnull__(pTHX_1); @@ -2355,7 +2658,7 @@ PERL_CALLCONV SV* Perl_newSVsv(pTHX_ SV *const old) __attribute__malloc__ __attribute__warn_unused_result__; -PERL_CALLCONV SV* Perl_newSV_type(pTHX_ const svtype type) +PERL_CALLCONV SV* Perl_newSVuv(pTHX_ const UV u) __attribute__malloc__ __attribute__warn_unused_result__; @@ -2370,67 +2673,44 @@ PERL_CALLCONV OP* Perl_newWHENOP(pTHX_ OP* cond, OP* block) #define PERL_ARGS_ASSERT_NEWWHENOP \ assert(block) -PERL_CALLCONV OP* Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP* loop, I32 whileline, OP* expr, OP* block, OP* cont, I32 has_my) +PERL_CALLCONV OP* Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP* loop, OP* expr, OP* block, OP* cont, I32 has_my) __attribute__malloc__ __attribute__warn_unused_result__; -PERL_CALLCONV PERL_SI* Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems) - __attribute__malloc__ - __attribute__warn_unused_result__; - -PERL_CALLCONV char* Perl_scan_vstring(pTHX_ const char *s, const char *const e, SV *sv) - __attribute__nonnull__(pTHX_1) +PERL_CALLCONV CV* Perl_newXS(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_SCAN_VSTRING \ - assert(s); assert(e); assert(sv) +#define PERL_ARGS_ASSERT_NEWXS \ + assert(subaddr); assert(filename) -PERL_CALLCONV const char* Perl_scan_version(pTHX_ const char *s, SV *rv, bool qv) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SCAN_VERSION \ - assert(s); assert(rv) +PERL_CALLCONV CV * Perl_newXS_flags(pTHX_ const char *name, XSUBADDR_t subaddr, const char *const filename, const char *const proto, U32 flags) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_NEWXS_FLAGS \ + assert(subaddr); assert(filename) -PERL_CALLCONV const char* Perl_prescan_version(pTHX_ const char *s, bool strict, const char** errstr, bool *sqv, int *ssaw_decimal, int *swidth, bool *salpha) +PERL_CALLCONV void Perl_new_collate(pTHX_ const char* newcoll); +PERL_CALLCONV void Perl_new_ctype(pTHX_ const char* newctype) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PRESCAN_VERSION \ - assert(s) +#define PERL_ARGS_ASSERT_NEW_CTYPE \ + assert(newctype) + +PERL_CALLCONV void Perl_new_numeric(pTHX_ const char* newcoll); +PERL_CALLCONV PERL_SI* Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems) + __attribute__malloc__ + __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_new_version(pTHX_ SV *ver) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_NEW_VERSION \ assert(ver) -PERL_CALLCONV SV* Perl_upg_version(pTHX_ SV *ver, bool qv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_UPG_VERSION \ - assert(ver) - -PERL_CALLCONV bool Perl_vverify(pTHX_ SV *vs) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_VVERIFY \ - assert(vs) - -PERL_CALLCONV SV* Perl_vnumify(pTHX_ SV *vs) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_VNUMIFY \ - assert(vs) - -PERL_CALLCONV SV* Perl_vnormal(pTHX_ SV *vs) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_VNORMAL \ - assert(vs) - -PERL_CALLCONV SV* Perl_vstringify(pTHX_ SV *vs) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_VSTRINGIFY \ - assert(vs) - -PERL_CALLCONV int Perl_vcmp(pTHX_ SV *lhv, SV *rhv) - __attribute__nonnull__(pTHX_1) +PERL_CALLCONV STRLEN * Perl_new_warnings_bitfield(pTHX_ STRLEN *buffer, const char *const bits, STRLEN size) + __attribute__malloc__ + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_VCMP \ - assert(lhv); assert(rhv) +#define PERL_ARGS_ASSERT_NEW_WARNINGS_BITFIELD \ + assert(bits) PERL_CALLCONV PerlIO* Perl_nextargv(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); @@ -2446,38 +2726,7 @@ PERL_CALLCONV char* Perl_ninstr(const char* big, const char* bigend, const char* #define PERL_ARGS_ASSERT_NINSTR \ assert(big); assert(bigend); assert(little); assert(lend) -PERL_CALLCONV void Perl_op_free(pTHX_ OP* arg); -#ifdef PERL_MAD -PERL_CALLCONV OP* Perl_package(pTHX_ OP* o) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PACKAGE \ - assert(o) - -#else -PERL_CALLCONV void Perl_package(pTHX_ OP* o) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PACKAGE \ - assert(o) - -#endif -PERL_CALLCONV void Perl_package_version(pTHX_ OP* v) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PACKAGE_VERSION \ - assert(v) - -PERL_CALLCONV PADOFFSET Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype); -PERL_CALLCONV PADOFFSET Perl_allocmy(pTHX_ const char *const name, const STRLEN len, const U32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_ALLOCMY \ - assert(name) - -PERL_CALLCONV PADOFFSET Perl_pad_findmy(pTHX_ const char* name, STRLEN len, U32 flags) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PAD_FINDMY \ - assert(name) - -PERL_CALLCONV PADOFFSET Perl_find_rundefsvoffset(pTHX); +PERL_CALLCONV int Perl_nothreadhook(pTHX); PERL_CALLCONV OP* Perl_oopsAV(pTHX_ OP* o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -2490,112 +2739,42 @@ PERL_CALLCONV OP* Perl_oopsHV(pTHX_ OP* o) #define PERL_ARGS_ASSERT_OOPSHV \ assert(o) -PERL_CALLCONV void Perl_pad_leavemy(pTHX); -#ifdef DEBUGGING -PERL_CALLCONV SV* Perl_pad_sv(pTHX_ PADOFFSET po); -#endif -PERL_CALLCONV void Perl_pad_free(pTHX_ PADOFFSET po); -#if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) -STATIC void S_pad_reset(pTHX); -#endif -PERL_CALLCONV void Perl_pad_swipe(pTHX_ PADOFFSET po, bool refadjust); -PERL_CALLCONV void Perl_peep(pTHX_ OP* o); -PERL_CALLCONV PerlIO* Perl_start_glob(pTHX_ SV *tmpglob, IO *io) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_START_GLOB \ - assert(tmpglob); assert(io) - -#if defined(USE_REENTRANT_API) -PERL_CALLCONV void Perl_reentrant_size(pTHX); -PERL_CALLCONV void Perl_reentrant_init(pTHX); -PERL_CALLCONV void Perl_reentrant_free(pTHX); -PERL_CALLCONV void* Perl_reentrant_retry(const char *f, ...) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_REENTRANT_RETRY \ - assert(f) - -#endif -PERL_CALLCONV void Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr); -PERL_CALLCONV I32 Perl_call_argv(pTHX_ const char* sub_name, I32 flags, char** argv) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_CALL_ARGV \ - assert(sub_name); assert(argv) - -PERL_CALLCONV I32 Perl_call_method(pTHX_ const char* methname, I32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CALL_METHOD \ - assert(methname) - -PERL_CALLCONV I32 Perl_call_pv(pTHX_ const char* sub_name, I32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CALL_PV \ - assert(sub_name) - -PERL_CALLCONV I32 Perl_call_sv(pTHX_ SV* sv, VOL I32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CALL_SV \ - assert(sv) - -PERL_CALLCONV void Perl_despatch_signals(pTHX); -PERL_CALLCONV OP * Perl_doref(pTHX_ OP *o, I32 type, bool set_op_ref) +PERL_CALLCONV OP* Perl_op_append_elem(pTHX_ I32 optype, OP* first, OP* last); +PERL_CALLCONV OP* Perl_op_append_list(pTHX_ I32 optype, OP* first, OP* last); +PERL_CALLCONV void Perl_op_clear(pTHX_ OP* o) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DOREF \ +#define PERL_ARGS_ASSERT_OP_CLEAR \ assert(o) -PERL_CALLCONV SV* Perl_eval_pv(pTHX_ const char* p, I32 croak_on_error) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_EVAL_PV \ - assert(p) - -PERL_CALLCONV I32 Perl_eval_sv(pTHX_ SV* sv, I32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_EVAL_SV \ - assert(sv) - -PERL_CALLCONV SV* Perl_get_sv(pTHX_ const char *name, I32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GET_SV \ - assert(name) - -PERL_CALLCONV AV* Perl_get_av(pTHX_ const char *name, I32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GET_AV \ - assert(name) - -PERL_CALLCONV HV* Perl_get_hv(pTHX_ const char *name, I32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GET_HV \ - assert(name) +PERL_CALLCONV SV* Perl_op_const_sv(pTHX_ const OP* o, CV* cv) + __attribute__warn_unused_result__; -PERL_CALLCONV CV* Perl_get_cv(pTHX_ const char* name, I32 flags) +PERL_CALLCONV OP* Perl_op_contextualize(pTHX_ OP* o, I32 context) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GET_CV \ - assert(name) +#define PERL_ARGS_ASSERT_OP_CONTEXTUALIZE \ + assert(o) -PERL_CALLCONV CV* Perl_get_cvn_flags(pTHX_ const char* name, STRLEN len, I32 flags) +PERL_CALLCONV void Perl_op_dump(pTHX_ const OP *o) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GET_CVN_FLAGS \ - assert(name) +#define PERL_ARGS_ASSERT_OP_DUMP \ + assert(o) -PERL_CALLCONV int Perl_init_i18nl10n(pTHX_ int printwarn); -PERL_CALLCONV int Perl_init_i18nl14n(pTHX_ int printwarn); -PERL_CALLCONV void Perl_new_collate(pTHX_ const char* newcoll); -PERL_CALLCONV void Perl_new_ctype(pTHX_ const char* newctype) +PERL_CALLCONV void Perl_op_free(pTHX_ OP* arg); +PERL_CALLCONV OP* Perl_op_linklist(pTHX_ OP *o) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_NEW_CTYPE \ - assert(newctype) +#define PERL_ARGS_ASSERT_OP_LINKLIST \ + assert(o) -PERL_CALLCONV void Perl_new_numeric(pTHX_ const char* newcoll); -PERL_CALLCONV void Perl_set_numeric_local(pTHX); -PERL_CALLCONV void Perl_set_numeric_radix(pTHX); -PERL_CALLCONV void Perl_set_numeric_standard(pTHX); -PERL_CALLCONV void Perl_require_pv(pTHX_ const char* pv) +PERL_CALLCONV OP* Perl_op_lvalue(pTHX_ OP* o, I32 type); +PERL_CALLCONV void Perl_op_null(pTHX_ OP* o) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_REQUIRE_PV \ - assert(pv) +#define PERL_ARGS_ASSERT_OP_NULL \ + assert(o) +PERL_CALLCONV OP* Perl_op_prepend_elem(pTHX_ I32 optype, OP* first, OP* last); +PERL_CALLCONV void Perl_op_refcnt_lock(pTHX); +PERL_CALLCONV void Perl_op_refcnt_unlock(pTHX); +PERL_CALLCONV OP* Perl_op_scope(pTHX_ OP* o); PERL_CALLCONV void Perl_pack_cat(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist, SV ***next_in_list, U32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -2606,6 +2785,11 @@ PERL_CALLCONV void Perl_pack_cat(pTHX_ SV *cat, const char *pat, const char *pat #define PERL_ARGS_ASSERT_PACK_CAT \ assert(cat); assert(pat); assert(patend); assert(beglist); assert(endlist); assert(next_in_list) +PERL_CALLCONV void Perl_package_version(pTHX_ OP* v) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PACKAGE_VERSION \ + assert(v) + PERL_CALLCONV void Perl_packlist(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -2615,51 +2799,110 @@ PERL_CALLCONV void Perl_packlist(pTHX_ SV *cat, const char *pat, const char *pat #define PERL_ARGS_ASSERT_PACKLIST \ assert(cat); assert(pat); assert(patend); assert(beglist); assert(endlist) -#if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C) -STATIC void S_pidgone(pTHX_ Pid_t pid, int status); -#endif -PERL_CALLCONV void Perl_pmflag(pTHX_ U32 *pmfl, int ch) - __attribute__deprecated__ +PERL_CALLCONV PADOFFSET Perl_pad_add_anon(pTHX_ SV* sv, OPCODE op_type) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PMFLAG \ - assert(pmfl) +#define PERL_ARGS_ASSERT_PAD_ADD_ANON \ + assert(sv) -PERL_CALLCONV OP* Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_PMRUNTIME \ - assert(o); assert(expr) +PERL_CALLCONV PADOFFSET Perl_pad_add_name(pTHX_ const char *name, const STRLEN len, const U32 flags, HV *typestash, HV *ourstash) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PAD_ADD_NAME \ + assert(name) -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -STATIC OP* S_pmtrans(pTHX_ OP* o, OP* expr, OP* repl) +PERL_CALLCONV PADOFFSET Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype); +PERL_CALLCONV void Perl_pad_block_start(pTHX_ int full); +PERL_CALLCONV HV* Perl_pad_compname_type(pTHX_ const PADOFFSET po) + __attribute__warn_unused_result__; + +PERL_CALLCONV PADOFFSET Perl_pad_findmy(pTHX_ const char* name, STRLEN len, U32 flags) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PAD_FINDMY \ + assert(name) + +PERL_CALLCONV void Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_PMTRANS \ - assert(o); assert(expr); assert(repl) +#define PERL_ARGS_ASSERT_PAD_FIXUP_INNER_ANONS \ + assert(padlist); assert(old_cv); assert(new_cv) -#endif -PERL_CALLCONV void Perl_pop_scope(pTHX); -PERL_CALLCONV OP* Perl_prepend_elem(pTHX_ I32 optype, OP* head, OP* tail); -PERL_CALLCONV void Perl_push_scope(pTHX); -/* PERL_CALLCONV OP* Perl_ref(pTHX_ OP* o, I32 type); */ -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -STATIC OP* S_refkids(pTHX_ OP* o, I32 type); -#endif -PERL_CALLCONV void Perl_regdump(pTHX_ const regexp* r) +PERL_CALLCONV void Perl_pad_free(pTHX_ PADOFFSET po); +PERL_CALLCONV void Perl_pad_leavemy(pTHX); +PERL_CALLCONV PADLIST* Perl_pad_new(pTHX_ int flags) + __attribute__malloc__ + __attribute__warn_unused_result__; + +PERL_CALLCONV void Perl_pad_push(pTHX_ PADLIST *padlist, int depth) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_REGDUMP \ - assert(r) +#define PERL_ARGS_ASSERT_PAD_PUSH \ + assert(padlist) -PERL_CALLCONV void Perl_regdump(pTHX_ const regexp* r) +PERL_CALLCONV void Perl_pad_swipe(pTHX_ PADOFFSET po, bool refadjust); +PERL_CALLCONV void Perl_pad_tidy(pTHX_ padtidy_type type); +PERL_CALLCONV OP* Perl_parse_arithexpr(pTHX_ U32 flags); +PERL_CALLCONV OP* Perl_parse_barestmt(pTHX_ U32 flags); +PERL_CALLCONV OP* Perl_parse_block(pTHX_ U32 flags); +PERL_CALLCONV OP* Perl_parse_fullexpr(pTHX_ U32 flags); +PERL_CALLCONV OP* Perl_parse_fullstmt(pTHX_ U32 flags); +PERL_CALLCONV SV* Perl_parse_label(pTHX_ U32 flags); +PERL_CALLCONV OP* Perl_parse_listexpr(pTHX_ U32 flags); +PERL_CALLCONV OP* Perl_parse_stmtseq(pTHX_ U32 flags); +PERL_CALLCONV OP* Perl_parse_termexpr(pTHX_ U32 flags); +PERL_CALLCONV U32 Perl_parse_unicode_opts(pTHX_ const char **popt) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_REGDUMP \ - assert(r) +#define PERL_ARGS_ASSERT_PARSE_UNICODE_OPTS \ + assert(popt) -PERL_CALLCONV SV* Perl_regclass_swash(pTHX_ const regexp *prog, const struct regnode *node, bool doinit, SV **listsvp, SV **altsvp) +PERL_CALLCONV void Perl_parser_free(pTHX_ const yy_parser *parser) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PARSER_FREE \ + assert(parser) + +PERL_CALLCONV void Perl_peep(pTHX_ OP* o); +PERL_CALLCONV PerlInterpreter* perl_alloc(void); +PERL_CALLCONV void perl_construct(PerlInterpreter *my_perl) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_PERL_CONSTRUCT \ + assert(my_perl) + +PERL_CALLCONV int perl_destruct(PerlInterpreter *my_perl) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_PERL_DESTRUCT \ + assert(my_perl) + +PERL_CALLCONV void perl_free(PerlInterpreter *my_perl) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_PERL_FREE \ + assert(my_perl) + +PERL_CALLCONV int perl_parse(PerlInterpreter *my_perl, XSINIT_t xsinit, int argc, char** argv, char** env) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_PERL_PARSE \ + assert(my_perl) + +PERL_CALLCONV int perl_run(PerlInterpreter *my_perl) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_PERL_RUN \ + assert(my_perl) + +PERL_CALLCONV void Perl_pmop_dump(pTHX_ PMOP* pm); +PERL_CALLCONV OP* Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg) + __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_REGCLASS_SWASH \ - assert(node) +#define PERL_ARGS_ASSERT_PMRUNTIME \ + assert(o); assert(expr) + +PERL_CALLCONV void Perl_pop_scope(pTHX); +PERL_CALLCONV void Perl_populate_isa(pTHX_ const char *name, STRLEN len, ...) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_POPULATE_ISA \ + assert(name) + +PERL_CALLCONV REGEXP* Perl_pregcomp(pTHX_ SV * const pattern, const U32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PREGCOMP \ + assert(pattern) PERL_CALLCONV I32 Perl_pregexec(pTHX_ REGEXP * const prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, U32 nosave) __attribute__nonnull__(pTHX_1) @@ -2676,28 +2919,65 @@ PERL_CALLCONV void Perl_pregfree2(pTHX_ REGEXP *rx) #define PERL_ARGS_ASSERT_PREGFREE2 \ assert(rx) -PERL_CALLCONV REGEXP* Perl_reg_temp_copy(pTHX_ REGEXP* ret_x, REGEXP* rx) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_REG_TEMP_COPY \ - assert(rx) +PERL_CALLCONV const char* Perl_prescan_version(pTHX_ const char *s, bool strict, const char** errstr, bool *sqv, int *ssaw_decimal, int *swidth, bool *salpha) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PRESCAN_VERSION \ + assert(s) -PERL_CALLCONV void Perl_regfree_internal(pTHX_ REGEXP *const rx) +PERL_CALLCONV void Perl_ptr_table_clear(pTHX_ PTR_TBL_t *const tbl) + __attribute__deprecated__; + +PERL_CALLCONV void* Perl_ptr_table_fetch(pTHX_ PTR_TBL_t *const tbl, const void *const sv) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_REGFREE_INTERNAL \ - assert(rx) +#define PERL_ARGS_ASSERT_PTR_TABLE_FETCH \ + assert(tbl) -#if defined(USE_ITHREADS) -PERL_CALLCONV void* Perl_regdupe_internal(pTHX_ REGEXP * const r, CLONE_PARAMS* param) +PERL_CALLCONV void Perl_ptr_table_free(pTHX_ PTR_TBL_t *const tbl); +PERL_CALLCONV PTR_TBL_t* Perl_ptr_table_new(pTHX) + __attribute__malloc__ + __attribute__warn_unused_result__; + +PERL_CALLCONV void Perl_ptr_table_split(pTHX_ PTR_TBL_t *const tbl) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PTR_TABLE_SPLIT \ + assert(tbl) + +PERL_CALLCONV void Perl_ptr_table_store(pTHX_ PTR_TBL_t *const tbl, const void *const oldsv, void *const newsv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_PTR_TABLE_STORE \ + assert(tbl); assert(newsv) + +PERL_CALLCONV void Perl_push_scope(pTHX); +PERL_CALLCONV char* Perl_pv_display(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_REGDUPE_INTERNAL \ - assert(r); assert(param) +#define PERL_ARGS_ASSERT_PV_DISPLAY \ + assert(dsv); assert(pv) -#endif -PERL_CALLCONV REGEXP* Perl_pregcomp(pTHX_ SV * const pattern, const U32 flags) +PERL_CALLCONV char* Perl_pv_escape(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_PV_ESCAPE \ + assert(dsv); assert(str) + +PERL_CALLCONV char* Perl_pv_pretty(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_PV_PRETTY \ + assert(dsv); assert(str) + +PERL_CALLCONV char* Perl_pv_uni_display(pTHX_ SV *dsv, const U8 *spv, STRLEN len, STRLEN pvlim, UV flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_PV_UNI_DISPLAY \ + assert(dsv); assert(spv) + +PERL_CALLCONV void Perl_qerror(pTHX_ SV* err) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PREGCOMP \ - assert(pattern) +#define PERL_ARGS_ASSERT_QERROR \ + assert(err) PERL_CALLCONV REGEXP* Perl_re_compile(pTHX_ SV * const pattern, U32 flags) __attribute__nonnull__(pTHX_1); @@ -2716,46 +2996,76 @@ PERL_CALLCONV SV* Perl_re_intuit_string(pTHX_ REGEXP *const r) #define PERL_ARGS_ASSERT_RE_INTUIT_STRING \ assert(r) -PERL_CALLCONV I32 Perl_regexec_flags(pTHX_ REGEXP *const rx, char *stringarg, char *strend, char *strbeg, I32 minend, SV *sv, void *data, U32 flags) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4) - __attribute__nonnull__(pTHX_6); -#define PERL_ARGS_ASSERT_REGEXEC_FLAGS \ - assert(rx); assert(stringarg); assert(strend); assert(strbeg); assert(sv) - -PERL_CALLCONV regnode* Perl_regnext(pTHX_ regnode* p) +PERL_CALLCONV Malloc_t Perl_realloc(Malloc_t where, MEM_SIZE nbytes) + __attribute__malloc__ __attribute__warn_unused_result__; +/* PERL_CALLCONV OP* Perl_ref(pTHX_ OP* o, I32 type); */ +PERL_CALLCONV HV * Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *c, U32 flags); +PERL_CALLCONV SV * Perl_refcounted_he_fetch_pv(pTHX_ const struct refcounted_he *chain, const char *key, U32 hash, U32 flags) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PV \ + assert(key) + +PERL_CALLCONV SV * Perl_refcounted_he_fetch_pvn(pTHX_ const struct refcounted_he *chain, const char *keypv, STRLEN keylen, U32 hash, U32 flags) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PVN \ + assert(keypv) + +PERL_CALLCONV SV * Perl_refcounted_he_fetch_sv(pTHX_ const struct refcounted_he *chain, SV *key, U32 hash, U32 flags) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_SV \ + assert(key) + +PERL_CALLCONV void Perl_refcounted_he_free(pTHX_ struct refcounted_he *he); +PERL_CALLCONV struct refcounted_he * Perl_refcounted_he_inc(pTHX_ struct refcounted_he *he); +PERL_CALLCONV struct refcounted_he * Perl_refcounted_he_new_pv(pTHX_ struct refcounted_he *parent, const char *key, U32 hash, SV *value, U32 flags) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PV \ + assert(key) + +PERL_CALLCONV struct refcounted_he * Perl_refcounted_he_new_pvn(pTHX_ struct refcounted_he *parent, const char *keypv, STRLEN keylen, U32 hash, SV *value, U32 flags) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PVN \ + assert(keypv) + +PERL_CALLCONV struct refcounted_he * Perl_refcounted_he_new_sv(pTHX_ struct refcounted_he *parent, SV *key, U32 hash, SV *value, U32 flags) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_SV \ + assert(key) PERL_CALLCONV SV* Perl_reg_named_buff(pTHX_ REGEXP * const rx, SV * const key, SV * const value, const U32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_REG_NAMED_BUFF \ assert(rx) -PERL_CALLCONV SV* Perl_reg_named_buff_iter(pTHX_ REGEXP * const rx, const SV * const lastkey, const U32 flags) +PERL_CALLCONV SV* Perl_reg_named_buff_all(pTHX_ REGEXP * const rx, const U32 flags) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_ITER \ +#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_ALL \ assert(rx) -PERL_CALLCONV SV* Perl_reg_named_buff_fetch(pTHX_ REGEXP * const rx, SV * const namesv, const U32 flags) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_FETCH \ - assert(rx); assert(namesv) - PERL_CALLCONV bool Perl_reg_named_buff_exists(pTHX_ REGEXP * const rx, SV * const key, const U32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_REG_NAMED_BUFF_EXISTS \ assert(rx); assert(key) +PERL_CALLCONV SV* Perl_reg_named_buff_fetch(pTHX_ REGEXP * const rx, SV * const namesv, const U32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_FETCH \ + assert(rx); assert(namesv) + PERL_CALLCONV SV* Perl_reg_named_buff_firstkey(pTHX_ REGEXP * const rx, const U32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_REG_NAMED_BUFF_FIRSTKEY \ assert(rx) +PERL_CALLCONV SV* Perl_reg_named_buff_iter(pTHX_ REGEXP * const rx, const SV * const lastkey, const U32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_ITER \ + assert(rx) + PERL_CALLCONV SV* Perl_reg_named_buff_nextkey(pTHX_ REGEXP * const rx, const U32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_REG_NAMED_BUFF_NEXTKEY \ @@ -2766,34 +3076,64 @@ PERL_CALLCONV SV* Perl_reg_named_buff_scalar(pTHX_ REGEXP * const rx, const U32 #define PERL_ARGS_ASSERT_REG_NAMED_BUFF_SCALAR \ assert(rx) -PERL_CALLCONV SV* Perl_reg_named_buff_all(pTHX_ REGEXP * const rx, const U32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_ALL \ - assert(rx) - - PERL_CALLCONV void Perl_reg_numbered_buff_fetch(pTHX_ REGEXP * const rx, const I32 paren, SV * const sv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_FETCH \ assert(rx) -PERL_CALLCONV void Perl_reg_numbered_buff_store(pTHX_ REGEXP * const rx, const I32 paren, SV const * const value) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_STORE \ - assert(rx) - PERL_CALLCONV I32 Perl_reg_numbered_buff_length(pTHX_ REGEXP * const rx, const SV * const sv, const I32 paren) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_LENGTH \ assert(rx); assert(sv) +PERL_CALLCONV void Perl_reg_numbered_buff_store(pTHX_ REGEXP * const rx, const I32 paren, SV const * const value) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_STORE \ + assert(rx) PERL_CALLCONV SV* Perl_reg_qr_package(pTHX_ REGEXP * const rx) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_REG_QR_PACKAGE \ assert(rx) +PERL_CALLCONV REGEXP* Perl_reg_temp_copy(pTHX_ REGEXP* ret_x, REGEXP* rx) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_REG_TEMP_COPY \ + assert(rx) + +PERL_CALLCONV SV* Perl_regclass_swash(pTHX_ const regexp *prog, const struct regnode *node, bool doinit, SV **listsvp, SV **altsvp) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_REGCLASS_SWASH \ + assert(node) + +PERL_CALLCONV void Perl_regdump(pTHX_ const regexp* r) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_REGDUMP \ + assert(r) + +PERL_CALLCONV void Perl_regdump(pTHX_ const regexp* r) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_REGDUMP \ + assert(r) + +PERL_CALLCONV I32 Perl_regexec_flags(pTHX_ REGEXP *const rx, char *stringarg, char *strend, char *strbeg, I32 minend, SV *sv, void *data, U32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4) + __attribute__nonnull__(pTHX_6); +#define PERL_ARGS_ASSERT_REGEXEC_FLAGS \ + assert(rx); assert(stringarg); assert(strend); assert(strbeg); assert(sv) + +PERL_CALLCONV void Perl_regfree_internal(pTHX_ REGEXP *const rx) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_REGFREE_INTERNAL \ + assert(rx) + +PERL_CALLCONV void Perl_reginitcolors(pTHX); +PERL_CALLCONV regnode* Perl_regnext(pTHX_ regnode* p) + __attribute__warn_unused_result__; PERL_CALLCONV void Perl_regprop(pTHX_ const regexp *prog, SV* sv, const regnode* o) __attribute__nonnull__(pTHX_2) @@ -2807,6 +3147,14 @@ PERL_CALLCONV void Perl_repeatcpy(char* to, const char* from, I32 len, I32 count #define PERL_ARGS_ASSERT_REPEATCPY \ assert(to); assert(from) +PERL_CALLCONV void Perl_report_evil_fh(pTHX_ const GV *gv); +PERL_CALLCONV void Perl_report_uninit(pTHX_ const SV *uninit_sv); +PERL_CALLCONV void Perl_report_wrongway_fh(pTHX_ const GV *gv, const char have); +PERL_CALLCONV void Perl_require_pv(pTHX_ const char* pv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_REQUIRE_PV \ + assert(pv) + PERL_CALLCONV char* Perl_rninstr(const char* big, const char* bigend, const char* little, const char* lend) __attribute__pure__ __attribute__nonnull__(1) @@ -2816,6 +3164,7 @@ PERL_CALLCONV char* Perl_rninstr(const char* big, const char* bigend, const char #define PERL_ARGS_ASSERT_RNINSTR \ assert(big); assert(bigend); assert(little); assert(lend) +PERL_CALLCONV void Perl_rpeep(pTHX_ OP* o); PERL_CALLCONV Sighandler_t Perl_rsignal(pTHX_ int i, Sighandler_t t); PERL_CALLCONV int Perl_rsignal_restore(pTHX_ int i, Sigsave_t* t); PERL_CALLCONV int Perl_rsignal_save(pTHX_ int i, Sighandler_t t1, Sigsave_t* save) @@ -2824,61 +3173,52 @@ PERL_CALLCONV int Perl_rsignal_save(pTHX_ int i, Sighandler_t t1, Sigsave_t* sav assert(save) PERL_CALLCONV Sighandler_t Perl_rsignal_state(pTHX_ int i); -#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) -STATIC void S_rxres_free(pTHX_ void** rsp) +PERL_CALLCONV int Perl_runops_debug(pTHX); +PERL_CALLCONV int Perl_runops_standard(pTHX); +PERL_CALLCONV CV* Perl_rv2cv_op_cv(pTHX_ OP *cvop, U32 flags) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_RXRES_FREE \ - assert(rsp) +#define PERL_ARGS_ASSERT_RV2CV_OP_CV \ + assert(cvop) -STATIC void S_rxres_restore(pTHX_ void **rsp, REGEXP *rx) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_RXRES_RESTORE \ - assert(rsp); assert(rx) - -#endif PERL_CALLCONV void Perl_rxres_save(pTHX_ void **rsp, REGEXP *rx) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_RXRES_SAVE \ assert(rsp); assert(rx) -#if !defined(HAS_RENAME) -PERL_CALLCONV I32 Perl_same_dirent(pTHX_ const char* a, const char* b) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SAME_DIRENT \ - assert(a); assert(b) - -#endif -PERL_CALLCONV char* Perl_savepv(pTHX_ const char* pv) +PERL_CALLCONV Malloc_t Perl_safesyscalloc(MEM_SIZE elements, MEM_SIZE size) __attribute__malloc__ __attribute__warn_unused_result__; -PERL_CALLCONV char* Perl_savepvn(pTHX_ const char* pv, I32 len) +PERL_CALLCONV Free_t Perl_safesysfree(Malloc_t where); +PERL_CALLCONV Malloc_t Perl_safesysmalloc(MEM_SIZE nbytes) __attribute__malloc__ __attribute__warn_unused_result__; -PERL_CALLCONV char* Perl_savesharedpv(pTHX_ const char* pv) +PERL_CALLCONV Malloc_t Perl_safesysrealloc(Malloc_t where, MEM_SIZE nbytes) __attribute__malloc__ __attribute__warn_unused_result__; -PERL_CALLCONV char* Perl_savesharedpvn(pTHX_ const char *const pv, const STRLEN len) - __attribute__malloc__ - __attribute__warn_unused_result__ +PERL_CALLCONV void Perl_save_I16(pTHX_ I16* intp) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SAVESHAREDPVN \ - assert(pv) +#define PERL_ARGS_ASSERT_SAVE_I16 \ + assert(intp) -PERL_CALLCONV char* Perl_savesvpv(pTHX_ SV* sv) - __attribute__malloc__ - __attribute__warn_unused_result__ +PERL_CALLCONV void Perl_save_I32(pTHX_ I32* intp) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SAVESVPV \ - assert(sv) +#define PERL_ARGS_ASSERT_SAVE_I32 \ + assert(intp) + +PERL_CALLCONV void Perl_save_I8(pTHX_ I8* bytep) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SAVE_I8 \ + assert(bytep) + +PERL_CALLCONV void Perl_save_adelete(pTHX_ AV *av, I32 key) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SAVE_ADELETE \ + assert(av) -PERL_CALLCONV void Perl_savestack_grow(pTHX); -PERL_CALLCONV void Perl_savestack_grow_cnt(pTHX_ I32 need); /* PERL_CALLCONV void Perl_save_aelem(pTHX_ AV* av, I32 idx, SV **sptr) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); */ @@ -2916,40 +3256,24 @@ PERL_CALLCONV void Perl_save_delete(pTHX_ HV *hv, char *key, I32 klen) #define PERL_ARGS_ASSERT_SAVE_DELETE \ assert(hv); assert(key) -PERL_CALLCONV void Perl_save_hdelete(pTHX_ HV *hv, SV *keysv) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SAVE_HDELETE \ - assert(hv); assert(keysv) - -PERL_CALLCONV void Perl_save_adelete(pTHX_ AV *av, I32 key) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SAVE_ADELETE \ - assert(av) - PERL_CALLCONV void Perl_save_destructor(pTHX_ DESTRUCTORFUNC_NOCONTEXT_t f, void* p) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_SAVE_DESTRUCTOR \ assert(p) PERL_CALLCONV void Perl_save_destructor_x(pTHX_ DESTRUCTORFUNC_t f, void* p); -/* PERL_CALLCONV void Perl_save_freesv(pTHX_ SV* sv); */ /* PERL_CALLCONV void Perl_save_freeop(pTHX_ OP* o); */ /* PERL_CALLCONV void Perl_save_freepv(pTHX_ char* pv); */ -PERL_CALLCONV void Perl_save_generic_svref(pTHX_ SV** sptr) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SAVE_GENERIC_SVREF \ - assert(sptr) - +/* PERL_CALLCONV void Perl_save_freesv(pTHX_ SV* sv); */ PERL_CALLCONV void Perl_save_generic_pvref(pTHX_ char** str) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SAVE_GENERIC_PVREF \ assert(str) -PERL_CALLCONV void Perl_save_shared_pvref(pTHX_ char** str) +PERL_CALLCONV void Perl_save_generic_svref(pTHX_ SV** sptr) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SAVE_SHARED_PVREF \ - assert(str) +#define PERL_ARGS_ASSERT_SAVE_GENERIC_SVREF \ + assert(sptr) PERL_CALLCONV void Perl_save_gp(pTHX_ GV* gv, I32 empty) __attribute__nonnull__(pTHX_1); @@ -2961,7 +3285,12 @@ PERL_CALLCONV HV* Perl_save_hash(pTHX_ GV* gv) #define PERL_ARGS_ASSERT_SAVE_HASH \ assert(gv) -PERL_CALLCONV void Perl_save_hints(pTHX); +PERL_CALLCONV void Perl_save_hdelete(pTHX_ HV *hv, SV *keysv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SAVE_HDELETE \ + assert(hv); assert(keysv) + /* PERL_CALLCONV void Perl_save_helem(pTHX_ HV *hv, SV *key, SV **sptr) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -2974,26 +3303,12 @@ PERL_CALLCONV void Perl_save_helem_flags(pTHX_ HV *hv, SV *key, SV **sptr, const #define PERL_ARGS_ASSERT_SAVE_HELEM_FLAGS \ assert(hv); assert(key); assert(sptr) +PERL_CALLCONV void Perl_save_hints(pTHX); PERL_CALLCONV void Perl_save_hptr(pTHX_ HV** hptr) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SAVE_HPTR \ assert(hptr) -PERL_CALLCONV void Perl_save_I16(pTHX_ I16* intp) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SAVE_I16 \ - assert(intp) - -PERL_CALLCONV void Perl_save_I32(pTHX_ I32* intp) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SAVE_I32 \ - assert(intp) - -PERL_CALLCONV void Perl_save_I8(pTHX_ I8* bytep) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SAVE_I8 \ - assert(bytep) - PERL_CALLCONV void Perl_save_int(pTHX_ int* intp) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SAVE_INT \ @@ -3030,23 +3345,31 @@ PERL_CALLCONV void Perl_save_nogv(pTHX_ GV* gv) assert(gv) /* PERL_CALLCONV void Perl_save_op(pTHX); */ +PERL_CALLCONV void Perl_save_padsv_and_mortalize(pTHX_ PADOFFSET off); +PERL_CALLCONV void Perl_save_pptr(pTHX_ char** pptr) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SAVE_PPTR \ + assert(pptr) + +PERL_CALLCONV void Perl_save_pushi32ptr(pTHX_ const I32 i, void *const ptr, const int type); +PERL_CALLCONV void Perl_save_pushptr(pTHX_ void *const ptr, const int type); +PERL_CALLCONV void Perl_save_pushptrptr(pTHX_ void *const ptr1, void *const ptr2, const int type); +PERL_CALLCONV void Perl_save_re_context(pTHX); PERL_CALLCONV SV* Perl_save_scalar(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SAVE_SCALAR \ assert(gv) -PERL_CALLCONV void Perl_save_pptr(pTHX_ char** pptr) +PERL_CALLCONV void Perl_save_set_svflags(pTHX_ SV *sv, U32 mask, U32 val) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SAVE_PPTR \ - assert(pptr) +#define PERL_ARGS_ASSERT_SAVE_SET_SVFLAGS \ + assert(sv) -PERL_CALLCONV void Perl_save_vptr(pTHX_ void *ptr) +PERL_CALLCONV void Perl_save_shared_pvref(pTHX_ char** str) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SAVE_VPTR \ - assert(ptr) +#define PERL_ARGS_ASSERT_SAVE_SHARED_PVREF \ + assert(str) -PERL_CALLCONV void Perl_save_re_context(pTHX); -PERL_CALLCONV void Perl_save_padsv_and_mortalize(pTHX_ PADOFFSET off); PERL_CALLCONV void Perl_save_sptr(pTHX_ SV** sptr) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SAVE_SPTR \ @@ -3057,18 +3380,48 @@ PERL_CALLCONV SV* Perl_save_svref(pTHX_ SV** sptr) #define PERL_ARGS_ASSERT_SAVE_SVREF \ assert(sptr) -PERL_CALLCONV void Perl_save_pushptr(pTHX_ void *const ptr, const int type); -PERL_CALLCONV void Perl_save_pushi32ptr(pTHX_ const I32 i, void *const ptr, const int type); -PERL_CALLCONV void Perl_save_pushptrptr(pTHX_ void *const ptr1, void *const ptr2, const int type); -#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) -STATIC void S_save_pushptri32ptr(pTHX_ void *const ptr1, const I32 i, void *const ptr2, const int type); -#endif +PERL_CALLCONV void Perl_save_vptr(pTHX_ void *ptr) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SAVE_VPTR \ + assert(ptr) + +PERL_CALLCONV char* Perl_savepv(pTHX_ const char* pv) + __attribute__malloc__ + __attribute__warn_unused_result__; + +PERL_CALLCONV char* Perl_savepvn(pTHX_ const char* pv, I32 len) + __attribute__malloc__ + __attribute__warn_unused_result__; + +PERL_CALLCONV char* Perl_savesharedpv(pTHX_ const char* pv) + __attribute__malloc__ + __attribute__warn_unused_result__; + +PERL_CALLCONV char* Perl_savesharedpvn(pTHX_ const char *const pv, const STRLEN len) + __attribute__malloc__ + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SAVESHAREDPVN \ + assert(pv) + +PERL_CALLCONV char* Perl_savesharedsvpv(pTHX_ SV *sv) + __attribute__malloc__ + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SAVESHAREDSVPV \ + assert(sv) + +PERL_CALLCONV void Perl_savestack_grow(pTHX); +PERL_CALLCONV void Perl_savestack_grow_cnt(pTHX_ I32 need); +PERL_CALLCONV char* Perl_savesvpv(pTHX_ SV* sv) + __attribute__malloc__ + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SAVESVPV \ + assert(sv) + PERL_CALLCONV OP* Perl_sawparens(pTHX_ OP* o); PERL_CALLCONV OP* Perl_scalar(pTHX_ OP* o); -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -STATIC OP* S_scalarkids(pTHX_ OP* o); -STATIC OP* S_scalarseq(pTHX_ OP* o); -#endif PERL_CALLCONV OP* Perl_scalarvoid(pTHX_ OP* o) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SCALARVOID \ @@ -3098,7 +3451,19 @@ PERL_CALLCONV NV Perl_scan_oct(pTHX_ const char* start, STRLEN len, STRLEN* retl #define PERL_ARGS_ASSERT_SCAN_OCT \ assert(start); assert(retlen) -PERL_CALLCONV OP* Perl_scope(pTHX_ OP* o); +PERL_CALLCONV const char* Perl_scan_version(pTHX_ const char *s, SV *rv, bool qv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SCAN_VERSION \ + assert(s); assert(rv) + +PERL_CALLCONV char* Perl_scan_vstring(pTHX_ const char *s, const char *const e, SV *sv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_SCAN_VSTRING \ + assert(s); assert(e); assert(sv) + PERL_CALLCONV char* Perl_screaminstr(pTHX_ SV *bigstr, SV *littlestr, I32 start_shift, I32 end_shift, I32 *old_posp, I32 last) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -3106,34 +3471,74 @@ PERL_CALLCONV char* Perl_screaminstr(pTHX_ SV *bigstr, SV *littlestr, I32 start_ #define PERL_ARGS_ASSERT_SCREAMINSTR \ assert(bigstr); assert(littlestr); assert(old_posp) +PERL_CALLCONV U32 Perl_seed(pTHX); +PERL_CALLCONV void Perl_set_context(void *t) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_SET_CONTEXT \ + assert(t) + +PERL_CALLCONV void Perl_set_numeric_local(pTHX); +PERL_CALLCONV void Perl_set_numeric_radix(pTHX); +PERL_CALLCONV void Perl_set_numeric_standard(pTHX); PERL_CALLCONV void Perl_setdefout(pTHX_ GV* gv); PERL_CALLCONV HEK* Perl_share_hek(pTHX_ const char* str, I32 len, U32 hash) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SHARE_HEK \ assert(str) -#if defined(HAS_SIGACTION) && defined(SA_SIGINFO) -PERL_CALLCONV Signal_t Perl_sighandler(int sig, siginfo_t *info, void *uap); -PERL_CALLCONV Signal_t Perl_csighandler(int sig, siginfo_t *info, void *uap); -#else -PERL_CALLCONV Signal_t Perl_sighandler(int sig); -PERL_CALLCONV Signal_t Perl_csighandler(int sig); -#endif +PERL_CALLCONV void Perl_sortsv(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_SORTSV \ + assert(cmp) + +PERL_CALLCONV void Perl_sortsv_flags(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp, U32 flags) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_SORTSV_FLAGS \ + assert(cmp) + PERL_CALLCONV SV** Perl_stack_grow(pTHX_ SV** sp, SV** p, int n) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_STACK_GROW \ assert(sp); assert(p) +PERL_CALLCONV PerlIO* Perl_start_glob(pTHX_ SV *tmpglob, IO *io) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_START_GLOB \ + assert(tmpglob); assert(io) + PERL_CALLCONV I32 Perl_start_subparse(pTHX_ I32 is_format, U32 flags); +PERL_CALLCONV bool Perl_stashpv_hvname_match(pTHX_ const COP *c, const HV *hv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_STASHPV_HVNAME_MATCH \ + assert(c); assert(hv) + +PERL_CALLCONV void Perl_store_cop_label(pTHX_ COP *const cop, const char *label, STRLEN len, U32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_STORE_COP_LABEL \ + assert(cop); assert(label) + +PERL_CALLCONV NV Perl_str_to_version(pTHX_ SV *sv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_STR_TO_VERSION \ + assert(sv) + PERL_CALLCONV void Perl_sub_crush_depth(pTHX_ CV* cv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SUB_CRUSH_DEPTH \ assert(cv) -PERL_CALLCONV bool Perl_sv_2bool(pTHX_ SV *const sv) +/* PERL_CALLCONV bool sv_2bool(pTHX_ SV *const sv) + __attribute__nonnull__(pTHX_1); */ + +PERL_CALLCONV bool Perl_sv_2bool_flags(pTHX_ SV *const sv, const I32 flags) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_2BOOL \ +#define PERL_ARGS_ASSERT_SV_2BOOL_FLAGS \ assert(sv) PERL_CALLCONV CV* Perl_sv_2cv(pTHX_ SV* sv, HV **const st, GV **const gvp, const I32 lref) @@ -3147,27 +3552,21 @@ PERL_CALLCONV IO* Perl_sv_2io(pTHX_ SV *const sv) #define PERL_ARGS_ASSERT_SV_2IO \ assert(sv) -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -STATIC bool S_glob_2number(pTHX_ GV* const gv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GLOB_2NUMBER \ - assert(gv) - -#endif /* PERL_CALLCONV IV Perl_sv_2iv(pTHX_ SV *sv); */ PERL_CALLCONV IV Perl_sv_2iv_flags(pTHX_ SV *const sv, const I32 flags); PERL_CALLCONV SV* Perl_sv_2mortal(pTHX_ SV *const sv); -PERL_CALLCONV NV Perl_sv_2nv(pTHX_ SV *const sv); PERL_CALLCONV SV* Perl_sv_2num(pTHX_ SV *const sv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SV_2NUM \ assert(sv) +PERL_CALLCONV NV Perl_sv_2nv_flags(pTHX_ SV *const sv, const I32 flags); /* PERL_CALLCONV char* Perl_sv_2pv(pTHX_ SV *sv, STRLEN *lp); */ PERL_CALLCONV char* Perl_sv_2pv_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags); -PERL_CALLCONV char* Perl_sv_2pvutf8(pTHX_ SV *const sv, STRLEN *const lp) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_2PVUTF8 \ +/* PERL_CALLCONV char* Perl_sv_2pv_nolen(pTHX_ SV* sv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); */ +#define PERL_ARGS_ASSERT_SV_2PV_NOLEN \ assert(sv) PERL_CALLCONV char* Perl_sv_2pvbyte(pTHX_ SV *const sv, STRLEN *const lp) @@ -3175,64 +3574,60 @@ PERL_CALLCONV char* Perl_sv_2pvbyte(pTHX_ SV *const sv, STRLEN *const lp) #define PERL_ARGS_ASSERT_SV_2PVBYTE \ assert(sv) -PERL_CALLCONV char* Perl_sv_pvn_nomg(pTHX_ SV* sv, STRLEN* lp) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_PVN_NOMG \ +/* PERL_CALLCONV char* Perl_sv_2pvbyte_nolen(pTHX_ SV* sv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); */ +#define PERL_ARGS_ASSERT_SV_2PVBYTE_NOLEN \ assert(sv) -/* PERL_CALLCONV UV Perl_sv_2uv(pTHX_ SV *sv); */ -PERL_CALLCONV UV Perl_sv_2uv_flags(pTHX_ SV *const sv, const I32 flags); -PERL_CALLCONV IV Perl_sv_iv(pTHX_ SV* sv) +PERL_CALLCONV char* Perl_sv_2pvutf8(pTHX_ SV *const sv, STRLEN *const lp) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_IV \ +#define PERL_ARGS_ASSERT_SV_2PVUTF8 \ assert(sv) -PERL_CALLCONV UV Perl_sv_uv(pTHX_ SV* sv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_UV \ +/* PERL_CALLCONV char* Perl_sv_2pvutf8_nolen(pTHX_ SV* sv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); */ +#define PERL_ARGS_ASSERT_SV_2PVUTF8_NOLEN \ assert(sv) -PERL_CALLCONV NV Perl_sv_nv(pTHX_ SV* sv) +/* PERL_CALLCONV UV Perl_sv_2uv(pTHX_ SV *sv); */ +PERL_CALLCONV UV Perl_sv_2uv_flags(pTHX_ SV *const sv, const I32 flags); +PERL_CALLCONV int Perl_sv_backoff(pTHX_ SV *const sv) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_NV \ +#define PERL_ARGS_ASSERT_SV_BACKOFF \ assert(sv) -PERL_CALLCONV char* Perl_sv_pvn(pTHX_ SV *sv, STRLEN *lp) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_PVN \ - assert(sv); assert(lp) - -PERL_CALLCONV char* Perl_sv_pvutf8n(pTHX_ SV *sv, STRLEN *lp) +PERL_CALLCONV SV* Perl_sv_bless(pTHX_ SV *const sv, HV *const stash) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_PVUTF8N \ - assert(sv); assert(lp) +#define PERL_ARGS_ASSERT_SV_BLESS \ + assert(sv); assert(stash) -PERL_CALLCONV char* Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *lp) +PERL_CALLCONV bool Perl_sv_cat_decode(pTHX_ SV* dsv, SV *encoding, SV *ssv, int *offset, char* tstr, int tlen) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_PVBYTEN \ - assert(sv); assert(lp) - -PERL_CALLCONV I32 Perl_sv_true(pTHX_ SV *const sv); -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -STATIC void S_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_ADD_ARENA \ - assert(ptr) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4) + __attribute__nonnull__(pTHX_5); +#define PERL_ARGS_ASSERT_SV_CAT_DECODE \ + assert(dsv); assert(encoding); assert(ssv); assert(offset); assert(tstr) -#endif -PERL_CALLCONV int Perl_sv_backoff(pTHX_ SV *const sv) +PERL_CALLCONV void Perl_sv_catpv(pTHX_ SV *const sv, const char* ptr) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_BACKOFF \ +#define PERL_ARGS_ASSERT_SV_CATPV \ assert(sv) -PERL_CALLCONV SV* Perl_sv_bless(pTHX_ SV *const sv, HV *const stash) +PERL_CALLCONV void Perl_sv_catpv_flags(pTHX_ SV *dstr, const char *sstr, const I32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_BLESS \ - assert(sv); assert(stash) +#define PERL_ARGS_ASSERT_SV_CATPV_FLAGS \ + assert(dstr); assert(sstr) + +PERL_CALLCONV void Perl_sv_catpv_mg(pTHX_ SV *const sv, const char *const ptr) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_CATPV_MG \ + assert(sv) PERL_CALLCONV void Perl_sv_catpvf(pTHX_ SV *const sv, const char *const pat, ...) __attribute__format__(__printf__,pTHX_2,pTHX_3) @@ -3241,28 +3636,46 @@ PERL_CALLCONV void Perl_sv_catpvf(pTHX_ SV *const sv, const char *const pat, ... #define PERL_ARGS_ASSERT_SV_CATPVF \ assert(sv); assert(pat) -PERL_CALLCONV void Perl_sv_vcatpvf(pTHX_ SV *const sv, const char *const pat, va_list *const args) +PERL_CALLCONV void Perl_sv_catpvf_mg(pTHX_ SV *const sv, const char *const pat, ...) + __attribute__format__(__printf__,pTHX_2,pTHX_3) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_VCATPVF \ +#define PERL_ARGS_ASSERT_SV_CATPVF_MG \ assert(sv); assert(pat) -PERL_CALLCONV void Perl_sv_catpv(pTHX_ SV *const sv, const char* ptr) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_CATPV \ - assert(sv) - /* PERL_CALLCONV void Perl_sv_catpvn(pTHX_ SV *dsv, const char *sstr, STRLEN len) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); */ #define PERL_ARGS_ASSERT_SV_CATPVN \ assert(dsv); assert(sstr) +PERL_CALLCONV void Perl_sv_catpvn_flags(pTHX_ SV *const dstr, const char *sstr, const STRLEN len, const I32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_CATPVN_FLAGS \ + assert(dstr); assert(sstr) + +/* PERL_CALLCONV void Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); */ +#define PERL_ARGS_ASSERT_SV_CATPVN_MG \ + assert(sv); assert(ptr) + /* PERL_CALLCONV void Perl_sv_catsv(pTHX_ SV *dstr, SV *sstr) __attribute__nonnull__(pTHX_1); */ #define PERL_ARGS_ASSERT_SV_CATSV \ assert(dstr) +PERL_CALLCONV void Perl_sv_catsv_flags(pTHX_ SV *const dsv, SV *const ssv, const I32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_CATSV_FLAGS \ + assert(dsv) + +/* PERL_CALLCONV void Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *ssv) + __attribute__nonnull__(pTHX_1); */ +#define PERL_ARGS_ASSERT_SV_CATSV_MG \ + assert(dsv) + PERL_CALLCONV void Perl_sv_chop(pTHX_ SV *const sv, const char *const ptr) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SV_CHOP \ @@ -3270,22 +3683,17 @@ PERL_CALLCONV void Perl_sv_chop(pTHX_ SV *const sv, const char *const ptr) PERL_CALLCONV I32 Perl_sv_clean_all(pTHX); PERL_CALLCONV void Perl_sv_clean_objs(pTHX); -PERL_CALLCONV void Perl_sv_clear(pTHX_ SV *const sv) +PERL_CALLCONV void Perl_sv_clear(pTHX_ SV *const orig_sv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SV_CLEAR \ - assert(sv) + assert(orig_sv) PERL_CALLCONV I32 Perl_sv_cmp(pTHX_ SV *const sv1, SV *const sv2); +PERL_CALLCONV I32 Perl_sv_cmp_flags(pTHX_ SV *const sv1, SV *const sv2, const U32 flags); PERL_CALLCONV I32 Perl_sv_cmp_locale(pTHX_ SV *const sv1, SV *const sv2); -#if defined(USE_LOCALE_COLLATE) -PERL_CALLCONV char* Perl_sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_COLLXFRM \ - assert(sv); assert(nxp) - -#endif +PERL_CALLCONV I32 Perl_sv_cmp_locale_flags(pTHX_ SV *const sv1, SV *const sv2, const U32 flags); PERL_CALLCONV OP* Perl_sv_compile_2op(pTHX_ SV *sv, OP **startop, const char *code, PAD **padp) + __attribute__deprecated__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) @@ -3293,16 +3701,27 @@ PERL_CALLCONV OP* Perl_sv_compile_2op(pTHX_ SV *sv, OP **startop, const char *co #define PERL_ARGS_ASSERT_SV_COMPILE_2OP \ assert(sv); assert(startop); assert(code); assert(padp) -PERL_CALLCONV int Perl_getcwd_sv(pTHX_ SV* sv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GETCWD_SV \ - assert(sv) +PERL_CALLCONV OP* Perl_sv_compile_2op_is_broken(pTHX_ SV *sv, OP **startop, const char *code, PAD **padp) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_SV_COMPILE_2OP_IS_BROKEN \ + assert(sv); assert(startop); assert(code); assert(padp) + +PERL_CALLCONV void Perl_sv_copypv(pTHX_ SV *const dsv, SV *const ssv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_COPYPV \ + assert(dsv); assert(ssv) PERL_CALLCONV void Perl_sv_dec(pTHX_ SV *const sv); -PERL_CALLCONV void Perl_sv_dump(pTHX_ SV* sv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_DUMP \ - assert(sv) +PERL_CALLCONV void Perl_sv_dec_nomg(pTHX_ SV *const sv); +PERL_CALLCONV void Perl_sv_del_backref(pTHX_ SV *const tsv, SV *const sv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_DEL_BACKREF \ + assert(tsv); assert(sv) PERL_CALLCONV bool Perl_sv_derived_from(pTHX_ SV* sv, const char *const name) __attribute__warn_unused_result__ @@ -3311,6 +3730,7 @@ PERL_CALLCONV bool Perl_sv_derived_from(pTHX_ SV* sv, const char *const name) #define PERL_ARGS_ASSERT_SV_DERIVED_FROM \ assert(sv); assert(name) +PERL_CALLCONV bool Perl_sv_destroyable(pTHX_ SV *sv); PERL_CALLCONV bool Perl_sv_does(pTHX_ SV* sv, const char *const name) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) @@ -3318,7 +3738,23 @@ PERL_CALLCONV bool Perl_sv_does(pTHX_ SV* sv, const char *const name) #define PERL_ARGS_ASSERT_SV_DOES \ assert(sv); assert(name) -PERL_CALLCONV I32 Perl_sv_eq(pTHX_ SV* sv1, SV* sv2); +PERL_CALLCONV void Perl_sv_dump(pTHX_ SV* sv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_DUMP \ + assert(sv) + +/* PERL_CALLCONV I32 sv_eq(pTHX_ SV* sv1, SV* sv2); */ +PERL_CALLCONV I32 Perl_sv_eq_flags(pTHX_ SV* sv1, SV* sv2, const U32 flags); +/* PERL_CALLCONV void Perl_sv_force_normal(pTHX_ SV *sv) + __attribute__nonnull__(pTHX_1); */ +#define PERL_ARGS_ASSERT_SV_FORCE_NORMAL \ + assert(sv) + +PERL_CALLCONV void Perl_sv_force_normal_flags(pTHX_ SV *const sv, const U32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_FORCE_NORMAL_FLAGS \ + assert(sv) + PERL_CALLCONV void Perl_sv_free(pTHX_ SV *const sv); PERL_CALLCONV void Perl_sv_free2(pTHX_ SV *const sv) __attribute__nonnull__(pTHX_1); @@ -3338,6 +3774,7 @@ PERL_CALLCONV char* Perl_sv_grow(pTHX_ SV *const sv, STRLEN newlen) assert(sv) PERL_CALLCONV void Perl_sv_inc(pTHX_ SV *const sv); +PERL_CALLCONV void Perl_sv_inc_nomg(pTHX_ SV *const sv); /* PERL_CALLCONV void Perl_sv_insert(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_4); */ @@ -3356,6 +3793,11 @@ PERL_CALLCONV int Perl_sv_isa(pTHX_ SV* sv, const char *const name) assert(name) PERL_CALLCONV int Perl_sv_isobject(pTHX_ SV* sv); +PERL_CALLCONV IV Perl_sv_iv(pTHX_ SV* sv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_IV \ + assert(sv) + PERL_CALLCONV STRLEN Perl_sv_len(pTHX_ SV *const sv); PERL_CALLCONV STRLEN Perl_sv_len_utf8(pTHX_ SV *const sv); PERL_CALLCONV void Perl_sv_magic(pTHX_ SV *const sv, SV *const obj, const int how, const char *const name, const I32 namlen) @@ -3376,7 +3818,19 @@ PERL_CALLCONV SV* Perl_sv_newmortal(pTHX) __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_sv_newref(pTHX_ SV *const sv); +/* PERL_CALLCONV void Perl_sv_nolocking(pTHX_ SV *sv); */ +PERL_CALLCONV void Perl_sv_nosharing(pTHX_ SV *sv); +PERL_CALLCONV NV Perl_sv_nv(pTHX_ SV* sv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_NV \ + assert(sv) + PERL_CALLCONV char* Perl_sv_peek(pTHX_ SV* sv); +PERL_CALLCONV void Perl_sv_pos_b2u(pTHX_ SV *const sv, I32 *const offsetp) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_POS_B2U \ + assert(offsetp) + PERL_CALLCONV void Perl_sv_pos_u2b(pTHX_ SV *const sv, I32 *const offsetp, I32 *const lenp) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_SV_POS_U2B \ @@ -3387,24 +3841,65 @@ PERL_CALLCONV STRLEN Perl_sv_pos_u2b_flags(pTHX_ SV *const sv, STRLEN uoffset, S #define PERL_ARGS_ASSERT_SV_POS_U2B_FLAGS \ assert(sv) -PERL_CALLCONV void Perl_sv_pos_b2u(pTHX_ SV *const sv, I32 *const offsetp) +/* PERL_CALLCONV char* Perl_sv_pv(pTHX_ SV *sv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); */ +#define PERL_ARGS_ASSERT_SV_PV \ + assert(sv) + +/* PERL_CALLCONV char* Perl_sv_pvbyte(pTHX_ SV *sv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); */ +#define PERL_ARGS_ASSERT_SV_PVBYTE \ + assert(sv) + +PERL_CALLCONV char* Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *lp) + __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_POS_B2U \ - assert(offsetp) +#define PERL_ARGS_ASSERT_SV_PVBYTEN \ + assert(sv); assert(lp) + +PERL_CALLCONV char* Perl_sv_pvbyten_force(pTHX_ SV *const sv, STRLEN *const lp) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE \ + assert(sv) + +PERL_CALLCONV char* Perl_sv_pvn(pTHX_ SV *sv, STRLEN *lp) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_PVN \ + assert(sv); assert(lp) /* PERL_CALLCONV char* Perl_sv_pvn_force(pTHX_ SV* sv, STRLEN* lp) __attribute__nonnull__(pTHX_1); */ #define PERL_ARGS_ASSERT_SV_PVN_FORCE \ assert(sv) -PERL_CALLCONV char* Perl_sv_pvutf8n_force(pTHX_ SV *const sv, STRLEN *const lp) +PERL_CALLCONV char* Perl_sv_pvn_force_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE \ +#define PERL_ARGS_ASSERT_SV_PVN_FORCE_FLAGS \ assert(sv) -PERL_CALLCONV char* Perl_sv_pvbyten_force(pTHX_ SV *const sv, STRLEN *const lp) +PERL_CALLCONV char* Perl_sv_pvn_nomg(pTHX_ SV* sv, STRLEN* lp) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE \ +#define PERL_ARGS_ASSERT_SV_PVN_NOMG \ + assert(sv) + +/* PERL_CALLCONV char* Perl_sv_pvutf8(pTHX_ SV *sv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); */ +#define PERL_ARGS_ASSERT_SV_PVUTF8 \ + assert(sv) + +PERL_CALLCONV char* Perl_sv_pvutf8n(pTHX_ SV *sv, STRLEN *lp) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_PVUTF8N \ + assert(sv); assert(lp) + +PERL_CALLCONV char* Perl_sv_pvutf8n_force(pTHX_ SV *const sv, STRLEN *const lp) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE \ assert(sv) PERL_CALLCONV char* Perl_sv_recode_to_utf8(pTHX_ SV* sv, SV *encoding) @@ -3413,15 +3908,6 @@ PERL_CALLCONV char* Perl_sv_recode_to_utf8(pTHX_ SV* sv, SV *encoding) #define PERL_ARGS_ASSERT_SV_RECODE_TO_UTF8 \ assert(sv); assert(encoding) -PERL_CALLCONV bool Perl_sv_cat_decode(pTHX_ SV* dsv, SV *encoding, SV *ssv, int *offset, char* tstr, int tlen) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4) - __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_SV_CAT_DECODE \ - assert(dsv); assert(encoding); assert(ssv); assert(offset); assert(tstr) - PERL_CALLCONV const char* Perl_sv_reftype(pTHX_ const SV *const sv, const int ob) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -3440,6 +3926,41 @@ PERL_CALLCONV void Perl_sv_reset(pTHX_ const char* s, HV *const stash) #define PERL_ARGS_ASSERT_SV_RESET \ assert(s) +PERL_CALLCONV SV* Perl_sv_rvweaken(pTHX_ SV *const sv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_RVWEAKEN \ + assert(sv) + +PERL_CALLCONV void Perl_sv_setiv(pTHX_ SV *const sv, const IV num) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_SETIV \ + assert(sv) + +PERL_CALLCONV void Perl_sv_setiv_mg(pTHX_ SV *const sv, const IV i) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_SETIV_MG \ + assert(sv) + +PERL_CALLCONV void Perl_sv_setnv(pTHX_ SV *const sv, const NV num) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_SETNV \ + assert(sv) + +PERL_CALLCONV void Perl_sv_setnv_mg(pTHX_ SV *const sv, const NV num) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_SETNV_MG \ + assert(sv) + +PERL_CALLCONV void Perl_sv_setpv(pTHX_ SV *const sv, const char *const ptr) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_SETPV \ + assert(sv) + +PERL_CALLCONV void Perl_sv_setpv_mg(pTHX_ SV *const sv, const char *const ptr) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_SETPV_MG \ + assert(sv) + PERL_CALLCONV void Perl_sv_setpvf(pTHX_ SV *const sv, const char *const pat, ...) __attribute__format__(__printf__,pTHX_2,pTHX_3) __attribute__nonnull__(pTHX_1) @@ -3447,42 +3968,39 @@ PERL_CALLCONV void Perl_sv_setpvf(pTHX_ SV *const sv, const char *const pat, ... #define PERL_ARGS_ASSERT_SV_SETPVF \ assert(sv); assert(pat) -PERL_CALLCONV void Perl_sv_vsetpvf(pTHX_ SV *const sv, const char *const pat, va_list *const args) +PERL_CALLCONV void Perl_sv_setpvf_mg(pTHX_ SV *const sv, const char *const pat, ...) + __attribute__format__(__printf__,pTHX_2,pTHX_3) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_VSETPVF \ +#define PERL_ARGS_ASSERT_SV_SETPVF_MG \ assert(sv); assert(pat) -PERL_CALLCONV void Perl_sv_setiv(pTHX_ SV *const sv, const IV num) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_SETIV \ - assert(sv) - PERL_CALLCONV void Perl_sv_setpviv(pTHX_ SV *const sv, const IV num) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SV_SETPVIV \ assert(sv) -PERL_CALLCONV void Perl_sv_setuv(pTHX_ SV *const sv, const UV num) +PERL_CALLCONV void Perl_sv_setpviv_mg(pTHX_ SV *const sv, const IV iv) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_SETUV \ +#define PERL_ARGS_ASSERT_SV_SETPVIV_MG \ assert(sv) -PERL_CALLCONV void Perl_sv_setnv(pTHX_ SV *const sv, const NV num) +PERL_CALLCONV void Perl_sv_setpvn(pTHX_ SV *const sv, const char *const ptr, const STRLEN len) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_SETNV \ +#define PERL_ARGS_ASSERT_SV_SETPVN \ assert(sv) +PERL_CALLCONV void Perl_sv_setpvn_mg(pTHX_ SV *const sv, const char *const ptr, const STRLEN len) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_SETPVN_MG \ + assert(sv); assert(ptr) + PERL_CALLCONV SV* Perl_sv_setref_iv(pTHX_ SV *const rv, const char *const classname, const IV iv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SV_SETREF_IV \ assert(rv) -PERL_CALLCONV SV* Perl_sv_setref_uv(pTHX_ SV *const rv, const char *const classname, const UV uv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_SETREF_UV \ - assert(rv) - PERL_CALLCONV SV* Perl_sv_setref_nv(pTHX_ SV *const rv, const char *const classname, const NV nv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SV_SETREF_NV \ @@ -3499,21 +4017,36 @@ PERL_CALLCONV SV* Perl_sv_setref_pvn(pTHX_ SV *const rv, const char *const class #define PERL_ARGS_ASSERT_SV_SETREF_PVN \ assert(rv); assert(pv) -PERL_CALLCONV void Perl_sv_setpv(pTHX_ SV *const sv, const char *const ptr) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_SETPV \ - assert(sv) - -PERL_CALLCONV void Perl_sv_setpvn(pTHX_ SV *const sv, const char *const ptr, const STRLEN len) +PERL_CALLCONV SV* Perl_sv_setref_uv(pTHX_ SV *const rv, const char *const classname, const UV uv) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_SETPVN \ - assert(sv) +#define PERL_ARGS_ASSERT_SV_SETREF_UV \ + assert(rv) /* PERL_CALLCONV void Perl_sv_setsv(pTHX_ SV *dstr, SV *sstr) __attribute__nonnull__(pTHX_1); */ #define PERL_ARGS_ASSERT_SV_SETSV \ assert(dstr) +PERL_CALLCONV void Perl_sv_setsv_flags(pTHX_ SV *dstr, SV *sstr, const I32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_SETSV_FLAGS \ + assert(dstr) + +PERL_CALLCONV void Perl_sv_setsv_mg(pTHX_ SV *const dstr, SV *const sstr) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_SETSV_MG \ + assert(dstr) + +PERL_CALLCONV void Perl_sv_setuv(pTHX_ SV *const sv, const UV num) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_SETUV \ + assert(sv) + +PERL_CALLCONV void Perl_sv_setuv_mg(pTHX_ SV *const sv, const UV u) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_SETUV_MG \ + assert(sv) + /* PERL_CALLCONV void Perl_sv_taint(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); */ #define PERL_ARGS_ASSERT_SV_TAINT \ @@ -3525,11 +4058,24 @@ PERL_CALLCONV bool Perl_sv_tainted(pTHX_ SV *const sv) #define PERL_ARGS_ASSERT_SV_TAINTED \ assert(sv) +PERL_CALLCONV I32 Perl_sv_true(pTHX_ SV *const sv); +PERL_CALLCONV char* Perl_sv_uni_display(pTHX_ SV *dsv, SV *ssv, STRLEN pvlim, UV flags) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_UNI_DISPLAY \ + assert(dsv); assert(ssv) + PERL_CALLCONV int Perl_sv_unmagic(pTHX_ SV *const sv, const int type) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SV_UNMAGIC \ assert(sv) +PERL_CALLCONV int Perl_sv_unmagicext(pTHX_ SV *const sv, const int type, MGVTBL *vtbl) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_UNMAGICEXT \ + assert(sv) + /* PERL_CALLCONV void Perl_sv_unref(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); */ #define PERL_ARGS_ASSERT_SV_UNREF \ @@ -3560,23 +4106,88 @@ PERL_CALLCONV void Perl_sv_usepvn_flags(pTHX_ SV *const sv, char* ptr, const STR #define PERL_ARGS_ASSERT_SV_USEPVN_FLAGS \ assert(sv) +/* PERL_CALLCONV void Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len) + __attribute__nonnull__(pTHX_1); */ +#define PERL_ARGS_ASSERT_SV_USEPVN_MG \ + assert(sv) + +PERL_CALLCONV bool Perl_sv_utf8_decode(pTHX_ SV *const sv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_UTF8_DECODE \ + assert(sv) + +PERL_CALLCONV bool Perl_sv_utf8_downgrade(pTHX_ SV *const sv, const bool fail_ok) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE \ + assert(sv) + +PERL_CALLCONV void Perl_sv_utf8_encode(pTHX_ SV *const sv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_UTF8_ENCODE \ + assert(sv) + +/* PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade(pTHX_ SV *sv) + __attribute__nonnull__(pTHX_1); */ +#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE \ + assert(sv) + +/* PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade_flags(pTHX_ SV *const sv, const I32 flags) + __attribute__nonnull__(pTHX_1); */ + +PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV *const sv, const I32 flags, STRLEN extra) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW \ + assert(sv) + +/* PERL_CALLCONV STRLEN sv_utf8_upgrade_nomg(pTHX_ SV *sv) + __attribute__nonnull__(pTHX_1); */ + +PERL_CALLCONV UV Perl_sv_uv(pTHX_ SV* sv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_UV \ + assert(sv) + +PERL_CALLCONV void Perl_sv_vcatpvf(pTHX_ SV *const sv, const char *const pat, va_list *const args) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_VCATPVF \ + assert(sv); assert(pat) + +PERL_CALLCONV void Perl_sv_vcatpvf_mg(pTHX_ SV *const sv, const char *const pat, va_list *const args) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_VCATPVF_MG \ + assert(sv); assert(pat) + PERL_CALLCONV void Perl_sv_vcatpvfn(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const I32 svmax, bool *const maybe_tainted) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_SV_VCATPVFN \ assert(sv); assert(pat) +PERL_CALLCONV void Perl_sv_vsetpvf(pTHX_ SV *const sv, const char *const pat, va_list *const args) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_VSETPVF \ + assert(sv); assert(pat) + +PERL_CALLCONV void Perl_sv_vsetpvf_mg(pTHX_ SV *const sv, const char *const pat, va_list *const args) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_VSETPVF_MG \ + assert(sv); assert(pat) + PERL_CALLCONV void Perl_sv_vsetpvfn(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const I32 svmax, bool *const maybe_tainted) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_SV_VSETPVFN \ assert(sv); assert(pat) -PERL_CALLCONV NV Perl_str_to_version(pTHX_ SV *sv) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_STR_TO_VERSION \ - assert(sv) +PERL_CALLCONV UV Perl_swash_fetch(pTHX_ SV *swash, const U8 *ptr, bool do_utf8) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SWASH_FETCH \ + assert(swash); assert(ptr) PERL_CALLCONV SV* Perl_swash_init(pTHX_ const char* pkg, const char* name, SV* listsv, I32 minbits, I32 none) __attribute__nonnull__(pTHX_1) @@ -3585,37 +4196,85 @@ PERL_CALLCONV SV* Perl_swash_init(pTHX_ const char* pkg, const char* name, SV* l #define PERL_ARGS_ASSERT_SWASH_INIT \ assert(pkg); assert(name); assert(listsv) -PERL_CALLCONV UV Perl_swash_fetch(pTHX_ SV *swash, const U8 *ptr, bool do_utf8) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SWASH_FETCH \ - assert(swash); assert(ptr) +PERL_CALLCONV void Perl_sys_init(int* argc, char*** argv) + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_SYS_INIT \ + assert(argc); assert(argv) +PERL_CALLCONV void Perl_sys_init3(int* argc, char*** argv, char*** env) + __attribute__nonnull__(1) + __attribute__nonnull__(2) + __attribute__nonnull__(3); +#define PERL_ARGS_ASSERT_SYS_INIT3 \ + assert(argc); assert(argv); assert(env) + +PERL_CALLCONV void Perl_sys_term(void); PERL_CALLCONV void Perl_taint_env(pTHX); PERL_CALLCONV void Perl_taint_proper(pTHX_ const char* f, const char *const s) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_TAINT_PROPER \ assert(s) +PERL_CALLCONV OP * Perl_tied_method(pTHX_ const char *const methname, SV **sp, SV *const sv, const MAGIC *const mg, const U32 flags, U32 argc, ...) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_TIED_METHOD \ + assert(methname); assert(sp); assert(sv); assert(mg) + +PERL_CALLCONV void Perl_tmps_grow(pTHX_ I32 n); +/* PERL_CALLCONV UV Perl_to_uni_fold(pTHX_ UV c, U8 *p, STRLEN *lenp) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); */ + +PERL_CALLCONV UV Perl_to_uni_lower(pTHX_ UV c, U8 *p, STRLEN *lenp) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_TO_UNI_LOWER \ + assert(p); assert(lenp) + +PERL_CALLCONV U32 Perl_to_uni_lower_lc(pTHX_ U32 c) + __attribute__warn_unused_result__ + __attribute__pure__; + +PERL_CALLCONV UV Perl_to_uni_title(pTHX_ UV c, U8 *p, STRLEN *lenp) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_TO_UNI_TITLE \ + assert(p); assert(lenp) + +PERL_CALLCONV U32 Perl_to_uni_title_lc(pTHX_ U32 c) + __attribute__warn_unused_result__ + __attribute__pure__; + +PERL_CALLCONV UV Perl_to_uni_upper(pTHX_ UV c, U8 *p, STRLEN *lenp) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_TO_UNI_UPPER \ + assert(p); assert(lenp) + +PERL_CALLCONV U32 Perl_to_uni_upper_lc(pTHX_ U32 c) + __attribute__warn_unused_result__ + __attribute__pure__; + PERL_CALLCONV UV Perl_to_utf8_case(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp, SV **swashp, const char *normal, const char *special) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_4) - __attribute__nonnull__(pTHX_5) - __attribute__nonnull__(pTHX_6); + __attribute__nonnull__(pTHX_5); #define PERL_ARGS_ASSERT_TO_UTF8_CASE \ - assert(p); assert(ustrp); assert(swashp); assert(normal); assert(special) + assert(p); assert(ustrp); assert(swashp); assert(normal) -PERL_CALLCONV UV Perl_to_utf8_lower(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) +/* PERL_CALLCONV UV Perl_to_utf8_fold(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_TO_UTF8_LOWER \ - assert(p); assert(ustrp) + __attribute__nonnull__(pTHX_2); */ -PERL_CALLCONV UV Perl_to_utf8_upper(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) +PERL_CALLCONV UV Perl_to_utf8_lower(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_TO_UTF8_UPPER \ +#define PERL_ARGS_ASSERT_TO_UTF8_LOWER \ assert(p); assert(ustrp) PERL_CALLCONV UV Perl_to_utf8_title(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) @@ -3624,19 +4283,14 @@ PERL_CALLCONV UV Perl_to_utf8_title(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) #define PERL_ARGS_ASSERT_TO_UTF8_TITLE \ assert(p); assert(ustrp) -PERL_CALLCONV UV Perl_to_utf8_fold(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) +PERL_CALLCONV UV Perl_to_utf8_upper(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_TO_UTF8_FOLD \ +#define PERL_ARGS_ASSERT_TO_UTF8_UPPER \ assert(p); assert(ustrp) -#if defined(UNLINK_ALL_VERSIONS) -PERL_CALLCONV I32 Perl_unlnk(pTHX_ const char* f) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_UNLNK \ - assert(f) - -#endif +PERL_CALLCONV bool Perl_try_amagic_bin(pTHX_ int method, int flags); +PERL_CALLCONV bool Perl_try_amagic_un(pTHX_ int method, int flags); PERL_CALLCONV I32 Perl_unpack_str(pTHX_ const char *pat, const char *patend, const char *s, const char *strbeg, const char *strend, char **new_s, I32 ocnt, U32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -3653,21 +4307,13 @@ PERL_CALLCONV I32 Perl_unpackstring(pTHX_ const char *pat, const char *patend, c #define PERL_ARGS_ASSERT_UNPACKSTRING \ assert(pat); assert(patend); assert(s); assert(strend) -PERL_CALLCONV void Perl_unsharepvn(pTHX_ const char* sv, I32 len, U32 hash); PERL_CALLCONV void Perl_unshare_hek(pTHX_ HEK* hek); -#ifdef PERL_MAD -PERL_CALLCONV OP * Perl_utilize(pTHX_ int aver, I32 floor, OP* version, OP* idop, OP* arg) - __attribute__nonnull__(pTHX_4); -#define PERL_ARGS_ASSERT_UTILIZE \ - assert(idop) - -#else -PERL_CALLCONV void Perl_utilize(pTHX_ int aver, I32 floor, OP* version, OP* idop, OP* arg) - __attribute__nonnull__(pTHX_4); -#define PERL_ARGS_ASSERT_UTILIZE \ - assert(idop) +PERL_CALLCONV void Perl_unsharepvn(pTHX_ const char* sv, I32 len, U32 hash); +PERL_CALLCONV SV* Perl_upg_version(pTHX_ SV *ver, bool qv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_UPG_VERSION \ + assert(ver) -#endif PERL_CALLCONV U8* Perl_utf16_to_utf8(pTHX_ U8* p, U8 *d, I32 bytelen, I32 *newlen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -3682,14 +4328,6 @@ PERL_CALLCONV U8* Perl_utf16_to_utf8_reversed(pTHX_ U8* p, U8 *d, I32 bytelen, I #define PERL_ARGS_ASSERT_UTF16_TO_UTF8_REVERSED \ assert(p); assert(d); assert(newlen) -PERL_CALLCONV STRLEN Perl_utf8_length(pTHX_ const U8* s, const U8 *e) - __attribute__warn_unused_result__ - __attribute__pure__ - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_UTF8_LENGTH \ - assert(s); assert(e) - PERL_CALLCONV IV Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b) __attribute__warn_unused_result__ __attribute__pure__ @@ -3705,22 +4343,18 @@ PERL_CALLCONV U8* Perl_utf8_hop(pTHX_ const U8 *s, I32 off) #define PERL_ARGS_ASSERT_UTF8_HOP \ assert(s) -PERL_CALLCONV U8* Perl_utf8_to_bytes(pTHX_ U8 *s, STRLEN *len) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_UTF8_TO_BYTES \ - assert(s); assert(len) - -PERL_CALLCONV U8* Perl_bytes_from_utf8(pTHX_ const U8 *s, STRLEN *len, bool *is_utf8) +PERL_CALLCONV STRLEN Perl_utf8_length(pTHX_ const U8* s, const U8 *e) + __attribute__warn_unused_result__ + __attribute__pure__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_BYTES_FROM_UTF8 \ - assert(s); assert(len) +#define PERL_ARGS_ASSERT_UTF8_LENGTH \ + assert(s); assert(e) -PERL_CALLCONV U8* Perl_bytes_to_utf8(pTHX_ const U8 *s, STRLEN *len) +PERL_CALLCONV U8* Perl_utf8_to_bytes(pTHX_ U8 *s, STRLEN *len) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_BYTES_TO_UTF8 \ +#define PERL_ARGS_ASSERT_UTF8_TO_BYTES \ assert(s); assert(len) PERL_CALLCONV UV Perl_utf8_to_uvchr(pTHX_ const U8 *s, STRLEN *retlen) @@ -3733,68 +4367,44 @@ PERL_CALLCONV UV Perl_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen) #define PERL_ARGS_ASSERT_UTF8_TO_UVUNI \ assert(s) - -#ifdef EBCDIC -PERL_CALLCONV UV Perl_utf8n_to_uvchr(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR \ - assert(s) - -#else -/* PERL_CALLCONV UV Perl_utf8n_to_uvchr(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags) - __attribute__nonnull__(pTHX_1); */ -#define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR \ - assert(s) - -#endif - PERL_CALLCONV UV Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_UTF8N_TO_UVUNI \ assert(s) - -#ifdef EBCDIC -PERL_CALLCONV U8* Perl_uvchr_to_utf8(pTHX_ U8 *d, UV uv) +PERL_CALLCONV U8* Perl_uvchr_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_UVCHR_TO_UTF8 \ - assert(d) - -#else -/* PERL_CALLCONV U8* Perl_uvchr_to_utf8(pTHX_ U8 *d, UV uv) - __attribute__nonnull__(pTHX_1); */ -#define PERL_ARGS_ASSERT_UVCHR_TO_UTF8 \ +#define PERL_ARGS_ASSERT_UVCHR_TO_UTF8_FLAGS \ assert(d) -#endif - /* PERL_CALLCONV U8* Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv) __attribute__nonnull__(pTHX_1); */ #define PERL_ARGS_ASSERT_UVUNI_TO_UTF8 \ assert(d) -PERL_CALLCONV U8* Perl_uvchr_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_UVCHR_TO_UTF8_FLAGS \ - assert(d) - PERL_CALLCONV U8* Perl_uvuni_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_UVUNI_TO_UTF8_FLAGS \ assert(d) -PERL_CALLCONV char* Perl_pv_uni_display(pTHX_ SV *dsv, const U8 *spv, STRLEN len, STRLEN pvlim, UV flags) +PERL_CALLCONV int Perl_vcmp(pTHX_ SV *lhv, SV *rhv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_PV_UNI_DISPLAY \ - assert(dsv); assert(spv) +#define PERL_ARGS_ASSERT_VCMP \ + assert(lhv); assert(rhv) -PERL_CALLCONV char* Perl_sv_uni_display(pTHX_ SV *dsv, SV *ssv, STRLEN pvlim, UV flags) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_UNI_DISPLAY \ - assert(dsv); assert(ssv) +PERL_CALLCONV void Perl_vcroak(pTHX_ const char* pat, va_list* args) + __attribute__noreturn__; + +PERL_CALLCONV void Perl_vdeb(pTHX_ const char* pat, va_list* args) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_VDEB \ + assert(pat) + +PERL_CALLCONV char* Perl_vform(pTHX_ const char* pat, va_list* args) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_VFORM \ + assert(pat) PERL_CALLCONV void Perl_vivify_defelem(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); @@ -3806,54 +4416,73 @@ PERL_CALLCONV void Perl_vivify_ref(pTHX_ SV* sv, U32 to_what) #define PERL_ARGS_ASSERT_VIVIFY_REF \ assert(sv) -PERL_CALLCONV I32 Perl_wait4pid(pTHX_ Pid_t pid, int* statusp, int flags) +PERL_CALLCONV void Perl_vload_module(pTHX_ U32 flags, SV* name, SV* ver, va_list* args) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_WAIT4PID \ - assert(statusp) +#define PERL_ARGS_ASSERT_VLOAD_MODULE \ + assert(name) -PERL_CALLCONV U32 Perl_parse_unicode_opts(pTHX_ const char **popt) +PERL_CALLCONV SV* Perl_vmess(pTHX_ const char* pat, va_list* args) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PARSE_UNICODE_OPTS \ - assert(popt) - -PERL_CALLCONV U32 Perl_seed(pTHX); -PERL_CALLCONV UV Perl_get_hash_seed(pTHX) - __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_VMESS \ + assert(pat) -PERL_CALLCONV void Perl_report_evil_fh(pTHX_ const GV *gv, const IO *io, I32 op); -PERL_CALLCONV void Perl_report_uninit(pTHX_ const SV *uninit_sv); -PERL_CALLCONV void Perl_warn(pTHX_ const char* pat, ...) - __attribute__format__(__printf__,pTHX_1,pTHX_2) +PERL_CALLCONV SV* Perl_vnewSVpvf(pTHX_ const char *const pat, va_list *const args) + __attribute__malloc__ + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_WARN \ +#define PERL_ARGS_ASSERT_VNEWSVPVF \ assert(pat) +PERL_CALLCONV SV* Perl_vnormal(pTHX_ SV *vs) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_VNORMAL \ + assert(vs) + +PERL_CALLCONV SV* Perl_vnumify(pTHX_ SV *vs) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_VNUMIFY \ + assert(vs) + +PERL_CALLCONV SV* Perl_vstringify(pTHX_ SV *vs) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_VSTRINGIFY \ + assert(vs) + +PERL_CALLCONV SV* Perl_vverify(pTHX_ SV *vs) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_VVERIFY \ + assert(vs) + PERL_CALLCONV void Perl_vwarn(pTHX_ const char* pat, va_list* args) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_VWARN \ assert(pat) -PERL_CALLCONV void Perl_warner(pTHX_ U32 err, const char* pat, ...) - __attribute__format__(__printf__,pTHX_2,pTHX_3) +PERL_CALLCONV void Perl_vwarner(pTHX_ U32 err, const char* pat, va_list* args) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_WARNER \ +#define PERL_ARGS_ASSERT_VWARNER \ assert(pat) -PERL_CALLCONV void Perl_ck_warner(pTHX_ U32 err, const char* pat, ...) - __attribute__format__(__printf__,pTHX_2,pTHX_3) +PERL_CALLCONV I32 Perl_wait4pid(pTHX_ Pid_t pid, int* statusp, int flags) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_CK_WARNER \ - assert(pat) +#define PERL_ARGS_ASSERT_WAIT4PID \ + assert(statusp) -PERL_CALLCONV void Perl_ck_warner_d(pTHX_ U32 err, const char* pat, ...) - __attribute__format__(__printf__,pTHX_2,pTHX_3) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_CK_WARNER_D \ +PERL_CALLCONV void Perl_warn(pTHX_ const char* pat, ...) + __attribute__format__(__printf__,pTHX_1,pTHX_2) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_WARN \ assert(pat) -PERL_CALLCONV void Perl_vwarner(pTHX_ U32 err, const char* pat, va_list* args) +PERL_CALLCONV void Perl_warn_sv(pTHX_ SV *baseex) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_WARN_SV \ + assert(baseex) + +PERL_CALLCONV void Perl_warner(pTHX_ U32 err, const char* pat, ...) + __attribute__format__(__printf__,pTHX_2,pTHX_3) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_VWARNER \ +#define PERL_ARGS_ASSERT_WARNER \ assert(pat) PERL_CALLCONV void Perl_watch(pTHX_ char** addr) @@ -3871,490 +4500,706 @@ PERL_CALLCONV void Perl_write_to_stderr(pTHX_ SV* msv) #define PERL_ARGS_ASSERT_WRITE_TO_STDERR \ assert(msv) +PERL_CALLCONV void Perl_xs_apiversion_bootcheck(pTHX_ SV *module, const char *api_p, STRLEN api_len) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_XS_APIVERSION_BOOTCHECK \ + assert(module); assert(api_p) + +PERL_CALLCONV void Perl_xs_version_bootcheck(pTHX_ U32 items, U32 ax, const char *xs_p, STRLEN xs_len) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_XS_VERSION_BOOTCHECK \ + assert(xs_p) + PERL_CALLCONV int Perl_yyerror(pTHX_ const char *const s) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_YYERROR \ assert(s) PERL_CALLCONV int Perl_yylex(pTHX); -PERL_CALLCONV int Perl_yyparse(pTHX); -PERL_CALLCONV void Perl_parser_free(pTHX_ const yy_parser *parser) +PERL_CALLCONV int Perl_yyparse(pTHX_ int gramtype); +PERL_CALLCONV void Perl_yyunlex(pTHX); +#if !(defined(DEBUGGING)) +# if !defined(NV_PRESERVES_UV) +# if defined(PERL_IN_SV_C) +STATIC int S_sv_2iuv_non_preserve(pTHX_ SV *const sv) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PARSER_FREE \ - assert(parser) +#define PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE \ + assert(sv) -#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) -STATIC int S_yywarn(pTHX_ const char *const s) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_YYWARN \ +# endif +# endif +#endif +#if !(defined(EBCDIC)) +/* PERL_CALLCONV UV Perl_utf8n_to_uvchr(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags) + __attribute__nonnull__(pTHX_1); */ +#define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR \ assert(s) +/* PERL_CALLCONV U8* Perl_uvchr_to_utf8(pTHX_ U8 *d, UV uv) + __attribute__nonnull__(pTHX_1); */ +#define PERL_ARGS_ASSERT_UVCHR_TO_UTF8 \ + assert(d) + #endif -#if defined(MYMALLOC) -PERL_CALLCONV void Perl_dump_mstats(pTHX_ const char* s) +#if !(defined(HAS_SIGACTION) && defined(SA_SIGINFO)) +PERL_CALLCONV Signal_t Perl_csighandler(int sig); +PERL_CALLCONV Signal_t Perl_sighandler(int sig); +#endif +#if !(defined(NO_MATHOMS)) +PERL_CALLCONV void Perl_sv_nounlocking(pTHX_ SV *sv); +#endif +#if !(defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION)) +PERL_CALLCONV bool Perl_do_exec(pTHX_ const char* cmd) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DUMP_MSTATS \ - assert(s) +#define PERL_ARGS_ASSERT_DO_EXEC \ + assert(cmd) -PERL_CALLCONV int Perl_get_mstats(pTHX_ perl_mstats_t *buf, int buflen, int level) +#endif +#if !(defined(PERL_GLOBAL_STRUCT_PRIVATE)) +# if defined(PERL_IMPLICIT_CONTEXT) +PERL_CALLCONV void* Perl_my_cxt_init(pTHX_ int *index, size_t size) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GET_MSTATS \ - assert(buf) +#define PERL_ARGS_ASSERT_MY_CXT_INIT \ + assert(index) +# endif #endif -PERL_CALLCONV Malloc_t Perl_safesysmalloc(MEM_SIZE nbytes) - __attribute__malloc__ - __attribute__warn_unused_result__; +#if !(defined(PERL_MAD)) +PERL_CALLCONV void Perl_newFORM(pTHX_ I32 floor, OP* o, OP* block); +PERL_CALLCONV void Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) + __attribute__noreturn__; -PERL_CALLCONV Malloc_t Perl_safesyscalloc(MEM_SIZE elements, MEM_SIZE size) - __attribute__malloc__ - __attribute__warn_unused_result__; +PERL_CALLCONV void Perl_package(pTHX_ OP* o) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PACKAGE \ + assert(o) -PERL_CALLCONV Malloc_t Perl_safesysrealloc(Malloc_t where, MEM_SIZE nbytes) - __attribute__malloc__ - __attribute__warn_unused_result__; +PERL_CALLCONV void Perl_utilize(pTHX_ int aver, I32 floor, OP* version, OP* idop, OP* arg) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_UTILIZE \ + assert(idop) -PERL_CALLCONV Free_t Perl_safesysfree(Malloc_t where); -#if defined(PERL_GLOBAL_STRUCT) -PERL_CALLCONV struct perl_vars * Perl_GetVars(pTHX); -PERL_CALLCONV struct perl_vars* Perl_init_global_struct(pTHX); -PERL_CALLCONV void Perl_free_global_struct(pTHX_ struct perl_vars *plvarsp) +#endif +#if !(defined(USE_ITHREADS)) +# if defined(PERL_IN_OP_C) +STATIC void S_forget_pmop(pTHX_ PMOP *const o) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_FREE_GLOBAL_STRUCT \ - assert(plvarsp) +#define PERL_ARGS_ASSERT_FORGET_PMOP \ + assert(o) +# endif #endif -PERL_CALLCONV int Perl_runops_standard(pTHX); -PERL_CALLCONV int Perl_runops_debug(pTHX); -PERL_CALLCONV void Perl_sv_catpvf_mg(pTHX_ SV *const sv, const char *const pat, ...) - __attribute__format__(__printf__,pTHX_2,pTHX_3) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_CATPVF_MG \ - assert(sv); assert(pat) +#if !defined(HAS_BZERO) && !defined(HAS_MEMSET) +PERL_CALLCONV char* Perl_my_bzero(char* loc, I32 len) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_MY_BZERO \ + assert(loc) -PERL_CALLCONV void Perl_sv_vcatpvf_mg(pTHX_ SV *const sv, const char *const pat, va_list *const args) +#endif +#if !defined(HAS_GETENV_LEN) +PERL_CALLCONV char* Perl_getenv_len(pTHX_ const char *env_elem, unsigned long *len) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_VCATPVF_MG \ - assert(sv); assert(pat) - -PERL_CALLCONV void Perl_sv_catpv_mg(pTHX_ SV *const sv, const char *const ptr) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_CATPV_MG \ - assert(sv) +#define PERL_ARGS_ASSERT_GETENV_LEN \ + assert(env_elem); assert(len) -/* PERL_CALLCONV void Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); */ -#define PERL_ARGS_ASSERT_SV_CATPVN_MG \ - assert(sv); assert(ptr) +#endif +#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) +PERL_CALLCONV I32 Perl_my_memcmp(const char* s1, const char* s2, I32 len) + __attribute__pure__ + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_MY_MEMCMP \ + assert(s1); assert(s2) -/* PERL_CALLCONV void Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *ssv) - __attribute__nonnull__(pTHX_1); */ -#define PERL_ARGS_ASSERT_SV_CATSV_MG \ - assert(dsv) +#endif +#if !defined(HAS_MEMSET) +PERL_CALLCONV void* Perl_my_memset(char* loc, I32 ch, I32 len) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_MY_MEMSET \ + assert(loc) -PERL_CALLCONV void Perl_sv_setpvf_mg(pTHX_ SV *const sv, const char *const pat, ...) - __attribute__format__(__printf__,pTHX_2,pTHX_3) +#endif +#if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) +# if defined(PERL_IN_PP_SYS_C) +STATIC int S_dooneliner(pTHX_ const char *cmd, const char *filename) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_SETPVF_MG \ - assert(sv); assert(pat) +#define PERL_ARGS_ASSERT_DOONELINER \ + assert(cmd); assert(filename) -PERL_CALLCONV void Perl_sv_vsetpvf_mg(pTHX_ SV *const sv, const char *const pat, va_list *const args) +# endif +#endif +#if !defined(HAS_RENAME) +PERL_CALLCONV I32 Perl_same_dirent(pTHX_ const char* a, const char* b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_VSETPVF_MG \ - assert(sv); assert(pat) +#define PERL_ARGS_ASSERT_SAME_DIRENT \ + assert(a); assert(b) -PERL_CALLCONV void Perl_sv_setiv_mg(pTHX_ SV *const sv, const IV i) +#endif +#if !defined(HAS_SIGNBIT) +PERL_CALLCONV int Perl_signbit(NV f) + __attribute__pure__; + +#endif +#if !defined(HAS_STRLCAT) +PERL_CALLCONV Size_t Perl_my_strlcat(char *dst, const char *src, Size_t size); +#endif +#if !defined(HAS_STRLCPY) +PERL_CALLCONV Size_t Perl_my_strlcpy(char *dst, const char *src, Size_t size); +#endif +#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) +PERL_CALLCONV I32 Perl_my_chsize(pTHX_ int fd, Off_t length) + __attribute__warn_unused_result__; + +#endif +#if !defined(NV_PRESERVES_UV) +# if defined(DEBUGGING) +# if defined(PERL_IN_SV_C) +STATIC int S_sv_2iuv_non_preserve(pTHX_ SV *const sv, I32 numtype) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_SETIV_MG \ +#define PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE \ assert(sv) -PERL_CALLCONV void Perl_sv_setpviv_mg(pTHX_ SV *const sv, const IV iv) +# endif +# endif +#endif +#if !defined(PERL_DISABLE_PMC) +# if defined(PERL_IN_PP_CTL_C) +STATIC PerlIO * S_doopen_pm(pTHX_ SV *name) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_SETPVIV_MG \ - assert(sv) +#define PERL_ARGS_ASSERT_DOOPEN_PM \ + assert(name) -PERL_CALLCONV void Perl_sv_setuv_mg(pTHX_ SV *const sv, const UV u) +# endif +#endif +#if !defined(PERL_IS_MINIPERL) +# if defined(PERL_IN_PERL_C) +STATIC SV * S_incpush_if_exists(pTHX_ AV *const av, SV *dir, SV *const stem) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_INCPUSH_IF_EXISTS \ + assert(av); assert(dir); assert(stem) + +# endif +#endif +#if !defined(PERL_NO_UTF16_FILTER) +# if defined(PERL_IN_TOKE_C) +STATIC U8* S_add_utf16_textfilter(pTHX_ U8 *const s, bool reversed) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_SETUV_MG \ +#define PERL_ARGS_ASSERT_ADD_UTF16_TEXTFILTER \ + assert(s) + +STATIC I32 S_utf16_textfilter(pTHX_ int idx, SV *sv, int maxlen) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_UTF16_TEXTFILTER \ assert(sv) -PERL_CALLCONV void Perl_sv_setnv_mg(pTHX_ SV *const sv, const NV num) +# endif +#endif +#if !defined(SETUID_SCRIPTS_ARE_SECURE_NOW) +# if defined(PERL_IN_PERL_C) +STATIC void S_validate_suid(pTHX_ PerlIO *rsfp) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_SETNV_MG \ - assert(sv) +#define PERL_ARGS_ASSERT_VALIDATE_SUID \ + assert(rsfp) -PERL_CALLCONV void Perl_sv_setpv_mg(pTHX_ SV *const sv, const char *const ptr) +# endif +#endif +#if !defined(SPRINTF_RETURNS_STRLEN) +PERL_CALLCONV int Perl_my_sprintf(char *buffer, const char *pat, ...) + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_MY_SPRINTF \ + assert(buffer); assert(pat) + +#endif +#if !defined(WIN32) +PERL_CALLCONV bool Perl_do_exec3(pTHX_ const char *incmd, int fd, int do_report) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_SETPV_MG \ - assert(sv) +#define PERL_ARGS_ASSERT_DO_EXEC3 \ + assert(incmd) -PERL_CALLCONV void Perl_sv_setpvn_mg(pTHX_ SV *const sv, const char *const ptr, const STRLEN len) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_SETPVN_MG \ - assert(sv); assert(ptr) +#endif +#if (!defined(HAS_MEMCPY) && !defined(HAS_BCOPY)) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY) && !defined(HAS_SAFE_BCOPY)) +PERL_CALLCONV char* Perl_my_bcopy(const char* from, char* to, I32 len) + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_MY_BCOPY \ + assert(from); assert(to) -PERL_CALLCONV void Perl_sv_setsv_mg(pTHX_ SV *const dstr, SV *const sstr) +#endif +#if defined(DEBUGGING) +PERL_CALLCONV int Perl_get_debug_opts(pTHX_ const char **s, bool givehelp) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_SETSV_MG \ - assert(dstr) +#define PERL_ARGS_ASSERT_GET_DEBUG_OPTS \ + assert(s) -/* PERL_CALLCONV void Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len) - __attribute__nonnull__(pTHX_1); */ -#define PERL_ARGS_ASSERT_SV_USEPVN_MG \ - assert(sv) +PERL_CALLCONV void Perl_hv_assert(pTHX_ HV *hv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_ASSERT \ + assert(hv) -PERL_CALLCONV MGVTBL* Perl_get_vtbl(pTHX_ int vtbl_id) - __attribute__warn_unused_result__; +PERL_CALLCONV void Perl_pad_setsv(pTHX_ PADOFFSET po, SV* sv) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_PAD_SETSV \ + assert(sv) -PERL_CALLCONV char* Perl_pv_display(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim) +PERL_CALLCONV SV* Perl_pad_sv(pTHX_ PADOFFSET po); +# if defined(PERL_IN_PAD_C) +STATIC void S_cv_dump(pTHX_ const CV *cv, const char *title) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_PV_DISPLAY \ - assert(dsv); assert(pv) +#define PERL_ARGS_ASSERT_CV_DUMP \ + assert(cv); assert(title) -PERL_CALLCONV char* Perl_pv_escape(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags) +# endif +# if defined(PERL_IN_REGCOMP_C) +STATIC void S_dump_trie(pTHX_ const struct _reg_trie_data *trie, HV* widecharmap, AV *revcharmap, U32 depth) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_PV_ESCAPE \ - assert(dsv); assert(str) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_DUMP_TRIE \ + assert(trie); assert(revcharmap) -PERL_CALLCONV char* Perl_pv_pretty(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags) +STATIC void S_dump_trie_interim_list(pTHX_ const struct _reg_trie_data *trie, HV* widecharmap, AV *revcharmap, U32 next_alloc, U32 depth) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_PV_PRETTY \ - assert(dsv); assert(str) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_LIST \ + assert(trie); assert(revcharmap) -PERL_CALLCONV void Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...) - __attribute__format__(__printf__,pTHX_3,pTHX_4) - __attribute__nonnull__(pTHX_2) +STATIC void S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie, HV* widecharmap, AV *revcharmap, U32 next_alloc, U32 depth) + __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_DUMP_INDENT \ - assert(file); assert(pat) +#define PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_TABLE \ + assert(trie); assert(revcharmap) -PERL_CALLCONV void Perl_dump_vindent(pTHX_ I32 level, PerlIO *file, const char* pat, va_list *args) +STATIC const regnode* S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, const regnode *plast, SV* sv, I32 indent, U32 depth) + __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_DUMP_VINDENT \ - assert(file); assert(pat) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_6); +#define PERL_ARGS_ASSERT_DUMPUNTIL \ + assert(r); assert(start); assert(node); assert(sv) -PERL_CALLCONV void Perl_do_gv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv) +STATIC void S_put_byte(pTHX_ SV* sv, int c) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PUT_BYTE \ + assert(sv) + +STATIC void S_regdump_extflags(pTHX_ const char *lead, const U32 flags); +STATIC U8 S_regtail_study(pTHX_ struct RExC_state_t *pRExC_state, regnode *p, const regnode *val, U32 depth) + __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_DO_GV_DUMP \ - assert(file); assert(name) +#define PERL_ARGS_ASSERT_REGTAIL_STUDY \ + assert(pRExC_state); assert(p); assert(val) -PERL_CALLCONV void Perl_do_gvgv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv) +# endif +# if defined(PERL_IN_REGEXEC_C) +STATIC void S_debug_start_match(pTHX_ const REGEXP *prog, const bool do_utf8, const char *start, const char *end, const char *blurb) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4) + __attribute__nonnull__(pTHX_5); +#define PERL_ARGS_ASSERT_DEBUG_START_MATCH \ + assert(prog); assert(start); assert(end); assert(blurb) + +STATIC void S_dump_exec_pos(pTHX_ const char *locinput, const regnode *scan, const char *loc_regeol, const char *loc_bostr, const char *loc_reg_starttry, const bool do_utf8) + __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_DO_GVGV_DUMP \ - assert(file); assert(name) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4) + __attribute__nonnull__(pTHX_5); +#define PERL_ARGS_ASSERT_DUMP_EXEC_POS \ + assert(locinput); assert(scan); assert(loc_regeol); assert(loc_bostr); assert(loc_reg_starttry) -PERL_CALLCONV void Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, const char *name, HV *sv) +# endif +# if defined(PERL_IN_SV_C) +STATIC void S_del_sv(pTHX_ SV *p) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DEL_SV \ + assert(p) + +# endif +# if defined(PERL_IN_TOKE_C) +STATIC void S_printbuf(pTHX_ const char *const fmt, const char *const s) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_PRINTBUF \ + assert(fmt); assert(s) + +STATIC int S_tokereport(pTHX_ I32 rv, const YYSTYPE* lvalp) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_TOKEREPORT \ + assert(lvalp) + +# endif +#endif +#if defined(DEBUG_LEAKING_SCALARS_FORK_DUMP) +PERL_CALLCONV void Perl_dump_sv_child(pTHX_ SV *sv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DUMP_SV_CHILD \ + assert(sv) + +#endif +#if defined(DUMP_FDS) +PERL_CALLCONV void Perl_dump_fds(pTHX_ char* s) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DUMP_FDS \ + assert(s) + +#endif +#if defined(EBCDIC) +PERL_CALLCONV UV Perl_utf8n_to_uvchr(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR \ + assert(s) + +PERL_CALLCONV U8* Perl_uvchr_to_utf8(pTHX_ U8 *d, UV uv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_UVCHR_TO_UTF8 \ + assert(d) + +#endif +#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) +PERL_CALLCONV I32 Perl_do_ipcctl(pTHX_ I32 optype, SV** mark, SV** sp) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_DO_HV_DUMP \ - assert(file); assert(name) +#define PERL_ARGS_ASSERT_DO_IPCCTL \ + assert(mark); assert(sp) -PERL_CALLCONV void Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, const MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim) +PERL_CALLCONV I32 Perl_do_ipcget(pTHX_ I32 optype, SV** mark, SV** sp) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_DO_MAGIC_DUMP \ - assert(file); assert(mg) +#define PERL_ARGS_ASSERT_DO_IPCGET \ + assert(mark); assert(sp) -PERL_CALLCONV void Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, const OP *o) +PERL_CALLCONV I32 Perl_do_msgrcv(pTHX_ SV** mark, SV** sp) + __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_DO_OP_DUMP \ - assert(file) +#define PERL_ARGS_ASSERT_DO_MSGRCV \ + assert(mark); assert(sp) -PERL_CALLCONV void Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, const PMOP *pm) +PERL_CALLCONV I32 Perl_do_msgsnd(pTHX_ SV** mark, SV** sp) + __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_DO_PMOP_DUMP \ - assert(file) +#define PERL_ARGS_ASSERT_DO_MSGSND \ + assert(mark); assert(sp) -PERL_CALLCONV void Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim) +PERL_CALLCONV I32 Perl_do_semop(pTHX_ SV** mark, SV** sp) + __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_DO_SV_DUMP \ - assert(file) +#define PERL_ARGS_ASSERT_DO_SEMOP \ + assert(mark); assert(sp) -PERL_CALLCONV void Perl_magic_dump(pTHX_ const MAGIC *mg); -PERL_CALLCONV void Perl_reginitcolors(pTHX); -/* PERL_CALLCONV char* Perl_sv_2pv_nolen(pTHX_ SV* sv) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); */ -#define PERL_ARGS_ASSERT_SV_2PV_NOLEN \ - assert(sv) +PERL_CALLCONV I32 Perl_do_shmio(pTHX_ I32 optype, SV** mark, SV** sp) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_DO_SHMIO \ + assert(mark); assert(sp) -/* PERL_CALLCONV char* Perl_sv_2pvutf8_nolen(pTHX_ SV* sv) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); */ -#define PERL_ARGS_ASSERT_SV_2PVUTF8_NOLEN \ - assert(sv) +#endif +#if defined(HAS_SIGACTION) && defined(SA_SIGINFO) +PERL_CALLCONV Signal_t Perl_csighandler(int sig, siginfo_t *info, void *uap); +PERL_CALLCONV Signal_t Perl_sighandler(int sig, siginfo_t *info, void *uap); +#endif +#if defined(HAVE_INTERP_INTERN) +PERL_CALLCONV void Perl_sys_intern_clear(pTHX); +PERL_CALLCONV void Perl_sys_intern_init(pTHX); +# if defined(USE_ITHREADS) +PERL_CALLCONV void Perl_sys_intern_dup(pTHX_ struct interp_intern* src, struct interp_intern* dst) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SYS_INTERN_DUP \ + assert(src); assert(dst) -/* PERL_CALLCONV char* Perl_sv_2pvbyte_nolen(pTHX_ SV* sv) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); */ -#define PERL_ARGS_ASSERT_SV_2PVBYTE_NOLEN \ - assert(sv) +# endif +#endif +#if defined(MYMALLOC) +PERL_CALLCONV void Perl_dump_mstats(pTHX_ const char* s) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DUMP_MSTATS \ + assert(s) -/* PERL_CALLCONV char* Perl_sv_pv(pTHX_ SV *sv) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); */ -#define PERL_ARGS_ASSERT_SV_PV \ - assert(sv) +PERL_CALLCONV int Perl_get_mstats(pTHX_ perl_mstats_t *buf, int buflen, int level) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GET_MSTATS \ + assert(buf) -/* PERL_CALLCONV char* Perl_sv_pvutf8(pTHX_ SV *sv) +PERL_CALLCONV MEM_SIZE Perl_malloc_good_size(size_t nbytes) + __attribute__warn_unused_result__; + +PERL_CALLCONV MEM_SIZE Perl_malloced_size(void *p) __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); */ -#define PERL_ARGS_ASSERT_SV_PVUTF8 \ - assert(sv) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_MALLOCED_SIZE \ + assert(p) -/* PERL_CALLCONV char* Perl_sv_pvbyte(pTHX_ SV *sv) +#endif +#if defined(MYSWAP) +PERL_CALLCONV long Perl_my_htonl(pTHX_ long l) + __attribute__malloc__ __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); */ -#define PERL_ARGS_ASSERT_SV_PVBYTE \ - assert(sv) + __attribute__pure__; -/* PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade(pTHX_ SV *sv) - __attribute__nonnull__(pTHX_1); */ -#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE \ - assert(sv) +PERL_CALLCONV long Perl_my_ntohl(pTHX_ long l) + __attribute__malloc__ + __attribute__warn_unused_result__ + __attribute__pure__; -/* PERL_CALLCONV STRLEN sv_utf8_upgrade_nomg(pTHX_ SV *sv) - __attribute__nonnull__(pTHX_1); */ +PERL_CALLCONV short Perl_my_swap(pTHX_ short s) + __attribute__malloc__ + __attribute__warn_unused_result__ + __attribute__pure__; -PERL_CALLCONV bool Perl_sv_utf8_downgrade(pTHX_ SV *const sv, const bool fail_ok) +#endif +#if defined(NO_MATHOMS) +/* PERL_CALLCONV void Perl_sv_nounlocking(pTHX_ SV *sv); */ +#endif +#if defined(PERL_CR_FILTER) +# if defined(PERL_IN_TOKE_C) +STATIC I32 S_cr_textfilter(pTHX_ int idx, SV *sv, int maxlen); +STATIC void S_strip_return(pTHX_ SV *sv) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE \ +#define PERL_ARGS_ASSERT_STRIP_RETURN \ assert(sv) -PERL_CALLCONV void Perl_sv_utf8_encode(pTHX_ SV *const sv) +# endif +#endif +#if defined(PERL_DEBUG_READONLY_OPS) +# if defined(PERL_IN_OP_C) +# if defined(PL_OP_SLAB_ALLOC) +STATIC void S_Slab_to_rw(pTHX_ void *op) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_UTF8_ENCODE \ - assert(sv) +#define PERL_ARGS_ASSERT_SLAB_TO_RW \ + assert(op) -PERL_CALLCONV bool Perl_sv_utf8_decode(pTHX_ SV *const sv) +# endif +# endif +# if defined(PL_OP_SLAB_ALLOC) +PERL_CALLCONV PADOFFSET Perl_op_refcnt_dec(pTHX_ OP *o) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_UTF8_DECODE \ - assert(sv) +#define PERL_ARGS_ASSERT_OP_REFCNT_DEC \ + assert(o) -/* PERL_CALLCONV void Perl_sv_force_normal(pTHX_ SV *sv) +PERL_CALLCONV OP * Perl_op_refcnt_inc(pTHX_ OP *o); +PERL_CALLCONV void Perl_pending_Slabs_to_ro(pTHX); +# endif +#endif +#if defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION) +/* PERL_CALLCONV bool Perl_do_exec(pTHX_ const char* cmd) __attribute__nonnull__(pTHX_1); */ -#define PERL_ARGS_ASSERT_SV_FORCE_NORMAL \ - assert(sv) +#define PERL_ARGS_ASSERT_DO_EXEC \ + assert(cmd) -PERL_CALLCONV void Perl_sv_force_normal_flags(pTHX_ SV *const sv, const U32 flags) +#endif +#if defined(PERL_DONT_CREATE_GVSV) +/* PERL_CALLCONV GV* Perl_gv_SVadd(pTHX_ GV *gv); */ +#endif +#if defined(PERL_GLOBAL_STRUCT) +PERL_CALLCONV struct perl_vars * Perl_GetVars(pTHX); +PERL_CALLCONV void Perl_free_global_struct(pTHX_ struct perl_vars *plvarsp) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_FORCE_NORMAL_FLAGS \ - assert(sv) +#define PERL_ARGS_ASSERT_FREE_GLOBAL_STRUCT \ + assert(plvarsp) -PERL_CALLCONV void Perl_tmps_grow(pTHX_ I32 n); -PERL_CALLCONV SV* Perl_sv_rvweaken(pTHX_ SV *const sv) +PERL_CALLCONV struct perl_vars* Perl_init_global_struct(pTHX); +#endif +#if defined(PERL_GLOBAL_STRUCT_PRIVATE) +# if defined(PERL_IMPLICIT_CONTEXT) +PERL_CALLCONV int Perl_my_cxt_index(pTHX_ const char *my_cxt_key) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_RVWEAKEN \ - assert(sv) +#define PERL_ARGS_ASSERT_MY_CXT_INDEX \ + assert(my_cxt_key) -PERL_CALLCONV int Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MAGIC_KILLBACKREFS \ - assert(sv); assert(mg) +PERL_CALLCONV void* Perl_my_cxt_init(pTHX_ const char *my_cxt_key, size_t size) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_MY_CXT_INIT \ + assert(my_cxt_key) -PERL_CALLCONV OP* Perl_newANONATTRSUB(pTHX_ I32 floor, OP *proto, OP *attrs, OP *block); -PERL_CALLCONV CV* Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block); -#ifdef PERL_MAD -PERL_CALLCONV OP * Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) - __attribute__noreturn__; +# endif +#endif +#if defined(PERL_IMPLICIT_CONTEXT) +PERL_CALLCONV void Perl_croak_nocontext(const char* pat, ...) + __attribute__noreturn__ + __attribute__format__null_ok__(__printf__,1,2); -#else -PERL_CALLCONV void Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) - __attribute__noreturn__; +PERL_CALLCONV void Perl_deb_nocontext(const char* pat, ...) + __attribute__format__(__printf__,1,2) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_DEB_NOCONTEXT \ + assert(pat) -#endif -PERL_CALLCONV OP * Perl_my_attrs(pTHX_ OP *o, OP *attrs) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MY_ATTRS \ - assert(o) +PERL_CALLCONV OP* Perl_die_nocontext(const char* pat, ...) + __attribute__format__null_ok__(__printf__,1,2); -#if defined(USE_ITHREADS) -PERL_CALLCONV PERL_CONTEXT* Perl_cx_dup(pTHX_ PERL_CONTEXT* cx, I32 ix, I32 max, CLONE_PARAMS* param) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_4); -#define PERL_ARGS_ASSERT_CX_DUP \ - assert(param) +PERL_CALLCONV char* Perl_form_nocontext(const char* pat, ...) + __attribute__format__(__printf__,1,2) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_FORM_NOCONTEXT \ + assert(pat) -PERL_CALLCONV PERL_SI* Perl_si_dup(pTHX_ PERL_SI* si, CLONE_PARAMS* param) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SI_DUP \ - assert(param) +PERL_CALLCONV int Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...) + __attribute__format__(__printf__,2,3) + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_FPRINTF_NOCONTEXT \ + assert(stream); assert(format) -PERL_CALLCONV ANY* Perl_ss_dup(pTHX_ PerlInterpreter* proto_perl, CLONE_PARAMS* param) - __attribute__malloc__ - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SS_DUP \ - assert(proto_perl); assert(param) +PERL_CALLCONV void Perl_load_module_nocontext(U32 flags, SV* name, SV* ver, ...) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_LOAD_MODULE_NOCONTEXT \ + assert(name) -PERL_CALLCONV void* Perl_any_dup(pTHX_ void* v, const PerlInterpreter* proto_perl) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_ANY_DUP \ - assert(proto_perl) +PERL_CALLCONV SV* Perl_mess_nocontext(const char* pat, ...) + __attribute__format__(__printf__,1,2) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_MESS_NOCONTEXT \ + assert(pat) -PERL_CALLCONV HE* Perl_he_dup(pTHX_ const HE* e, bool shared, CLONE_PARAMS* param) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_HE_DUP \ - assert(param) +PERL_CALLCONV SV* Perl_newSVpvf_nocontext(const char *const pat, ...) + __attribute__format__(__printf__,1,2) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_NEWSVPVF_NOCONTEXT \ + assert(pat) -PERL_CALLCONV HEK* Perl_hek_dup(pTHX_ HEK* e, CLONE_PARAMS* param) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_HEK_DUP \ - assert(param) +PERL_CALLCONV int Perl_printf_nocontext(const char *format, ...) + __attribute__format__(__printf__,1,2) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_PRINTF_NOCONTEXT \ + assert(format) -PERL_CALLCONV void Perl_re_dup_guts(pTHX_ const REGEXP *sstr, REGEXP *dstr, CLONE_PARAMS* param) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_RE_DUP_GUTS \ - assert(sstr); assert(dstr); assert(param) +PERL_CALLCONV void Perl_sv_catpvf_mg_nocontext(SV *const sv, const char *const pat, ...) + __attribute__format__(__printf__,2,3) + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_SV_CATPVF_MG_NOCONTEXT \ + assert(sv); assert(pat) -PERL_CALLCONV PerlIO* Perl_fp_dup(pTHX_ PerlIO *const fp, const char type, CLONE_PARAMS *const param) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_FP_DUP \ - assert(param) +PERL_CALLCONV void Perl_sv_catpvf_nocontext(SV *const sv, const char *const pat, ...) + __attribute__format__(__printf__,2,3) + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_SV_CATPVF_NOCONTEXT \ + assert(sv); assert(pat) -PERL_CALLCONV DIR* Perl_dirp_dup(pTHX_ DIR *const dp) - __attribute__warn_unused_result__; +PERL_CALLCONV void Perl_sv_setpvf_mg_nocontext(SV *const sv, const char *const pat, ...) + __attribute__format__(__printf__,2,3) + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_SV_SETPVF_MG_NOCONTEXT \ + assert(sv); assert(pat) -PERL_CALLCONV GP* Perl_gp_dup(pTHX_ GP *const gp, CLONE_PARAMS *const param) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_GP_DUP \ - assert(param) +PERL_CALLCONV void Perl_sv_setpvf_nocontext(SV *const sv, const char *const pat, ...) + __attribute__format__(__printf__,2,3) + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_SV_SETPVF_NOCONTEXT \ + assert(sv); assert(pat) -PERL_CALLCONV MAGIC* Perl_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAMS *const param) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MG_DUP \ - assert(param) +PERL_CALLCONV void Perl_warn_nocontext(const char* pat, ...) + __attribute__format__(__printf__,1,2) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_WARN_NOCONTEXT \ + assert(pat) -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -STATIC SV ** S_sv_dup_inc_multiple(pTHX_ SV *const *source, SV **dest, SSize_t items, CLONE_PARAMS *const param) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_4); -#define PERL_ARGS_ASSERT_SV_DUP_INC_MULTIPLE \ - assert(source); assert(dest); assert(param) +PERL_CALLCONV void Perl_warner_nocontext(U32 err, const char* pat, ...) + __attribute__format__(__printf__,2,3) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_WARNER_NOCONTEXT \ + assert(pat) #endif -PERL_CALLCONV SV* Perl_sv_dup(pTHX_ const SV *const sstr, CLONE_PARAMS *const param) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_DUP \ - assert(param) - -PERL_CALLCONV void Perl_rvpv_dup(pTHX_ SV *const dstr, const SV *const sstr, CLONE_PARAMS *const param) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_RVPV_DUP \ - assert(dstr); assert(sstr); assert(param) +#if defined(PERL_IMPLICIT_SYS) +PERL_CALLCONV PerlInterpreter* perl_alloc_using(struct IPerlMem *ipM, struct IPerlMem *ipMS, struct IPerlMem *ipMP, struct IPerlEnv *ipE, struct IPerlStdIO *ipStd, struct IPerlLIO *ipLIO, struct IPerlDir *ipD, struct IPerlSock *ipS, struct IPerlProc *ipP) + __attribute__nonnull__(1) + __attribute__nonnull__(2) + __attribute__nonnull__(3) + __attribute__nonnull__(4) + __attribute__nonnull__(5) + __attribute__nonnull__(6) + __attribute__nonnull__(7) + __attribute__nonnull__(8) + __attribute__nonnull__(9); +#define PERL_ARGS_ASSERT_PERL_ALLOC_USING \ + assert(ipM); assert(ipMS); assert(ipMP); assert(ipE); assert(ipStd); assert(ipLIO); assert(ipD); assert(ipS); assert(ipP) -PERL_CALLCONV yy_parser* Perl_parser_dup(pTHX_ const yy_parser *const proto, CLONE_PARAMS *const param) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_PARSER_DUP \ - assert(param) +# if defined(USE_ITHREADS) +PERL_CALLCONV PerlInterpreter* perl_clone_using(PerlInterpreter *proto_perl, UV flags, struct IPerlMem* ipM, struct IPerlMem* ipMS, struct IPerlMem* ipMP, struct IPerlEnv* ipE, struct IPerlStdIO* ipStd, struct IPerlLIO* ipLIO, struct IPerlDir* ipD, struct IPerlSock* ipS, struct IPerlProc* ipP) + __attribute__nonnull__(1) + __attribute__nonnull__(3) + __attribute__nonnull__(4) + __attribute__nonnull__(5) + __attribute__nonnull__(6) + __attribute__nonnull__(7) + __attribute__nonnull__(8) + __attribute__nonnull__(9) + __attribute__nonnull__(10) + __attribute__nonnull__(11); +#define PERL_ARGS_ASSERT_PERL_CLONE_USING \ + assert(proto_perl); assert(ipM); assert(ipMS); assert(ipMP); assert(ipE); assert(ipStd); assert(ipLIO); assert(ipD); assert(ipS); assert(ipP) +# endif #endif -PERL_CALLCONV PTR_TBL_t* Perl_ptr_table_new(pTHX) - __attribute__malloc__ - __attribute__warn_unused_result__; - -PERL_CALLCONV void* Perl_ptr_table_fetch(pTHX_ PTR_TBL_t *const tbl, const void *const sv) - __attribute__warn_unused_result__ +#if defined(PERL_IN_AV_C) +STATIC MAGIC* S_get_aux_mg(pTHX_ AV *av) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PTR_TABLE_FETCH \ - assert(tbl) +#define PERL_ARGS_ASSERT_GET_AUX_MG \ + assert(av) -PERL_CALLCONV void Perl_ptr_table_store(pTHX_ PTR_TBL_t *const tbl, const void *const oldsv, void *const newsv) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_PTR_TABLE_STORE \ - assert(tbl); assert(newsv) +#endif +#if defined(PERL_IN_DEB_C) +STATIC void S_deb_stack_n(pTHX_ SV** stack_base, I32 stack_min, I32 stack_max, I32 mark_min, I32 mark_max) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DEB_STACK_N \ + assert(stack_base) -PERL_CALLCONV void Perl_ptr_table_split(pTHX_ PTR_TBL_t *const tbl) +#endif +#if defined(PERL_IN_DOIO_C) +STATIC void S_exec_failed(pTHX_ const char *cmd, int fd, int do_report) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PTR_TABLE_SPLIT \ - assert(tbl) +#define PERL_ARGS_ASSERT_EXEC_FAILED \ + assert(cmd) -PERL_CALLCONV void Perl_ptr_table_clear(pTHX_ PTR_TBL_t *const tbl); -PERL_CALLCONV void Perl_ptr_table_free(pTHX_ PTR_TBL_t *const tbl); -#if defined(USE_ITHREADS) -# if defined(HAVE_INTERP_INTERN) -PERL_CALLCONV void Perl_sys_intern_dup(pTHX_ struct interp_intern* src, struct interp_intern* dst) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SYS_INTERN_DUP \ - assert(src); assert(dst) +STATIC bool S_ingroup(pTHX_ Gid_t testgid, bool effective) + __attribute__warn_unused_result__; -# endif -#endif -#if defined(HAVE_INTERP_INTERN) -PERL_CALLCONV void Perl_sys_intern_clear(pTHX); -PERL_CALLCONV void Perl_sys_intern_init(pTHX); #endif - -PERL_CALLCONV const char * Perl_custom_op_name(pTHX_ const OP *o) +#if defined(PERL_IN_DOOP_C) +STATIC I32 S_do_trans_complex(pTHX_ SV * const sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CUSTOM_OP_NAME \ - assert(o) +#define PERL_ARGS_ASSERT_DO_TRANS_COMPLEX \ + assert(sv) -PERL_CALLCONV const char * Perl_custom_op_desc(pTHX_ const OP *o) +STATIC I32 S_do_trans_complex_utf8(pTHX_ SV * const sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CUSTOM_OP_DESC \ - assert(o) - - -PERL_CALLCONV void Perl_sv_nosharing(pTHX_ SV *sv); -/* PERL_CALLCONV void Perl_sv_nolocking(pTHX_ SV *sv); */ -PERL_CALLCONV bool Perl_sv_destroyable(pTHX_ SV *sv); -#ifdef NO_MATHOMS -/* PERL_CALLCONV void Perl_sv_nounlocking(pTHX_ SV *sv); */ -#else -PERL_CALLCONV void Perl_sv_nounlocking(pTHX_ SV *sv); -#endif -PERL_CALLCONV int Perl_nothreadhook(pTHX); - -END_EXTERN_C +#define PERL_ARGS_ASSERT_DO_TRANS_COMPLEX_UTF8 \ + assert(sv) -#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT) -STATIC I32 S_do_trans_simple(pTHX_ SV * const sv) +STATIC I32 S_do_trans_count(pTHX_ SV * const sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DO_TRANS_SIMPLE \ +#define PERL_ARGS_ASSERT_DO_TRANS_COUNT \ assert(sv) -STATIC I32 S_do_trans_count(pTHX_ SV * const sv) +STATIC I32 S_do_trans_count_utf8(pTHX_ SV * const sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DO_TRANS_COUNT \ +#define PERL_ARGS_ASSERT_DO_TRANS_COUNT_UTF8 \ assert(sv) -STATIC I32 S_do_trans_complex(pTHX_ SV * const sv) +STATIC I32 S_do_trans_simple(pTHX_ SV * const sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DO_TRANS_COMPLEX \ +#define PERL_ARGS_ASSERT_DO_TRANS_SIMPLE \ assert(sv) STATIC I32 S_do_trans_simple_utf8(pTHX_ SV * const sv) @@ -4363,31 +5208,81 @@ STATIC I32 S_do_trans_simple_utf8(pTHX_ SV * const sv) #define PERL_ARGS_ASSERT_DO_TRANS_SIMPLE_UTF8 \ assert(sv) -STATIC I32 S_do_trans_count_utf8(pTHX_ SV * const sv) +#endif +#if defined(PERL_IN_DQUOTE_STATIC_C) +STATIC char S_grok_bslash_c(pTHX_ const char source, const bool utf8, const bool output_warning) + __attribute__warn_unused_result__; + +STATIC bool S_grok_bslash_o(pTHX_ const char* s, UV* uv, STRLEN* len, const char** error_msg, const bool output_warning) __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DO_TRANS_COUNT_UTF8 \ - assert(sv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_GROK_BSLASH_O \ + assert(s); assert(uv); assert(len); assert(error_msg) -STATIC I32 S_do_trans_complex_utf8(pTHX_ SV * const sv) +PERL_STATIC_INLINE I32 S_regcurly(pTHX_ const char *s) __attribute__warn_unused_result__ + __attribute__pure__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DO_TRANS_COMPLEX_UTF8 \ - assert(sv) +#define PERL_ARGS_ASSERT_REGCURLY \ + assert(s) #endif +#if defined(PERL_IN_DUMP_C) +STATIC CV* S_deb_curcv(pTHX_ const I32 ix); +STATIC void S_debprof(pTHX_ const OP *o) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DEBPROF \ + assert(o) -#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT) -STATIC void S_gv_init_sv(pTHX_ GV *gv, const svtype sv_type) +STATIC SV* S_pm_description(pTHX_ const PMOP *pm) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GV_INIT_SV \ - assert(gv) +#define PERL_ARGS_ASSERT_PM_DESCRIPTION \ + assert(pm) + +STATIC void S_sequence(pTHX_ const OP *o); +STATIC UV S_sequence_num(pTHX_ const OP *o); +STATIC void S_sequence_tail(pTHX_ const OP *o); +# if defined(PERL_MAD) +STATIC void S_xmldump_attr(pTHX_ I32 level, PerlIO *file, const char* pat, ...) + __attribute__format__(__printf__,pTHX_3,pTHX_4) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_XMLDUMP_ATTR \ + assert(file); assert(pat) + +# endif +#endif +#if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) +PERL_CALLCONV void Perl_hv_kill_backrefs(pTHX_ HV *hv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_KILL_BACKREFS \ + assert(hv) +#endif +#if defined(PERL_IN_GV_C) STATIC HV* S_gv_get_super_pkg(pTHX_ const char* name, I32 namelen) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_GV_GET_SUPER_PKG \ assert(name) +STATIC void S_gv_init_sv(pTHX_ GV *gv, const svtype sv_type) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GV_INIT_SV \ + assert(gv) + +STATIC void S_gv_magicalize_isa(pTHX_ GV *gv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA \ + assert(gv) + +STATIC void S_gv_magicalize_overload(pTHX_ GV *gv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GV_MAGICALIZE_OVERLOAD \ + assert(gv) + STATIC HV* S_require_tie_mod(pTHX_ GV *gv, const char *varpv, SV* namesv, const char *methpv, const U32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -4397,16 +5292,18 @@ STATIC HV* S_require_tie_mod(pTHX_ GV *gv, const char *varpv, SV* namesv, const assert(gv); assert(varpv); assert(namesv); assert(methpv) #endif +#if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_IN_OP_C) +PERL_CALLCONV void Perl_sv_add_backref(pTHX_ SV *const tsv, SV *const sv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_ADD_BACKREF \ + assert(tsv); assert(sv) -PERL_CALLCONV void* Perl_get_arena(pTHX_ const size_t arenasize, const svtype bodytype) - __attribute__malloc__ - __attribute__warn_unused_result__; - - -#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) -STATIC void S_hsplit(pTHX_ HV *hv) +#endif +#if defined(PERL_IN_HV_C) +STATIC void S_clear_placeholders(pTHX_ HV *hv, U32 items) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HSPLIT \ +#define PERL_ARGS_ASSERT_CLEAR_PLACEHOLDERS \ assert(hv) STATIC void S_hfreeentries(pTHX_ HV *hv) @@ -4414,22 +5311,17 @@ STATIC void S_hfreeentries(pTHX_ HV *hv) #define PERL_ARGS_ASSERT_HFREEENTRIES \ assert(hv) -STATIC I32 S_anonymise_cv(pTHX_ HEK *stash, SV *val) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_ANONYMISE_CV \ - assert(val) - -STATIC HE* S_new_he(pTHX) - __attribute__malloc__ - __attribute__warn_unused_result__; +STATIC void S_hsplit(pTHX_ HV *hv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HSPLIT \ + assert(hv) -STATIC HEK* S_save_hek_flags(const char *str, I32 len, U32 hash, int flags) - __attribute__malloc__ - __attribute__warn_unused_result__ +STATIC struct xpvhv_aux* S_hv_auxinit(HV *hv) __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_SAVE_HEK_FLAGS \ - assert(str) +#define PERL_ARGS_ASSERT_HV_AUXINIT \ + assert(hv) +STATIC SV* S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, int k_flags, I32 d_flags, U32 hash); STATIC void S_hv_magic_check(HV *hv, bool *needs_copy, bool *needs_store) __attribute__nonnull__(1) __attribute__nonnull__(2) @@ -4437,13 +5329,6 @@ STATIC void S_hv_magic_check(HV *hv, bool *needs_copy, bool *needs_store) #define PERL_ARGS_ASSERT_HV_MAGIC_CHECK \ assert(hv); assert(needs_copy); assert(needs_store) -STATIC void S_unshare_hek_or_pvn(pTHX_ const HEK* hek, const char* str, I32 len, U32 hash); -STATIC HEK* S_share_hek_flags(pTHX_ const char *str, I32 len, U32 hash, int flags) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SHARE_HEK_FLAGS \ - assert(str) - STATIC void S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, const char *msg) __attribute__noreturn__ __attribute__nonnull__(pTHX_2) @@ -4451,299 +5336,139 @@ STATIC void S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, const ch #define PERL_ARGS_ASSERT_HV_NOTALLOWED \ assert(key); assert(msg) -STATIC struct xpvhv_aux* S_hv_auxinit(HV *hv) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_HV_AUXINIT \ - assert(hv) - -STATIC SV* S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, int k_flags, I32 d_flags, U32 hash); -STATIC void S_clear_placeholders(pTHX_ HV *hv, U32 items) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CLEAR_PLACEHOLDERS \ - assert(hv) +STATIC HE* S_new_he(pTHX) + __attribute__malloc__ + __attribute__warn_unused_result__; STATIC SV * S_refcounted_he_value(pTHX_ const struct refcounted_he *he) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_REFCOUNTED_HE_VALUE \ assert(he) -#endif +STATIC HEK* S_save_hek_flags(const char *str, I32 len, U32 hash, int flags) + __attribute__malloc__ + __attribute__warn_unused_result__ + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_SAVE_HEK_FLAGS \ + assert(str) -#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) -STATIC void S_save_magic(pTHX_ I32 mgs_ix, SV *sv) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SAVE_MAGIC \ +STATIC HEK* S_share_hek_flags(pTHX_ const char *str, I32 len, U32 hash, int flags) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SHARE_HEK_FLAGS \ + assert(str) + +STATIC void S_unshare_hek_or_pvn(pTHX_ const HEK* hek, const char* str, I32 len, U32 hash); +#endif +#if defined(PERL_IN_HV_C) || defined(PERL_IN_MG_C) || defined(PERL_IN_SV_C) +PERL_CALLCONV void Perl_sv_kill_backrefs(pTHX_ SV *const sv, AV *const av) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_KILL_BACKREFS \ assert(sv) -STATIC int S_magic_methpack(pTHX_ SV *sv, const MAGIC *mg, const char *meth) +#endif +#if defined(PERL_IN_LOCALE_C) +# if defined(USE_LOCALE_NUMERIC) || defined(USE_LOCALE_COLLATE) +STATIC char* S_stdize_locale(pTHX_ char* locs) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_STDIZE_LOCALE \ + assert(locs) + +# endif +#endif +#if defined(PERL_IN_MG_C) +STATIC SV* S_magic_methcall1(pTHX_ SV *sv, const MAGIC *mg, const char *meth, U32 flags, int n, SV *val) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_MAGIC_METHPACK \ +#define PERL_ARGS_ASSERT_MAGIC_METHCALL1 \ assert(sv); assert(mg); assert(meth) -STATIC int S_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, const char *meth, I32 f, int n, SV *val) +STATIC int S_magic_methpack(pTHX_ SV *sv, const MAGIC *mg, const char *meth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_MAGIC_METHCALL \ +#define PERL_ARGS_ASSERT_MAGIC_METHPACK \ assert(sv); assert(mg); assert(meth) STATIC void S_restore_magic(pTHX_ const void *p); -STATIC void S_unwind_handler_stack(pTHX_ const void *p) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_UNWIND_HANDLER_STACK \ - assert(p) - +STATIC void S_save_magic(pTHX_ I32 mgs_ix, SV *sv) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SAVE_MAGIC \ + assert(sv) +STATIC void S_unwind_handler_stack(pTHX_ const void *p); #endif +#if defined(PERL_IN_MRO_C) +STATIC void S_mro_clean_isarev(pTHX_ HV * const isa, const char * const name, const STRLEN len, HV * const exceptions) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_MRO_CLEAN_ISAREV \ + assert(isa); assert(name) -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -PERL_CALLCONV OP* Perl_ck_anoncode(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_ANONCODE \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_bitop(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_BITOP \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_concat(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_CONCAT \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_defined(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_DEFINED \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_delete(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_DELETE \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_die(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_DIE \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_eof(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_EOF \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_eval(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_EVAL \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_exec(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_EXEC \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_exists(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_EXISTS \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_exit(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_EXIT \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_ftst(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_FTST \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_fun(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_FUN \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_glob(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_GLOB \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_grep(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_GREP \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_index(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_INDEX \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_join(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_JOIN \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_lfun(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_LFUN \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_listiob(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_LISTIOB \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_match(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_MATCH \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_method(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_METHOD \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_null(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_NULL \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_open(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_OPEN \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_readline(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_READLINE \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_repeat(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_REPEAT \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_require(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_REQUIRE \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_return(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_RETURN \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_rfun(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_RFUN \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_rvconst(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_RVCONST \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_sassign(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_SASSIGN \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_select(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_SELECT \ - assert(o) - -PERL_CALLCONV OP* Perl_ck_shift(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_SHIFT \ - assert(o) +STATIC void S_mro_gather_and_rename(pTHX_ HV * const stashes, HV * const seen_stashes, HV *stash, HV *oldstash, SV *namesv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_5); +#define PERL_ARGS_ASSERT_MRO_GATHER_AND_RENAME \ + assert(stashes); assert(seen_stashes); assert(namesv) -PERL_CALLCONV OP* Perl_ck_sort(pTHX_ OP *o) - __attribute__warn_unused_result__ +STATIC AV* S_mro_get_linear_isa_dfs(pTHX_ HV* stash, U32 level) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_SORT \ - assert(o) +#define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA_DFS \ + assert(stash) -PERL_CALLCONV OP* Perl_ck_spair(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_SPAIR \ - assert(o) +#endif +#if defined(PERL_IN_NUMERIC_C) +STATIC NV S_mulexp10(NV value, I32 exponent); +#endif +#if defined(PERL_IN_OP_C) +STATIC void S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs, bool for_my) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_APPLY_ATTRS \ + assert(stash); assert(target) -PERL_CALLCONV OP* Perl_ck_split(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_SPLIT \ - assert(o) +STATIC void S_apply_attrs_my(pTHX_ HV *stash, OP *target, OP *attrs, OP **imopsp) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_APPLY_ATTRS_MY \ + assert(stash); assert(target); assert(imopsp) -PERL_CALLCONV OP* Perl_ck_subr(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_SUBR \ - assert(o) +STATIC void S_bad_type(pTHX_ I32 n, const char *t, const char *name, const OP *kid) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_BAD_TYPE \ + assert(t); assert(name); assert(kid) -PERL_CALLCONV OP* Perl_ck_substr(pTHX_ OP *o) - __attribute__warn_unused_result__ +STATIC void S_cop_free(pTHX_ COP *cop) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_SUBSTR \ - assert(o) +#define PERL_ARGS_ASSERT_COP_FREE \ + assert(cop) -PERL_CALLCONV OP* Perl_ck_svconst(pTHX_ OP *o) - __attribute__warn_unused_result__ +STATIC OP * S_dup_attrlist(pTHX_ OP *o) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_SVCONST \ +#define PERL_ARGS_ASSERT_DUP_ATTRLIST \ assert(o) -PERL_CALLCONV OP* Perl_ck_trunc(pTHX_ OP *o) - __attribute__warn_unused_result__ +STATIC void S_find_and_forget_pmops(pTHX_ OP *o) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_TRUNC \ +#define PERL_ARGS_ASSERT_FIND_AND_FORGET_PMOPS \ assert(o) -PERL_CALLCONV OP* Perl_ck_unpack(pTHX_ OP *o) - __attribute__warn_unused_result__ +STATIC OP* S_fold_constants(pTHX_ OP *o) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_UNPACK \ +#define PERL_ARGS_ASSERT_FOLD_CONSTANTS \ assert(o) -PERL_CALLCONV OP* Perl_ck_each(pTHX_ OP *o) - __attribute__warn_unused_result__ +STATIC OP* S_force_list(pTHX_ OP* arg); +STATIC OP* S_gen_constant_list(pTHX_ OP* o); +STATIC const char* S_gv_ename(pTHX_ GV *gv) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CK_EACH \ - assert(o) +#define PERL_ARGS_ASSERT_GV_ENAME \ + assert(gv) STATIC bool S_is_handle_constructor(const OP *o, I32 numargs) __attribute__warn_unused_result__ @@ -4751,46 +5476,33 @@ STATIC bool S_is_handle_constructor(const OP *o, I32 numargs) #define PERL_ARGS_ASSERT_IS_HANDLE_CONSTRUCTOR \ assert(o) -STATIC I32 S_is_list_assignment(pTHX_ const OP *o) - __attribute__warn_unused_result__; - -# ifdef USE_ITHREADS -STATIC void S_forget_pmop(pTHX_ PMOP *const o, U32 flags) +STATIC OP* S_is_inplace_av(pTHX_ OP* o, OP* oright) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_FORGET_PMOP \ +#define PERL_ARGS_ASSERT_IS_INPLACE_AV \ assert(o) -# else -STATIC void S_forget_pmop(pTHX_ PMOP *const o) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_FORGET_PMOP \ - assert(o) +STATIC I32 S_is_list_assignment(pTHX_ const OP *o) + __attribute__warn_unused_result__; -# endif -STATIC void S_find_and_forget_pmops(pTHX_ OP *o) +STATIC OP* S_listkids(pTHX_ OP* o); +STATIC bool S_looks_like_bool(pTHX_ const OP* o) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_FIND_AND_FORGET_PMOPS \ +#define PERL_ARGS_ASSERT_LOOKS_LIKE_BOOL \ assert(o) -STATIC void S_cop_free(pTHX_ COP *cop) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_COP_FREE \ - assert(cop) - STATIC OP* S_modkids(pTHX_ OP *o, I32 type); -STATIC OP* S_scalarboolean(pTHX_ OP *o) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SCALARBOOLEAN \ - assert(o) +STATIC OP * S_my_kid(pTHX_ OP *o, OP *attrs, OP **imopsp) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_MY_KID \ + assert(imopsp) STATIC OP* S_newDEFSVOP(pTHX) __attribute__warn_unused_result__; -STATIC OP* S_search_const(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SEARCH_CONST \ - assert(o) +STATIC OP* S_newGIVWHENOP(pTHX_ OP* cond, OP *block, I32 enter_opcode, I32 leave_opcode, PADOFFSET entertarg) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_NEWGIVWHENOP \ + assert(block) STATIC OP* S_new_logop(pTHX_ I32 type, I32 flags, OP **firstp, OP **otherp) __attribute__warn_unused_result__ @@ -4799,61 +5511,60 @@ STATIC OP* S_new_logop(pTHX_ I32 type, I32 flags, OP **firstp, OP **otherp) #define PERL_ARGS_ASSERT_NEW_LOGOP \ assert(firstp); assert(otherp) -STATIC void S_simplify_sort(pTHX_ OP *o) +STATIC void S_no_bareword_allowed(pTHX_ const OP *o) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SIMPLIFY_SORT \ +#define PERL_ARGS_ASSERT_NO_BAREWORD_ALLOWED \ assert(o) -STATIC const char* S_gv_ename(pTHX_ GV *gv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GV_ENAME \ - assert(gv) - -STATIC bool S_scalar_mod_type(const OP *o, I32 type) +STATIC OP* S_no_fh_allowed(pTHX_ OP *o) __attribute__warn_unused_result__ - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_SCALAR_MOD_TYPE \ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_NO_FH_ALLOWED \ assert(o) -STATIC OP * S_my_kid(pTHX_ OP *o, OP *attrs, OP **imopsp) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_MY_KID \ - assert(imopsp) - -STATIC OP * S_dup_attrlist(pTHX_ OP *o) +STATIC OP* S_opt_scalarhv(pTHX_ OP* rep_op) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DUP_ATTRLIST \ - assert(o) +#define PERL_ARGS_ASSERT_OPT_SCALARHV \ + assert(rep_op) -STATIC void S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs, bool for_my) +STATIC OP* S_pmtrans(pTHX_ OP* o, OP* expr, OP* repl) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_APPLY_ATTRS \ - assert(stash); assert(target) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_PMTRANS \ + assert(o); assert(expr); assert(repl) -STATIC void S_apply_attrs_my(pTHX_ HV *stash, OP *target, OP *attrs, OP **imopsp) +STATIC void S_process_special_blocks(pTHX_ const char *const fullname, GV *const gv, CV *const cv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_4); -#define PERL_ARGS_ASSERT_APPLY_ATTRS_MY \ - assert(stash); assert(target); assert(imopsp) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_PROCESS_SPECIAL_BLOCKS \ + assert(fullname); assert(gv); assert(cv) -STATIC void S_bad_type(pTHX_ I32 n, const char *t, const char *name, const OP *kid) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); -#define PERL_ARGS_ASSERT_BAD_TYPE \ - assert(t); assert(name); assert(kid) +STATIC OP* S_ref_array_or_hash(pTHX_ OP* cond); +STATIC OP* S_refkids(pTHX_ OP* o, I32 type); +STATIC bool S_scalar_mod_type(const OP *o, I32 type) + __attribute__warn_unused_result__ + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_SCALAR_MOD_TYPE \ + assert(o) -STATIC void S_no_bareword_allowed(pTHX_ const OP *o) +STATIC OP* S_scalarboolean(pTHX_ OP *o) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_NO_BAREWORD_ALLOWED \ +#define PERL_ARGS_ASSERT_SCALARBOOLEAN \ assert(o) -STATIC OP* S_no_fh_allowed(pTHX_ OP *o) +STATIC OP* S_scalarkids(pTHX_ OP* o); +STATIC OP* S_scalarseq(pTHX_ OP* o); +STATIC OP* S_search_const(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_NO_FH_ALLOWED \ +#define PERL_ARGS_ASSERT_SEARCH_CONST \ + assert(o) + +STATIC void S_simplify_sort(pTHX_ OP *o) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SIMPLIFY_SORT \ assert(o) STATIC OP* S_too_few_arguments(pTHX_ OP *o, const char* name) @@ -4870,54 +5581,36 @@ STATIC OP* S_too_many_arguments(pTHX_ OP *o, const char* name) #define PERL_ARGS_ASSERT_TOO_MANY_ARGUMENTS \ assert(o); assert(name) -STATIC bool S_looks_like_bool(pTHX_ const OP* o) +# if defined(USE_ITHREADS) +STATIC void S_forget_pmop(pTHX_ PMOP *const o, U32 flags) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_LOOKS_LIKE_BOOL \ +#define PERL_ARGS_ASSERT_FORGET_PMOP \ assert(o) -STATIC OP* S_newGIVWHENOP(pTHX_ OP* cond, OP *block, I32 enter_opcode, I32 leave_opcode, PADOFFSET entertarg) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_NEWGIVWHENOP \ - assert(block) - -STATIC OP* S_ref_array_or_hash(pTHX_ OP* cond); -STATIC void S_process_special_blocks(pTHX_ const char *const fullname, GV *const gv, CV *const cv) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_PROCESS_SPECIAL_BLOCKS \ - assert(fullname); assert(gv); assert(cv) - +# endif #endif -#if defined(PL_OP_SLAB_ALLOC) -PERL_CALLCONV void* Perl_Slab_Alloc(pTHX_ size_t sz) - __attribute__malloc__ - __attribute__warn_unused_result__; - -PERL_CALLCONV void Perl_Slab_Free(pTHX_ void *op) +#if defined(PERL_IN_PAD_C) +STATIC PADOFFSET S_pad_add_name_sv(pTHX_ SV *namesv, const U32 flags, HV *typestash, HV *ourstash) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SLAB_FREE \ - assert(op) +#define PERL_ARGS_ASSERT_PAD_ADD_NAME_SV \ + assert(namesv) -# if defined(PERL_DEBUG_READONLY_OPS) -PERL_CALLCONV void Perl_pending_Slabs_to_ro(pTHX); -PERL_CALLCONV OP * Perl_op_refcnt_inc(pTHX_ OP *o); -PERL_CALLCONV PADOFFSET Perl_op_refcnt_dec(pTHX_ OP *o) +STATIC void S_pad_check_dup(pTHX_ SV *name, const U32 flags, const HV *ourstash) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_OP_REFCNT_DEC \ - assert(o) +#define PERL_ARGS_ASSERT_PAD_CHECK_DUP \ + assert(name) -# if defined(PERL_IN_OP_C) -STATIC void S_Slab_to_rw(pTHX_ void *op) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SLAB_TO_RW \ - assert(op) +STATIC PADOFFSET S_pad_findlex(pTHX_ const char *name, const CV* cv, U32 seq, int warn, SV** out_capture, SV** out_name_sv, int *out_flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_6) + __attribute__nonnull__(pTHX_7); +#define PERL_ARGS_ASSERT_PAD_FINDLEX \ + assert(name); assert(cv); assert(out_name_sv); assert(out_flags) -# endif -# endif +STATIC void S_pad_reset(pTHX); #endif - -#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_PERL_C) STATIC void S_find_beginning(pTHX_ SV* linestr_sv, PerlIO *rsfp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -4935,8 +5628,8 @@ STATIC void S_incpush_use_sep(pTHX_ const char *p, STRLEN len, U32 flags) #define PERL_ARGS_ASSERT_INCPUSH_USE_SEP \ assert(p) -STATIC void S_init_interp(pTHX); STATIC void S_init_ids(pTHX); +STATIC void S_init_interp(pTHX); STATIC void S_init_main_stash(pTHX); STATIC void S_init_perllib(pTHX); STATIC void S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env) @@ -4956,33 +5649,23 @@ STATIC int S_open_script(pTHX_ const char *scriptname, bool dosearch, bool *suid #define PERL_ARGS_ASSERT_OPEN_SCRIPT \ assert(scriptname); assert(suidscript); assert(rsfpp) +STATIC void* S_parse_body(pTHX_ char **env, XSINIT_t xsinit); +STATIC void S_run_body(pTHX_ I32 oldscope) + __attribute__noreturn__; + STATIC void S_usage(pTHX_ const char *name) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_USAGE \ assert(name) -#ifndef SETUID_SCRIPTS_ARE_SECURE_NOW -STATIC void S_validate_suid(pTHX_ PerlIO *rsfp) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_VALIDATE_SUID \ - assert(rsfp) - #endif - -STATIC void* S_parse_body(pTHX_ char **env, XSINIT_t xsinit); -STATIC void S_run_body(pTHX_ I32 oldscope) - __attribute__noreturn__; - -STATIC SV * S_incpush_if_exists(pTHX_ AV *const av, SV *dir, SV *const stem) +#if defined(PERL_IN_PP_C) +STATIC void S_do_chomp(pTHX_ SV *retval, SV *sv, bool chomping) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_INCPUSH_IF_EXISTS \ - assert(av); assert(dir); assert(stem) - -#endif + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_DO_CHOMP \ + assert(retval); assert(sv) -#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT) STATIC OP* S_do_delete_local(pTHX); STATIC SV* S_refto(pTHX_ SV* sv) __attribute__warn_unused_result__ @@ -4991,7 +5674,7 @@ STATIC SV* S_refto(pTHX_ SV* sv) assert(sv) #endif -#if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C) PERL_CALLCONV GV* Perl_softref2xv(pTHX_ SV *const sv, const char *const what, const svtype type, SV ***spp) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) @@ -5001,95 +5684,23 @@ PERL_CALLCONV GV* Perl_softref2xv(pTHX_ SV *const sv, const char *const what, co assert(sv); assert(what); assert(spp) #endif - -#if defined(PERL_IN_PP_PACK_C) || defined(PERL_DECL_PROT) -STATIC I32 S_unpack_rec(pTHX_ struct tempsym* symptr, const char *s, const char *strbeg, const char *strend, const char **new_s) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); -#define PERL_ARGS_ASSERT_UNPACK_REC \ - assert(symptr); assert(s); assert(strbeg); assert(strend) - -STATIC SV ** S_pack_rec(pTHX_ SV *cat, struct tempsym* symptr, SV **beglist, SV **endlist) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); -#define PERL_ARGS_ASSERT_PACK_REC \ - assert(cat); assert(symptr); assert(beglist); assert(endlist) - -STATIC SV* S_mul128(pTHX_ SV *sv, U8 m) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MUL128 \ - assert(sv) - -STATIC I32 S_measure_struct(pTHX_ struct tempsym* symptr) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MEASURE_STRUCT \ - assert(symptr) - -STATIC bool S_next_symbol(pTHX_ struct tempsym* symptr) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_NEXT_SYMBOL \ - assert(symptr) - -STATIC SV* S_is_an_int(pTHX_ const char *s, STRLEN l) +#if defined(PERL_IN_PP_CTL_C) +STATIC PerlIO * S_check_type_and_open(pTHX_ SV *name) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_AN_INT \ - assert(s) - -STATIC int S_div128(pTHX_ SV *pnum, bool *done) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_DIV128 \ - assert(pnum); assert(done) - -STATIC const char * S_group_end(pTHX_ const char *patptr, const char *patend, char ender) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_GROUP_END \ - assert(patptr); assert(patend) - -STATIC const char * S_get_num(pTHX_ const char *patptr, I32 *lenptr) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_GET_NUM \ - assert(patptr); assert(lenptr) - -STATIC bool S_need_utf8(const char *pat, const char *patend) - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_NEED_UTF8 \ - assert(pat); assert(patend) - -STATIC char S_first_symbol(const char *pat, const char *patend) - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_FIRST_SYMBOL \ - assert(pat); assert(patend) +#define PERL_ARGS_ASSERT_CHECK_TYPE_AND_OPEN \ + assert(name) -STATIC char * S_sv_exp_grow(pTHX_ SV *sv, STRLEN needed) - __attribute__warn_unused_result__ +STATIC void S_destroy_matcher(pTHX_ PMOP* matcher) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_EXP_GROW \ - assert(sv) - -STATIC char * S_bytes_to_uni(const U8 *start, STRLEN len, char *dest) - __attribute__warn_unused_result__ - __attribute__nonnull__(1) - __attribute__nonnull__(3); -#define PERL_ARGS_ASSERT_BYTES_TO_UNI \ - assert(start); assert(dest) - -#endif +#define PERL_ARGS_ASSERT_DESTROY_MATCHER \ + assert(matcher) -#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) +STATIC OP* S_do_smartmatch(pTHX_ HV* seen_this, HV* seen_other); STATIC OP* S_docatch(pTHX_ OP *o) __attribute__warn_unused_result__; +STATIC bool S_doeval(pTHX_ int gimme, OP** startop, CV* outside, U32 seq); STATIC OP* S_dofindlabel(pTHX_ OP *o, const char *label, OP **opstack, OP **oplimit) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) @@ -5099,15 +5710,11 @@ STATIC OP* S_dofindlabel(pTHX_ OP *o, const char *label, OP **opstack, OP **opli #define PERL_ARGS_ASSERT_DOFINDLABEL \ assert(o); assert(label); assert(opstack); assert(oplimit) -STATIC OP* S_doparseform(pTHX_ SV *sv) - __attribute__warn_unused_result__ +STATIC MAGIC * S_doparseform(pTHX_ SV *sv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_DOPARSEFORM \ assert(sv) -STATIC bool S_num_overflow(NV value, I32 fldsize, I32 frcsize) - __attribute__warn_unused_result__; - STATIC I32 S_dopoptoeval(pTHX_ I32 startingblock) __attribute__warn_unused_result__; @@ -5132,26 +5739,22 @@ STATIC I32 S_dopoptosub_at(pTHX_ const PERL_CONTEXT* cxstk, I32 startingblock) STATIC I32 S_dopoptowhen(pTHX_ I32 startingblock) __attribute__warn_unused_result__; -STATIC void S_save_lines(pTHX_ AV *array, SV *sv) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SAVE_LINES \ - assert(sv) - -STATIC bool S_doeval(pTHX_ int gimme, OP** startop, CV* outside, U32 seq); -STATIC PerlIO * S_check_type_and_open(pTHX_ const char *name) +STATIC PMOP* S_make_matcher(pTHX_ REGEXP* re) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CHECK_TYPE_AND_OPEN \ - assert(name) +#define PERL_ARGS_ASSERT_MAKE_MATCHER \ + assert(re) -#ifndef PERL_DISABLE_PMC -STATIC PerlIO * S_doopen_pm(pTHX_ const char *name, const STRLEN namelen) +STATIC bool S_matcher_matches_sv(pTHX_ PMOP* matcher, SV* sv) __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DOOPEN_PM \ - assert(name) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_MATCHER_MATCHES_SV \ + assert(matcher); assert(sv) + +STATIC bool S_num_overflow(NV value, I32 fldsize, I32 frcsize) + __attribute__warn_unused_result__; -#endif STATIC bool S_path_is_absolute(const char *name) __attribute__warn_unused_result__ __attribute__nonnull__(1); @@ -5164,28 +5767,24 @@ STATIC I32 S_run_user_filter(pTHX_ int idx, SV *buf_sv, int maxlen) #define PERL_ARGS_ASSERT_RUN_USER_FILTER \ assert(buf_sv) -STATIC PMOP* S_make_matcher(pTHX_ REGEXP* re) - __attribute__warn_unused_result__ +STATIC void S_rxres_free(pTHX_ void** rsp) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MAKE_MATCHER \ - assert(re) +#define PERL_ARGS_ASSERT_RXRES_FREE \ + assert(rsp) -STATIC bool S_matcher_matches_sv(pTHX_ PMOP* matcher, SV* sv) - __attribute__warn_unused_result__ +STATIC void S_rxres_restore(pTHX_ void **rsp, REGEXP *rx) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MATCHER_MATCHES_SV \ - assert(matcher); assert(sv) +#define PERL_ARGS_ASSERT_RXRES_RESTORE \ + assert(rsp); assert(rx) -STATIC void S_destroy_matcher(pTHX_ PMOP* matcher) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DESTROY_MATCHER \ - assert(matcher) +STATIC void S_save_lines(pTHX_ AV *array, SV *sv) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SAVE_LINES \ + assert(sv) -STATIC OP* S_do_smartmatch(pTHX_ HV* seen_this, HV* seen_other); #endif - -#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_PP_HOT_C) STATIC void S_do_oddball(pTHX_ HV *hash, SV **relem, SV **firstrelem) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -5200,32 +5799,90 @@ STATIC SV* S_method_common(pTHX_ SV* meth, U32* hashp) assert(meth) #endif +#if defined(PERL_IN_PP_PACK_C) +STATIC char * S_bytes_to_uni(const U8 *start, STRLEN len, char *dest) + __attribute__warn_unused_result__ + __attribute__nonnull__(1) + __attribute__nonnull__(3); +#define PERL_ARGS_ASSERT_BYTES_TO_UNI \ + assert(start); assert(dest) -#if defined(PERL_IN_PP_SORT_C) || defined(PERL_DECL_PROT) -STATIC I32 S_sv_ncmp(pTHX_ SV *const a, SV *const b) +STATIC int S_div128(pTHX_ SV *pnum, bool *done) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_NCMP \ - assert(a); assert(b) +#define PERL_ARGS_ASSERT_DIV128 \ + assert(pnum); assert(done) -STATIC I32 S_sv_i_ncmp(pTHX_ SV *const a, SV *const b) +STATIC char S_first_symbol(const char *pat, const char *patend) + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_FIRST_SYMBOL \ + assert(pat); assert(patend) + +STATIC const char * S_get_num(pTHX_ const char *patptr, I32 *lenptr) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_I_NCMP \ - assert(a); assert(b) +#define PERL_ARGS_ASSERT_GET_NUM \ + assert(patptr); assert(lenptr) -STATIC I32 S_amagic_ncmp(pTHX_ SV *const a, SV *const b) +STATIC const char * S_group_end(pTHX_ const char *patptr, const char *patend, char ender) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_AMAGIC_NCMP \ - assert(a); assert(b) +#define PERL_ARGS_ASSERT_GROUP_END \ + assert(patptr); assert(patend) -STATIC I32 S_amagic_i_ncmp(pTHX_ SV *const a, SV *const b) +STATIC SV* S_is_an_int(pTHX_ const char *s, STRLEN l) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_AN_INT \ + assert(s) + +STATIC I32 S_measure_struct(pTHX_ struct tempsym* symptr) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_MEASURE_STRUCT \ + assert(symptr) + +STATIC SV* S_mul128(pTHX_ SV *sv, U8 m) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_MUL128 \ + assert(sv) + +STATIC bool S_need_utf8(const char *pat, const char *patend) + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_NEED_UTF8 \ + assert(pat); assert(patend) + +STATIC bool S_next_symbol(pTHX_ struct tempsym* symptr) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_NEXT_SYMBOL \ + assert(symptr) + +STATIC SV ** S_pack_rec(pTHX_ SV *cat, struct tempsym* symptr, SV **beglist, SV **endlist) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_AMAGIC_I_NCMP \ - assert(a); assert(b) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_PACK_REC \ + assert(cat); assert(symptr); assert(beglist); assert(endlist) + +STATIC char * S_sv_exp_grow(pTHX_ SV *sv, STRLEN needed) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_EXP_GROW \ + assert(sv) +STATIC I32 S_unpack_rec(pTHX_ struct tempsym* symptr, const char *s, const char *strbeg, const char *strend, const char **new_s) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_UNPACK_REC \ + assert(symptr); assert(s); assert(strbeg); assert(strend) + +#endif +#if defined(PERL_IN_PP_SORT_C) STATIC I32 S_amagic_cmp(pTHX_ SV *const str1, SV *const str2) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -5238,32 +5895,55 @@ STATIC I32 S_amagic_cmp_locale(pTHX_ SV *const str1, SV *const str2) #define PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE \ assert(str1); assert(str2) +STATIC I32 S_amagic_i_ncmp(pTHX_ SV *const a, SV *const b) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_AMAGIC_I_NCMP \ + assert(a); assert(b) + +STATIC I32 S_amagic_ncmp(pTHX_ SV *const a, SV *const b) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_AMAGIC_NCMP \ + assert(a); assert(b) + +STATIC void S_qsortsvu(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t compare) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_QSORTSVU \ + assert(compare) + STATIC I32 S_sortcv(pTHX_ SV *const a, SV *const b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_SORTCV \ assert(a); assert(b) +STATIC I32 S_sortcv_stacked(pTHX_ SV *const a, SV *const b) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SORTCV_STACKED \ + assert(a); assert(b) + STATIC I32 S_sortcv_xsub(pTHX_ SV *const a, SV *const b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_SORTCV_XSUB \ assert(a); assert(b) -STATIC I32 S_sortcv_stacked(pTHX_ SV *const a, SV *const b) +STATIC I32 S_sv_i_ncmp(pTHX_ SV *const a, SV *const b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SORTCV_STACKED \ +#define PERL_ARGS_ASSERT_SV_I_NCMP \ assert(a); assert(b) -STATIC void S_qsortsvu(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t compare) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_QSORTSVU \ - assert(compare) +STATIC I32 S_sv_ncmp(pTHX_ SV *const a, SV *const b) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_NCMP \ + assert(a); assert(b) #endif - -#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_PP_SYS_C) STATIC OP* S_doform(pTHX_ CV *cv, GV *gv, OP *retop) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -5271,55 +5951,169 @@ STATIC OP* S_doform(pTHX_ CV *cv, GV *gv, OP *retop) #define PERL_ARGS_ASSERT_DOFORM \ assert(cv); assert(gv); assert(retop) -# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) -STATIC int S_dooneliner(pTHX_ const char *cmd, const char *filename) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_DOONELINER \ - assert(cmd); assert(filename) - -# endif STATIC SV * S_space_join_names_mortal(pTHX_ char *const *array) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL \ assert(array) #endif - -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) -STATIC regnode* S_reg(pTHX_ struct RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth) +#if defined(PERL_IN_REGCOMP_C) +STATIC void S_add_alternate(pTHX_ AV** alternate_ptr, U8* string, STRLEN len) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_REG \ - assert(pRExC_state); assert(flagp) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_ADD_ALTERNATE \ + assert(alternate_ptr); assert(string) -STATIC regnode* S_reganode(pTHX_ struct RExC_state_t *pRExC_state, U8 op, U32 arg) +PERL_STATIC_INLINE HV* S_add_cp_to_invlist(pTHX_ HV* invlist, const UV cp) + __attribute__warn_unused_result__; + +STATIC U32 S_add_data(struct RExC_state_t *pRExC_state, U32 n, const char *s) + __attribute__warn_unused_result__ + __attribute__nonnull__(1) + __attribute__nonnull__(3); +#define PERL_ARGS_ASSERT_ADD_DATA \ + assert(pRExC_state); assert(s) + +STATIC HV* S_add_range_to_invlist(pTHX_ HV* invlist, const UV start, const UV end) + __attribute__warn_unused_result__; + +STATIC void S_checkposixcc(pTHX_ struct RExC_state_t *pRExC_state) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_REGANODE \ +#define PERL_ARGS_ASSERT_CHECKPOSIXCC \ assert(pRExC_state) -STATIC regnode* S_regatom(pTHX_ struct RExC_state_t *pRExC_state, I32 *flagp, U32 depth) +STATIC void S_cl_and(struct regnode_charclass_class *cl, const struct regnode_charclass_class *and_with) + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_CL_AND \ + assert(cl); assert(and_with) + +STATIC void S_cl_anything(const struct RExC_state_t *pRExC_state, struct regnode_charclass_class *cl) + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_CL_ANYTHING \ + assert(pRExC_state); assert(cl) + +STATIC void S_cl_init(const struct RExC_state_t *pRExC_state, struct regnode_charclass_class *cl) + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_CL_INIT \ + assert(pRExC_state); assert(cl) + +STATIC int S_cl_is_anything(const struct regnode_charclass_class *cl) + __attribute__warn_unused_result__ + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_CL_IS_ANYTHING \ + assert(cl) + +STATIC void S_cl_or(const struct RExC_state_t *pRExC_state, struct regnode_charclass_class *cl, const struct regnode_charclass_class *or_with) + __attribute__nonnull__(1) + __attribute__nonnull__(2) + __attribute__nonnull__(3); +#define PERL_ARGS_ASSERT_CL_OR \ + assert(pRExC_state); assert(cl); assert(or_with) + +PERL_STATIC_INLINE UV* S_invlist_array(pTHX_ HV* const invlist) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_INVLIST_ARRAY \ + assert(invlist) + +PERL_STATIC_INLINE void S_invlist_destroy(pTHX_ HV* const invlist) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_INVLIST_DESTROY \ + assert(invlist) + +STATIC void S_invlist_extend(pTHX_ HV* const invlist, const UV len) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_INVLIST_EXTEND \ + assert(invlist) + +STATIC HV* S_invlist_intersection(pTHX_ HV* const a, HV* const b) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_REGATOM \ - assert(pRExC_state); assert(flagp) +#define PERL_ARGS_ASSERT_INVLIST_INTERSECTION \ + assert(a); assert(b) -STATIC regnode* S_regbranch(pTHX_ struct RExC_state_t *pRExC_state, I32 *flagp, I32 first, U32 depth) +PERL_STATIC_INLINE UV S_invlist_len(pTHX_ HV* const invlist) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_INVLIST_LEN \ + assert(invlist) + +PERL_STATIC_INLINE UV S_invlist_max(pTHX_ HV* const invlist) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_INVLIST_MAX \ + assert(invlist) + +PERL_STATIC_INLINE void S_invlist_set_len(pTHX_ HV* const invlist, const UV len) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_INVLIST_SET_LEN \ + assert(invlist) + +PERL_STATIC_INLINE void S_invlist_set_max(pTHX_ HV* const invlist, const UV max) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_INVLIST_SET_MAX \ + assert(invlist) + +PERL_STATIC_INLINE void S_invlist_trim(pTHX_ HV* const invlist) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_INVLIST_TRIM \ + assert(invlist) + +STATIC HV* S_invlist_union(pTHX_ HV* const a, HV* const b) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_REGBRANCH \ - assert(pRExC_state); assert(flagp) +#define PERL_ARGS_ASSERT_INVLIST_UNION \ + assert(a); assert(b) -STATIC STRLEN S_reguni(pTHX_ const struct RExC_state_t *pRExC_state, UV uv, char *s) +STATIC U32 S_join_exact(pTHX_ struct RExC_state_t *pRExC_state, regnode *scan, I32 *min, U32 flags, regnode *val, U32 depth) __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_REGUNI \ - assert(pRExC_state); assert(s) +#define PERL_ARGS_ASSERT_JOIN_EXACT \ + assert(pRExC_state); assert(scan); assert(min) -STATIC regnode* S_regclass(pTHX_ struct RExC_state_t *pRExC_state, U32 depth) +STATIC I32 S_make_trie(pTHX_ struct RExC_state_t *pRExC_state, regnode *startbranch, regnode *first, regnode *last, regnode *tail, U32 word_count, U32 flags, U32 depth) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4) + __attribute__nonnull__(pTHX_5); +#define PERL_ARGS_ASSERT_MAKE_TRIE \ + assert(pRExC_state); assert(startbranch); assert(first); assert(last); assert(tail) + +STATIC void S_make_trie_failtable(pTHX_ struct RExC_state_t *pRExC_state, regnode *source, regnode *stclass, U32 depth) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_MAKE_TRIE_FAILTABLE \ + assert(pRExC_state); assert(source); assert(stclass) + +STATIC char * S_nextchar(pTHX_ struct RExC_state_t *pRExC_state) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_REGCLASS \ +#define PERL_ARGS_ASSERT_NEXTCHAR \ + assert(pRExC_state) + +STATIC void S_re_croak2(pTHX_ const char* pat1, const char* pat2, ...) + __attribute__noreturn__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_RE_CROAK2 \ + assert(pat1); assert(pat2) + +STATIC regnode* S_reg(pTHX_ struct RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_REG \ + assert(pRExC_state); assert(flagp) + +STATIC regnode* S_reg_namedseq(pTHX_ struct RExC_state_t *pRExC_state, UV *valuep, I32 *flagp, U32 depth) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_REG_NAMEDSEQ \ assert(pRExC_state) STATIC regnode* S_reg_node(pTHX_ struct RExC_state_t *pRExC_state, U8 op) @@ -5332,15 +6126,36 @@ STATIC UV S_reg_recode(pTHX_ const char value, SV **encp) #define PERL_ARGS_ASSERT_REG_RECODE \ assert(encp) -STATIC regnode* S_regpiece(pTHX_ struct RExC_state_t *pRExC_state, I32 *flagp, U32 depth) +STATIC SV * S_reg_scan_name(pTHX_ struct RExC_state_t *pRExC_state, U32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_REG_SCAN_NAME \ + assert(pRExC_state) + +STATIC bool S_reg_skipcomment(pTHX_ struct RExC_state_t *pRExC_state) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_REG_SKIPCOMMENT \ + assert(pRExC_state) + +STATIC regnode* S_reganode(pTHX_ struct RExC_state_t *pRExC_state, U8 op, U32 arg) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_REGANODE \ + assert(pRExC_state) + +STATIC regnode* S_regatom(pTHX_ struct RExC_state_t *pRExC_state, I32 *flagp, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_REGPIECE \ +#define PERL_ARGS_ASSERT_REGATOM \ assert(pRExC_state); assert(flagp) -STATIC regnode* S_reg_namedseq(pTHX_ struct RExC_state_t *pRExC_state, UV *valuep, I32 *flagp) +STATIC regnode* S_regbranch(pTHX_ struct RExC_state_t *pRExC_state, I32 *flagp, I32 first, U32 depth) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_REGBRANCH \ + assert(pRExC_state); assert(flagp) + +STATIC regnode* S_regclass(pTHX_ struct RExC_state_t *pRExC_state, U32 depth) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_REG_NAMEDSEQ \ +#define PERL_ARGS_ASSERT_REGCLASS \ assert(pRExC_state) STATIC void S_reginsert(pTHX_ struct RExC_state_t *pRExC_state, U8 op, regnode *opnd, U32 depth) @@ -5349,6 +6164,17 @@ STATIC void S_reginsert(pTHX_ struct RExC_state_t *pRExC_state, U8 op, regnode * #define PERL_ARGS_ASSERT_REGINSERT \ assert(pRExC_state); assert(opnd) +STATIC regnode* S_regpiece(pTHX_ struct RExC_state_t *pRExC_state, I32 *flagp, U32 depth) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_REGPIECE \ + assert(pRExC_state); assert(flagp) + +STATIC I32 S_regpposixcc(pTHX_ struct RExC_state_t *pRExC_state, I32 value) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_REGPPOSIXCC \ + assert(pRExC_state) + STATIC void S_regtail(pTHX_ struct RExC_state_t *pRExC_state, regnode *p, const regnode *val, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -5356,17 +6182,11 @@ STATIC void S_regtail(pTHX_ struct RExC_state_t *pRExC_state, regnode *p, const #define PERL_ARGS_ASSERT_REGTAIL \ assert(pRExC_state); assert(p); assert(val) -STATIC SV * S_reg_scan_name(pTHX_ struct RExC_state_t *pRExC_state, U32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_REG_SCAN_NAME \ - assert(pRExC_state) - -STATIC U32 S_join_exact(pTHX_ struct RExC_state_t *pRExC_state, regnode *scan, I32 *min, U32 flags, regnode *val, U32 depth) +STATIC STRLEN S_reguni(pTHX_ const struct RExC_state_t *pRExC_state, UV uv, char *s) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_JOIN_EXACT \ - assert(pRExC_state); assert(scan); assert(min) +#define PERL_ARGS_ASSERT_REGUNI \ + assert(pRExC_state); assert(s) STATIC char * S_regwhite(struct RExC_state_t *pRExC_state, char *p) __attribute__warn_unused_result__ @@ -5375,16 +6195,6 @@ STATIC char * S_regwhite(struct RExC_state_t *pRExC_state, char *p) #define PERL_ARGS_ASSERT_REGWHITE \ assert(pRExC_state); assert(p) -STATIC char * S_nextchar(pTHX_ struct RExC_state_t *pRExC_state) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_NEXTCHAR \ - assert(pRExC_state) - -STATIC bool S_reg_skipcomment(pTHX_ struct RExC_state_t *pRExC_state) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_REG_SKIPCOMMENT \ - assert(pRExC_state) - STATIC void S_scan_commit(pTHX_ const struct RExC_state_t *pRExC_state, struct scan_data_t *data, I32 *minlenp, int is_inf) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -5392,136 +6202,76 @@ STATIC void S_scan_commit(pTHX_ const struct RExC_state_t *pRExC_state, struct s #define PERL_ARGS_ASSERT_SCAN_COMMIT \ assert(pRExC_state); assert(data); assert(minlenp) -STATIC void S_cl_anything(const struct RExC_state_t *pRExC_state, struct regnode_charclass_class *cl) - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_CL_ANYTHING \ - assert(pRExC_state); assert(cl) - -STATIC int S_cl_is_anything(const struct regnode_charclass_class *cl) - __attribute__warn_unused_result__ - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_CL_IS_ANYTHING \ - assert(cl) - -STATIC void S_cl_init(const struct RExC_state_t *pRExC_state, struct regnode_charclass_class *cl) - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_CL_INIT \ - assert(pRExC_state); assert(cl) - -STATIC void S_cl_init_zero(const struct RExC_state_t *pRExC_state, struct regnode_charclass_class *cl) - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_CL_INIT_ZERO \ - assert(pRExC_state); assert(cl) - -STATIC void S_cl_and(struct regnode_charclass_class *cl, const struct regnode_charclass_class *and_with) - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_CL_AND \ - assert(cl); assert(and_with) - -STATIC void S_cl_or(const struct RExC_state_t *pRExC_state, struct regnode_charclass_class *cl, const struct regnode_charclass_class *or_with) - __attribute__nonnull__(1) - __attribute__nonnull__(2) - __attribute__nonnull__(3); -#define PERL_ARGS_ASSERT_CL_OR \ - assert(pRExC_state); assert(cl); assert(or_with) - -STATIC I32 S_study_chunk(pTHX_ struct RExC_state_t *pRExC_state, regnode **scanp, I32 *minlenp, I32 *deltap, regnode *last, struct scan_data_t *data, I32 stopparen, U8* recursed, struct regnode_charclass_class *and_withp, U32 flags, U32 depth) +PERL_STATIC_INLINE U8 S_set_regclass_bit(pTHX_ struct RExC_state_t* pRExC_state, regnode* node, const U8 value, HV** invlist_ptr, AV** alternate_ptr) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_STUDY_CHUNK \ - assert(pRExC_state); assert(scanp); assert(minlenp); assert(deltap); assert(last) - -STATIC U32 S_add_data(struct RExC_state_t *pRExC_state, U32 n, const char *s) - __attribute__warn_unused_result__ - __attribute__nonnull__(1) - __attribute__nonnull__(3); -#define PERL_ARGS_ASSERT_ADD_DATA \ - assert(pRExC_state); assert(s) +#define PERL_ARGS_ASSERT_SET_REGCLASS_BIT \ + assert(pRExC_state); assert(node); assert(invlist_ptr); assert(alternate_ptr) -STATIC void S_re_croak2(pTHX_ const char* pat1, const char* pat2, ...) - __attribute__noreturn__ +STATIC U8 S_set_regclass_bit_fold(pTHX_ struct RExC_state_t *pRExC_state, regnode* node, const U8 value, HV** invlist_ptr, AV** alternate_ptr) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_RE_CROAK2 \ - assert(pat1); assert(pat2) - -STATIC I32 S_regpposixcc(pTHX_ struct RExC_state_t *pRExC_state, I32 value) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_REGPPOSIXCC \ - assert(pRExC_state) - -STATIC void S_checkposixcc(pTHX_ struct RExC_state_t *pRExC_state) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CHECKPOSIXCC \ - assert(pRExC_state) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_4) + __attribute__nonnull__(pTHX_5); +#define PERL_ARGS_ASSERT_SET_REGCLASS_BIT_FOLD \ + assert(pRExC_state); assert(node); assert(invlist_ptr); assert(alternate_ptr) -STATIC I32 S_make_trie(pTHX_ struct RExC_state_t *pRExC_state, regnode *startbranch, regnode *first, regnode *last, regnode *tail, U32 word_count, U32 flags, U32 depth) +STATIC I32 S_study_chunk(pTHX_ struct RExC_state_t *pRExC_state, regnode **scanp, I32 *minlenp, I32 *deltap, regnode *last, struct scan_data_t *data, I32 stopparen, U8* recursed, struct regnode_charclass_class *and_withp, U32 flags, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_MAKE_TRIE \ - assert(pRExC_state); assert(startbranch); assert(first); assert(last); assert(tail) +#define PERL_ARGS_ASSERT_STUDY_CHUNK \ + assert(pRExC_state); assert(scanp); assert(minlenp); assert(deltap); assert(last) -STATIC void S_make_trie_failtable(pTHX_ struct RExC_state_t *pRExC_state, regnode *source, regnode *stclass, U32 depth) +#endif +#if defined(PERL_IN_REGEXEC_C) +STATIC char* S_find_byclass(pTHX_ regexp * prog, const regnode *c, char *s, const char *strend, regmatch_info *reginfo) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_MAKE_TRIE_FAILTABLE \ - assert(pRExC_state); assert(source); assert(stclass) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_FIND_BYCLASS \ + assert(prog); assert(c); assert(s); assert(strend) -# ifdef DEBUGGING -STATIC void S_regdump_extflags(pTHX_ const char *lead, const U32 flags); -STATIC const regnode* S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, const regnode *plast, SV* sv, I32 indent, U32 depth) +STATIC I32 S_reg_check_named_buff_matched(pTHX_ const regexp *rex, const regnode *scan) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_6); -#define PERL_ARGS_ASSERT_DUMPUNTIL \ - assert(r); assert(start); assert(node); assert(sv) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_REG_CHECK_NAMED_BUFF_MATCHED \ + assert(rex); assert(scan) -STATIC void S_put_byte(pTHX_ SV* sv, int c) +STATIC char* S_regcppop(pTHX_ const regexp *rex) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PUT_BYTE \ - assert(sv) - -STATIC void S_dump_trie(pTHX_ const struct _reg_trie_data *trie, HV* widecharmap, AV *revcharmap, U32 depth) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_DUMP_TRIE \ - assert(trie); assert(revcharmap) +#define PERL_ARGS_ASSERT_REGCPPOP \ + assert(rex) -STATIC void S_dump_trie_interim_list(pTHX_ const struct _reg_trie_data *trie, HV* widecharmap, AV *revcharmap, U32 next_alloc, U32 depth) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_LIST \ - assert(trie); assert(revcharmap) +STATIC CHECKPOINT S_regcppush(pTHX_ I32 parenfloor); +STATIC U8* S_reghop3(U8 *s, I32 off, const U8 *lim) + __attribute__warn_unused_result__ + __attribute__nonnull__(1) + __attribute__nonnull__(3); +#define PERL_ARGS_ASSERT_REGHOP3 \ + assert(s); assert(lim) -STATIC void S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie, HV* widecharmap, AV *revcharmap, U32 next_alloc, U32 depth) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_TABLE \ - assert(trie); assert(revcharmap) +STATIC U8* S_reghopmaybe3(U8 *s, I32 off, const U8 *lim) + __attribute__warn_unused_result__ + __attribute__nonnull__(1) + __attribute__nonnull__(3); +#define PERL_ARGS_ASSERT_REGHOPMAYBE3 \ + assert(s); assert(lim) -STATIC U8 S_regtail_study(pTHX_ struct RExC_state_t *pRExC_state, regnode *p, const regnode *val, U32 depth) - __attribute__nonnull__(pTHX_1) +STATIC bool S_reginclass(pTHX_ const regexp * const prog, const regnode * const n, const U8 * const p, STRLEN *lenp, bool const do_utf8sv_is_utf8) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_REGTAIL_STUDY \ - assert(pRExC_state); assert(p); assert(val) - -# endif -#endif +#define PERL_ARGS_ASSERT_REGINCLASS \ + assert(n); assert(p) -#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) STATIC I32 S_regmatch(pTHX_ regmatch_info *reginfo, regnode *prog) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) @@ -5543,27 +6293,17 @@ STATIC I32 S_regtry(pTHX_ regmatch_info *reginfo, char **startpos) #define PERL_ARGS_ASSERT_REGTRY \ assert(reginfo); assert(startpos) -STATIC bool S_reginclass(pTHX_ const regexp *prog, const regnode *n, const U8 *p, STRLEN *lenp, bool do_utf8sv_is_utf8) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_REGINCLASS \ - assert(n); assert(p) - -STATIC CHECKPOINT S_regcppush(pTHX_ I32 parenfloor); -STATIC char* S_regcppop(pTHX_ const regexp *rex) +STATIC void S_to_byte_substr(pTHX_ regexp * prog) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_REGCPPOP \ - assert(rex) +#define PERL_ARGS_ASSERT_TO_BYTE_SUBSTR \ + assert(prog) -STATIC U8* S_reghop3(U8 *s, I32 off, const U8 *lim) - __attribute__warn_unused_result__ - __attribute__nonnull__(1) - __attribute__nonnull__(3); -#define PERL_ARGS_ASSERT_REGHOP3 \ - assert(s); assert(lim) +STATIC void S_to_utf8_substr(pTHX_ regexp * prog) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_TO_UTF8_SUBSTR \ + assert(prog) -#ifdef XXX_dmq +# if defined(XXX_dmq) STATIC U8* S_reghop4(U8 *s, I32 off, const U8 *llim, const U8 *rlim) __attribute__warn_unused_result__ __attribute__nonnull__(1) @@ -5572,184 +6312,142 @@ STATIC U8* S_reghop4(U8 *s, I32 off, const U8 *llim, const U8 *rlim) #define PERL_ARGS_ASSERT_REGHOP4 \ assert(s); assert(llim); assert(rlim) +# endif #endif -STATIC U8* S_reghopmaybe3(U8 *s, I32 off, const U8 *lim) - __attribute__warn_unused_result__ - __attribute__nonnull__(1) - __attribute__nonnull__(3); -#define PERL_ARGS_ASSERT_REGHOPMAYBE3 \ - assert(s); assert(lim) - -STATIC char* S_find_byclass(pTHX_ regexp * prog, const regnode *c, char *s, const char *strend, regmatch_info *reginfo) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); -#define PERL_ARGS_ASSERT_FIND_BYCLASS \ - assert(prog); assert(c); assert(s); assert(strend) - -STATIC void S_to_utf8_substr(pTHX_ regexp * prog) +#if defined(PERL_IN_SCOPE_C) +STATIC void S_save_pushptri32ptr(pTHX_ void *const ptr1, const I32 i, void *const ptr2, const int type); +STATIC SV* S_save_scalar_at(pTHX_ SV **sptr, const U32 flags) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_TO_UTF8_SUBSTR \ - assert(prog) +#define PERL_ARGS_ASSERT_SAVE_SCALAR_AT \ + assert(sptr) -STATIC void S_to_byte_substr(pTHX_ regexp * prog) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_TO_BYTE_SUBSTR \ - assert(prog) +#endif +#if defined(PERL_IN_SV_C) +STATIC char * S_F0convert(NV nv, char *const endbuf, STRLEN *const len) + __attribute__nonnull__(2) + __attribute__nonnull__(3); +#define PERL_ARGS_ASSERT_F0CONVERT \ + assert(endbuf); assert(len) -STATIC I32 S_reg_check_named_buff_matched(pTHX_ const regexp *rex, const regnode *scan) - __attribute__warn_unused_result__ +STATIC void S_anonymise_cv_maybe(pTHX_ GV *gv, CV *cv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_REG_CHECK_NAMED_BUFF_MATCHED \ - assert(rex); assert(scan) +#define PERL_ARGS_ASSERT_ANONYMISE_CV_MAYBE \ + assert(gv); assert(cv) -# ifdef DEBUGGING -STATIC void S_dump_exec_pos(pTHX_ const char *locinput, const regnode *scan, const char *loc_regeol, const char *loc_bostr, const char *loc_reg_starttry, const bool do_utf8) +STATIC void S_assert_uft8_cache_coherent(pTHX_ const char *const func, STRLEN from_cache, STRLEN real, SV *const sv) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4) - __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_DUMP_EXEC_POS \ - assert(locinput); assert(scan); assert(loc_regeol); assert(loc_bostr); assert(loc_reg_starttry) - -STATIC void S_debug_start_match(pTHX_ const REGEXP *prog, const bool do_utf8, const char *start, const char *end, const char *blurb) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4) - __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_DEBUG_START_MATCH \ - assert(prog); assert(start); assert(end); assert(blurb) - -# endif -#endif + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_ASSERT_UFT8_CACHE_COHERENT \ + assert(func); assert(sv) -#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) -STATIC CV* S_deb_curcv(pTHX_ const I32 ix); -STATIC void S_debprof(pTHX_ const OP *o) +STATIC bool S_curse(pTHX_ SV * const sv, const bool check_refcnt) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DEBPROF \ - assert(o) +#define PERL_ARGS_ASSERT_CURSE \ + assert(sv) -STATIC void S_sequence(pTHX_ const OP *o); -STATIC void S_sequence_tail(pTHX_ const OP *o); -STATIC UV S_sequence_num(pTHX_ const OP *o); -STATIC SV* S_pm_description(pTHX_ const PMOP *pm) +STATIC I32 S_expect_number(pTHX_ char **const pattern) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PM_DESCRIPTION \ - assert(pm) +#define PERL_ARGS_ASSERT_EXPECT_NUMBER \ + assert(pattern) -#endif +STATIC I32 S_find_array_subscript(pTHX_ const AV *const av, const SV *const val) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_FIND_ARRAY_SUBSCRIPT \ + assert(val) -#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) -STATIC SV* S_save_scalar_at(pTHX_ SV **sptr, const U32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SAVE_SCALAR_AT \ - assert(sptr) +STATIC SV * S_find_hash_subscript(pTHX_ const HV *const hv, const SV *const val) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_FIND_HASH_SUBSCRIPT \ + assert(val) -#endif +STATIC SV* S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv, bool top); +STATIC bool S_glob_2number(pTHX_ GV* const gv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GLOB_2NUMBER \ + assert(gv) -#if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) -PERL_CALLCONV void Perl_sv_add_backref(pTHX_ SV *const tsv, SV *const sv) +STATIC void S_glob_assign_glob(pTHX_ SV *const dstr, SV *const sstr, const int dtype) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_ADD_BACKREF \ - assert(tsv); assert(sv) - -#endif +#define PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB \ + assert(dstr); assert(sstr) -#if defined(PERL_IN_HV_C) || defined(PERL_IN_MG_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -PERL_CALLCONV int Perl_sv_kill_backrefs(pTHX_ SV *const sv, AV *const av) +STATIC void S_glob_assign_ref(pTHX_ SV *const dstr, SV *const sstr) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_KILL_BACKREFS \ - assert(sv); assert(av) - -#endif - -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -STATIC char * S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob) - __attribute__warn_unused_result__ - __attribute__nonnull__(1) - __attribute__nonnull__(5); -#define PERL_ARGS_ASSERT_UIV_2BUF \ - assert(buf); assert(peob) - -STATIC void S_sv_unglob(pTHX_ SV *const sv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_UNGLOB \ - assert(sv) +#define PERL_ARGS_ASSERT_GLOB_ASSIGN_REF \ + assert(dstr); assert(sstr) +STATIC SV * S_more_sv(pTHX); STATIC void S_not_a_number(pTHX_ SV *const sv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_NOT_A_NUMBER \ assert(sv) -STATIC I32 S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_VISIT \ - assert(f) - -STATIC void S_sv_del_backref(pTHX_ SV *const tsv, SV *const sv) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_DEL_BACKREF \ - assert(tsv); assert(sv) - -STATIC SV * S_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ, const SV *const keyname, I32 aindex, int subscript_type) - __attribute__warn_unused_result__; - -# ifdef DEBUGGING -STATIC void S_del_sv(pTHX_ SV *p) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DEL_SV \ - assert(p) +STATIC PTR_TBL_ENT_t * S_ptr_table_find(PTR_TBL_t *const tbl, const void *const sv) + __attribute__warn_unused_result__ + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_PTR_TABLE_FIND \ + assert(tbl) -# endif -# if !defined(NV_PRESERVES_UV) -# ifdef DEBUGGING -STATIC int S_sv_2iuv_non_preserve(pTHX_ SV *const sv, I32 numtype) +STATIC bool S_sv_2iuv_common(pTHX_ SV *const sv) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE \ +#define PERL_ARGS_ASSERT_SV_2IUV_COMMON \ assert(sv) -# else -STATIC int S_sv_2iuv_non_preserve(pTHX_ SV *const sv) +STATIC void S_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE \ - assert(sv) +#define PERL_ARGS_ASSERT_SV_ADD_ARENA \ + assert(ptr) -# endif -# endif -STATIC I32 S_expect_number(pTHX_ char **const pattern) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_EXPECT_NUMBER \ - assert(pattern) +STATIC STRLEN S_sv_pos_b2u_midway(pTHX_ const U8 *const s, const U8 *const target, const U8 *end, STRLEN endu) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_SV_POS_B2U_MIDWAY \ + assert(s); assert(target); assert(end) + +STATIC STRLEN S_sv_pos_u2b_cached(pTHX_ SV *const sv, MAGIC **const mgp, const U8 *const start, const U8 *const send, STRLEN uoffset, STRLEN uoffset0, STRLEN boffset0) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_SV_POS_U2B_CACHED \ + assert(sv); assert(mgp); assert(start); assert(send) -# -STATIC STRLEN S_sv_pos_u2b_forwards(const U8 *const start, const U8 *const send, STRLEN uoffset) +STATIC STRLEN S_sv_pos_u2b_forwards(const U8 *const start, const U8 *const send, STRLEN *const uoffset, bool *const at_end) __attribute__nonnull__(1) - __attribute__nonnull__(2); + __attribute__nonnull__(2) + __attribute__nonnull__(3) + __attribute__nonnull__(4); #define PERL_ARGS_ASSERT_SV_POS_U2B_FORWARDS \ - assert(start); assert(send) + assert(start); assert(send); assert(uoffset); assert(at_end) -STATIC STRLEN S_sv_pos_u2b_midway(const U8 *const start, const U8 *send, const STRLEN uoffset, const STRLEN uend) +STATIC STRLEN S_sv_pos_u2b_midway(const U8 *const start, const U8 *send, STRLEN uoffset, const STRLEN uend) __attribute__nonnull__(1) __attribute__nonnull__(2); #define PERL_ARGS_ASSERT_SV_POS_U2B_MIDWAY \ assert(start); assert(send) -STATIC STRLEN S_sv_pos_u2b_cached(pTHX_ SV *const sv, MAGIC **const mgp, const U8 *const start, const U8 *const send, const STRLEN uoffset, STRLEN uoffset0, STRLEN boffset0) +STATIC void S_sv_unglob(pTHX_ SV *const sv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_UNGLOB \ + assert(sv) + +STATIC char * S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob) + __attribute__warn_unused_result__ + __attribute__nonnull__(1) + __attribute__nonnull__(5); +#define PERL_ARGS_ASSERT_UIV_2BUF \ + assert(buf); assert(peob) + +STATIC void S_utf8_mg_len_cache_update(pTHX_ SV *const sv, MAGIC **const mgp, const STRLEN ulen) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); -#define PERL_ARGS_ASSERT_SV_POS_U2B_CACHED \ - assert(sv); assert(mgp); assert(start); assert(send) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_UTF8_MG_LEN_CACHE_UPDATE \ + assert(sv); assert(mgp) STATIC void S_utf8_mg_pos_cache_update(pTHX_ SV *const sv, MAGIC **const mgp, const STRLEN byte, const STRLEN utf8, const STRLEN blen) __attribute__nonnull__(pTHX_1) @@ -5757,18 +6455,13 @@ STATIC void S_utf8_mg_pos_cache_update(pTHX_ SV *const sv, MAGIC **const mgp, co #define PERL_ARGS_ASSERT_UTF8_MG_POS_CACHE_UPDATE \ assert(sv); assert(mgp) -STATIC STRLEN S_sv_pos_b2u_midway(pTHX_ const U8 *const s, const U8 *const target, const U8 *end, STRLEN endu) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_SV_POS_B2U_MIDWAY \ - assert(s); assert(target); assert(end) +STATIC SV * S_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ, const SV *const keyname, I32 aindex, int subscript_type) + __attribute__warn_unused_result__; -STATIC char * S_F0convert(NV nv, char *const endbuf, STRLEN *const len) - __attribute__nonnull__(2) - __attribute__nonnull__(3); -#define PERL_ARGS_ASSERT_F0CONVERT \ - assert(endbuf); assert(len) +STATIC I32 S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_VISIT \ + assert(f) # if defined(PERL_OLD_COPY_ON_WRITE) STATIC void S_sv_release_COW(pTHX_ SV *sv, const char *pvx, SV *after) @@ -5779,55 +6472,105 @@ STATIC void S_sv_release_COW(pTHX_ SV *sv, const char *pvx, SV *after) assert(sv); assert(pvx); assert(after) # endif -STATIC SV * S_more_sv(pTHX); -STATIC void * S_more_bodies(pTHX_ const svtype sv_type); -STATIC bool S_sv_2iuv_common(pTHX_ SV *const sv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_2IUV_COMMON \ - assert(sv) - -STATIC void S_glob_assign_glob(pTHX_ SV *const dstr, SV *const sstr, const int dtype) +# if defined(USE_ITHREADS) +STATIC SV* S_sv_dup_common(pTHX_ const SV *const sstr, CLONE_PARAMS *const param) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB \ - assert(dstr); assert(sstr) +#define PERL_ARGS_ASSERT_SV_DUP_COMMON \ + assert(sstr); assert(param) -STATIC void S_glob_assign_ref(pTHX_ SV *const dstr, SV *const sstr) +STATIC SV ** S_sv_dup_inc_multiple(pTHX_ SV *const *source, SV **dest, SSize_t items, CLONE_PARAMS *const param) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_GLOB_ASSIGN_REF \ - assert(dstr); assert(sstr) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_SV_DUP_INC_MULTIPLE \ + assert(source); assert(dest); assert(param) -STATIC PTR_TBL_ENT_t * S_ptr_table_find(PTR_TBL_t *const tbl, const void *const sv) - __attribute__warn_unused_result__ - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_PTR_TABLE_FIND \ - assert(tbl) +STATIC void S_unreferenced_to_tmp_stack(pTHX_ AV *const unreferenced) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_UNREFERENCED_TO_TMP_STACK \ + assert(unreferenced) +# endif #endif - -#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_TOKE_C) +STATIC int S_ao(pTHX_ int toketype); STATIC void S_check_uni(pTHX); -STATIC void S_force_next(pTHX_ I32 type); -STATIC char* S_force_version(pTHX_ char *s, int guessing) +STATIC void S_checkcomma(pTHX_ const char *s, const char *name, const char *what) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_CHECKCOMMA \ + assert(s); assert(name); assert(what) + +STATIC int S_deprecate_commaless_var_list(pTHX); +STATIC char * S_filter_gets(pTHX_ SV *sv, STRLEN append) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_FORCE_VERSION \ +#define PERL_ARGS_ASSERT_FILTER_GETS \ + assert(sv) + +STATIC HV * S_find_in_my_stash(pTHX_ const char *pkgname, STRLEN len) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_FIND_IN_MY_STASH \ + assert(pkgname) + +STATIC void S_force_ident(pTHX_ const char *s, int kind) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_FORCE_IDENT \ assert(s) +STATIC void S_force_next(pTHX_ I32 type); STATIC char* S_force_strict_version(pTHX_ char *s) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_FORCE_STRICT_VERSION \ assert(s) +STATIC char* S_force_version(pTHX_ char *s, int guessing) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_FORCE_VERSION \ + assert(s) + STATIC char* S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack, int allow_tick) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_FORCE_WORD \ assert(start) -STATIC SV* S_tokeq(pTHX_ SV *sv) +STATIC void S_incline(pTHX_ const char *s) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_TOKEQ \ - assert(sv) +#define PERL_ARGS_ASSERT_INCLINE \ + assert(s) + +STATIC int S_intuit_method(pTHX_ char *s, GV *gv, CV *cv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_INTUIT_METHOD \ + assert(s) + +STATIC int S_intuit_more(pTHX_ char *s) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_INTUIT_MORE \ + assert(s) + +STATIC I32 S_lop(pTHX_ I32 f, int x, char *s) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_LOP \ + assert(s) + +STATIC void S_missingterm(pTHX_ char *s) + __attribute__noreturn__; + +STATIC SV* S_new_constant(pTHX_ const char *s, STRLEN len, const char *key, STRLEN keylen, SV *sv, SV *pv, const char *type, STRLEN typelen) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_5); +#define PERL_ARGS_ASSERT_NEW_CONSTANT \ + assert(key); assert(sv) + +STATIC void S_no_op(pTHX_ const char *const what, char *s) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_NO_OP \ + assert(what) STATIC void S_readpipe_override(pTHX); STATIC char* S_scan_const(pTHX_ char *start) @@ -5892,76 +6635,12 @@ STATIC char* S_scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_pa #define PERL_ARGS_ASSERT_SCAN_WORD \ assert(s); assert(dest); assert(slp) -STATIC void S_update_debugger_info(pTHX_ SV *orig_sv, const char *const buf, STRLEN len); STATIC char* S_skipspace(pTHX_ char *s) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SKIPSPACE \ assert(s) -STATIC char* S_swallow_bom(pTHX_ U8 *s) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SWALLOW_BOM \ - assert(s) - -#ifndef PERL_NO_UTF16_FILTER -STATIC I32 S_utf16_textfilter(pTHX_ int idx, SV *sv, int maxlen) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_UTF16_TEXTFILTER \ - assert(sv) - -STATIC U8* S_add_utf16_textfilter(pTHX_ U8 *const s, bool reversed) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_ADD_UTF16_TEXTFILTER \ - assert(s) - -#endif -STATIC void S_checkcomma(pTHX_ const char *s, const char *name, const char *what) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_CHECKCOMMA \ - assert(s); assert(name); assert(what) - -STATIC bool S_feature_is_enabled(pTHX_ const char *const name, STRLEN namelen) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_FEATURE_IS_ENABLED \ - assert(name) - -STATIC void S_force_ident(pTHX_ const char *s, int kind) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_FORCE_IDENT \ - assert(s) - -STATIC void S_incline(pTHX_ const char *s) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_INCLINE \ - assert(s) - -STATIC int S_intuit_method(pTHX_ char *s, GV *gv, CV *cv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_INTUIT_METHOD \ - assert(s) - -STATIC int S_intuit_more(pTHX_ char *s) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_INTUIT_MORE \ - assert(s) - -STATIC I32 S_lop(pTHX_ I32 f, int x, char *s) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_LOP \ - assert(s) - -STATIC void S_missingterm(pTHX_ char *s) - __attribute__noreturn__; - -STATIC void S_no_op(pTHX_ const char *const what, char *s) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_NO_OP \ - assert(what) - STATIC I32 S_sublex_done(pTHX) __attribute__warn_unused_result__; @@ -5971,17 +6650,11 @@ STATIC I32 S_sublex_push(pTHX) STATIC I32 S_sublex_start(pTHX) __attribute__warn_unused_result__; -STATIC char * S_filter_gets(pTHX_ SV *sv, STRLEN append) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_FILTER_GETS \ - assert(sv) - -STATIC HV * S_find_in_my_stash(pTHX_ const char *pkgname, STRLEN len) +STATIC char* S_swallow_bom(pTHX_ U8 *s) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_FIND_IN_MY_STASH \ - assert(pkgname) +#define PERL_ARGS_ASSERT_SWALLOW_BOM \ + assert(s) STATIC char * S_tokenize_use(pTHX_ int is_use, char *s) __attribute__warn_unused_result__ @@ -5989,89 +6662,46 @@ STATIC char * S_tokenize_use(pTHX_ int is_use, char *s) #define PERL_ARGS_ASSERT_TOKENIZE_USE \ assert(s) -STATIC SV* S_new_constant(pTHX_ const char *s, STRLEN len, const char *key, STRLEN keylen, SV *sv, SV *pv, const char *type, STRLEN typelen) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_NEW_CONSTANT \ - assert(key); assert(sv) - -STATIC int S_deprecate_commaless_var_list(pTHX); -STATIC int S_ao(pTHX_ int toketype); -# if defined(PERL_CR_FILTER) -STATIC I32 S_cr_textfilter(pTHX_ int idx, SV *sv, int maxlen); -STATIC void S_strip_return(pTHX_ SV *sv) +STATIC SV* S_tokeq(pTHX_ SV *sv) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_STRIP_RETURN \ +#define PERL_ARGS_ASSERT_TOKEQ \ assert(sv) -# endif -# if defined(DEBUGGING) -STATIC int S_tokereport(pTHX_ I32 rv, const YYSTYPE* lvalp) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_TOKEREPORT \ - assert(lvalp) +STATIC void S_update_debugger_info(pTHX_ SV *orig_sv, const char *const buf, STRLEN len); +STATIC int S_yywarn(pTHX_ const char *const s) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_YYWARN \ + assert(s) -STATIC void S_printbuf(pTHX_ const char *const fmt, const char *const s) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_PRINTBUF \ - assert(fmt); assert(s) +# if defined(PERL_MAD) +STATIC void S_curmad(pTHX_ char slot, SV *sv); +STATIC char* S_skipspace0(pTHX_ char *s) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SKIPSPACE0 \ + assert(s) + +STATIC char* S_skipspace1(pTHX_ char *s) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SKIPSPACE1 \ + assert(s) +STATIC char* S_skipspace2(pTHX_ char *s, SV **sv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SKIPSPACE2 \ + assert(s) + +STATIC void S_start_force(pTHX_ int where); # endif #endif - -#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_UNIVERSAL_C) STATIC bool S_isa_lookup(pTHX_ HV *stash, const char * const name) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_ISA_LOOKUP \ assert(stash); assert(name) -STATIC HV * S_get_isa_hash(pTHX_ HV *const stash) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GET_ISA_HASH \ - assert(stash) - #endif - -#if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT) -#if defined(USE_LOCALE_NUMERIC) || defined(USE_LOCALE_COLLATE) -STATIC char* S_stdize_locale(pTHX_ char* locs) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_STDIZE_LOCALE \ - assert(locs) - -#endif -#endif - -#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) -STATIC const COP* S_closest_cop(pTHX_ const COP *cop, const OP *o) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CLOSEST_COP \ - assert(cop) - -STATIC SV* S_mess_alloc(pTHX); -STATIC SV * S_vdie_croak_common(pTHX_ const char *pat, va_list *args); -STATIC bool S_vdie_common(pTHX_ SV *message, bool warn); -STATIC char * S_write_no_mem(pTHX) - __attribute__noreturn__; - -#if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL) -STATIC void S_mem_log_common(enum mem_log_type mlt, const UV n, const UV typesize, const char *type_name, const SV *sv, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname) - __attribute__nonnull__(4) - __attribute__nonnull__(8) - __attribute__nonnull__(10); -#define PERL_ARGS_ASSERT_MEM_LOG_COMMON \ - assert(type_name); assert(filename); assert(funcname) - -#endif -#endif - -#if defined(PERL_IN_NUMERIC_C) || defined(PERL_DECL_PROT) -STATIC NV S_mulexp10(NV value, I32 exponent); -#endif - -#if defined(PERL_IN_UTF8_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_UTF8_C) STATIC STRLEN S_is_utf8_char_slow(const U8 *s, const STRLEN len) __attribute__warn_unused_result__ __attribute__nonnull__(1); @@ -6093,748 +6723,497 @@ STATIC SV* S_swash_get(pTHX_ SV* swash, UV start, UV span) assert(swash) #endif - -START_EXTERN_C - -PERL_CALLCONV void Perl_sv_setsv_flags(pTHX_ SV *dstr, SV *sstr, const I32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_SETSV_FLAGS \ - assert(dstr) - -PERL_CALLCONV void Perl_sv_catpvn_flags(pTHX_ SV *const dstr, const char *sstr, const STRLEN len, const I32 flags) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_CATPVN_FLAGS \ - assert(dstr); assert(sstr) - -PERL_CALLCONV void Perl_sv_catsv_flags(pTHX_ SV *const dsv, SV *const ssv, const I32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_CATSV_FLAGS \ - assert(dsv) - -/* PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade_flags(pTHX_ SV *const sv, const I32 flags) - __attribute__nonnull__(pTHX_1); */ - -PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV *const sv, const I32 flags, STRLEN extra) +#if defined(PERL_IN_UTIL_C) +STATIC bool S_ckwarn_common(pTHX_ U32 w); +STATIC const COP* S_closest_cop(pTHX_ const COP *cop, const OP *o) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW \ - assert(sv) +#define PERL_ARGS_ASSERT_CLOSEST_COP \ + assert(cop) -PERL_CALLCONV char* Perl_sv_pvn_force_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags) +STATIC bool S_invoke_exception_hook(pTHX_ SV *ex, bool warn); +STATIC SV* S_mess_alloc(pTHX); +STATIC SV * S_with_queued_errors(pTHX_ SV *ex) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_PVN_FORCE_FLAGS \ - assert(sv) - -PERL_CALLCONV void Perl_sv_copypv(pTHX_ SV *const dsv, SV *const ssv) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_COPYPV \ - assert(dsv); assert(ssv) +#define PERL_ARGS_ASSERT_WITH_QUEUED_ERRORS \ + assert(ex) -PERL_CALLCONV char* Perl_my_atof2(pTHX_ const char *s, NV* value) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MY_ATOF2 \ - assert(s); assert(value) +STATIC char * S_write_no_mem(pTHX) + __attribute__noreturn__; -PERL_CALLCONV int Perl_my_socketpair(int family, int type, int protocol, int fd[2]); -PERL_CALLCONV int Perl_my_dirfd(pTHX_ DIR* dir); -#ifdef PERL_OLD_COPY_ON_WRITE -PERL_CALLCONV SV* Perl_sv_setsv_cow(pTHX_ SV* dstr, SV* sstr) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_SETSV_COW \ - assert(sstr) +# if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL) +STATIC void S_mem_log_common(enum mem_log_type mlt, const UV n, const UV typesize, const char *type_name, const SV *sv, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname) + __attribute__nonnull__(4) + __attribute__nonnull__(8) + __attribute__nonnull__(10); +#define PERL_ARGS_ASSERT_MEM_LOG_COMMON \ + assert(type_name); assert(filename); assert(funcname) +# endif #endif - -PERL_CALLCONV const char * Perl_PerlIO_context_layers(pTHX_ const char *mode); - -#if defined(USE_PERLIO) && !defined(USE_SFIO) -PERL_CALLCONV int Perl_PerlIO_close(pTHX_ PerlIO *f); -PERL_CALLCONV int Perl_PerlIO_fill(pTHX_ PerlIO *f); -PERL_CALLCONV int Perl_PerlIO_fileno(pTHX_ PerlIO *f); -PERL_CALLCONV int Perl_PerlIO_eof(pTHX_ PerlIO *f); -PERL_CALLCONV int Perl_PerlIO_error(pTHX_ PerlIO *f); -PERL_CALLCONV int Perl_PerlIO_flush(pTHX_ PerlIO *f); -PERL_CALLCONV void Perl_PerlIO_clearerr(pTHX_ PerlIO *f); -PERL_CALLCONV void Perl_PerlIO_set_cnt(pTHX_ PerlIO *f, int cnt); -PERL_CALLCONV void Perl_PerlIO_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR *ptr, int cnt); -PERL_CALLCONV void Perl_PerlIO_setlinebuf(pTHX_ PerlIO *f); -PERL_CALLCONV SSize_t Perl_PerlIO_read(pTHX_ PerlIO *f, void *vbuf, Size_t count) +#if defined(PERL_MAD) +PERL_CALLCONV void Perl_addmad(pTHX_ MADPROP* tm, MADPROP** root, char slot); +PERL_CALLCONV void Perl_append_madprops(pTHX_ MADPROP* tm, OP* o, char slot); +PERL_CALLCONV void Perl_do_op_xmldump(pTHX_ I32 level, PerlIO *file, const OP *o) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_PERLIO_READ \ - assert(vbuf) +#define PERL_ARGS_ASSERT_DO_OP_XMLDUMP \ + assert(file) -PERL_CALLCONV SSize_t Perl_PerlIO_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count) +PERL_CALLCONV void Perl_do_pmop_xmldump(pTHX_ I32 level, PerlIO *file, const PMOP *pm) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_PERLIO_WRITE \ - assert(vbuf) +#define PERL_ARGS_ASSERT_DO_PMOP_XMLDUMP \ + assert(file) -PERL_CALLCONV SSize_t Perl_PerlIO_unread(pTHX_ PerlIO *f, const void *vbuf, Size_t count) +PERL_CALLCONV void Perl_mad_free(pTHX_ MADPROP* mp); +PERL_CALLCONV int Perl_madlex(pTHX); +PERL_CALLCONV int Perl_madparse(pTHX_ int gramtype); +PERL_CALLCONV OP* Perl_newFORM(pTHX_ I32 floor, OP* o, OP* block); +PERL_CALLCONV MADPROP* Perl_newMADPROP(pTHX_ char key, char type, void* val, I32 vlen); +PERL_CALLCONV MADPROP* Perl_newMADsv(pTHX_ char key, SV* sv) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_PERLIO_UNREAD \ - assert(vbuf) - -PERL_CALLCONV Off_t Perl_PerlIO_tell(pTHX_ PerlIO *f); -PERL_CALLCONV int Perl_PerlIO_seek(pTHX_ PerlIO *f, Off_t offset, int whence); - -PERL_CALLCONV STDCHAR * Perl_PerlIO_get_base(pTHX_ PerlIO *f); -PERL_CALLCONV STDCHAR * Perl_PerlIO_get_ptr(pTHX_ PerlIO *f); -PERL_CALLCONV int Perl_PerlIO_get_bufsiz(pTHX_ PerlIO *f) - __attribute__warn_unused_result__; - -PERL_CALLCONV int Perl_PerlIO_get_cnt(pTHX_ PerlIO *f) - __attribute__warn_unused_result__; - - -PERL_CALLCONV PerlIO * Perl_PerlIO_stdin(pTHX) - __attribute__warn_unused_result__; - -PERL_CALLCONV PerlIO * Perl_PerlIO_stdout(pTHX) - __attribute__warn_unused_result__; - -PERL_CALLCONV PerlIO * Perl_PerlIO_stderr(pTHX) - __attribute__warn_unused_result__; - -#endif /* PERLIO_LAYERS */ - -PERL_CALLCONV void Perl_deb_stack_all(pTHX); -#if defined(PERL_IN_DEB_C) || defined(PERL_DECL_PROT) -STATIC void S_deb_stack_n(pTHX_ SV** stack_base, I32 stack_min, I32 stack_max, I32 mark_min, I32 mark_max) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DEB_STACK_N \ - assert(stack_base) - -#endif - -PERL_CALLCONV PADLIST* Perl_pad_new(pTHX_ int flags) - __attribute__malloc__ - __attribute__warn_unused_result__; - -PERL_CALLCONV void Perl_pad_undef(pTHX_ CV* cv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PAD_UNDEF \ - assert(cv) +#define PERL_ARGS_ASSERT_NEWMADSV \ + assert(sv) -PERL_CALLCONV PADOFFSET Perl_pad_add_name(pTHX_ const char *name, const STRLEN len, const U32 flags, HV *typestash, HV *ourstash) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PAD_ADD_NAME \ - assert(name) +PERL_CALLCONV OP * Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) + __attribute__noreturn__; -PERL_CALLCONV PADOFFSET Perl_pad_add_anon(pTHX_ SV* sv, OPCODE op_type) +PERL_CALLCONV TOKEN* Perl_newTOKEN(pTHX_ I32 optype, YYSTYPE lval, MADPROP* madprop); +PERL_CALLCONV void Perl_op_getmad(pTHX_ OP* from, OP* o, char slot); +PERL_CALLCONV void Perl_op_getmad_weak(pTHX_ OP* from, OP* o, char slot); +PERL_CALLCONV void Perl_op_xmldump(pTHX_ const OP *o) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PAD_ADD_ANON \ - assert(sv) +#define PERL_ARGS_ASSERT_OP_XMLDUMP \ + assert(o) -#if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) -STATIC void S_pad_check_dup(pTHX_ SV *name, const U32 flags, const HV *ourstash) +PERL_CALLCONV OP* Perl_package(pTHX_ OP* o) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PAD_CHECK_DUP \ - assert(name) - -#endif -#ifdef DEBUGGING -PERL_CALLCONV void Perl_pad_setsv(pTHX_ PADOFFSET po, SV* sv) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_PAD_SETSV \ - assert(sv) +#define PERL_ARGS_ASSERT_PACKAGE \ + assert(o) -#endif -PERL_CALLCONV void Perl_pad_block_start(pTHX_ int full); -PERL_CALLCONV void Perl_pad_tidy(pTHX_ padtidy_type type); -PERL_CALLCONV void Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_DO_DUMP_PAD \ - assert(file) +PERL_CALLCONV void Perl_pad_peg(const char* s) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_PAD_PEG \ + assert(s) -PERL_CALLCONV void Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv) +PERL_CALLCONV void Perl_pmop_xmldump(pTHX_ const PMOP* pm); +PERL_CALLCONV void Perl_prepend_madprops(pTHX_ MADPROP* mp, OP* o, char slot); +PERL_CALLCONV char* Perl_sv_catxmlpv(pTHX_ SV *dsv, const char *pv, int utf8) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_PAD_FIXUP_INNER_ANONS \ - assert(padlist); assert(old_cv); assert(new_cv) - - -PERL_CALLCONV void Perl_pad_push(pTHX_ PADLIST *padlist, int depth) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PAD_PUSH \ - assert(padlist) - -PERL_CALLCONV HV* Perl_pad_compname_type(pTHX_ const PADOFFSET po) - __attribute__warn_unused_result__; - + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_CATXMLPV \ + assert(dsv); assert(pv) -#if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) -STATIC PADOFFSET S_pad_findlex(pTHX_ const char *name, const CV* cv, U32 seq, int warn, SV** out_capture, SV** out_name_sv, int *out_flags) +PERL_CALLCONV char* Perl_sv_catxmlpvn(pTHX_ SV *dsv, const char *pv, STRLEN len, int utf8) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_6) - __attribute__nonnull__(pTHX_7); -#define PERL_ARGS_ASSERT_PAD_FINDLEX \ - assert(name); assert(cv); assert(out_name_sv); assert(out_flags) - -STATIC PADOFFSET S_pad_add_name_sv(pTHX_ SV *namesv, const U32 flags, HV *typestash, HV *ourstash) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PAD_ADD_NAME_SV \ - assert(namesv) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_CATXMLPVN \ + assert(dsv); assert(pv) -# if defined(DEBUGGING) -STATIC void S_cv_dump(pTHX_ const CV *cv, const char *title) +PERL_CALLCONV char* Perl_sv_catxmlsv(pTHX_ SV *dsv, SV *ssv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_CV_DUMP \ - assert(cv); assert(title) - -# endif -#endif -PERL_CALLCONV CV* Perl_find_runcv(pTHX_ U32 *db_seqp) - __attribute__warn_unused_result__; - -PERL_CALLCONV void Perl_free_tied_hv_pool(pTHX); -#if defined(DEBUGGING) -PERL_CALLCONV int Perl_get_debug_opts(pTHX_ const char **s, bool givehelp) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GET_DEBUG_OPTS \ - assert(s) +#define PERL_ARGS_ASSERT_SV_CATXMLSV \ + assert(dsv); assert(ssv) -#endif -PERL_CALLCONV void Perl_save_set_svflags(pTHX_ SV *sv, U32 mask, U32 val) +PERL_CALLCONV char* Perl_sv_xmlpeek(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SAVE_SET_SVFLAGS \ +#define PERL_ARGS_ASSERT_SV_XMLPEEK \ assert(sv) -#ifdef DEBUGGING -PERL_CALLCONV void Perl_hv_assert(pTHX_ HV *hv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HV_ASSERT \ - assert(hv) - -#endif - -PERL_CALLCONV SV* Perl_hv_scalar(pTHX_ HV *hv) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HV_SCALAR \ - assert(hv) - -PERL_CALLCONV I32* Perl_hv_riter_p(pTHX_ HV *hv) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HV_RITER_P \ - assert(hv) - -PERL_CALLCONV HE** Perl_hv_eiter_p(pTHX_ HV *hv) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HV_EITER_P \ - assert(hv) - -PERL_CALLCONV void Perl_hv_riter_set(pTHX_ HV *hv, I32 riter) +PERL_CALLCONV void Perl_token_free(pTHX_ TOKEN *tk) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HV_RITER_SET \ - assert(hv) +#define PERL_ARGS_ASSERT_TOKEN_FREE \ + assert(tk) -PERL_CALLCONV void Perl_hv_eiter_set(pTHX_ HV *hv, HE *eiter) +PERL_CALLCONV void Perl_token_getmad(pTHX_ TOKEN *tk, OP *o, char slot) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HV_EITER_SET \ - assert(hv) +#define PERL_ARGS_ASSERT_TOKEN_GETMAD \ + assert(tk) -PERL_CALLCONV void Perl_hv_name_set(pTHX_ HV *hv, const char *name, U32 len, U32 flags) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HV_NAME_SET \ - assert(hv) +PERL_CALLCONV OP * Perl_utilize(pTHX_ int aver, I32 floor, OP* version, OP* idop, OP* arg) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_UTILIZE \ + assert(idop) -PERL_CALLCONV AV** Perl_hv_backreferences_p(pTHX_ HV *hv) +PERL_CALLCONV void Perl_xmldump_all(pTHX); +PERL_CALLCONV void Perl_xmldump_all_perl(pTHX_ bool justperl); +PERL_CALLCONV void Perl_xmldump_eval(pTHX); +PERL_CALLCONV void Perl_xmldump_form(pTHX_ const GV* gv) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HV_BACKREFERENCES_P \ - assert(hv) +#define PERL_ARGS_ASSERT_XMLDUMP_FORM \ + assert(gv) -#if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -PERL_CALLCONV void Perl_hv_kill_backrefs(pTHX_ HV *hv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HV_KILL_BACKREFS \ - assert(hv) +PERL_CALLCONV void Perl_xmldump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...) + __attribute__format__(__printf__,pTHX_3,pTHX_4) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_XMLDUMP_INDENT \ + assert(file); assert(pat) -#endif -PERL_CALLCONV void Perl_hv_clear_placeholders(pTHX_ HV *hv) +PERL_CALLCONV void Perl_xmldump_packsubs(pTHX_ const HV* stash) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HV_CLEAR_PLACEHOLDERS \ - assert(hv) +#define PERL_ARGS_ASSERT_XMLDUMP_PACKSUBS \ + assert(stash) -PERL_CALLCONV I32* Perl_hv_placeholders_p(pTHX_ HV *hv) - __attribute__warn_unused_result__ +PERL_CALLCONV void Perl_xmldump_packsubs_perl(pTHX_ const HV* stash, bool justperl) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_P \ - assert(hv) +#define PERL_ARGS_ASSERT_XMLDUMP_PACKSUBS_PERL \ + assert(stash) -PERL_CALLCONV I32 Perl_hv_placeholders_get(pTHX_ const HV *hv) - __attribute__warn_unused_result__ +PERL_CALLCONV void Perl_xmldump_sub(pTHX_ const GV* gv) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_GET \ - assert(hv) +#define PERL_ARGS_ASSERT_XMLDUMP_SUB \ + assert(gv) -PERL_CALLCONV void Perl_hv_placeholders_set(pTHX_ HV *hv, I32 ph) +PERL_CALLCONV void Perl_xmldump_sub_perl(pTHX_ const GV* gv, bool justperl) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_SET \ - assert(hv) - - -PERL_CALLCONV SV* Perl_magic_scalarpack(pTHX_ HV *hv, MAGIC *mg) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MAGIC_SCALARPACK \ - assert(hv); assert(mg) - - -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -STATIC SV * S_find_hash_subscript(pTHX_ const HV *const hv, const SV *const val) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_FIND_HASH_SUBSCRIPT \ - assert(val) +#define PERL_ARGS_ASSERT_XMLDUMP_SUB_PERL \ + assert(gv) -STATIC I32 S_find_array_subscript(pTHX_ const AV *const av, const SV *const val) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_FIND_ARRAY_SUBSCRIPT \ - assert(val) +PERL_CALLCONV void Perl_xmldump_vindent(pTHX_ I32 level, PerlIO *file, const char* pat, va_list *args) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_XMLDUMP_VINDENT \ + assert(file); assert(pat) -STATIC SV* S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv, bool top); #endif - -#ifdef PERL_NEED_MY_HTOLE16 -PERL_CALLCONV U16 Perl_my_htole16(U16 n); +#if defined(PERL_NEED_MY_BETOH16) +PERL_CALLCONV U16 Perl_my_betoh16(U16 n); #endif -#ifdef PERL_NEED_MY_LETOH16 -PERL_CALLCONV U16 Perl_my_letoh16(U16 n); +#if defined(PERL_NEED_MY_BETOH32) +PERL_CALLCONV U32 Perl_my_betoh32(U32 n); #endif -#ifdef PERL_NEED_MY_HTOBE16 -PERL_CALLCONV U16 Perl_my_htobe16(U16 n); +#if defined(PERL_NEED_MY_BETOH64) +PERL_CALLCONV U64 Perl_my_betoh64(U64 n); #endif -#ifdef PERL_NEED_MY_BETOH16 -PERL_CALLCONV U16 Perl_my_betoh16(U16 n); +#if defined(PERL_NEED_MY_BETOHI) +PERL_CALLCONV int Perl_my_betohi(int n); #endif -#ifdef PERL_NEED_MY_HTOLE32 -PERL_CALLCONV U32 Perl_my_htole32(U32 n); +#if defined(PERL_NEED_MY_BETOHL) +PERL_CALLCONV long Perl_my_betohl(long n); #endif -#ifdef PERL_NEED_MY_LETOH32 -PERL_CALLCONV U32 Perl_my_letoh32(U32 n); +#if defined(PERL_NEED_MY_BETOHS) +PERL_CALLCONV short Perl_my_betohs(short n); +#endif +#if defined(PERL_NEED_MY_HTOBE16) +PERL_CALLCONV U16 Perl_my_htobe16(U16 n); #endif -#ifdef PERL_NEED_MY_HTOBE32 +#if defined(PERL_NEED_MY_HTOBE32) PERL_CALLCONV U32 Perl_my_htobe32(U32 n); #endif -#ifdef PERL_NEED_MY_BETOH32 -PERL_CALLCONV U32 Perl_my_betoh32(U32 n); +#if defined(PERL_NEED_MY_HTOBE64) +PERL_CALLCONV U64 Perl_my_htobe64(U64 n); #endif -#ifdef PERL_NEED_MY_HTOLE64 -PERL_CALLCONV U64 Perl_my_htole64(U64 n); +#if defined(PERL_NEED_MY_HTOBEI) +PERL_CALLCONV int Perl_my_htobei(int n); #endif -#ifdef PERL_NEED_MY_LETOH64 -PERL_CALLCONV U64 Perl_my_letoh64(U64 n); +#if defined(PERL_NEED_MY_HTOBEL) +PERL_CALLCONV long Perl_my_htobel(long n); #endif -#ifdef PERL_NEED_MY_HTOBE64 -PERL_CALLCONV U64 Perl_my_htobe64(U64 n); +#if defined(PERL_NEED_MY_HTOBES) +PERL_CALLCONV short Perl_my_htobes(short n); #endif -#ifdef PERL_NEED_MY_BETOH64 -PERL_CALLCONV U64 Perl_my_betoh64(U64 n); +#if defined(PERL_NEED_MY_HTOLE16) +PERL_CALLCONV U16 Perl_my_htole16(U16 n); #endif - -#ifdef PERL_NEED_MY_HTOLES -PERL_CALLCONV short Perl_my_htoles(short n); +#if defined(PERL_NEED_MY_HTOLE32) +PERL_CALLCONV U32 Perl_my_htole32(U32 n); #endif -#ifdef PERL_NEED_MY_LETOHS -PERL_CALLCONV short Perl_my_letohs(short n); +#if defined(PERL_NEED_MY_HTOLE64) +PERL_CALLCONV U64 Perl_my_htole64(U64 n); #endif -#ifdef PERL_NEED_MY_HTOBES -PERL_CALLCONV short Perl_my_htobes(short n); +#if defined(PERL_NEED_MY_HTOLEI) +PERL_CALLCONV int Perl_my_htolei(int n); #endif -#ifdef PERL_NEED_MY_BETOHS -PERL_CALLCONV short Perl_my_betohs(short n); +#if defined(PERL_NEED_MY_HTOLEL) +PERL_CALLCONV long Perl_my_htolel(long n); #endif -#ifdef PERL_NEED_MY_HTOLEI -PERL_CALLCONV int Perl_my_htolei(int n); +#if defined(PERL_NEED_MY_HTOLES) +PERL_CALLCONV short Perl_my_htoles(short n); #endif -#ifdef PERL_NEED_MY_LETOHI -PERL_CALLCONV int Perl_my_letohi(int n); +#if defined(PERL_NEED_MY_LETOH16) +PERL_CALLCONV U16 Perl_my_letoh16(U16 n); #endif -#ifdef PERL_NEED_MY_HTOBEI -PERL_CALLCONV int Perl_my_htobei(int n); +#if defined(PERL_NEED_MY_LETOH32) +PERL_CALLCONV U32 Perl_my_letoh32(U32 n); #endif -#ifdef PERL_NEED_MY_BETOHI -PERL_CALLCONV int Perl_my_betohi(int n); +#if defined(PERL_NEED_MY_LETOH64) +PERL_CALLCONV U64 Perl_my_letoh64(U64 n); #endif -#ifdef PERL_NEED_MY_HTOLEL -PERL_CALLCONV long Perl_my_htolel(long n); +#if defined(PERL_NEED_MY_LETOHI) +PERL_CALLCONV int Perl_my_letohi(int n); #endif -#ifdef PERL_NEED_MY_LETOHL +#if defined(PERL_NEED_MY_LETOHL) PERL_CALLCONV long Perl_my_letohl(long n); #endif -#ifdef PERL_NEED_MY_HTOBEL -PERL_CALLCONV long Perl_my_htobel(long n); -#endif -#ifdef PERL_NEED_MY_BETOHL -PERL_CALLCONV long Perl_my_betohl(long n); +#if defined(PERL_NEED_MY_LETOHS) +PERL_CALLCONV short Perl_my_letohs(short n); #endif - -PERL_CALLCONV void Perl_my_swabn(void* ptr, int n) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_MY_SWABN \ - assert(ptr) - - -PERL_CALLCONV GV* Perl_gv_fetchpvn_flags(pTHX_ const char* name, STRLEN len, I32 flags, const svtype sv_type) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS \ - assert(name) - -PERL_CALLCONV GV* Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_type) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GV_FETCHSV \ - assert(name) - -PERL_CALLCONV bool Perl_is_gv_magical_sv(pTHX_ SV *const name_sv, U32 flags) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_GV_MAGICAL_SV \ - assert(name_sv) - - -PERL_CALLCONV bool Perl_stashpv_hvname_match(pTHX_ const COP *c, const HV *hv) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1) +#if defined(PERL_OLD_COPY_ON_WRITE) +PERL_CALLCONV SV* Perl_sv_setsv_cow(pTHX_ SV* dstr, SV* sstr) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_STASHPV_HVNAME_MATCH \ - assert(c); assert(hv) +#define PERL_ARGS_ASSERT_SV_SETSV_COW \ + assert(sstr) +#endif +#if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C) +STATIC void S_pidgone(pTHX_ Pid_t pid, int status); +#endif +#if defined(PL_OP_SLAB_ALLOC) +PERL_CALLCONV void* Perl_Slab_Alloc(pTHX_ size_t sz) + __attribute__malloc__ + __attribute__warn_unused_result__; -#ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP -PERL_CALLCONV void Perl_dump_sv_child(pTHX_ SV *sv) +PERL_CALLCONV void Perl_Slab_Free(pTHX_ void *op) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DUMP_SV_CHILD \ - assert(sv) +#define PERL_ARGS_ASSERT_SLAB_FREE \ + assert(op) #endif +#if defined(UNLINK_ALL_VERSIONS) +PERL_CALLCONV I32 Perl_unlnk(pTHX_ const char* f) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_UNLNK \ + assert(f) -#ifdef PERL_DONT_CREATE_GVSV -/* PERL_CALLCONV GV* Perl_gv_SVadd(pTHX_ GV *gv); */ -#endif -#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) -STATIC bool S_ckwarn_common(pTHX_ U32 w); #endif -PERL_CALLCONV bool Perl_ckwarn(pTHX_ U32 w); -PERL_CALLCONV bool Perl_ckwarn_d(pTHX_ U32 w); -PERL_CALLCONV STRLEN * Perl_new_warnings_bitfield(pTHX_ STRLEN *buffer, const char *const bits, STRLEN size) - __attribute__malloc__ +#if defined(USE_ITHREADS) +PERL_CALLCONV void* Perl_any_dup(pTHX_ void* v, const PerlInterpreter* proto_perl) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_NEW_WARNINGS_BITFIELD \ - assert(bits) - - -PERL_CALLCONV void Perl_offer_nice_chunk(pTHX_ void *const chunk, const U32 chunk_size) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_OFFER_NICE_CHUNK \ - assert(chunk) +#define PERL_ARGS_ASSERT_ANY_DUP \ + assert(proto_perl) +PERL_CALLCONV void Perl_clone_params_del(CLONE_PARAMS *param) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_CLONE_PARAMS_DEL \ + assert(param) -#ifndef SPRINTF_RETURNS_STRLEN -PERL_CALLCONV int Perl_my_sprintf(char *buffer, const char *pat, ...) +PERL_CALLCONV CLONE_PARAMS * Perl_clone_params_new(PerlInterpreter *const from, PerlInterpreter *const to) + __attribute__malloc__ + __attribute__warn_unused_result__ __attribute__nonnull__(1) __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_MY_SPRINTF \ - assert(buffer); assert(pat) +#define PERL_ARGS_ASSERT_CLONE_PARAMS_NEW \ + assert(from); assert(to) -#endif +PERL_CALLCONV PERL_CONTEXT* Perl_cx_dup(pTHX_ PERL_CONTEXT* cx, I32 ix, I32 max, CLONE_PARAMS* param) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_CX_DUP \ + assert(param) -PERL_CALLCONV int Perl_my_snprintf(char *buffer, const Size_t len, const char *format, ...) - __attribute__format__(__printf__,3,4) - __attribute__nonnull__(1) - __attribute__nonnull__(3); -#define PERL_ARGS_ASSERT_MY_SNPRINTF \ - assert(buffer); assert(format) +PERL_CALLCONV DIR* Perl_dirp_dup(pTHX_ DIR *const dp, CLONE_PARAMS *const param) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_DIRP_DUP \ + assert(param) -PERL_CALLCONV int Perl_my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap) - __attribute__nonnull__(1) - __attribute__nonnull__(3); -#define PERL_ARGS_ASSERT_MY_VSNPRINTF \ - assert(buffer); assert(format) +PERL_CALLCONV PerlIO* Perl_fp_dup(pTHX_ PerlIO *const fp, const char type, CLONE_PARAMS *const param) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_FP_DUP \ + assert(param) +PERL_CALLCONV GP* Perl_gp_dup(pTHX_ GP *const gp, CLONE_PARAMS *const param) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_GP_DUP \ + assert(param) -PERL_CALLCONV void Perl_my_clearenv(pTHX); +PERL_CALLCONV HE* Perl_he_dup(pTHX_ const HE* e, bool shared, CLONE_PARAMS* param) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_HE_DUP \ + assert(param) -#ifdef PERL_IMPLICIT_CONTEXT -#ifdef PERL_GLOBAL_STRUCT_PRIVATE -PERL_CALLCONV void* Perl_my_cxt_init(pTHX_ const char *my_cxt_key, size_t size) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MY_CXT_INIT \ - assert(my_cxt_key) +PERL_CALLCONV HEK* Perl_hek_dup(pTHX_ HEK* e, CLONE_PARAMS* param) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_HEK_DUP \ + assert(param) -PERL_CALLCONV int Perl_my_cxt_index(pTHX_ const char *my_cxt_key) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MY_CXT_INDEX \ - assert(my_cxt_key) +PERL_CALLCONV MAGIC* Perl_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAMS *const param) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_MG_DUP \ + assert(param) -#else -PERL_CALLCONV void* Perl_my_cxt_init(pTHX_ int *index, size_t size) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MY_CXT_INIT \ - assert(index) +PERL_CALLCONV struct mro_meta* Perl_mro_meta_dup(pTHX_ struct mro_meta* smeta, CLONE_PARAMS* param) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_MRO_META_DUP \ + assert(smeta); assert(param) -#endif -#endif +PERL_CALLCONV OP* Perl_newPADOP(pTHX_ I32 type, I32 flags, SV* sv) + __attribute__malloc__ + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_NEWPADOP \ + assert(sv) -#ifndef HAS_STRLCAT -PERL_CALLCONV Size_t Perl_my_strlcat(char *dst, const char *src, Size_t size); -#endif +PERL_CALLCONV AV* Perl_padlist_dup(pTHX_ AV *const srcpad, CLONE_PARAMS *const param) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_PADLIST_DUP \ + assert(param) -#ifndef HAS_STRLCPY -PERL_CALLCONV Size_t Perl_my_strlcpy(char *dst, const char *src, Size_t size); -#endif +PERL_CALLCONV yy_parser* Perl_parser_dup(pTHX_ const yy_parser *const proto, CLONE_PARAMS *const param) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_PARSER_DUP \ + assert(param) -#ifdef PERL_MAD -PERL_CALLCONV void Perl_pad_peg(const char* s) +PERL_CALLCONV PerlInterpreter* perl_clone(PerlInterpreter *proto_perl, UV flags) __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_PAD_PEG \ - assert(s) +#define PERL_ARGS_ASSERT_PERL_CLONE \ + assert(proto_perl) -#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) -STATIC void S_xmldump_attr(pTHX_ I32 level, PerlIO *file, const char* pat, ...) - __attribute__format__(__printf__,pTHX_3,pTHX_4) +PERL_CALLCONV void Perl_re_dup_guts(pTHX_ const REGEXP *sstr, REGEXP *dstr, CLONE_PARAMS* param) + __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_XMLDUMP_ATTR \ - assert(file); assert(pat) +#define PERL_ARGS_ASSERT_RE_DUP_GUTS \ + assert(sstr); assert(dstr); assert(param) -#endif -PERL_CALLCONV void Perl_xmldump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...) - __attribute__format__(__printf__,pTHX_3,pTHX_4) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_XMLDUMP_INDENT \ - assert(file); assert(pat) +PERL_CALLCONV void* Perl_regdupe_internal(pTHX_ REGEXP * const r, CLONE_PARAMS* param) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_REGDUPE_INTERNAL \ + assert(r); assert(param) -PERL_CALLCONV void Perl_xmldump_vindent(pTHX_ I32 level, PerlIO *file, const char* pat, va_list *args) +PERL_CALLCONV void Perl_rvpv_dup(pTHX_ SV *const dstr, const SV *const sstr, CLONE_PARAMS *const param) + __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_XMLDUMP_VINDENT \ - assert(file); assert(pat) - -PERL_CALLCONV void Perl_xmldump_all(pTHX); -PERL_CALLCONV void Perl_xmldump_all_perl(pTHX_ bool justperl); -PERL_CALLCONV void Perl_xmldump_packsubs(pTHX_ const HV* stash) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_XMLDUMP_PACKSUBS \ - assert(stash) - -PERL_CALLCONV void Perl_xmldump_packsubs_perl(pTHX_ const HV* stash, bool justperl) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_XMLDUMP_PACKSUBS_PERL \ - assert(stash) - -PERL_CALLCONV void Perl_xmldump_sub(pTHX_ const GV* gv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_XMLDUMP_SUB \ - assert(gv) - -PERL_CALLCONV void Perl_xmldump_sub_perl(pTHX_ const GV* gv, bool justperl) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_XMLDUMP_SUB_PERL \ - assert(gv) - -PERL_CALLCONV void Perl_xmldump_form(pTHX_ const GV* gv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_XMLDUMP_FORM \ - assert(gv) +#define PERL_ARGS_ASSERT_RVPV_DUP \ + assert(dstr); assert(sstr); assert(param) -PERL_CALLCONV void Perl_xmldump_eval(pTHX); -PERL_CALLCONV char* Perl_sv_catxmlsv(pTHX_ SV *dsv, SV *ssv) - __attribute__nonnull__(pTHX_1) +PERL_CALLCONV PERL_SI* Perl_si_dup(pTHX_ PERL_SI* si, CLONE_PARAMS* param) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_CATXMLSV \ - assert(dsv); assert(ssv) +#define PERL_ARGS_ASSERT_SI_DUP \ + assert(param) -PERL_CALLCONV char* Perl_sv_catxmlpvn(pTHX_ SV *dsv, const char *pv, STRLEN len, int utf8) +PERL_CALLCONV ANY* Perl_ss_dup(pTHX_ PerlInterpreter* proto_perl, CLONE_PARAMS* param) + __attribute__malloc__ + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_CATXMLPVN \ - assert(dsv); assert(pv) - -PERL_CALLCONV char* Perl_sv_xmlpeek(pTHX_ SV* sv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_XMLPEEK \ - assert(sv) - -PERL_CALLCONV void Perl_do_pmop_xmldump(pTHX_ I32 level, PerlIO *file, const PMOP *pm) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_DO_PMOP_XMLDUMP \ - assert(file) +#define PERL_ARGS_ASSERT_SS_DUP \ + assert(proto_perl); assert(param) -PERL_CALLCONV void Perl_pmop_xmldump(pTHX_ const PMOP* pm); -PERL_CALLCONV void Perl_do_op_xmldump(pTHX_ I32 level, PerlIO *file, const OP *o) +PERL_CALLCONV SV* Perl_sv_dup(pTHX_ const SV *const sstr, CLONE_PARAMS *const param) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_DO_OP_XMLDUMP \ - assert(file) - -PERL_CALLCONV void Perl_op_xmldump(pTHX_ const OP *o) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_OP_XMLDUMP \ - assert(o) - - -PERL_CALLCONV TOKEN* Perl_newTOKEN(pTHX_ I32 optype, YYSTYPE lval, MADPROP* madprop); -PERL_CALLCONV void Perl_token_free(pTHX_ TOKEN *tk) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_TOKEN_FREE \ - assert(tk) - -PERL_CALLCONV void Perl_token_getmad(pTHX_ TOKEN *tk, OP *o, char slot) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_TOKEN_GETMAD \ - assert(tk) +#define PERL_ARGS_ASSERT_SV_DUP \ + assert(param) -PERL_CALLCONV void Perl_op_getmad_weak(pTHX_ OP* from, OP* o, char slot); -PERL_CALLCONV void Perl_op_getmad(pTHX_ OP* from, OP* o, char slot); -PERL_CALLCONV void Perl_prepend_madprops(pTHX_ MADPROP* mp, OP* o, char slot); -PERL_CALLCONV void Perl_append_madprops(pTHX_ MADPROP* tm, OP* o, char slot); -PERL_CALLCONV void Perl_addmad(pTHX_ MADPROP* tm, MADPROP** root, char slot); -PERL_CALLCONV MADPROP* Perl_newMADsv(pTHX_ char key, SV* sv) +PERL_CALLCONV SV* Perl_sv_dup_inc(pTHX_ const SV *const sstr, CLONE_PARAMS *const param) + __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_NEWMADSV \ - assert(sv) - -PERL_CALLCONV MADPROP* Perl_newMADPROP(pTHX_ char key, char type, void* val, I32 vlen); -PERL_CALLCONV void Perl_mad_free(pTHX_ MADPROP* mp); - -# if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) -STATIC char* S_skipspace0(pTHX_ char *s) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SKIPSPACE0 \ - assert(s) - -STATIC char* S_skipspace1(pTHX_ char *s) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SKIPSPACE1 \ - assert(s) - -STATIC char* S_skipspace2(pTHX_ char *s, SV **sv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SKIPSPACE2 \ - assert(s) - -STATIC void S_start_force(pTHX_ int where); -STATIC void S_curmad(pTHX_ char slot, SV *sv); -# endif -PERL_CALLCONV int Perl_madlex(pTHX); -PERL_CALLCONV int Perl_madparse(pTHX); -#endif -#if !defined(HAS_SIGNBIT) -PERL_CALLCONV int Perl_signbit(NV f) - __attribute__pure__; +#define PERL_ARGS_ASSERT_SV_DUP_INC \ + assert(param) #endif - -PERL_CALLCONV void Perl_emulate_cop_io(pTHX_ const COP *const c, SV *const sv) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_EMULATE_COP_IO \ - assert(c); assert(sv) - -PERL_CALLCONV REGEXP * Perl_get_re_arg(pTHX_ SV *sv); - -PERL_CALLCONV SV* Perl_mro_get_private_data(pTHX_ struct mro_meta *const smeta, const struct mro_alg *const which) +#if defined(USE_LOCALE_COLLATE) +PERL_CALLCONV int Perl_magic_setcollxfrm(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MRO_GET_PRIVATE_DATA \ - assert(smeta); assert(which) +#define PERL_ARGS_ASSERT_MAGIC_SETCOLLXFRM \ + assert(sv); assert(mg) -PERL_CALLCONV SV* Perl_mro_set_private_data(pTHX_ struct mro_meta *const smeta, const struct mro_alg *const which, SV *const data) +PERL_CALLCONV char* Perl_mem_collxfrm(pTHX_ const char* s, STRLEN len, STRLEN* xlen) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_MRO_SET_PRIVATE_DATA \ - assert(smeta); assert(which); assert(data) - -PERL_CALLCONV const struct mro_alg * Perl_mro_get_from_name(pTHX_ SV *name) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MRO_GET_FROM_NAME \ - assert(name) - -PERL_CALLCONV void Perl_mro_register(pTHX_ const struct mro_alg *mro) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MRO_REGISTER \ - assert(mro) +#define PERL_ARGS_ASSERT_MEM_COLLXFRM \ + assert(s); assert(xlen) -PERL_CALLCONV void Perl_mro_set_mro(pTHX_ struct mro_meta *const meta, SV *const name) +/* PERL_CALLCONV char* sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MRO_SET_MRO \ - assert(meta); assert(name) - -PERL_CALLCONV struct mro_meta* Perl_mro_meta_init(pTHX_ HV* stash) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MRO_META_INIT \ - assert(stash) + __attribute__nonnull__(pTHX_2); */ -#if defined(USE_ITHREADS) -PERL_CALLCONV struct mro_meta* Perl_mro_meta_dup(pTHX_ struct mro_meta* smeta, CLONE_PARAMS* param) +PERL_CALLCONV char* Perl_sv_collxfrm_flags(pTHX_ SV *const sv, STRLEN *const nxp, I32 const flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_MRO_META_DUP \ - assert(smeta); assert(param) +#define PERL_ARGS_ASSERT_SV_COLLXFRM_FLAGS \ + assert(sv); assert(nxp) #endif -PERL_CALLCONV AV* Perl_mro_get_linear_isa(pTHX_ HV* stash) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA \ - assert(stash) +#if defined(USE_PERLIO) && !defined(USE_SFIO) +PERL_CALLCONV void Perl_PerlIO_clearerr(pTHX_ PerlIO *f); +PERL_CALLCONV int Perl_PerlIO_close(pTHX_ PerlIO *f); +PERL_CALLCONV int Perl_PerlIO_eof(pTHX_ PerlIO *f); +PERL_CALLCONV int Perl_PerlIO_error(pTHX_ PerlIO *f); +PERL_CALLCONV int Perl_PerlIO_fileno(pTHX_ PerlIO *f); +PERL_CALLCONV int Perl_PerlIO_fill(pTHX_ PerlIO *f); +PERL_CALLCONV int Perl_PerlIO_flush(pTHX_ PerlIO *f); +PERL_CALLCONV STDCHAR * Perl_PerlIO_get_base(pTHX_ PerlIO *f); +PERL_CALLCONV int Perl_PerlIO_get_bufsiz(pTHX_ PerlIO *f) + __attribute__warn_unused_result__; -#if defined(PERL_IN_MRO_C) || defined(PERL_DECL_PROT) -STATIC AV* S_mro_get_linear_isa_dfs(pTHX_ HV* stash, U32 level) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA_DFS \ - assert(stash) +PERL_CALLCONV int Perl_PerlIO_get_cnt(pTHX_ PerlIO *f) + __attribute__warn_unused_result__; -#endif -PERL_CALLCONV void Perl_mro_isa_changed_in(pTHX_ HV* stash) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MRO_ISA_CHANGED_IN \ - assert(stash) +PERL_CALLCONV STDCHAR * Perl_PerlIO_get_ptr(pTHX_ PerlIO *f); +PERL_CALLCONV SSize_t Perl_PerlIO_read(pTHX_ PerlIO *f, void *vbuf, Size_t count) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_PERLIO_READ \ + assert(vbuf) -PERL_CALLCONV void Perl_mro_method_changed_in(pTHX_ HV* stash) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MRO_METHOD_CHANGED_IN \ - assert(stash) +PERL_CALLCONV int Perl_PerlIO_seek(pTHX_ PerlIO *f, Off_t offset, int whence); +PERL_CALLCONV void Perl_PerlIO_set_cnt(pTHX_ PerlIO *f, int cnt); +PERL_CALLCONV void Perl_PerlIO_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR *ptr, int cnt); +PERL_CALLCONV void Perl_PerlIO_setlinebuf(pTHX_ PerlIO *f); +PERL_CALLCONV PerlIO * Perl_PerlIO_stderr(pTHX) + __attribute__warn_unused_result__; -PERL_CALLCONV void Perl_boot_core_mro(pTHX); -PERL_CALLCONV void Perl_sys_init(int* argc, char*** argv) - __attribute__nonnull__(1) - __attribute__nonnull__(2); -#define PERL_ARGS_ASSERT_SYS_INIT \ - assert(argc); assert(argv) +PERL_CALLCONV PerlIO * Perl_PerlIO_stdin(pTHX) + __attribute__warn_unused_result__; -PERL_CALLCONV void Perl_sys_init3(int* argc, char*** argv, char*** env) - __attribute__nonnull__(1) - __attribute__nonnull__(2) - __attribute__nonnull__(3); -#define PERL_ARGS_ASSERT_SYS_INIT3 \ - assert(argc); assert(argv); assert(env) +PERL_CALLCONV PerlIO * Perl_PerlIO_stdout(pTHX) + __attribute__warn_unused_result__; -PERL_CALLCONV void Perl_sys_term(void); -PERL_CALLCONV const char * Perl_fetch_cop_label(pTHX_ struct refcounted_he *const chain, STRLEN *len, U32 *flags); -PERL_CALLCONV struct refcounted_he * Perl_store_cop_label(pTHX_ struct refcounted_he *const chain, const char *label) +PERL_CALLCONV Off_t Perl_PerlIO_tell(pTHX_ PerlIO *f); +PERL_CALLCONV SSize_t Perl_PerlIO_unread(pTHX_ PerlIO *f, const void *vbuf, Size_t count) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_STORE_COP_LABEL \ - assert(label) +#define PERL_ARGS_ASSERT_PERLIO_UNREAD \ + assert(vbuf) +PERL_CALLCONV SSize_t Perl_PerlIO_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_PERLIO_WRITE \ + assert(vbuf) -PERL_CALLCONV int Perl_keyword_plugin_standard(pTHX_ char* keyword_ptr, STRLEN keyword_len, OP** op_ptr) - __attribute__nonnull__(pTHX_1) +#endif +#if defined(USE_REENTRANT_API) +PERL_CALLCONV void Perl_reentrant_free(pTHX); +PERL_CALLCONV void Perl_reentrant_init(pTHX); +PERL_CALLCONV void* Perl_reentrant_retry(const char *f, ...) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_REENTRANT_RETRY \ + assert(f) + +PERL_CALLCONV void Perl_reentrant_size(pTHX); +#endif +#if defined(WIN32) || defined(__SYMBIAN32__) || defined(VMS) +PERL_CALLCONV int Perl_do_aspawn(pTHX_ SV* really, SV** mark, SV** sp) + __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_KEYWORD_PLUGIN_STANDARD \ - assert(keyword_ptr); assert(op_ptr) +#define PERL_ARGS_ASSERT_DO_ASPAWN \ + assert(mark); assert(sp) +PERL_CALLCONV int Perl_do_spawn(pTHX_ char* cmd) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DO_SPAWN \ + assert(cmd) + +PERL_CALLCONV int Perl_do_spawn_nowait(pTHX_ char* cmd) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DO_SPAWN_NOWAIT \ + assert(cmd) +#endif +#ifdef PERL_CORE +# include "pp_proto.h" +#endif END_EXTERN_C -/* - * ex: set ts=8 sts=4 sw=4 noet: - */ + /* ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/reentr.h b/Master/tlpkg/tlperl/lib/CORE/reentr.h index 004cc46b6cb..3510fc55457 100644 --- a/Master/tlpkg/tlperl/lib/CORE/reentr.h +++ b/Master/tlpkg/tlperl/lib/CORE/reentr.h @@ -7,8 +7,9 @@ * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * - * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - * This file is built by reentr.pl from data in reentr.pl. + * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! + * This file is built by regen/reentr.pl from data in regen/reentr.pl. + * Any changes made here will be lost! */ #ifndef REENTR_H diff --git a/Master/tlpkg/tlperl/lib/CORE/regcharclass.h b/Master/tlpkg/tlperl/lib/CORE/regcharclass.h index f9a1558d66a..47d4b41925b 100644 --- a/Master/tlpkg/tlperl/lib/CORE/regcharclass.h +++ b/Master/tlpkg/tlperl/lib/CORE/regcharclass.h @@ -1,17 +1,15 @@ -/* -*- buffer-read-only: t -*- +/* -*- buffer-read-only: t -*- * * regcharclass.h * - * Copyright (C) 2007, by Larry Wall and others + * Copyright (C) 2007 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - * This file is built by Porting/regcharclass.pl. - * + * This file is built by regen/regcharclass.pl. * Any changes made here will be lost! - * */ /* @@ -363,9 +361,12 @@ /* TRICKYFOLD: Problematic fold case letters. - 0x00DF # LATIN1 SMALL LETTER SHARP S + 0x00DF # LATIN SMALL LETTER SHARP S 0x0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS 0x03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + 0x1E9E # LATIN CAPITAL LETTER SHARP S, because maps to same as 00DF + 0x1FD3 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA; maps same as 0390 + 0x1FE3 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA; maps same as 03B0 */ /*** GENERATED CODE ***/ #define is_TRICKYFOLD(s,is_utf8) \ @@ -374,12 +375,32 @@ ( ( 0x9F == ((U8*)s)[1] ) ? 2 : 0 ) \ : ( 0xCE == ((U8*)s)[0] ) ? \ ( ( 0x90 == ((U8*)s)[1] || 0xB0 == ((U8*)s)[1] ) ? 2 : 0 ) \ + : ( 0xE1 == ((U8*)s)[0] ) ? \ + ( ( 0xBA == ((U8*)s)[1] ) ? \ + ( ( 0x9E == ((U8*)s)[2] ) ? 3 : 0 ) \ + : ( 0xBF == ((U8*)s)[1] ) ? \ + ( ( 0x93 == ((U8*)s)[2] || 0xA3 == ((U8*)s)[2] ) ? 3 : 0 ) \ + : 0 ) \ : 0 ) \ : ( 0xDF == ((U8*)s)[0] ) ) /*** GENERATED CODE ***/ #define is_TRICKYFOLD_safe(s,e,is_utf8) \ -( ((e)-(s) > 1) ? \ +( ((e)-(s) > 2) ? \ + ( ( is_utf8 ) ? \ + ( ( 0xC3 == ((U8*)s)[0] ) ? \ + ( ( 0x9F == ((U8*)s)[1] ) ? 2 : 0 ) \ + : ( 0xCE == ((U8*)s)[0] ) ? \ + ( ( 0x90 == ((U8*)s)[1] || 0xB0 == ((U8*)s)[1] ) ? 2 : 0 ) \ + : ( 0xE1 == ((U8*)s)[0] ) ? \ + ( ( 0xBA == ((U8*)s)[1] ) ? \ + ( ( 0x9E == ((U8*)s)[2] ) ? 3 : 0 ) \ + : ( 0xBF == ((U8*)s)[1] ) ? \ + ( ( 0x93 == ((U8*)s)[2] || 0xA3 == ((U8*)s)[2] ) ? 3 : 0 ) \ + : 0 ) \ + : 0 ) \ + : ( 0xDF == ((U8*)s)[0] ) ) \ +: ((e)-(s) > 1) ? \ ( ( is_utf8 ) ? \ ( ( 0xC3 == ((U8*)s)[0] ) ? \ ( ( 0x9F == ((U8*)s)[1] ) ? 2 : 0 ) \ @@ -397,7 +418,10 @@ #define is_TRICKYFOLD_cp(cp) \ ( 0xDF == cp || ( 0xDF < cp && \ ( 0x390 == cp || ( 0x390 < cp && \ -0x3B0 == cp ) ) ) ) +( 0x3B0 == cp || ( 0x3B0 < cp && \ +( 0x1E9E == cp || ( 0x1E9E < cp && \ +( 0x1FD3 == cp || ( 0x1FD3 < cp && \ +0x1FE3 == cp ) ) ) ) ) ) ) ) ) ) /*** GENERATED CODE ***/ #define what_TRICKYFOLD(s,is_utf8) \ @@ -407,12 +431,35 @@ : ( 0xCE == ((U8*)s)[0] ) ? \ ( ( 0x90 == ((U8*)s)[1] ) ? 0x390 \ : ( 0xB0 == ((U8*)s)[1] ) ? 0x3B0 : 0 ) \ + : ( 0xE1 == ((U8*)s)[0] ) ? \ + ( ( 0xBA == ((U8*)s)[1] ) ? \ + ( ( 0x9E == ((U8*)s)[2] ) ? 0x1E9E : 0 ) \ + : ( 0xBF == ((U8*)s)[1] ) ? \ + ( ( 0x93 == ((U8*)s)[2] ) ? 0x1FD3 \ + : ( 0xA3 == ((U8*)s)[2] ) ? 0x1FE3 : 0 ) \ + : 0 ) \ : 0 ) \ : ( 0xDF == ((U8*)s)[0] ) ? 0xDF : 0 ) /*** GENERATED CODE ***/ #define what_TRICKYFOLD_safe(s,e,is_utf8) \ -( ((e)-(s) > 1) ? \ +( ((e)-(s) > 2) ? \ + ( ( is_utf8 ) ? \ + ( ( 0xC3 == ((U8*)s)[0] ) ? \ + ( ( 0x9F == ((U8*)s)[1] ) ? 0xDF : 0 ) \ + : ( 0xCE == ((U8*)s)[0] ) ? \ + ( ( 0x90 == ((U8*)s)[1] ) ? 0x390 \ + : ( 0xB0 == ((U8*)s)[1] ) ? 0x3B0 : 0 ) \ + : ( 0xE1 == ((U8*)s)[0] ) ? \ + ( ( 0xBA == ((U8*)s)[1] ) ? \ + ( ( 0x9E == ((U8*)s)[2] ) ? 0x1E9E : 0 ) \ + : ( 0xBF == ((U8*)s)[1] ) ? \ + ( ( 0x93 == ((U8*)s)[2] ) ? 0x1FD3 \ + : ( 0xA3 == ((U8*)s)[2] ) ? 0x1FE3 : 0 ) \ + : 0 ) \ + : 0 ) \ + : ( 0xDF == ((U8*)s)[0] ) ? 0xDF : 0 ) \ +: ((e)-(s) > 1) ? \ ( ( is_utf8 ) ? \ ( ( 0xC3 == ((U8*)s)[0] ) ? \ ( ( 0x9F == ((U8*)s)[1] ) ? 0xDF : 0 ) \ @@ -433,12 +480,35 @@ : ( 0xCE == ((U8*)s)[0] ) ? \ ( ( 0x90 == ((U8*)s)[1] ) ? len=2, 0x390 \ : ( 0xB0 == ((U8*)s)[1] ) ? len=2, 0x3B0 : 0 ) \ + : ( 0xE1 == ((U8*)s)[0] ) ? \ + ( ( 0xBA == ((U8*)s)[1] ) ? \ + ( ( 0x9E == ((U8*)s)[2] ) ? len=3, 0x1E9E : 0 ) \ + : ( 0xBF == ((U8*)s)[1] ) ? \ + ( ( 0x93 == ((U8*)s)[2] ) ? len=3, 0x1FD3 \ + : ( 0xA3 == ((U8*)s)[2] ) ? len=3, 0x1FE3 : 0 ) \ + : 0 ) \ : 0 ) \ : ( 0xDF == ((U8*)s)[0] ) ? len=1, 0xDF : 0 ) /*** GENERATED CODE ***/ #define what_len_TRICKYFOLD_safe(s,e,is_utf8,len) \ -( ((e)-(s) > 1) ? \ +( ((e)-(s) > 2) ? \ + ( ( is_utf8 ) ? \ + ( ( 0xC3 == ((U8*)s)[0] ) ? \ + ( ( 0x9F == ((U8*)s)[1] ) ? len=2, 0xDF : 0 ) \ + : ( 0xCE == ((U8*)s)[0] ) ? \ + ( ( 0x90 == ((U8*)s)[1] ) ? len=2, 0x390 \ + : ( 0xB0 == ((U8*)s)[1] ) ? len=2, 0x3B0 : 0 ) \ + : ( 0xE1 == ((U8*)s)[0] ) ? \ + ( ( 0xBA == ((U8*)s)[1] ) ? \ + ( ( 0x9E == ((U8*)s)[2] ) ? len=3, 0x1E9E : 0 ) \ + : ( 0xBF == ((U8*)s)[1] ) ? \ + ( ( 0x93 == ((U8*)s)[2] ) ? len=3, 0x1FD3 \ + : ( 0xA3 == ((U8*)s)[2] ) ? len=3, 0x1FE3 : 0 ) \ + : 0 ) \ + : 0 ) \ + : ( 0xDF == ((U8*)s)[0] ) ? len=1, 0xDF : 0 ) \ +: ((e)-(s) > 1) ? \ ( ( is_utf8 ) ? \ ( ( 0xC3 == ((U8*)s)[0] ) ? \ ( ( 0x9F == ((U8*)s)[1] ) ? len=2, 0xDF : 0 ) \ @@ -451,4 +521,5 @@ ( ( ( !( is_utf8 ) ) && ( 0xDF == ((U8*)s)[0] ) ) ? len=1, 0xDF : 0 ) \ : 0 ) + /* ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/regcomp.h b/Master/tlpkg/tlperl/lib/CORE/regcomp.h index 20b4401ed2f..c8f593b78d8 100644 --- a/Master/tlpkg/tlperl/lib/CORE/regcomp.h +++ b/Master/tlpkg/tlperl/lib/CORE/regcomp.h @@ -15,28 +15,9 @@ typedef OP OP_4tree; /* Will be redefined later. */ /* Convert branch sequences to more efficient trie ops? */ #define PERL_ENABLE_TRIE_OPTIMISATION 1 -/* Be really agressive about optimising patterns with trie sequences? */ +/* Be really aggressive about optimising patterns with trie sequences? */ #define PERL_ENABLE_EXTENDED_TRIE_OPTIMISATION 1 -/* Use old style unicode mappings for perl and posix character classes - * - * NOTE: Enabling this essentially breaks character class matching against unicode - * strings, so that POSIX char classes match when they shouldn't, and \d matches - * way more than 10 characters, and sometimes a charclass and its complement either - * both match or neither match. - * NOTE: Disabling this will cause various backwards compatibility issues to rear - * their head, and tests to fail. However it will make the charclass behaviour - * consistant regardless of internal string type, and make character class inversions - * consistant. The tests that fail in the regex engine are basically broken tests. - * - * Personally I think 5.12 should disable this for sure. Its a bit more debatable for - * 5.10, so for now im leaving it enabled. - * XXX: It is now enabled for 5.11/5.12 - * - * -demerphq - */ -#define PERL_LEGACY_UNICODE_CHARCLASS_MAPPINGS 1 - /* Should the optimiser take positive assertions into account? */ #define PERL_ENABLE_POSITIVE_ASSERTION_STUDY 0 @@ -204,15 +185,16 @@ struct regnode_charclass { U8 flags; U8 type; U16 next_off; - U32 arg1; + U32 arg1; /* used as ptr in S_regclass */ char bitmap[ANYOF_BITMAP_SIZE]; /* only compile-time */ }; -struct regnode_charclass_class { /* has [[:blah:]] classes */ - U8 flags; /* should have ANYOF_CLASS here */ +/* has runtime (locale) \d, \w, ..., [:posix:] classes */ +struct regnode_charclass_class { + U8 flags; /* ANYOF_CLASS bit must go here */ U8 type; U16 next_off; - U32 arg1; + U32 arg1; /* used as ptr in S_regclass */ char bitmap[ANYOF_BITMAP_SIZE]; /* both compile-time */ char classflags[ANYOF_CLASSBITMAP_SIZE]; /* and run-time */ }; @@ -271,6 +253,9 @@ struct regnode_charclass_class { /* has [[:blah:]] classes */ #undef STRING #define OP(p) ((p)->type) +#define FLAGS(p) ((p)->flags) /* Caution: Doesn't apply to all \ + regnode types. For some, it's the \ + character set of the regnode */ #define OPERAND(p) (((struct regnode_string *)p)->string) #define MASK(p) ((char*)OPERAND(p)) #define STR_LEN(p) (((struct regnode_string *)p)->str_len) @@ -306,28 +291,87 @@ struct regnode_charclass_class { /* has [[:blah:]] classes */ #define SIZE_ONLY (RExC_emit == &PL_regdummy) -/* Flags for node->flags of ANYOF */ +/* If the bitmap doesn't fully represent what this ANYOF node can match, the + * ARG is set to this special value (since 0, 1, ... are legal, but will never + * reach this high). */ +#define ANYOF_NONBITMAP_EMPTY ((U32) -1) + +/* The information used to be stored as as combination of the ANYOF_UTF8 and + * ANYOF_NONBITMAP_NON_UTF8 bits in the flags field, but was moved out of there + * to free up a bit for other uses. This tries to hide the change from + * existing code as much as possible. Now, the data structure that goes in ARG + * is not allocated unless it is needed, and that is what is used to determine + * if there is something outside the bitmap. The code now assumes that if + * that structure exists, that any UTF-8 encoded string should be tried against + * it, but a non-UTF8-encoded string will be tried only if the + * ANYOF_NONBITMAP_NON_UTF8 bit is also set. */ +#define ANYOF_NONBITMAP(node) (ARG(node) != ANYOF_NONBITMAP_EMPTY) + +/* Flags for node->flags of ANYOF. These are in short supply, so some games + * are done to share them, as described below. If necessary, the ANYOF_LOCALE + * and ANYOF_CLASS bits could be shared with a space penalty for locale nodes, + * but this isn't quite so easy, as the optimizer also uses ANYOF_CLASS. + * Once the planned change to compile all the above-latin1 code points is done, + * then the UNICODE_ALL bit can be freed up, with a small performance penalty. + * If flags need to be added that are applicable to the synthetic start class + * only, with some work, they could be put in the next-node field, or in an + * unused bit of the classflags field. */ + +#define ANYOF_LOCALE 0x01 /* /l modifier */ + +/* The fold is calculated and stored in the bitmap where possible at compile + * time. However there are two cases where it isn't possible. These share + * this bit: 1) under locale, where the actual folding varies depending on + * what the locale is at the time of execution; and 2) where the folding is + * specified in a swash, not the bitmap, such as characters which aren't + * specified in the bitmap, or properties that aren't looked at at compile time + */ +#define ANYOF_LOC_NONBITMAP_FOLD 0x02 + +#define ANYOF_INVERT 0x04 -#define ANYOF_CLASS 0x08 /* has [[:blah:]] classes */ -#define ANYOF_INVERT 0x04 -#define ANYOF_FOLD 0x02 -#define ANYOF_LOCALE 0x01 +/* Set if this is a struct regnode_charclass_class vs a regnode_charclass. This + * is used for runtime \d, \w, [:posix:], ..., which are used only in locale + * and the optimizer's synthetic start class. Non-locale \d, etc are resolved + * at compile-time */ +#define ANYOF_CLASS 0x08 +#define ANYOF_LARGE ANYOF_CLASS /* Same; name retained for back compat */ -/* Used for regstclass only */ -#define ANYOF_EOS 0x10 /* Can match an empty string too */ +/* EOS, meaning that it can match an empty string too, is used for the + * synthetic start class only. */ +#define ANYOF_EOS 0x10 -/* There is a character or a range past 0xff */ -#define ANYOF_UNICODE 0x20 -#define ANYOF_UNICODE_ALL 0x40 /* Can match any char past 0xff */ +/* ? Is this node the synthetic start class (ssc). This bit is shared with + * ANYOF_EOS, as the latter is used only for the ssc, and then not used by + * regexec.c. And, the code is structured so that if it is set, the ssc is + * not used, so it is guaranteed to be 0 for the ssc by the time regexec.c + * gets executed, and 0 for a non-ssc ANYOF node, as it only ever gets set for + * a potential ssc candidate. Thus setting it to 1 after it has been + * determined that the ssc will be used is not ambiguous */ +#define ANYOF_IS_SYNTHETIC ANYOF_EOS -/* size of node is large (includes class pointer) */ -#define ANYOF_LARGE 0x80 +/* Can match something outside the bitmap that isn't in utf8 */ +#define ANYOF_NONBITMAP_NON_UTF8 0x20 -/* Are there any runtime flags on in this node? */ -#define ANYOF_RUNTIME(s) (ANYOF_FLAGS(s) & 0x0f) +/* Matches every code point 0x100 and above*/ +#define ANYOF_UNICODE_ALL 0x40 + +/* Match all Latin1 characters that aren't ASCII when the target string is not + * in utf8. */ +#define ANYOF_NON_UTF8_LATIN1_ALL 0x80 #define ANYOF_FLAGS_ALL 0xff +/* These are the flags that ANYOF_INVERT being set or not doesn't affect + * whether they are operative or not. e.g., the node still has LOCALE + * regardless of being inverted; whereas ANYOF_UNICODE_ALL means something + * different if inverted */ +#define INVERSION_UNAFFECTED_FLAGS (ANYOF_LOCALE \ + |ANYOF_LOC_NONBITMAP_FOLD \ + |ANYOF_CLASS \ + |ANYOF_EOS \ + |ANYOF_NONBITMAP_NON_UTF8) + /* Character classes for node->classflags of ANYOF */ /* Should be synchronized with a table in regprop() */ /* 2n should pair with 2n+1 */ @@ -395,6 +439,8 @@ struct regnode_charclass_class { /* has [[:blah:]] classes */ #define ANYOF_CLASS_TEST(p, c) (ANYOF_CLASS_BYTE(p, c) & ANYOF_BIT(c)) #define ANYOF_CLASS_ZERO(ret) Zero(((struct regnode_charclass_class*)(ret))->classflags, ANYOF_CLASSBITMAP_SIZE, char) +#define ANYOF_CLASS_SETALL(ret) \ + memset (((struct regnode_charclass_class*)(ret))->classflags, 255, ANYOF_CLASSBITMAP_SIZE) #define ANYOF_BITMAP_ZERO(ret) Zero(((struct regnode_charclass*)(ret))->bitmap, ANYOF_BITMAP_SIZE, char) #define ANYOF_BITMAP(p) (((struct regnode_charclass*)(p))->bitmap) @@ -408,12 +454,20 @@ struct regnode_charclass_class { /* has [[:blah:]] classes */ #define ANYOF_BITMAP_CLEARALL(p) \ Zero (ANYOF_BITMAP(p), ANYOF_BITMAP_SIZE) /* Check that all 256 bits are all set. Used in S_cl_is_anything() */ -#define ANYOF_BITMAP_TESTALLSET(p) \ +#define ANYOF_BITMAP_TESTALLSET(p) /* Assumes sizeof(p) == 32 */ \ memEQ (ANYOF_BITMAP(p), "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377", ANYOF_BITMAP_SIZE) #define ANYOF_SKIP ((ANYOF_SIZE - 1)/sizeof(regnode)) #define ANYOF_CLASS_SKIP ((ANYOF_CLASS_SIZE - 1)/sizeof(regnode)) -#define ANYOF_CLASS_ADD_SKIP (ANYOF_CLASS_SKIP - ANYOF_SKIP) + +#if ANYOF_CLASSBITMAP_SIZE != 4 +# error ANYOF_CLASSBITMAP_SIZE is expected to be 4 +#endif +#define ANYOF_CLASS_TEST_ANY_SET(p) ((ANYOF_FLAGS(p) & ANYOF_CLASS) \ + && memNE (((struct regnode_charclass_class*)(p))->classflags, \ + "\0\0\0\0", ANYOF_CLASSBITMAP_SIZE)) +/*#define ANYOF_CLASS_ADD_SKIP (ANYOF_CLASS_SKIP - ANYOF_SKIP) + * */ /* @@ -447,37 +501,6 @@ START_EXTERN_C #include "regnodes.h" #endif -/* The following have no fixed length. U8 so we can do strchr() on it. */ -#ifndef DOINIT -EXTCONST U8 PL_varies[]; -#else -EXTCONST U8 PL_varies[] = { - BRANCH, BACK, STAR, PLUS, CURLY, CURLYX, REF, REFF, REFFL, - WHILEM, CURLYM, CURLYN, BRANCHJ, IFTHEN, SUSPEND, CLUMP, - NREF, NREFF, NREFFL, - 0 -}; -#endif - -/* The following always have a length of 1. U8 we can do strchr() on it. */ -/* (Note that length 1 means "one character" under UTF8, not "one octet".) */ -#ifndef DOINIT -EXTCONST U8 PL_simple[]; -#else -EXTCONST U8 PL_simple[] = { - REG_ANY, SANY, CANY, - ANYOF, - ALNUM, ALNUML, - NALNUM, NALNUML, - SPACE, SPACEL, - NSPACE, NSPACEL, - DIGIT, NDIGIT, - VERTWS, NVERTWS, - HORIZWS, NHORIZWS, - 0 -}; -#endif - #ifndef PLUGGABLE_RE_EXTENSION #ifndef DOINIT EXTCONST regexp_engine PL_core_reg_engine; @@ -507,6 +530,7 @@ END_EXTERN_C /* .what is a character array with one character for each member of .data * The character describes the function of the corresponding .data item: + * a - AV for paren_name_list under DEBUGGING * f - start-class data for regstclass optimization * n - Root of op tree for (?{EVAL}) item * o - Start op for (?{EVAL}) item @@ -586,6 +610,15 @@ struct _reg_trie_state { } trans; }; +/* info per word; indexed by wordnum */ +typedef struct { + U16 prev; /* previous word in acceptance chain; eg in + * zzz|abc|ab/ after matching the chars abc, the + * accepted word is #2, and the previous accepted + * word is #3 */ + U32 len; /* how many chars long is this word? */ + U32 accept; /* accept state for this word */ +} reg_trie_wordinfo; typedef struct _reg_trie_state reg_trie_state; @@ -603,15 +636,14 @@ struct _reg_trie_data { reg_trie_state *states; /* state data */ reg_trie_trans *trans; /* array of transition elements */ char *bitmap; /* stclass bitmap */ - U32 *wordlen; /* array of lengths of words */ U16 *jump; /* optional 1 indexed array of offsets before tail for the node following a given word. */ - U16 *nextword; /* optional 1 indexed array to support linked list - of duplicate wordnums */ + reg_trie_wordinfo *wordinfo; /* array of info per word */ U16 uniquecharcount; /* unique chars in trie (width of trans table) */ U32 startstate; /* initial state - used for common prefix optimisation */ STRLEN minlen; /* minimum length of words in trie - build/opt only? */ STRLEN maxlen; /* maximum length of words in trie - build/opt only? */ + U32 prefixlen; /* #chars in common prefix */ U32 statecount; /* Build only - number of states in the states array (including the unused zero state) */ U32 wordcount; /* Build only */ @@ -643,7 +675,7 @@ struct _reg_ac_data { }; typedef struct _reg_ac_data reg_ac_data; -/* ANY_BIT doesnt use the structure, so we can borrow it here. +/* ANY_BIT doesn't use the structure, so we can borrow it here. This is simpler than refactoring all of it as wed end up with three different sets... */ @@ -789,9 +821,11 @@ re.pm, especially to the documentation. if (re_debug_flags & RE_DEBUG_EXTRA_GPOS) x ) /* initialization */ -/* get_sv() can return NULL during global destruction. */ +/* get_sv() can return NULL during global destruction. re_debug_flags can get + * clobbered by a longjmp, so must be initialized */ #define GET_RE_DEBUG_FLAGS DEBUG_r({ \ SV * re_debug_flags_sv = NULL; \ + re_debug_flags = 0; \ re_debug_flags_sv = get_sv(RE_DEBUG_FLAGS, 1); \ if (re_debug_flags_sv) { \ if (!SvIOK(re_debug_flags_sv)) \ @@ -802,26 +836,26 @@ re.pm, especially to the documentation. #ifdef DEBUGGING -#define GET_RE_DEBUG_FLAGS_DECL IV re_debug_flags = 0; GET_RE_DEBUG_FLAGS; +#define GET_RE_DEBUG_FLAGS_DECL VOL IV re_debug_flags = 0; GET_RE_DEBUG_FLAGS; #define RE_PV_COLOR_DECL(rpv,rlen,isuni,dsv,pv,l,m,c1,c2) \ const char * const rpv = \ pv_pretty((dsv), (pv), (l), (m), \ PL_colors[(c1)],PL_colors[(c2)], \ - PERL_PV_ESCAPE_RE |((isuni) ? PERL_PV_ESCAPE_UNI : 0) ); \ + PERL_PV_ESCAPE_RE|PERL_PV_ESCAPE_NONASCII |((isuni) ? PERL_PV_ESCAPE_UNI : 0) ); \ const int rlen = SvCUR(dsv) #define RE_SV_ESCAPE(rpv,isuni,dsv,sv,m) \ const char * const rpv = \ pv_pretty((dsv), (SvPV_nolen_const(sv)), (SvCUR(sv)), (m), \ PL_colors[(c1)],PL_colors[(c2)], \ - PERL_PV_ESCAPE_RE |((isuni) ? PERL_PV_ESCAPE_UNI : 0) ) + PERL_PV_ESCAPE_RE|PERL_PV_ESCAPE_NONASCII |((isuni) ? PERL_PV_ESCAPE_UNI : 0) ) #define RE_PV_QUOTED_DECL(rpv,isuni,dsv,pv,l,m) \ const char * const rpv = \ pv_pretty((dsv), (pv), (l), (m), \ PL_colors[0], PL_colors[1], \ - ( PERL_PV_PRETTY_QUOTE | PERL_PV_ESCAPE_RE | PERL_PV_PRETTY_ELLIPSES | \ + ( PERL_PV_PRETTY_QUOTE | PERL_PV_ESCAPE_RE | PERL_PV_ESCAPE_NONASCII | PERL_PV_PRETTY_ELLIPSES | \ ((isuni) ? PERL_PV_ESCAPE_UNI : 0)) \ ) diff --git a/Master/tlpkg/tlperl/lib/CORE/regexp.h b/Master/tlpkg/tlperl/lib/CORE/regexp.h index 90e3406a965..5776a9023a7 100644 --- a/Master/tlpkg/tlperl/lib/CORE/regexp.h +++ b/Master/tlpkg/tlperl/lib/CORE/regexp.h @@ -70,6 +70,7 @@ typedef struct regexp_paren_pair { /* what engine created this regexp? */ \ const struct regexp_engine* engine; \ REGEXP *mother_re; /* what re is this a lightweight copy of? */ \ + HV *paren_names; /* Optional hash of paren names */ \ /* Information about the match that the perl core uses to */ \ /* manage things */ \ U32 extflags; /* Flags used both externally and internally */ \ @@ -103,14 +104,10 @@ typedef struct regexp_paren_pair { typedef struct regexp { _XPV_HEAD; - _XPVMG_HEAD; _REGEXP_COMMON; } regexp; -/* HV *paren_names; Optional hash of paren names - now stored in the IV union */ - -#define RXp_PAREN_NAMES(rx) ((rx)->xiv_u.xivu_hv) +#define RXp_PAREN_NAMES(rx) ((rx)->paren_names) /* used for high speed searches */ typedef struct re_scream_pos_data_s @@ -193,20 +190,17 @@ equivalent to the following snippet: if (SvMAGICAL(sv)) mg_get(sv); - if (SvROK(sv) && - (tmpsv = (SV*)SvRV(sv)) && - SvTYPE(tmpsv) == SVt_PVMG && - (tmpmg = mg_find(tmpsv, PERL_MAGIC_qr))) - { - return (REGEXP *)tmpmg->mg_obj; - } + if (SvROK(sv)) + sv = MUTABLE_SV(SvRV(sv)); + if (SvTYPE(sv) == SVt_REGEXP) + return (REGEXP*) sv; NULL will be returned if a REGEXP* is not found. =for apidoc Am|bool|SvRXOK|SV* sv -Returns a boolean indicating whether the SV contains qr magic -(PERL_MAGIC_qr). +Returns a boolean indicating whether the SV (or the one it references) +is a REGEXP. If you want to do something with the REGEXP* later use SvRX instead and check for NULL. @@ -221,28 +215,17 @@ and check for NULL. /* Flags stored in regexp->extflags * These are used by code external to the regexp engine * - * Note that flags starting with RXf_PMf_ have exact equivalents - * stored in op_pmflags and which are defined in op.h, they are defined - * numerically here only for clarity. + * Note that the flags whose names start with RXf_PMf_ are defined in + * op_reg_common.h, being copied from the parallel flags of op_pmflags * - * NOTE: if you modify any RXf flags you should run regen.pl or regcomp.pl - * so that regnodes.h is updated with the changes. + * NOTE: if you modify any RXf flags you should run regen.pl or + * regen/regcomp.pl so that regnodes.h is updated with the changes. * */ -/* 0x3F of extflags is used by (RXf_)PMf_COMPILETIME - * If you change these you need to change the equivalent flags in op.h, and - * vice versa. */ -#define RXf_PMf_MULTILINE 0x00000001 /* /m */ -#define RXf_PMf_SINGLELINE 0x00000002 /* /s */ -#define RXf_PMf_FOLD 0x00000004 /* /i */ -#define RXf_PMf_EXTENDED 0x00000008 /* /x */ -#define RXf_PMf_KEEPCOPY 0x00000010 /* /p */ -#define RXf_PMf_LOCALE 0x00000020 /* use locale */ -/* these flags are transfered from the PMOP->op_pmflags member during compilation */ -#define RXf_PMf_STD_PMMOD_SHIFT 0 +#include "op_reg_common.h" + #define RXf_PMf_STD_PMMOD (RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_FOLD|RXf_PMf_EXTENDED) -#define RXf_PMf_COMPILETIME (RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_LOCALE|RXf_PMf_FOLD|RXf_PMf_EXTENDED|RXf_PMf_KEEPCOPY) #define CASE_STD_PMMOD_FLAGS_PARSE_SET(pmfl) \ case IGNORE_PAT_MOD: *(pmfl) |= RXf_PMf_FOLD; break; \ @@ -250,13 +233,18 @@ and check for NULL. case SINGLE_PAT_MOD: *(pmfl) |= RXf_PMf_SINGLELINE; break; \ case XTENDED_PAT_MOD: *(pmfl) |= RXf_PMf_EXTENDED; break +/* Note, includes charset ones, assumes 0 is the default for them */ +#define STD_PMMOD_FLAGS_CLEAR(pmfl) \ + *(pmfl) &= ~(RXf_PMf_FOLD|RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_EXTENDED|RXf_PMf_CHARSET) + /* chars and strings used as regex pattern modifiers - * Singlular is a 'c'har, plural is a "string" + * Singular is a 'c'har, plural is a "string" * * NOTE, KEEPCOPY was originally 'k', but was changed to 'p' for preserve * for compatibility reasons with Regexp::Common which highjacked (?k:...) * for its own uses. So 'k' is out as well. */ +#define DEFAULT_PAT_MOD '^' /* Short for all the default modifiers */ #define EXEC_PAT_MOD 'e' #define KEEPCOPY_PAT_MOD 'p' #define ONCE_PAT_MOD 'o' @@ -266,79 +254,140 @@ and check for NULL. #define SINGLE_PAT_MOD 's' #define IGNORE_PAT_MOD 'i' #define XTENDED_PAT_MOD 'x' +#define NONDESTRUCT_PAT_MOD 'r' +#define LOCALE_PAT_MOD 'l' +#define UNICODE_PAT_MOD 'u' +#define DEPENDS_PAT_MOD 'd' +#define ASCII_RESTRICT_PAT_MOD 'a' #define ONCE_PAT_MODS "o" #define KEEPCOPY_PAT_MODS "p" #define EXEC_PAT_MODS "e" #define LOOP_PAT_MODS "gc" - +#define NONDESTRUCT_PAT_MODS "r" +#define LOCALE_PAT_MODS "l" +#define UNICODE_PAT_MODS "u" +#define DEPENDS_PAT_MODS "d" +#define ASCII_RESTRICT_PAT_MODS "a" +#define ASCII_MORE_RESTRICT_PAT_MODS "aa" + +/* This string is expected by regcomp.c to be ordered so that the first + * character is the flag in bit RXf_PMf_STD_PMMOD_SHIFT of extflags; the next + * character is bit +1, etc. */ #define STD_PAT_MODS "msix" +#define CHARSET_PAT_MODS ASCII_RESTRICT_PAT_MODS DEPENDS_PAT_MODS LOCALE_PAT_MODS UNICODE_PAT_MODS + +/* This string is expected by XS_re_regexp_pattern() in universal.c to be ordered + * so that the first character is the flag in bit RXf_PMf_STD_PMMOD_SHIFT of + * extflags; the next character is in bit +1, etc. */ #define INT_PAT_MODS STD_PAT_MODS KEEPCOPY_PAT_MODS #define EXT_PAT_MODS ONCE_PAT_MODS KEEPCOPY_PAT_MODS -#define QR_PAT_MODS STD_PAT_MODS EXT_PAT_MODS +#define QR_PAT_MODS STD_PAT_MODS EXT_PAT_MODS CHARSET_PAT_MODS #define M_PAT_MODS QR_PAT_MODS LOOP_PAT_MODS -#define S_PAT_MODS M_PAT_MODS EXEC_PAT_MODS +#define S_PAT_MODS M_PAT_MODS EXEC_PAT_MODS NONDESTRUCT_PAT_MODS /* - * NOTE: if you modify any RXf flags you should run regen.pl or regcomp.pl - * so that regnodes.h is updated with the changes. + * NOTE: if you modify any RXf flags you should run regen.pl or + * regen/regcomp.pl so that regnodes.h is updated with the changes. * */ +/* Leave some space, so future bit allocations can go either in the shared or + * unshared area without affecting binary compatibility */ +#define RXf_BASE_SHIFT (_RXf_PMf_SHIFT_NEXT+1) + +/* embed.pl doesn't yet know how to handle static inline functions, so + manually decorate them here with gcc-style attributes. +*/ +PERL_STATIC_INLINE const char * +get_regex_charset_name(const U32 flags, STRLEN* const lenp) + __attribute__warn_unused_result__; + +#define MAX_CHARSET_NAME_LENGTH 2 + +PERL_STATIC_INLINE const char * +get_regex_charset_name(const U32 flags, STRLEN* const lenp) +{ + /* Returns a string that corresponds to the name of the regex character set + * given by 'flags', and *lenp is set the length of that string, which + * cannot exceed MAX_CHARSET_NAME_LENGTH characters */ + + *lenp = 1; + switch (get_regex_charset(flags)) { + case REGEX_DEPENDS_CHARSET: return DEPENDS_PAT_MODS; + case REGEX_LOCALE_CHARSET: return LOCALE_PAT_MODS; + case REGEX_UNICODE_CHARSET: return UNICODE_PAT_MODS; + case REGEX_ASCII_RESTRICTED_CHARSET: return ASCII_RESTRICT_PAT_MODS; + case REGEX_ASCII_MORE_RESTRICTED_CHARSET: + *lenp = 2; + return ASCII_MORE_RESTRICT_PAT_MODS; + default: + return "?"; /* Unknown */ + } + return "?"; /* Unknown */ +} + /* Anchor and GPOS related stuff */ -#define RXf_ANCH_BOL 0x00000100 -#define RXf_ANCH_MBOL 0x00000200 -#define RXf_ANCH_SBOL 0x00000400 -#define RXf_ANCH_GPOS 0x00000800 -#define RXf_GPOS_SEEN 0x00001000 -#define RXf_GPOS_FLOAT 0x00002000 +#define RXf_ANCH_BOL (1<<(RXf_BASE_SHIFT+0)) +#define RXf_ANCH_MBOL (1<<(RXf_BASE_SHIFT+1)) +#define RXf_ANCH_SBOL (1<<(RXf_BASE_SHIFT+2)) +#define RXf_ANCH_GPOS (1<<(RXf_BASE_SHIFT+3)) +#define RXf_GPOS_SEEN (1<<(RXf_BASE_SHIFT+4)) +#define RXf_GPOS_FLOAT (1<<(RXf_BASE_SHIFT+5)) /* two bits here */ #define RXf_ANCH (RXf_ANCH_BOL|RXf_ANCH_MBOL|RXf_ANCH_GPOS|RXf_ANCH_SBOL) #define RXf_GPOS_CHECK (RXf_GPOS_SEEN|RXf_ANCH_GPOS) #define RXf_ANCH_SINGLE (RXf_ANCH_SBOL|RXf_ANCH_GPOS) /* What we have seen */ -#define RXf_LOOKBEHIND_SEEN 0x00004000 -#define RXf_EVAL_SEEN 0x00008000 -#define RXf_CANY_SEEN 0x00010000 +#define RXf_LOOKBEHIND_SEEN (1<<(RXf_BASE_SHIFT+6)) +#define RXf_EVAL_SEEN (1<<(RXf_BASE_SHIFT+7)) +#define RXf_CANY_SEEN (1<<(RXf_BASE_SHIFT+8)) /* Special */ -#define RXf_NOSCAN 0x00020000 -#define RXf_CHECK_ALL 0x00040000 +#define RXf_NOSCAN (1<<(RXf_BASE_SHIFT+9)) +#define RXf_CHECK_ALL (1<<(RXf_BASE_SHIFT+10)) /* UTF8 related */ -#define RXf_MATCH_UTF8 0x00100000 +#define RXf_MATCH_UTF8 (1<<(RXf_BASE_SHIFT+11)) /* Intuit related */ -#define RXf_USE_INTUIT_NOML 0x00200000 -#define RXf_USE_INTUIT_ML 0x00400000 -#define RXf_INTUIT_TAIL 0x00800000 +#define RXf_USE_INTUIT_NOML (1<<(RXf_BASE_SHIFT+12)) +#define RXf_USE_INTUIT_ML (1<<(RXf_BASE_SHIFT+13)) +#define RXf_INTUIT_TAIL (1<<(RXf_BASE_SHIFT+14)) /* Set in Perl_pmruntime if op_flags & OPf_SPECIAL, i.e. split. Will be used by regex engines to check whether they should set RXf_SKIPWHITE */ -#define RXf_SPLIT 0x01000000 +#define RXf_SPLIT (1<<(RXf_BASE_SHIFT+15)) #define RXf_USE_INTUIT (RXf_USE_INTUIT_NOML|RXf_USE_INTUIT_ML) /* Copy and tainted info */ -#define RXf_COPY_DONE 0x02000000 -#define RXf_TAINTED_SEEN 0x04000000 -#define RXf_TAINTED 0x08000000 /* this pattern is tainted */ +#define RXf_COPY_DONE (1<<(RXf_BASE_SHIFT+16)) + +/* during execution: pattern temporarily tainted by executing locale ops; + * post-execution: $1 et al are tainted */ +#define RXf_TAINTED_SEEN (1<<(RXf_BASE_SHIFT+17)) +/* this pattern was tainted during compilation */ +#define RXf_TAINTED (1<<(RXf_BASE_SHIFT+18)) /* Flags indicating special patterns */ -#define RXf_START_ONLY 0x10000000 /* Pattern is /^/ */ -#define RXf_SKIPWHITE 0x20000000 /* Pattern is for a split / / */ -#define RXf_WHITE 0x40000000 /* Pattern is /\s+/ */ -#define RXf_NULL 0x80000000 /* Pattern is // */ +#define RXf_START_ONLY (1<<(RXf_BASE_SHIFT+19)) /* Pattern is /^/ */ +#define RXf_SKIPWHITE (1<<(RXf_BASE_SHIFT+20)) /* Pattern is for a split / / */ +#define RXf_WHITE (1<<(RXf_BASE_SHIFT+21)) /* Pattern is /\s+/ */ +#define RXf_NULL (1<<(RXf_BASE_SHIFT+22)) /* Pattern is // */ +#if RXf_BASE_SHIFT+22 > 31 +# error Too many RXf_PMf bits used. See regnodes.h for any spare in middle +#endif /* - * NOTE: if you modify any RXf flags you should run regen.pl or regcomp.pl - * so that regnodes.h is updated with the changes. + * NOTE: if you modify any RXf flags you should run regen.pl or + * regen/regcomp.pl so that regnodes.h is updated with the changes. * */ @@ -424,7 +473,7 @@ and check for NULL. #endif /* PLUGGABLE_RE_EXTENSION */ -/* Stuff that needs to be included in the plugable extension goes below here */ +/* Stuff that needs to be included in the pluggable extension goes below here */ #ifdef PERL_OLD_COPY_ON_WRITE #define RX_MATCH_COPY_FREE(rx) \ @@ -490,13 +539,6 @@ and check for NULL. #define FBMrf_MULTILINE 1 -/* an accepting state/position*/ -struct _reg_trie_accepted { - U8 *endpos; - U16 wordnum; -}; -typedef struct _reg_trie_accepted reg_trie_accepted; - /* some basic information about the current match that is created by * Perl_regexec_flags and then passed to regtry(), regmatch() etc */ @@ -557,11 +599,15 @@ typedef struct regmatch_state { U32 lastparen; CHECKPOINT cp; - reg_trie_accepted *accept_buff; /* accepting states we have seen */ - U32 accepted; /* how many accepting states we have seen */ + U32 accepted; /* how many accepting states left */ U16 *jump; /* positive offsets from me */ regnode *B; /* node following the trie */ regnode *me; /* Which node am I - needed for jump tries*/ + U8 *firstpos;/* pos in string of first trie match */ + U32 firstchars;/* len in chars of firstpos from start */ + U16 nextword;/* next word to try */ + U16 topword; /* longest accepted word */ + bool longfold;/* saw a fold with a 1->n char mapping */ } trie; /* special types - these members are used to store state for special @@ -607,12 +653,11 @@ typedef struct regmatch_state { /* this first element must match u.yes */ struct regmatch_state *prev_yes_state; struct regmatch_state *prev_curlyx; /* previous cur_curlyx */ - regnode *A, *B; /* the nodes corresponding to /A*B/ */ + regnode *me; /* the CURLYX node */ + regnode *B; /* the B node in /A*B/ */ CHECKPOINT cp; /* remember current savestack index */ bool minmod; int parenfloor;/* how far back to strip paren data */ - int min; /* the minimal number of A's to match */ - int max; /* the maximal number of A's to match */ /* these two are modified by WHILEM */ int count; /* how many instances of A we've matched */ diff --git a/Master/tlpkg/tlperl/lib/CORE/regnodes.h b/Master/tlpkg/tlperl/lib/CORE/regnodes.h index 79de061fb6a..931761beb8c 100644 --- a/Master/tlpkg/tlperl/lib/CORE/regnodes.h +++ b/Master/tlpkg/tlperl/lib/CORE/regnodes.h @@ -1,13 +1,13 @@ /* -*- buffer-read-only: t -*- !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - This file is built by regcomp.pl from regcomp.sym. + This file is built by regen/regcomp.pl from regcomp.sym. Any changes made here will be lost! -*/ + */ /* Regops and State definitions */ -#define REGNODE_MAX 90 -#define REGMATCH_STATE_MAX 130 +#define REGNODE_MAX 111 +#define REGMATCH_STATE_MAX 151 #define END 0 /* 0000 End of program. */ #define SUCCEED 1 /* 0x01 Return from a subroutine, basically. */ @@ -18,88 +18,109 @@ #define EOL 6 /* 0x06 Match "" at end of line. */ #define MEOL 7 /* 0x07 Same, assuming multiline. */ #define SEOL 8 /* 0x08 Same, assuming singleline. */ -#define BOUND 9 /* 0x09 Match "" at any word boundary */ -#define BOUNDL 10 /* 0x0a Match "" at any word boundary */ -#define NBOUND 11 /* 0x0b Match "" at any word non-boundary */ -#define NBOUNDL 12 /* 0x0c Match "" at any word non-boundary */ -#define GPOS 13 /* 0x0d Matches where last m//g left off. */ -#define REG_ANY 14 /* 0x0e Match any one character (except newline). */ -#define SANY 15 /* 0x0f Match any one character. */ -#define CANY 16 /* 0x10 Match any one byte. */ -#define ANYOF 17 /* 0x11 Match character in (or not in) this class. */ -#define ALNUM 18 /* 0x12 Match any alphanumeric character */ -#define ALNUML 19 /* 0x13 Match any alphanumeric char in locale */ -#define NALNUM 20 /* 0x14 Match any non-alphanumeric character */ -#define NALNUML 21 /* 0x15 Match any non-alphanumeric char in locale */ -#define SPACE 22 /* 0x16 Match any whitespace character */ -#define SPACEL 23 /* 0x17 Match any whitespace char in locale */ -#define NSPACE 24 /* 0x18 Match any non-whitespace character */ -#define NSPACEL 25 /* 0x19 Match any non-whitespace char in locale */ -#define DIGIT 26 /* 0x1a Match any numeric character */ -#define DIGITL 27 /* 0x1b Match any numeric character in locale */ -#define NDIGIT 28 /* 0x1c Match any non-numeric character */ -#define NDIGITL 29 /* 0x1d Match any non-numeric character in locale */ -#define CLUMP 30 /* 0x1e Match any combining character sequence */ -#define BRANCH 31 /* 0x1f Match this alternative, or the next... */ -#define BACK 32 /* 0x20 Match "", "next" ptr points backward. */ -#define EXACT 33 /* 0x21 Match this string (preceded by length). */ -#define EXACTF 34 /* 0x22 Match this string, folded (prec. by length). */ -#define EXACTFL 35 /* 0x23 Match this string, folded in locale (w/len). */ -#define NOTHING 36 /* 0x24 Match empty string. */ -#define TAIL 37 /* 0x25 Match empty string. Can jump here from outside. */ -#define STAR 38 /* 0x26 Match this (simple) thing 0 or more times. */ -#define PLUS 39 /* 0x27 Match this (simple) thing 1 or more times. */ -#define CURLY 40 /* 0x28 Match this simple thing {n,m} times. */ -#define CURLYN 41 /* 0x29 Capture next-after-this simple thing */ -#define CURLYM 42 /* 0x2a Capture this medium-complex thing {n,m} times. */ -#define CURLYX 43 /* 0x2b Match this complex thing {n,m} times. */ -#define WHILEM 44 /* 0x2c Do curly processing and see if rest matches. */ -#define OPEN 45 /* 0x2d Mark this point in input as start of */ -#define CLOSE 46 /* 0x2e Analogous to OPEN. */ -#define REF 47 /* 0x2f Match some already matched string */ -#define REFF 48 /* 0x30 Match already matched string, folded */ -#define REFFL 49 /* 0x31 Match already matched string, folded in loc. */ -#define IFMATCH 50 /* 0x32 Succeeds if the following matches. */ -#define UNLESSM 51 /* 0x33 Fails if the following matches. */ -#define SUSPEND 52 /* 0x34 "Independent" sub-RE. */ -#define IFTHEN 53 /* 0x35 Switch, should be preceeded by switcher . */ -#define GROUPP 54 /* 0x36 Whether the group matched. */ -#define LONGJMP 55 /* 0x37 Jump far away. */ -#define BRANCHJ 56 /* 0x38 BRANCH with long offset. */ -#define EVAL 57 /* 0x39 Execute some Perl code. */ -#define MINMOD 58 /* 0x3a Next operator is not greedy. */ -#define LOGICAL 59 /* 0x3b Next opcode should set the flag only. */ -#define RENUM 60 /* 0x3c Group with independently numbered parens. */ -#define TRIE 61 /* 0x3d Match many EXACT(FL?)? at once. flags==type */ -#define TRIEC 62 /* 0x3e Same as TRIE, but with embedded charclass data */ -#define AHOCORASICK 63 /* 0x3f Aho Corasick stclass. flags==type */ -#define AHOCORASICKC 64 /* 0x40 Same as AHOCORASICK, but with embedded charclass data */ -#define GOSUB 65 /* 0x41 recurse to paren arg1 at (signed) ofs arg2 */ -#define GOSTART 66 /* 0x42 recurse to start of pattern */ -#define NREF 67 /* 0x43 Match some already matched string */ -#define NREFF 68 /* 0x44 Match already matched string, folded */ -#define NREFFL 69 /* 0x45 Match already matched string, folded in loc. */ -#define NGROUPP 70 /* 0x46 Whether the group matched. */ -#define INSUBP 71 /* 0x47 Whether we are in a specific recurse. */ -#define DEFINEP 72 /* 0x48 Never execute directly. */ -#define ENDLIKE 73 /* 0x49 Used only for the type field of verbs */ -#define OPFAIL 74 /* 0x4a Same as (?!) */ -#define ACCEPT 75 /* 0x4b Accepts the current matched string. */ -#define VERB 76 /* 0x4c no-sv 1 Used only for the type field of verbs */ -#define PRUNE 77 /* 0x4d Pattern fails at this startpoint if no-backtracking through this */ -#define MARKPOINT 78 /* 0x4e Push the current location for rollback by cut. */ -#define SKIP 79 /* 0x4f On failure skip forward (to the mark) before retrying */ -#define COMMIT 80 /* 0x50 Pattern fails outright if backtracking through this */ -#define CUTGROUP 81 /* 0x51 On failure go to the next alternation in the group */ -#define KEEPS 82 /* 0x52 $& begins here. */ -#define LNBREAK 83 /* 0x53 generic newline pattern */ -#define VERTWS 84 /* 0x54 vertical whitespace (Perl 6) */ -#define NVERTWS 85 /* 0x55 not vertical whitespace (Perl 6) */ -#define HORIZWS 86 /* 0x56 horizontal whitespace (Perl 6) */ -#define NHORIZWS 87 /* 0x57 not horizontal whitespace (Perl 6) */ -#define FOLDCHAR 88 /* 0x58 codepoint with tricky case folding properties. */ -#define OPTIMIZED 89 /* 0x59 Placeholder for dump. */ -#define PSEUDO 90 /* 0x5a Pseudo opcode for internal use. */ +#define BOUND 9 /* 0x09 Match "" at any word boundary using native charset semantics for non-utf8 */ +#define BOUNDL 10 /* 0x0a Match "" at any locale word boundary */ +#define BOUNDU 11 /* 0x0b Match "" at any word boundary using Unicode semantics */ +#define BOUNDA 12 /* 0x0c Match "" at any word boundary using ASCII semantics */ +#define NBOUND 13 /* 0x0d Match "" at any word non-boundary using native charset semantics for non-utf8 */ +#define NBOUNDL 14 /* 0x0e Match "" at any locale word non-boundary */ +#define NBOUNDU 15 /* 0x0f Match "" at any word non-boundary using Unicode semantics */ +#define NBOUNDA 16 /* 0x10 Match "" at any word non-boundary using ASCII semantics */ +#define GPOS 17 /* 0x11 Matches where last m//g left off. */ +#define REG_ANY 18 /* 0x12 Match any one character (except newline). */ +#define SANY 19 /* 0x13 Match any one character. */ +#define CANY 20 /* 0x14 Match any one byte. */ +#define ANYOF 21 /* 0x15 Match character in (or not in) this class, single char match only */ +#define ANYOFV 22 /* 0x16 Match character in (or not in) this class, can match-multiple chars */ +#define ALNUM 23 /* 0x17 Match any alphanumeric character using native charset semantics for non-utf8 */ +#define ALNUML 24 /* 0x18 Match any alphanumeric char in locale */ +#define ALNUMU 25 /* 0x19 Match any alphanumeric char using Unicode semantics */ +#define ALNUMA 26 /* 0x1a Match [A-Za-z_0-9] */ +#define NALNUM 27 /* 0x1b Match any non-alphanumeric character using native charset semantics for non-utf8 */ +#define NALNUML 28 /* 0x1c Match any non-alphanumeric char in locale */ +#define NALNUMU 29 /* 0x1d Match any non-alphanumeric char using Unicode semantics */ +#define NALNUMA 30 /* 0x1e Match [^A-Za-z_0-9] */ +#define SPACE 31 /* 0x1f Match any whitespace character using native charset semantics for non-utf8 */ +#define SPACEL 32 /* 0x20 Match any whitespace char in locale */ +#define SPACEU 33 /* 0x21 Match any whitespace char using Unicode semantics */ +#define SPACEA 34 /* 0x22 Match [ \t\n\f\r] */ +#define NSPACE 35 /* 0x23 Match any non-whitespace character using native charset semantics for non-utf8 */ +#define NSPACEL 36 /* 0x24 Match any non-whitespace char in locale */ +#define NSPACEU 37 /* 0x25 Match any non-whitespace char using Unicode semantics */ +#define NSPACEA 38 /* 0x26 Match [^ \t\n\f\r] */ +#define DIGIT 39 /* 0x27 Match any numeric character using native charset semantics for non-utf8 */ +#define DIGITL 40 /* 0x28 Match any numeric character in locale */ +#define DIGITA 41 /* 0x29 Match [0-9] */ +#define NDIGIT 42 /* 0x2a Match any non-numeric character using native charset semantics for non-utf8 */ +#define NDIGITL 43 /* 0x2b Match any non-numeric character in locale */ +#define NDIGITA 44 /* 0x2c Match [^0-9] */ +#define CLUMP 45 /* 0x2d Match any extended grapheme cluster sequence */ +#define BRANCH 46 /* 0x2e Match this alternative, or the next... */ +#define BACK 47 /* 0x2f Match "", "next" ptr points backward. */ +#define EXACT 48 /* 0x30 Match this string (preceded by length). */ +#define EXACTF 49 /* 0x31 Match this string, folded, native charset semantics for non-utf8 (prec. by length). */ +#define EXACTFL 50 /* 0x32 Match this string, folded in locale (w/len). */ +#define EXACTFU 51 /* 0x33 Match this string, folded, Unicode semantics for non-utf8 (prec. by length). */ +#define EXACTFA 52 /* 0x34 Match this string, folded, Unicode semantics for non-utf8, but no ASCII-range character matches outside ASCII (prec. by length),. */ +#define NOTHING 53 /* 0x35 Match empty string. */ +#define TAIL 54 /* 0x36 Match empty string. Can jump here from outside. */ +#define STAR 55 /* 0x37 Match this (simple) thing 0 or more times. */ +#define PLUS 56 /* 0x38 Match this (simple) thing 1 or more times. */ +#define CURLY 57 /* 0x39 Match this simple thing {n,m} times. */ +#define CURLYN 58 /* 0x3a Capture next-after-this simple thing */ +#define CURLYM 59 /* 0x3b Capture this medium-complex thing {n,m} times. */ +#define CURLYX 60 /* 0x3c Match this complex thing {n,m} times. */ +#define WHILEM 61 /* 0x3d Do curly processing and see if rest matches. */ +#define OPEN 62 /* 0x3e Mark this point in input as start of */ +#define CLOSE 63 /* 0x3f Analogous to OPEN. */ +#define REF 64 /* 0x40 Match some already matched string */ +#define REFF 65 /* 0x41 Match already matched string, folded using native charset semantics for non-utf8 */ +#define REFFL 66 /* 0x42 Match already matched string, folded in loc. */ +#define REFFU 67 /* 0x43 Match already matched string, folded using unicode semantics for non-utf8 */ +#define REFFA 68 /* 0x44 Match already matched string, folded using unicode semantics for non-utf8, no mixing ASCII, non-ASCII */ +#define NREF 69 /* 0x45 Match some already matched string */ +#define NREFF 70 /* 0x46 Match already matched string, folded using native charset semantics for non-utf8 */ +#define NREFFL 71 /* 0x47 Match already matched string, folded in loc. */ +#define NREFFU 72 /* 0x48 Match already matched string, folded using unicode semantics for non-utf8 */ +#define NREFFA 73 /* 0x49 Match already matched string, folded using unicode semantics for non-utf8, no mixing ASCII, non-ASCII */ +#define IFMATCH 74 /* 0x4a Succeeds if the following matches. */ +#define UNLESSM 75 /* 0x4b Fails if the following matches. */ +#define SUSPEND 76 /* 0x4c "Independent" sub-RE. */ +#define IFTHEN 77 /* 0x4d Switch, should be preceded by switcher . */ +#define GROUPP 78 /* 0x4e Whether the group matched. */ +#define LONGJMP 79 /* 0x4f Jump far away. */ +#define BRANCHJ 80 /* 0x50 BRANCH with long offset. */ +#define EVAL 81 /* 0x51 Execute some Perl code. */ +#define MINMOD 82 /* 0x52 Next operator is not greedy. */ +#define LOGICAL 83 /* 0x53 Next opcode should set the flag only. */ +#define RENUM 84 /* 0x54 Group with independently numbered parens. */ +#define TRIE 85 /* 0x55 Match many EXACT(F[ALU]?)? at once. flags==type */ +#define TRIEC 86 /* 0x56 Same as TRIE, but with embedded charclass data */ +#define AHOCORASICK 87 /* 0x57 Aho Corasick stclass. flags==type */ +#define AHOCORASICKC 88 /* 0x58 Same as AHOCORASICK, but with embedded charclass data */ +#define GOSUB 89 /* 0x59 recurse to paren arg1 at (signed) ofs arg2 */ +#define GOSTART 90 /* 0x5a recurse to start of pattern */ +#define NGROUPP 91 /* 0x5b Whether the group matched. */ +#define INSUBP 92 /* 0x5c Whether we are in a specific recurse. */ +#define DEFINEP 93 /* 0x5d Never execute directly. */ +#define ENDLIKE 94 /* 0x5e Used only for the type field of verbs */ +#define OPFAIL 95 /* 0x5f Same as (?!) */ +#define ACCEPT 96 /* 0x60 Accepts the current matched string. */ +#define VERB 97 /* 0x61 Used only for the type field of verbs */ +#define PRUNE 98 /* 0x62 Pattern fails at this startpoint if no-backtracking through this */ +#define MARKPOINT 99 /* 0x63 Push the current location for rollback by cut. */ +#define SKIP 100 /* 0x64 On failure skip forward (to the mark) before retrying */ +#define COMMIT 101 /* 0x65 Pattern fails outright if backtracking through this */ +#define CUTGROUP 102 /* 0x66 On failure go to the next alternation in the group */ +#define KEEPS 103 /* 0x67 $& begins here. */ +#define LNBREAK 104 /* 0x68 generic newline pattern */ +#define VERTWS 105 /* 0x69 vertical whitespace (Perl 6) */ +#define NVERTWS 106 /* 0x6a not vertical whitespace (Perl 6) */ +#define HORIZWS 107 /* 0x6b horizontal whitespace (Perl 6) */ +#define NHORIZWS 108 /* 0x6c not horizontal whitespace (Perl 6) */ +#define FOLDCHAR 109 /* 0x6d codepoint with tricky case folding properties. */ +#define OPTIMIZED 110 /* 0x6e Placeholder for dump. */ +#define PSEUDO 111 /* 0x6f Pseudo opcode for internal use. */ /* ------------ States ------------- */ #define TRIE_next (REGNODE_MAX + 1) /* state for TRIE */ #define TRIE_next_fail (REGNODE_MAX + 2) /* state for TRIE */ @@ -159,31 +180,48 @@ EXTCONST U8 PL_regkind[] = { EOL, /* SEOL */ BOUND, /* BOUND */ BOUND, /* BOUNDL */ + BOUND, /* BOUNDU */ + BOUND, /* BOUNDA */ NBOUND, /* NBOUND */ NBOUND, /* NBOUNDL */ + NBOUND, /* NBOUNDU */ + NBOUND, /* NBOUNDA */ GPOS, /* GPOS */ REG_ANY, /* REG_ANY */ REG_ANY, /* SANY */ REG_ANY, /* CANY */ ANYOF, /* ANYOF */ + ANYOF, /* ANYOFV */ ALNUM, /* ALNUM */ ALNUM, /* ALNUML */ + ALNUM, /* ALNUMU */ + ALNUM, /* ALNUMA */ NALNUM, /* NALNUM */ NALNUM, /* NALNUML */ + NALNUM, /* NALNUMU */ + NALNUM, /* NALNUMA */ SPACE, /* SPACE */ SPACE, /* SPACEL */ + SPACE, /* SPACEU */ + SPACE, /* SPACEA */ NSPACE, /* NSPACE */ NSPACE, /* NSPACEL */ + NSPACE, /* NSPACEU */ + NSPACE, /* NSPACEA */ DIGIT, /* DIGIT */ DIGIT, /* DIGITL */ + DIGIT, /* DIGITA */ NDIGIT, /* NDIGIT */ NDIGIT, /* NDIGITL */ + NDIGIT, /* NDIGITA */ CLUMP, /* CLUMP */ BRANCH, /* BRANCH */ BACK, /* BACK */ EXACT, /* EXACT */ EXACT, /* EXACTF */ EXACT, /* EXACTFL */ + EXACT, /* EXACTFU */ + EXACT, /* EXACTFA */ NOTHING, /* NOTHING */ NOTHING, /* TAIL */ STAR, /* STAR */ @@ -198,6 +236,13 @@ EXTCONST U8 PL_regkind[] = { REF, /* REF */ REF, /* REFF */ REF, /* REFFL */ + REF, /* REFFU */ + REF, /* REFFA */ + REF, /* NREF */ + REF, /* NREFF */ + REF, /* NREFFL */ + REF, /* NREFFU */ + REF, /* NREFFA */ BRANCHJ, /* IFMATCH */ BRANCHJ, /* UNLESSM */ BRANCHJ, /* SUSPEND */ @@ -215,9 +260,6 @@ EXTCONST U8 PL_regkind[] = { TRIE, /* AHOCORASICKC */ GOSUB, /* GOSUB */ GOSTART, /* GOSTART */ - REF, /* NREF */ - REF, /* NREFF */ - REF, /* NREFFL */ NGROUPP, /* NGROUPP */ INSUBP, /* INSUBP */ DEFINEP, /* DEFINEP */ @@ -298,31 +340,48 @@ static const U8 regarglen[] = { 0, /* SEOL */ 0, /* BOUND */ 0, /* BOUNDL */ + 0, /* BOUNDU */ + 0, /* BOUNDA */ 0, /* NBOUND */ 0, /* NBOUNDL */ + 0, /* NBOUNDU */ + 0, /* NBOUNDA */ 0, /* GPOS */ 0, /* REG_ANY */ 0, /* SANY */ 0, /* CANY */ 0, /* ANYOF */ + 0, /* ANYOFV */ 0, /* ALNUM */ 0, /* ALNUML */ + 0, /* ALNUMU */ + 0, /* ALNUMA */ 0, /* NALNUM */ 0, /* NALNUML */ + 0, /* NALNUMU */ + 0, /* NALNUMA */ 0, /* SPACE */ 0, /* SPACEL */ + 0, /* SPACEU */ + 0, /* SPACEA */ 0, /* NSPACE */ 0, /* NSPACEL */ + 0, /* NSPACEU */ + 0, /* NSPACEA */ 0, /* DIGIT */ 0, /* DIGITL */ + 0, /* DIGITA */ 0, /* NDIGIT */ 0, /* NDIGITL */ + 0, /* NDIGITA */ 0, /* CLUMP */ 0, /* BRANCH */ 0, /* BACK */ 0, /* EXACT */ 0, /* EXACTF */ 0, /* EXACTFL */ + 0, /* EXACTFU */ + 0, /* EXACTFA */ 0, /* NOTHING */ 0, /* TAIL */ 0, /* STAR */ @@ -337,6 +396,13 @@ static const U8 regarglen[] = { EXTRA_SIZE(struct regnode_1), /* REF */ EXTRA_SIZE(struct regnode_1), /* REFF */ EXTRA_SIZE(struct regnode_1), /* REFFL */ + EXTRA_SIZE(struct regnode_1), /* REFFU */ + EXTRA_SIZE(struct regnode_1), /* REFFA */ + EXTRA_SIZE(struct regnode_1), /* NREF */ + EXTRA_SIZE(struct regnode_1), /* NREFF */ + EXTRA_SIZE(struct regnode_1), /* NREFFL */ + EXTRA_SIZE(struct regnode_1), /* NREFFU */ + EXTRA_SIZE(struct regnode_1), /* NREFFA */ EXTRA_SIZE(struct regnode_1), /* IFMATCH */ EXTRA_SIZE(struct regnode_1), /* UNLESSM */ EXTRA_SIZE(struct regnode_1), /* SUSPEND */ @@ -354,16 +420,13 @@ static const U8 regarglen[] = { EXTRA_SIZE(struct regnode_charclass), /* AHOCORASICKC */ EXTRA_SIZE(struct regnode_2L), /* GOSUB */ 0, /* GOSTART */ - EXTRA_SIZE(struct regnode_1), /* NREF */ - EXTRA_SIZE(struct regnode_1), /* NREFF */ - EXTRA_SIZE(struct regnode_1), /* NREFFL */ EXTRA_SIZE(struct regnode_1), /* NGROUPP */ EXTRA_SIZE(struct regnode_1), /* INSUBP */ EXTRA_SIZE(struct regnode_1), /* DEFINEP */ 0, /* ENDLIKE */ 0, /* OPFAIL */ EXTRA_SIZE(struct regnode_1), /* ACCEPT */ - 0, /* VERB */ + EXTRA_SIZE(struct regnode_1), /* VERB */ EXTRA_SIZE(struct regnode_1), /* PRUNE */ EXTRA_SIZE(struct regnode_1), /* MARKPOINT */ EXTRA_SIZE(struct regnode_1), /* SKIP */ @@ -394,31 +457,48 @@ static const char reg_off_by_arg[] = { 0, /* SEOL */ 0, /* BOUND */ 0, /* BOUNDL */ + 0, /* BOUNDU */ + 0, /* BOUNDA */ 0, /* NBOUND */ 0, /* NBOUNDL */ + 0, /* NBOUNDU */ + 0, /* NBOUNDA */ 0, /* GPOS */ 0, /* REG_ANY */ 0, /* SANY */ 0, /* CANY */ 0, /* ANYOF */ + 0, /* ANYOFV */ 0, /* ALNUM */ 0, /* ALNUML */ + 0, /* ALNUMU */ + 0, /* ALNUMA */ 0, /* NALNUM */ 0, /* NALNUML */ + 0, /* NALNUMU */ + 0, /* NALNUMA */ 0, /* SPACE */ 0, /* SPACEL */ + 0, /* SPACEU */ + 0, /* SPACEA */ 0, /* NSPACE */ 0, /* NSPACEL */ + 0, /* NSPACEU */ + 0, /* NSPACEA */ 0, /* DIGIT */ 0, /* DIGITL */ + 0, /* DIGITA */ 0, /* NDIGIT */ 0, /* NDIGITL */ + 0, /* NDIGITA */ 0, /* CLUMP */ 0, /* BRANCH */ 0, /* BACK */ 0, /* EXACT */ 0, /* EXACTF */ 0, /* EXACTFL */ + 0, /* EXACTFU */ + 0, /* EXACTFA */ 0, /* NOTHING */ 0, /* TAIL */ 0, /* STAR */ @@ -433,6 +513,13 @@ static const char reg_off_by_arg[] = { 0, /* REF */ 0, /* REFF */ 0, /* REFFL */ + 0, /* REFFU */ + 0, /* REFFA */ + 0, /* NREF */ + 0, /* NREFF */ + 0, /* NREFFL */ + 0, /* NREFFU */ + 0, /* NREFFA */ 2, /* IFMATCH */ 2, /* UNLESSM */ 1, /* SUSPEND */ @@ -450,9 +537,6 @@ static const char reg_off_by_arg[] = { 0, /* AHOCORASICKC */ 0, /* GOSUB */ 0, /* GOSTART */ - 0, /* NREF */ - 0, /* NREFF */ - 0, /* NREFFL */ 0, /* NGROUPP */ 0, /* INSUBP */ 0, /* DEFINEP */ @@ -495,86 +579,107 @@ EXTCONST char * const PL_reg_name[] = { "SEOL", /* 0x08 */ "BOUND", /* 0x09 */ "BOUNDL", /* 0x0a */ - "NBOUND", /* 0x0b */ - "NBOUNDL", /* 0x0c */ - "GPOS", /* 0x0d */ - "REG_ANY", /* 0x0e */ - "SANY", /* 0x0f */ - "CANY", /* 0x10 */ - "ANYOF", /* 0x11 */ - "ALNUM", /* 0x12 */ - "ALNUML", /* 0x13 */ - "NALNUM", /* 0x14 */ - "NALNUML", /* 0x15 */ - "SPACE", /* 0x16 */ - "SPACEL", /* 0x17 */ - "NSPACE", /* 0x18 */ - "NSPACEL", /* 0x19 */ - "DIGIT", /* 0x1a */ - "DIGITL", /* 0x1b */ - "NDIGIT", /* 0x1c */ - "NDIGITL", /* 0x1d */ - "CLUMP", /* 0x1e */ - "BRANCH", /* 0x1f */ - "BACK", /* 0x20 */ - "EXACT", /* 0x21 */ - "EXACTF", /* 0x22 */ - "EXACTFL", /* 0x23 */ - "NOTHING", /* 0x24 */ - "TAIL", /* 0x25 */ - "STAR", /* 0x26 */ - "PLUS", /* 0x27 */ - "CURLY", /* 0x28 */ - "CURLYN", /* 0x29 */ - "CURLYM", /* 0x2a */ - "CURLYX", /* 0x2b */ - "WHILEM", /* 0x2c */ - "OPEN", /* 0x2d */ - "CLOSE", /* 0x2e */ - "REF", /* 0x2f */ - "REFF", /* 0x30 */ - "REFFL", /* 0x31 */ - "IFMATCH", /* 0x32 */ - "UNLESSM", /* 0x33 */ - "SUSPEND", /* 0x34 */ - "IFTHEN", /* 0x35 */ - "GROUPP", /* 0x36 */ - "LONGJMP", /* 0x37 */ - "BRANCHJ", /* 0x38 */ - "EVAL", /* 0x39 */ - "MINMOD", /* 0x3a */ - "LOGICAL", /* 0x3b */ - "RENUM", /* 0x3c */ - "TRIE", /* 0x3d */ - "TRIEC", /* 0x3e */ - "AHOCORASICK", /* 0x3f */ - "AHOCORASICKC", /* 0x40 */ - "GOSUB", /* 0x41 */ - "GOSTART", /* 0x42 */ - "NREF", /* 0x43 */ - "NREFF", /* 0x44 */ - "NREFFL", /* 0x45 */ - "NGROUPP", /* 0x46 */ - "INSUBP", /* 0x47 */ - "DEFINEP", /* 0x48 */ - "ENDLIKE", /* 0x49 */ - "OPFAIL", /* 0x4a */ - "ACCEPT", /* 0x4b */ - "VERB", /* 0x4c */ - "PRUNE", /* 0x4d */ - "MARKPOINT", /* 0x4e */ - "SKIP", /* 0x4f */ - "COMMIT", /* 0x50 */ - "CUTGROUP", /* 0x51 */ - "KEEPS", /* 0x52 */ - "LNBREAK", /* 0x53 */ - "VERTWS", /* 0x54 */ - "NVERTWS", /* 0x55 */ - "HORIZWS", /* 0x56 */ - "NHORIZWS", /* 0x57 */ - "FOLDCHAR", /* 0x58 */ - "OPTIMIZED", /* 0x59 */ - "PSEUDO", /* 0x5a */ + "BOUNDU", /* 0x0b */ + "BOUNDA", /* 0x0c */ + "NBOUND", /* 0x0d */ + "NBOUNDL", /* 0x0e */ + "NBOUNDU", /* 0x0f */ + "NBOUNDA", /* 0x10 */ + "GPOS", /* 0x11 */ + "REG_ANY", /* 0x12 */ + "SANY", /* 0x13 */ + "CANY", /* 0x14 */ + "ANYOF", /* 0x15 */ + "ANYOFV", /* 0x16 */ + "ALNUM", /* 0x17 */ + "ALNUML", /* 0x18 */ + "ALNUMU", /* 0x19 */ + "ALNUMA", /* 0x1a */ + "NALNUM", /* 0x1b */ + "NALNUML", /* 0x1c */ + "NALNUMU", /* 0x1d */ + "NALNUMA", /* 0x1e */ + "SPACE", /* 0x1f */ + "SPACEL", /* 0x20 */ + "SPACEU", /* 0x21 */ + "SPACEA", /* 0x22 */ + "NSPACE", /* 0x23 */ + "NSPACEL", /* 0x24 */ + "NSPACEU", /* 0x25 */ + "NSPACEA", /* 0x26 */ + "DIGIT", /* 0x27 */ + "DIGITL", /* 0x28 */ + "DIGITA", /* 0x29 */ + "NDIGIT", /* 0x2a */ + "NDIGITL", /* 0x2b */ + "NDIGITA", /* 0x2c */ + "CLUMP", /* 0x2d */ + "BRANCH", /* 0x2e */ + "BACK", /* 0x2f */ + "EXACT", /* 0x30 */ + "EXACTF", /* 0x31 */ + "EXACTFL", /* 0x32 */ + "EXACTFU", /* 0x33 */ + "EXACTFA", /* 0x34 */ + "NOTHING", /* 0x35 */ + "TAIL", /* 0x36 */ + "STAR", /* 0x37 */ + "PLUS", /* 0x38 */ + "CURLY", /* 0x39 */ + "CURLYN", /* 0x3a */ + "CURLYM", /* 0x3b */ + "CURLYX", /* 0x3c */ + "WHILEM", /* 0x3d */ + "OPEN", /* 0x3e */ + "CLOSE", /* 0x3f */ + "REF", /* 0x40 */ + "REFF", /* 0x41 */ + "REFFL", /* 0x42 */ + "REFFU", /* 0x43 */ + "REFFA", /* 0x44 */ + "NREF", /* 0x45 */ + "NREFF", /* 0x46 */ + "NREFFL", /* 0x47 */ + "NREFFU", /* 0x48 */ + "NREFFA", /* 0x49 */ + "IFMATCH", /* 0x4a */ + "UNLESSM", /* 0x4b */ + "SUSPEND", /* 0x4c */ + "IFTHEN", /* 0x4d */ + "GROUPP", /* 0x4e */ + "LONGJMP", /* 0x4f */ + "BRANCHJ", /* 0x50 */ + "EVAL", /* 0x51 */ + "MINMOD", /* 0x52 */ + "LOGICAL", /* 0x53 */ + "RENUM", /* 0x54 */ + "TRIE", /* 0x55 */ + "TRIEC", /* 0x56 */ + "AHOCORASICK", /* 0x57 */ + "AHOCORASICKC", /* 0x58 */ + "GOSUB", /* 0x59 */ + "GOSTART", /* 0x5a */ + "NGROUPP", /* 0x5b */ + "INSUBP", /* 0x5c */ + "DEFINEP", /* 0x5d */ + "ENDLIKE", /* 0x5e */ + "OPFAIL", /* 0x5f */ + "ACCEPT", /* 0x60 */ + "VERB", /* 0x61 */ + "PRUNE", /* 0x62 */ + "MARKPOINT", /* 0x63 */ + "SKIP", /* 0x64 */ + "COMMIT", /* 0x65 */ + "CUTGROUP", /* 0x66 */ + "KEEPS", /* 0x67 */ + "LNBREAK", /* 0x68 */ + "VERTWS", /* 0x69 */ + "NVERTWS", /* 0x6a */ + "HORIZWS", /* 0x6b */ + "NHORIZWS", /* 0x6c */ + "FOLDCHAR", /* 0x6d */ + "OPTIMIZED", /* 0x6e */ + "PSEUDO", /* 0x6f */ /* ------------ States ------------- */ "TRIE_next", /* REGNODE_MAX +0x01 */ "TRIE_next_fail", /* REGNODE_MAX +0x02 */ @@ -625,27 +730,27 @@ EXTCONST char * const PL_reg_name[] = { EXTCONST char * PL_reg_extflags_name[]; #else EXTCONST char * const PL_reg_extflags_name[] = { - /* Bits in extflags defined: 11111111111101111111111100111111 */ + /* Bits in extflags defined: 11111111111111111111111011111111 */ "MULTILINE", /* 0x00000001 */ "SINGLELINE", /* 0x00000002 */ "FOLD", /* 0x00000004 */ "EXTENDED", /* 0x00000008 */ "KEEPCOPY", /* 0x00000010 */ - "LOCALE", /* 0x00000020 */ - "UNUSED_BIT_6", /* 0x00000040 */ - "UNUSED_BIT_7", /* 0x00000080 */ - "ANCH_BOL", /* 0x00000100 */ - "ANCH_MBOL", /* 0x00000200 */ - "ANCH_SBOL", /* 0x00000400 */ - "ANCH_GPOS", /* 0x00000800 */ - "GPOS_SEEN", /* 0x00001000 */ - "GPOS_FLOAT", /* 0x00002000 */ - "LOOKBEHIND_SEEN", /* 0x00004000 */ - "EVAL_SEEN", /* 0x00008000 */ - "CANY_SEEN", /* 0x00010000 */ - "NOSCAN", /* 0x00020000 */ - "CHECK_ALL", /* 0x00040000 */ - "UNUSED_BIT_19", /* 0x00080000 */ + "CHARSET", /* 0x000000e0 */ + "CHARSET", /* 0x000000e0 */ + "CHARSET", /* 0x000000e0 */ + "UNUSED_BIT_8", /* 0x00000100 */ + "ANCH_BOL", /* 0x00000200 */ + "ANCH_MBOL", /* 0x00000400 */ + "ANCH_SBOL", /* 0x00000800 */ + "ANCH_GPOS", /* 0x00001000 */ + "GPOS_SEEN", /* 0x00002000 */ + "GPOS_FLOAT", /* 0x00004000 */ + "LOOKBEHIND_SEEN", /* 0x00008000 */ + "EVAL_SEEN", /* 0x00010000 */ + "CANY_SEEN", /* 0x00020000 */ + "NOSCAN", /* 0x00040000 */ + "CHECK_ALL", /* 0x00080000 */ "MATCH_UTF8", /* 0x00100000 */ "USE_INTUIT_NOML", /* 0x00200000 */ "USE_INTUIT_ML", /* 0x00400000 */ @@ -661,4 +766,50 @@ EXTCONST char * const PL_reg_extflags_name[] = { }; #endif /* DOINIT */ +/* The following have no fixed length. U8 so we can do strchr() on it. */ +#define REGNODE_VARIES(node) (PL_varies_bitmask[(node) >> 3] & (1 << ((node) & 7))) + +#ifndef DOINIT +EXTCONST U8 PL_varies[] __attribute__deprecated__; +#else +EXTCONST U8 PL_varies[] __attribute__deprecated__ = { + ANYOFV, CLUMP, BRANCH, BACK, STAR, PLUS, CURLY, CURLYN, CURLYM, CURLYX, + WHILEM, REF, REFF, REFFL, REFFU, REFFA, NREF, NREFF, NREFFL, NREFFU, + NREFFA, SUSPEND, IFTHEN, BRANCHJ, + 0 +}; +#endif /* DOINIT */ + +#ifndef DOINIT +EXTCONST U8 PL_varies_bitmask[]; +#else +EXTCONST U8 PL_varies_bitmask[] = { + 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x80, 0x3F, 0xFF, 0x33, 0x01, 0x00, 0x00, 0x00 +}; +#endif /* DOINIT */ + +/* The following always have a length of 1. U8 we can do strchr() on it. */ +/* (Note that length 1 means "one character" under UTF8, not "one octet".) */ +#define REGNODE_SIMPLE(node) (PL_simple_bitmask[(node) >> 3] & (1 << ((node) & 7))) + +#ifndef DOINIT +EXTCONST U8 PL_simple[] __attribute__deprecated__; +#else +EXTCONST U8 PL_simple[] __attribute__deprecated__ = { + REG_ANY, SANY, CANY, ANYOF, ALNUM, ALNUML, ALNUMU, ALNUMA, NALNUM, + NALNUML, NALNUMU, NALNUMA, SPACE, SPACEL, SPACEU, SPACEA, NSPACE, + NSPACEL, NSPACEU, NSPACEA, DIGIT, DIGITL, DIGITA, NDIGIT, NDIGITL, + NDIGITA, VERTWS, NVERTWS, HORIZWS, NHORIZWS, + 0 +}; +#endif /* DOINIT */ + +#ifndef DOINIT +EXTCONST U8 PL_simple_bitmask[]; +#else +EXTCONST U8 PL_simple_bitmask[] = { + 0x00, 0x00, 0xBC, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E +}; +#endif /* DOINIT */ + /* ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/scope.h b/Master/tlpkg/tlperl/lib/CORE/scope.h index 64e7e279f1f..113f4e8d717 100644 --- a/Master/tlpkg/tlperl/lib/CORE/scope.h +++ b/Master/tlpkg/tlperl/lib/CORE/scope.h @@ -55,10 +55,17 @@ #define SAVEt_STACK_CXPOS 44 #define SAVEt_PARSER 45 #define SAVEt_ADELETE 46 +#define SAVEt_I32_SMALL 47 +#define SAVEt_INT_SMALL 48 +#define SAVEt_GVSV 49 +#define SAVEt_FREECOPHH 50 #define SAVEf_SETMAGIC 1 #define SAVEf_KEEPOLDELEM 2 +#define SAVE_TIGHT_SHIFT 6 +#define SAVE_MASK 0x3F + #define save_aelem(av,idx,sptr) save_aelem_flags(av,idx,sptr,SAVEf_SETMAGIC) #define save_helem(hv,key,sptr) save_helem_flags(hv,key,sptr,SAVEf_SETMAGIC) @@ -72,6 +79,7 @@ #define SSPUSHLONG(i) (PL_savestack[PL_savestack_ix++].any_long = (long)(i)) #define SSPUSHBOOL(p) (PL_savestack[PL_savestack_ix++].any_bool = (p)) #define SSPUSHIV(i) (PL_savestack[PL_savestack_ix++].any_iv = (IV)(i)) +#define SSPUSHUV(u) (PL_savestack[PL_savestack_ix++].any_uv = (UV)(u)) #define SSPUSHPTR(p) (PL_savestack[PL_savestack_ix++].any_ptr = (void*)(p)) #define SSPUSHDPTR(p) (PL_savestack[PL_savestack_ix++].any_dptr = (p)) #define SSPUSHDXPTR(p) (PL_savestack[PL_savestack_ix++].any_dxptr = (p)) @@ -79,6 +87,7 @@ #define SSPOPLONG (PL_savestack[--PL_savestack_ix].any_long) #define SSPOPBOOL (PL_savestack[--PL_savestack_ix].any_bool) #define SSPOPIV (PL_savestack[--PL_savestack_ix].any_iv) +#define SSPOPUV (PL_savestack[--PL_savestack_ix].any_uv) #define SSPOPPTR (PL_savestack[--PL_savestack_ix].any_ptr) #define SSPOPDPTR (PL_savestack[--PL_savestack_ix].any_dptr) #define SSPOPDXPTR (PL_savestack[--PL_savestack_ix].any_dxptr) @@ -162,7 +171,7 @@ scope has the given name. Name must be a literal string. #define SAVEINT(i) save_int((int*)&(i)) #define SAVEIV(i) save_iv((IV*)&(i)) #define SAVELONG(l) save_long((long*)&(l)) -#define SAVEBOOL(b) save_bool((bool*)&(b)) +#define SAVEBOOL(b) save_bool(&(b)) #define SAVESPTR(s) save_sptr((SV**)&(s)) #define SAVEPPTR(s) save_pptr((char**)&(s)) #define SAVEVPTR(s) save_vptr((void*)&(s)) @@ -176,6 +185,7 @@ scope has the given name. Name must be a literal string. #define SAVEGENERICPV(s) save_generic_pvref((char**)&(s)) #define SAVESHAREDPV(s) save_shared_pvref((char**)&(s)) #define SAVESETSVFLAGS(sv,mask,val) save_set_svflags(sv,mask,val) +#define SAVEFREECOPHH(h) save_pushptr((void *)(h), SAVEt_FREECOPHH) #define SAVEDELETE(h,k,l) \ save_delete(MUTABLE_HV(h), (char*)(k), (I32)(l)) #define SAVEHDELETE(h,s) \ @@ -192,7 +202,7 @@ scope has the given name. Name must be a literal string. STMT_START { \ SSCHECK(2); \ SSPUSHINT(PL_stack_sp - PL_stack_base); \ - SSPUSHINT(SAVEt_STACK_POS); \ + SSPUSHUV(SAVEt_STACK_POS); \ } STMT_END #define SAVEOP() save_op() @@ -222,7 +232,7 @@ scope has the given name. Name must be a literal string. SSCHECK(3); \ SSPUSHINT(cxstack[cxstack_ix].blk_oldsp); \ SSPUSHINT(cxstack_ix); \ - SSPUSHINT(SAVEt_STACK_CXPOS); \ + SSPUSHUV(SAVEt_STACK_CXPOS); \ } STMT_END #define SAVEPARSER(p) save_pushptr((p), SAVEt_PARSER) @@ -246,7 +256,7 @@ scope has the given name. Name must be a literal string. * pointer would get broken if the savestack is moved on reallocation. * SSNEWa() works like SSNEW(), but also aligns the data to the specified * number of bytes. MEM_ALIGNBYTES is perhaps the most useful. The - * alignment will be preserved therough savestack reallocation *only* if + * alignment will be preserved through savestack reallocation *only* if * realloc returns data aligned to a size divisible by "align"! * * SSPTR() converts the index returned by SSNEW/SSNEWa() into a pointer. diff --git a/Master/tlpkg/tlperl/lib/CORE/sv.h b/Master/tlpkg/tlperl/lib/CORE/sv.h index fc1b475a65e..7f466754142 100644 --- a/Master/tlpkg/tlperl/lib/CORE/sv.h +++ b/Master/tlpkg/tlperl/lib/CORE/sv.h @@ -76,13 +76,9 @@ typedef enum { #endif /* There is collusion here with sv_clear - sv_clear exits early for SVt_NULL - and SVt_IV, so never reaches the clause at the end that uses - sv_type_details->body_size to determine whether to call safefree(). Hence - body_size can be set no-zero to record the size of PTEs and HEs, without - fear of bogus frees. */ -#ifdef PERL_IN_SV_C -#define PTE_SVSLOT SVt_IV -#endif + so never reaches the clause at the end that uses sv_type_details->body_size + to determine whether to call safefree(). Hence body_size can be set + non-zero to record the size of HEs, without fear of bogus frees. */ #if defined(PERL_IN_HV_C) || defined(PERL_IN_XS_APITEST) #define HE_SVSLOT SVt_NULL #endif @@ -110,6 +106,7 @@ typedef struct hek HEK; SV** svu_array; \ HE** svu_hash; \ GP* svu_gp; \ + PerlIO *svu_fp; \ } sv_u @@ -119,10 +116,10 @@ struct STRUCT_SV { /* struct sv { */ #ifdef DEBUG_LEAKING_SCALARS PERL_BITFIELD32 sv_debug_optype:9; /* the type of OP that allocated us */ PERL_BITFIELD32 sv_debug_inpad:1; /* was allocated in a pad for an OP */ - PERL_BITFIELD32 sv_debug_cloned:1; /* was cloned for an ithread */ PERL_BITFIELD32 sv_debug_line:16; /* the line where we were allocated */ - U32 sv_debug_serial; /* serial number of sv allocation */ - char * sv_debug_file; /* the file where we were allocated */ + UV sv_debug_serial; /* serial number of sv allocation */ + char * sv_debug_file; /* the file where we were allocated */ + SV * sv_debug_parent; /* what we were cloned from (ithreads)*/ #endif }; @@ -391,15 +388,14 @@ perform the upgrade if necessary. See C<svtype>. #define SVpav_REIFY 0x80000000 /* can become real */ /* PVHV */ #define SVphv_HASKFLAGS 0x80000000 /* keys have flag byte after hash */ -/* PVFM */ -#define SVpfm_COMPILED 0x80000000 /* FORMLINE is compiled */ /* PVGV when SVpbm_VALID is true */ #define SVpbm_TAIL 0x80000000 /* RV upwards. However, SVf_ROK and SVp_IOK are exclusive */ #define SVprv_WEAKREF 0x80000000 /* Weak reference */ -#define _XPV_HEAD \ - union _xnvu xnv_u; \ +#define _XPV_HEAD \ + HV* xmg_stash; /* class package */ \ + union _xmgu xmg_u; \ STRLEN xpv_cur; /* length of svu_pv as a C string */ \ STRLEN xpv_len /* allocated size */ @@ -419,12 +415,9 @@ union _xnvu { union _xivu { IV xivu_iv; /* integer value */ - /* xpvfm: lines */ UV xivu_uv; - void * xivu_p1; - I32 xivu_i32; + I32 xivu_i32; /* BmUSEFUL */ HEK * xivu_namehek; /* xpvlv, xpvgv: GvNAME */ - HV * xivu_hv; /* regexp: paren_names */ }; union _xmgu { @@ -453,23 +446,20 @@ struct xpvuv { struct xpvnv { _XPV_HEAD; union _xivu xiv_u; + union _xnvu xnv_u; }; -#define _XPVMG_HEAD \ - union _xivu xiv_u; \ - union _xmgu xmg_u; \ - HV* xmg_stash /* class package */ - /* This structure must match the beginning of struct xpvhv in hv.h. */ struct xpvmg { _XPV_HEAD; - _XPVMG_HEAD; + union _xivu xiv_u; + union _xnvu xnv_u; }; struct xpvlv { _XPV_HEAD; - _XPVMG_HEAD; - + union _xivu xiv_u; + union _xnvu xnv_u; STRLEN xlv_targoff; STRLEN xlv_targlen; SV* xlv_targ; @@ -481,7 +471,8 @@ struct xpvlv { Boyer-Moore. */ struct xpvgv { _XPV_HEAD; - _XPVMG_HEAD; + union _xivu xiv_u; + union _xnvu xnv_u; }; /* This structure must match XPVCV in cv.h */ @@ -509,44 +500,41 @@ typedef U16 cv_flags_t; struct xpvfm { _XPV_HEAD; - _XPVMG_HEAD; _XPVCV_COMMON; + IV xfm_lines; }; -#define _XPVIO_TAIL \ - PerlIO * xio_ifp; /* ifp and ofp are normally the same */ \ - PerlIO * xio_ofp; /* but sockets need separate streams */ \ - /* Cray addresses everything by word boundaries (64 bits) and \ - * code and data pointers cannot be mixed (which is exactly what \ - * Perl_filter_add() tries to do with the dirp), hence the \ - * following union trick (as suggested by Gurusamy Sarathy). \ - * For further information see Geir Johansen's problem report \ - * titled [ID 20000612.002] Perl problem on Cray system \ - * The any pointer (known as IoANY()) will also be a good place \ - * to hang any IO disciplines to. \ - */ \ - union { \ - DIR * xiou_dirp; /* for opendir, readdir, etc */ \ - void * xiou_any; /* for alignment */ \ - } xio_dirpu; \ - /* IV xio_lines is now in IVX $. */ \ - IV xio_page; /* $% */ \ - IV xio_page_len; /* $= */ \ - IV xio_lines_left; /* $- */ \ - char * xio_top_name; /* $^ */ \ - GV * xio_top_gv; /* $^ */ \ - char * xio_fmt_name; /* $~ */ \ - GV * xio_fmt_gv; /* $~ */ \ - char * xio_bottom_name;/* $^B */ \ - GV * xio_bottom_gv; /* $^B */ \ - char xio_type; \ - U8 xio_flags - struct xpvio { _XPV_HEAD; - _XPVMG_HEAD; - _XPVIO_TAIL; + union _xivu xiv_u; + /* ifp and ofp are normally the same, but sockets need separate streams */ + PerlIO * xio_ofp; + /* Cray addresses everything by word boundaries (64 bits) and + * code and data pointers cannot be mixed (which is exactly what + * Perl_filter_add() tries to do with the dirp), hence the + * following union trick (as suggested by Gurusamy Sarathy). + * For further information see Geir Johansen's problem report + * titled [ID 20000612.002] Perl problem on Cray system + * The any pointer (known as IoANY()) will also be a good place + * to hang any IO disciplines to. + */ + union { + DIR * xiou_dirp; /* for opendir, readdir, etc */ + void * xiou_any; /* for alignment */ + } xio_dirpu; + /* IV xio_lines is now in IVX $. */ + IV xio_page; /* $% */ + IV xio_page_len; /* $= */ + IV xio_lines_left; /* $- */ + char * xio_top_name; /* $^ */ + GV * xio_top_gv; /* $^ */ + char * xio_fmt_name; /* $~ */ + GV * xio_fmt_gv; /* $~ */ + char * xio_bottom_name;/* $^B */ + GV * xio_bottom_gv; /* $^B */ + char xio_type; + U8 xio_flags; }; #define xio_dirp xio_dirpu.xiou_dirp @@ -558,7 +546,8 @@ struct xpvio { #define IOf_DIDTOP 8 /* just did top of form */ #define IOf_UNTAINT 16 /* consider this fp (and its data) "safe" */ #define IOf_NOLINE 32 /* slurped a pseudo-line from empty file */ -#define IOf_FAKE_DIRP 64 /* xio_dirp is fake (source filters kludge) */ +#define IOf_FAKE_DIRP 64 /* xio_dirp is fake (source filters kludge) + Also, when this is set, SvPVX() is valid */ /* The following macros define implementation-independent predicates on SVs. */ @@ -932,9 +921,11 @@ the scalar's value cannot change unless written to. #define SvSCREAM_on(sv) (SvFLAGS(sv) |= SVp_SCREAM) #define SvSCREAM_off(sv) (SvFLAGS(sv) &= ~SVp_SCREAM) -#define SvCOMPILED(sv) (SvFLAGS(sv) & SVpfm_COMPILED) -#define SvCOMPILED_on(sv) (SvFLAGS(sv) |= SVpfm_COMPILED) -#define SvCOMPILED_off(sv) (SvFLAGS(sv) &= ~SVpfm_COMPILED) +#ifndef PERL_CORE +# define SvCOMPILED(sv) 0 +# define SvCOMPILED_on(sv) +# define SvCOMPILED_off(sv) +#endif #define SvEVALED(sv) (SvFLAGS(sv) & SVrepl_EVAL) #define SvEVALED_on(sv) (SvFLAGS(sv) |= SVrepl_EVAL) @@ -1054,6 +1045,8 @@ the scalar's value cannot change unless written to. assert(SvTYPE(_svpvx) != SVt_PVAV); \ assert(SvTYPE(_svpvx) != SVt_PVHV); \ assert(!isGV_with_GP(_svpvx)); \ + assert(!(SvTYPE(_svpvx) == SVt_PVIO \ + && !(IoFLAGS(_svpvx) & IOf_FAKE_DIRP))); \ &((_svpvx)->sv_u.svu_pv); \ })) # define SvCUR(sv) \ @@ -1062,6 +1055,8 @@ the scalar's value cannot change unless written to. assert(SvTYPE(_svcur) != SVt_PVAV); \ assert(SvTYPE(_svcur) != SVt_PVHV); \ assert(!isGV_with_GP(_svcur)); \ + assert(!(SvTYPE(_svcur) == SVt_PVIO \ + && !(IoFLAGS(_svcur) & IOf_FAKE_DIRP))); \ &(((XPV*) MUTABLE_PTR(SvANY(_svcur)))->xpv_cur); \ })) # define SvIVX(sv) \ @@ -1072,6 +1067,7 @@ the scalar's value cannot change unless written to. assert(SvTYPE(_svivx) != SVt_PVCV); \ assert(SvTYPE(_svivx) != SVt_PVFM); \ assert(SvTYPE(_svivx) != SVt_PVIO); \ + assert(SvTYPE(_svivx) != SVt_REGEXP); \ assert(!isGV_with_GP(_svivx)); \ &(((XPVIV*) MUTABLE_PTR(SvANY(_svivx)))->xiv_iv); \ })) @@ -1083,6 +1079,7 @@ the scalar's value cannot change unless written to. assert(SvTYPE(_svuvx) != SVt_PVCV); \ assert(SvTYPE(_svuvx) != SVt_PVFM); \ assert(SvTYPE(_svuvx) != SVt_PVIO); \ + assert(SvTYPE(_svuvx) != SVt_REGEXP); \ assert(!isGV_with_GP(_svuvx)); \ &(((XPVUV*) MUTABLE_PTR(SvANY(_svuvx)))->xuv_uv); \ })) @@ -1094,6 +1091,7 @@ the scalar's value cannot change unless written to. assert(SvTYPE(_svnvx) != SVt_PVCV); \ assert(SvTYPE(_svnvx) != SVt_PVFM); \ assert(SvTYPE(_svnvx) != SVt_PVIO); \ + assert(SvTYPE(_svnvx) != SVt_REGEXP); \ assert(!isGV_with_GP(_svnvx)); \ &(((XPVNV*) MUTABLE_PTR(SvANY(_svnvx)))->xnv_u.xnv_nv); \ })) @@ -1105,6 +1103,8 @@ the scalar's value cannot change unless written to. assert(SvTYPE(_svrv) != SVt_PVCV); \ assert(SvTYPE(_svrv) != SVt_PVFM); \ assert(!isGV_with_GP(_svrv)); \ + assert(!(SvTYPE(_svrv) == SVt_PVIO \ + && !(IoFLAGS(_svrv) & IOf_FAKE_DIRP))); \ &((_svrv)->sv_u.svu_rv); \ })) # define SvRV_const(sv) \ @@ -1115,6 +1115,8 @@ the scalar's value cannot change unless written to. assert(SvTYPE(_svrv) != SVt_PVCV); \ assert(SvTYPE(_svrv) != SVt_PVFM); \ assert(!isGV_with_GP(_svrv)); \ + assert(!(SvTYPE(_svrv) == SVt_PVIO \ + && !(IoFLAGS(_svrv) & IOf_FAKE_DIRP))); \ (_svrv)->sv_u.svu_rv; \ }) # define SvMAGIC(sv) \ @@ -1168,6 +1170,9 @@ the scalar's value cannot change unless written to. #define SvIV_please(sv) \ STMT_START {if (!SvIOKp(sv) && (SvNOK(sv) || SvPOK(sv))) \ (void) SvIV(sv); } STMT_END +#define SvIV_please_nomg(sv) \ + STMT_START {if (!SvIOKp(sv) && (SvNOK(sv) || SvPOK(sv))) \ + (void) SvIV_nomg(sv); } STMT_END #define SvIV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ assert(SvTYPE(sv) != SVt_PVAV); \ @@ -1187,6 +1192,8 @@ the scalar's value cannot change unless written to. assert(SvTYPE(sv) != SVt_PVAV); \ assert(SvTYPE(sv) != SVt_PVHV); \ assert(!isGV_with_GP(sv)); \ + assert(!(SvTYPE(sv) == SVt_PVIO \ + && !(IoFLAGS(sv) & IOf_FAKE_DIRP))); \ ((sv)->sv_u.svu_pv = (val)); } STMT_END #define SvUV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ @@ -1202,6 +1209,8 @@ the scalar's value cannot change unless written to. assert(SvTYPE(sv) != SVt_PVCV); \ assert(SvTYPE(sv) != SVt_PVFM); \ assert(!isGV_with_GP(sv)); \ + assert(!(SvTYPE(sv) == SVt_PVIO \ + && !(IoFLAGS(sv) & IOf_FAKE_DIRP))); \ ((sv)->sv_u.svu_rv = (val)); } STMT_END #define SvMAGIC_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ @@ -1214,12 +1223,16 @@ the scalar's value cannot change unless written to. assert(SvTYPE(sv) != SVt_PVAV); \ assert(SvTYPE(sv) != SVt_PVHV); \ assert(!isGV_with_GP(sv)); \ + assert(!(SvTYPE(sv) == SVt_PVIO \ + && !(IoFLAGS(sv) & IOf_FAKE_DIRP))); \ (((XPV*) SvANY(sv))->xpv_cur = (val)); } STMT_END #define SvLEN_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PV); \ assert(SvTYPE(sv) != SVt_PVAV); \ assert(SvTYPE(sv) != SVt_PVHV); \ assert(!isGV_with_GP(sv)); \ + assert(!(SvTYPE(sv) == SVt_PVIO \ + && !(IoFLAGS(sv) & IOf_FAKE_DIRP))); \ (((XPV*) SvANY(sv))->xpv_len = (val)); } STMT_END #define SvEND_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PV); \ @@ -1306,14 +1319,14 @@ the scalar's value cannot change unless written to. #endif -#define FmLINES(sv) ((XPVFM*) SvANY(sv))->xiv_u.xivu_iv +#define FmLINES(sv) ((XPVFM*) SvANY(sv))->xfm_lines #define LvTYPE(sv) ((XPVLV*) SvANY(sv))->xlv_type #define LvTARG(sv) ((XPVLV*) SvANY(sv))->xlv_targ #define LvTARGOFF(sv) ((XPVLV*) SvANY(sv))->xlv_targoff #define LvTARGLEN(sv) ((XPVLV*) SvANY(sv))->xlv_targlen -#define IoIFP(sv) ((XPVIO*) SvANY(sv))->xio_ifp +#define IoIFP(sv) (sv)->sv_u.svu_fp #define IoOFP(sv) ((XPVIO*) SvANY(sv))->xio_ofp #define IoDIRP(sv) ((XPVIO*) SvANY(sv))->xio_dirp #define IoANY(sv) ((XPVIO*) SvANY(sv))->xio_any @@ -1408,6 +1421,9 @@ Returns a pointer to the string in the SV, or a stringified form of the SV if the SV does not contain a string. The SV may cache the stringified form becoming C<SvPOK>. Handles 'get' magic. +=for apidoc Am|char*|SvPV_nomg_nolen|SV* sv +Like C<SvPV_nolen> but doesn't process magic. + =for apidoc Am|IV|SvIV|SV* sv Coerces the given SV to an integer and returns it. See C<SvIVx> for a version which guarantees to evaluate sv only once. @@ -1424,6 +1440,9 @@ otherwise use the more efficient C<SvIV>. Coerce the given SV to a double and return it. See C<SvNVx> for a version which guarantees to evaluate sv only once. +=for apidoc Am|NV|SvNV_nomg|SV* sv +Like C<SvNV> but doesn't process magic. + =for apidoc Am|NV|SvNVx|SV* sv Coerces the given SV to a double and returns it. Guarantees to evaluate C<sv> only once. Only use this if C<sv> is an expression with side effects, @@ -1443,6 +1462,12 @@ otherwise use the more efficient C<SvUV>. =for apidoc Am|bool|SvTRUE|SV* sv Returns a boolean indicating whether Perl would evaluate the SV as true or +false. See SvOK() for a defined/undefined test. Handles 'get' magic +unless the scalar is already SvPOK, SvIOK or SvNOK (the public, not the +private flags). + +=for apidoc Am|bool|SvTRUE_nomg|SV* sv +Returns a boolean indicating whether Perl would evaluate the SV as true or false. See SvOK() for a defined/undefined test. Does not handle 'get' magic. =for apidoc Am|char*|SvPVutf8_force|SV* sv|STRLEN len @@ -1495,6 +1520,9 @@ scalar. =for apidoc Am|void|sv_catpvn_nomg|SV* sv|const char* ptr|STRLEN len Like C<sv_catpvn> but doesn't process magic. +=for apidoc Am|void|sv_catpv_nomg|SV* sv|const char* ptr +Like C<sv_catpv> but doesn't process magic. + =for apidoc Am|void|sv_setsv_nomg|SV* dsv|SV* ssv Like C<sv_setsv> but doesn't process magic. @@ -1515,6 +1543,7 @@ Like sv_utf8_upgrade, but doesn't do magic on C<sv> #define SvIV_nomg(sv) (SvIOK(sv) ? SvIVX(sv) : sv_2iv_flags(sv, 0)) #define SvUV_nomg(sv) (SvIOK(sv) ? SvUVX(sv) : sv_2uv_flags(sv, 0)) +#define SvNV_nomg(sv) (SvNOK(sv) ? SvNVX(sv) : sv_2nv_flags(sv, 0)) /* ----*/ @@ -1560,6 +1589,10 @@ Like sv_utf8_upgrade, but doesn't do magic on C<sv> ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX(sv) : sv_2pv_flags(sv, 0, SV_GMAGIC)) +#define SvPV_nomg_nolen(sv) \ + ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ + ? SvPVX(sv) : sv_2pv_flags(sv, 0, 0)) + #define SvPV_nolen_const(sv) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX_const(sv) : sv_2pv_flags(sv, 0, SV_GMAGIC|SV_CONST_RETURN)) @@ -1636,6 +1669,22 @@ Like sv_utf8_upgrade, but doesn't do magic on C<sv> : SvNOK(sv) \ ? SvNVX(sv) != 0.0 \ : sv_2bool(sv) ) +# define SvTRUE_nomg(sv) ( \ + !sv \ + ? 0 \ + : SvPOK(sv) \ + ? (({XPV *nxpv = (XPV*)SvANY(sv); \ + nxpv && \ + (nxpv->xpv_cur > 1 || \ + (nxpv->xpv_cur && *(sv)->sv_u.svu_pv != '0')); }) \ + ? 1 \ + : 0) \ + : \ + SvIOK(sv) \ + ? SvIVX(sv) != 0 \ + : SvNOK(sv) \ + ? SvNVX(sv) != 0.0 \ + : sv_2bool_flags(sv,0) ) # define SvTRUEx(sv) ({SV *_sv = (sv); SvTRUE(_sv); }) #else /* __GNUC__ */ @@ -1668,6 +1717,21 @@ Like sv_utf8_upgrade, but doesn't do magic on C<sv> : SvNOK(sv) \ ? SvNVX(sv) != 0.0 \ : sv_2bool(sv) ) +# define SvTRUE_nomg(sv) ( \ + !sv \ + ? 0 \ + : SvPOK(sv) \ + ? ((PL_Xpv = (XPV*)SvANY(PL_Sv = (sv))) && \ + (PL_Xpv->xpv_cur > 1 || \ + (PL_Xpv->xpv_cur && *PL_Sv->sv_u.svu_pv != '0')) \ + ? 1 \ + : 0) \ + : \ + SvIOK(sv) \ + ? SvIVX(sv) != 0 \ + : SvNOK(sv) \ + ? SvNVX(sv) != 0.0 \ + : sv_2bool_flags(sv,0) ) # define SvTRUEx(sv) ((PL_Sv = (sv)), SvTRUE(PL_Sv)) #endif /* __GNU__ */ @@ -1698,6 +1762,9 @@ Like sv_utf8_upgrade, but doesn't do magic on C<sv> * This is used when the caller has already determined it is, and avoids * redundant work */ #define SV_FORCE_UTF8_UPGRADE 4096 +/* if (after resolving magic etc), the SV is found to be overloaded, + * don't call the overload magic, just return as-is */ +#define SV_SKIP_OVERLOAD 8192 /* The core is safe for this COW optimisation. XS code on CPAN may not be. So only default to doing the COW setup if we're in the core. @@ -1760,6 +1827,7 @@ mg.c:1024: warning: left-hand operand of comma expression has no effect #define sv_utf8_upgrade_flags(sv, flags) sv_utf8_upgrade_flags_grow(sv, flags, 0) #define sv_utf8_upgrade_nomg(sv) sv_utf8_upgrade_flags(sv, 0) #define sv_catpvn_nomg(dsv, sstr, slen) sv_catpvn_flags(dsv, sstr, slen, 0) +#define sv_catpv_nomg(dsv, sstr) sv_catpv_flags(dsv, sstr, 0) #define sv_setsv(dsv, ssv) \ sv_setsv_flags(dsv, ssv, SV_GMAGIC|SV_DO_COW_SVSETSV) #define sv_setsv_nomg(dsv, ssv) sv_setsv_flags(dsv, ssv, SV_DO_COW_SVSETSV) @@ -1778,6 +1846,12 @@ mg.c:1024: warning: left-hand operand of comma expression has no effect #define sv_utf8_upgrade(sv) sv_utf8_upgrade_flags(sv, SV_GMAGIC) #define sv_2iv(sv) sv_2iv_flags(sv, SV_GMAGIC) #define sv_2uv(sv) sv_2uv_flags(sv, SV_GMAGIC) +#define sv_2nv(sv) sv_2nv_flags(sv, SV_GMAGIC) +#define sv_eq(sv1, sv2) sv_eq_flags(sv1, sv2, SV_GMAGIC) +#define sv_cmp(sv1, sv2) sv_cmp_flags(sv1, sv2, SV_GMAGIC) +#define sv_cmp_locale(sv1, sv2) sv_cmp_locale_flags(sv1, sv2, SV_GMAGIC) +#define sv_collxfrm(sv, nxp) sv_cmp_flags(sv, nxp, SV_GMAGIC) +#define sv_2bool(sv) sv_2bool_flags(sv, SV_GMAGIC) #define sv_insert(bigstr, offset, len, little, littlelen) \ Perl_sv_insert_flags(aTHX_ (bigstr),(offset), (len), (little), \ (littlelen), SV_GMAGIC) @@ -1855,10 +1929,10 @@ Returns a pointer to the character buffer. =cut */ -#define SvSHARE(sv) CALL_FPTR(PL_sharehook)(aTHX_ sv) -#define SvLOCK(sv) CALL_FPTR(PL_lockhook)(aTHX_ sv) -#define SvUNLOCK(sv) CALL_FPTR(PL_unlockhook)(aTHX_ sv) -#define SvDESTROYABLE(sv) CALL_FPTR(PL_destroyhook)(aTHX_ sv) +#define SvSHARE(sv) PL_sharehook(aTHX_ sv) +#define SvLOCK(sv) PL_lockhook(aTHX_ sv) +#define SvUNLOCK(sv) PL_unlockhook(aTHX_ sv) +#define SvDESTROYABLE(sv) PL_destroyhook(aTHX_ sv) #define SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END #define SvSETMAGIC(x) STMT_START { if (SvSMAGICAL(x)) mg_set(x); } STMT_END @@ -1933,6 +2007,8 @@ struct clone_params { AV* stashes; UV flags; PerlInterpreter *proto_perl; + PerlInterpreter *new_perl; + AV *unreferenced; }; /* diff --git a/Master/tlpkg/tlperl/lib/CORE/sys/socket.h b/Master/tlpkg/tlperl/lib/CORE/sys/socket.h index a3c53b0e883..3b92b13d546 100644 --- a/Master/tlpkg/tlperl/lib/CORE/sys/socket.h +++ b/Master/tlpkg/tlperl/lib/CORE/sys/socket.h @@ -6,30 +6,93 @@ #ifndef _INC_SYS_SOCKET #define _INC_SYS_SOCKET -#ifdef __cplusplus -extern "C" { -#endif - #define WIN32_LEAN_AND_MEAN #ifdef __GNUC__ # define Win32_Winsock #endif #include <windows.h> - /* Too late to include winsock2.h if winsock.h has already been loaded */ #ifndef _WINSOCKAPI_ # if defined(UNDER_CE) && UNDER_CE <= 300 /* winsock2 only for 4.00+ */ # include <winsock.h> # else -# include <winsock2.h> -#endif +# include <winsock2.h> + /* We need to include ws2tcpip.h to get the IPv6 definitions. + * It will in turn include wspiapi.h. Later versions of that + * header in the Windows SDK generate C++ template code that + * can't be compiled with VC6 anymore. The _WSPIAPI_COUNTOF + * definition below prevents wspiapi.h from generating this + * incompatible code. + */ +# define _WSPIAPI_COUNTOF(_Array) (sizeof(_Array) / sizeof(_Array[0])) +# include <ws2tcpip.h> + +# ifndef SIO_GET_INTERFACE_LIST_EX + /* The ws2tcpip.h header included in VC6 doesn't define the + * sin6_scope_id member of sockaddr_in6. We define our own + * version and redefine sockaddr_in6 to point to this one + * instead for compiling e.g. Socket.xs. + */ + struct my_sockaddr_in6 { + short sin6_family; /* AF_INET6 */ + u_short sin6_port; /* Transport level port number */ + u_long sin6_flowinfo; /* IPv6 flow information */ + struct in_addr6 sin6_addr; /* IPv6 address */ + u_long sin6_scope_id; /* set of interfaces for a scope */ + }; +# define sockaddr_in6 my_sockaddr_in6 + + /* Provide implementations of IN6ADDR_SETANY() and IN6ADDR_SETLOOPBACK + * that also initialize the sin6_scope_id field. + */ +# undef IN6ADDR_SETANY +# define IN6ADDR_SETANY(x) {\ +(x)->sin6_family = AF_INET6; \ +(x)->sin6_port = 0; \ +(x)->sin6_flowinfo = 0; \ +*((u_long *)((x)->sin6_addr.s6_addr) ) = 0; \ +*((u_long *)((x)->sin6_addr.s6_addr) + 1) = 0; \ +*((u_long *)((x)->sin6_addr.s6_addr) + 2) = 0; \ +*((u_long *)((x)->sin6_addr.s6_addr) + 3) = 0; \ +(x)->sin6_scope_id = 0; \ +} + +# undef IN6ADDR_SETLOOPBACK +# define IN6ADDR_SETLOOPBACK(x) {\ +(x)->sin6_family = AF_INET6; \ +(x)->sin6_port = 0; \ +(x)->sin6_flowinfo = 0; \ +*((u_long *)((x)->sin6_addr.s6_addr) ) = 0; \ +*((u_long *)((x)->sin6_addr.s6_addr) + 1) = 0; \ +*((u_long *)((x)->sin6_addr.s6_addr) + 2) = 0; \ +*((u_long *)((x)->sin6_addr.s6_addr) + 3) = 1; \ +(x)->sin6_scope_id = 0; \ +} + +# endif + +# endif #endif #include "win32.h" -#define ENOTSOCK WSAENOTSOCK +#ifdef __cplusplus +extern "C" { +#endif + +#undef ENOTSOCK +#define ENOTSOCK WSAENOTSOCK + +#undef ECONNABORTED +#define ECONNABORTED WSAECONNABORTED + +#undef ECONNRESET +#define ECONNRESET WSAECONNRESET + +#undef EAFNOSUPPORT +#define EAFNOSUPPORT WSAEAFNOSUPPORT #ifdef USE_SOCKETS_AS_HANDLES diff --git a/Master/tlpkg/tlperl/lib/CORE/uconfig.h b/Master/tlpkg/tlperl/lib/CORE/uconfig.h index 511a00b8cb1..506cebea816 100644 --- a/Master/tlpkg/tlperl/lib/CORE/uconfig.h +++ b/Master/tlpkg/tlperl/lib/CORE/uconfig.h @@ -1,17 +1,13 @@ -/* - * This file was produced by running the config_h.SH script, which +/* This file was produced by running the config_h.SH script, which * gets its values from uconfig.sh, which is generally produced by * running Configure. * * Feel free to modify any of this as the need arises. Note, however, * that running config_h.SH again will wipe out any changes you've made. * For a more permanent change edit uconfig.sh and rerun config_h.SH. - * - * $Id: Config_h.U 1 2006-08-24 12:32:52Z rmanfredi $ */ -/* - * Package name : perl5 +/* Package name : perl5 * Source directory : . * Configuration time: Thu Jan 1 00:00:00 GMT 1970 * Configured by : root@localhost @@ -107,26 +103,6 @@ */ /*#define HAS_DLERROR / **/ -/* SETUID_SCRIPTS_ARE_SECURE_NOW: - * This symbol, if defined, indicates that the bug that prevents - * setuid scripts from being secure is not present in this kernel. - */ -/* DOSUID: - * This symbol, if defined, indicates that the C program should - * check the script that it is executing for setuid/setgid bits, and - * attempt to emulate setuid/setgid on systems that have disabled - * setuid #! scripts because the kernel can't do it securely. - * It is up to the package designer to make sure that this emulation - * is done securely. Among other things, it should do an fstat on - * the script it just opened to make sure it really is a setuid/setgid - * script, it should make sure the arguments passed correspond exactly - * to the argument on the #! line, and it should not trust any - * subprocesses to which it must pass the filename rather than the - * file descriptor of the script to be executed. - */ -/*#define SETUID_SCRIPTS_ARE_SECURE_NOW / **/ -/*#define DOSUID / **/ - /* HAS_DUP2: * This symbol, if defined, indicates that the dup2 routine is * available to duplicate file descriptors. @@ -304,7 +280,7 @@ * This symbol, if defined, indicates that the memset routine is available * to set blocks of memory. */ -/*#define HAS_MEMSET / **/ +#define HAS_MEMSET /**/ /* HAS_MKDIR: * This symbol, if defined, indicates that the mkdir routine is available @@ -737,7 +713,7 @@ * This symbol, if defined, indicates that <stddef.h> exists and should * be included. */ -/*#define I_STDDEF / **/ +#define I_STDDEF /**/ /* I_STDLIB: * This symbol, if defined, indicates that <stdlib.h> exists and should @@ -881,6 +857,28 @@ */ /*#define I_VFORK / **/ +/* CAN_VAPROTO: + * This variable is defined on systems supporting prototype declaration + * of functions with a variable number of arguments. + */ +/* _V: + * This macro is used to declare function parameters in prototypes for + * functions with a variable number of parameters. Use double parentheses. + * For example: + * + * int printf _V((char *fmt, ...)); + * + * Remember to use the plain simple _() macro when declaring a function + * with no variable number of arguments, since it might be possible to + * have a non-effect _V() macro and still get prototypes via _(). + */ +/*#define CAN_VAPROTO / **/ +#ifdef CAN_VAPROTO +#define _V(args) args +#else +#define _V(args) () +#endif + /* INTSIZE: * This symbol contains the value of sizeof(int) so that the C * preprocessor can make decisions based on it. @@ -908,7 +906,7 @@ /* HAS_QUAD: * This symbol, if defined, tells that there's a 64-bit integer type, - * Quad_t, and its unsigned counterpar, Uquad_t. QUADKIND will be one + * Quad_t, and its unsigned counterpart, Uquad_t. QUADKIND will be one * of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, or QUAD_IS_INT64_T. */ /*#define HAS_QUAD / **/ @@ -922,18 +920,28 @@ # define QUAD_IS_INT64_T 4 #endif -/* OSNAME: - * This symbol contains the name of the operating system, as determined - * by Configure. You shouldn't rely on it too much; the specific - * feature tests from Configure are generally more reliable. +/* USE_CROSS_COMPILE: + * This symbol, if defined, indicates that Perl is being cross-compiled. */ -/* OSVERS: - * This symbol contains the version of the operating system, as determined - * by Configure. You shouldn't rely on it too much; the specific - * feature tests from Configure are generally more reliable. +/* PERL_TARGETARCH: + * This symbol, if defined, indicates the target architecture + * Perl has been cross-compiled to. Undefined if not a cross-compile. */ -#define OSNAME "unknown" /**/ -#define OSVERS "unknown" /**/ +#ifndef USE_CROSS_COMPILE +/*#define USE_CROSS_COMPILE / **/ +#define PERL_TARGETARCH "" /**/ +#endif + +/* MEM_ALIGNBYTES: + * This symbol contains the number of bytes required to align a + * double, or a long double when applicable. Usual values are 2, + * 4 and 8. The default is eight, for safety. + */ +#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH) +# define MEM_ALIGNBYTES 8 +#else +#define MEM_ALIGNBYTES 4 +#endif /* ARCHLIB: * This variable, if defined, holds the name of the directory in @@ -948,8 +956,8 @@ * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -/*#define ARCHLIB "/usr/local/lib/perl5/5.11/unknown" / **/ -/*#define ARCHLIB_EXP "/usr/local/lib/perl5/5.11/unknown" / **/ +/*#define ARCHLIB "/usr/local/lib/perl5/5.14/unknown" / **/ +/*#define ARCHLIB_EXP "/usr/local/lib/perl5/5.14/unknown" / **/ /* ARCHNAME: * This symbol holds a string representing the architecture name. @@ -975,63 +983,54 @@ #define BIN_EXP "/usr/local/bin" /**/ #define PERL_RELOCATABLE_INC "undef" /**/ -/* CAT2: - * This macro concatenates 2 tokens together. - */ -/* STRINGIFY: - * This macro surrounds its token with double quotes. - */ -#if 42 == 1 -#define CAT2(a,b) a/**/b -#define STRINGIFY(a) "a" -#endif -#if 42 == 42 -#define PeRl_CaTiFy(a, b) a ## b -#define PeRl_StGiFy(a) #a -#define CAT2(a,b) PeRl_CaTiFy(a,b) -#define StGiFy(a) PeRl_StGiFy(a) -#define STRINGIFY(a) PeRl_StGiFy(a) -#endif -#if 42 != 1 && 42 != 42 -#include "Bletch: How does this C preprocessor concatenate tokens?" -#endif - -/* CPPSTDIN: - * This symbol contains the first part of the string which will invoke - * the C preprocessor on the standard input and produce to standard - * output. Typical value of "cc -E" or "/lib/cpp", but it can also - * call a wrapper. See CPPRUN. - */ -/* CPPMINUS: - * This symbol contains the second part of the string which will invoke - * the C preprocessor on the standard input and produce to standard - * output. This symbol will have the value "-" if CPPSTDIN needs a minus - * to specify standard input, otherwise the value is "". - */ -/* CPPRUN: - * This symbol contains the string which will invoke a C preprocessor on - * the standard input and produce to standard output. It needs to end - * with CPPLAST, after all other preprocessor flags have been specified. - * The main difference with CPPSTDIN is that this program will never be a - * pointer to a shell wrapper, i.e. it will be empty if no preprocessor is - * available directly to the user. Note that it may well be different from - * the preprocessor used to compile the C program. - */ -/* CPPLAST: - * This symbol is intended to be used along with CPPRUN in the same manner - * symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "". +/* BYTEORDER: + * This symbol holds the hexadecimal constant defined in byteorder, + * in a UV, i.e. 0x1234 or 0x4321 or 0x12345678, etc... + * If the compiler supports cross-compiling or multiple-architecture + * binaries (eg. on NeXT systems), use compiler-defined macros to + * determine the byte order. + * On NeXT 3.2 (and greater), you can build "Fat" Multiple Architecture + * Binaries (MAB) on either big endian or little endian machines. + * The endian-ness is available at compile-time. This only matters + * for perl, where the config.h can be generated and installed on + * one system, and used by a different architecture to build an + * extension. Older versions of NeXT that might not have + * defined either *_ENDIAN__ were all on Motorola 680x0 series, + * so the default case (for NeXT) is big endian to catch them. + * This might matter for NeXT 3.0. */ -#define CPPSTDIN "cc -E" -#define CPPMINUS "-" -#define CPPRUN "cc -E" -#define CPPLAST "-" +#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH) +# ifdef __LITTLE_ENDIAN__ +# if LONGSIZE == 4 +# define BYTEORDER 0x1234 +# else +# if LONGSIZE == 8 +# define BYTEORDER 0x12345678 +# endif +# endif +# else +# ifdef __BIG_ENDIAN__ +# if LONGSIZE == 4 +# define BYTEORDER 0x4321 +# else +# if LONGSIZE == 8 +# define BYTEORDER 0x87654321 +# endif +# endif +# endif +# endif +# if !defined(BYTEORDER) && (defined(NeXT) || defined(__NeXT__)) +# define BYTEORDER 0x4321 +# endif +#else +#define BYTEORDER 0x1234 /* large digits for MSB */ +#endif /* NeXT */ -/* HAS_ACCESS: - * This manifest constant lets the C program know that the access() - * system call is available to check for accessibility using real UID/GID. - * (always present on UNIX.) +/* CHARBITS: + * This symbol contains the size of a char, so that the C preprocessor + * can make decisions based on it. */ -/*#define HAS_ACCESS / **/ +#define CHARBITS 8 /**/ /* HAS_ACCESSX: * This symbol, if defined, indicates that the accessx routine is @@ -1052,53 +1051,32 @@ /*#define HAS_ASCTIME_R / **/ #define ASCTIME_R_PROTO 0 /**/ -/* HASATTRIBUTE_FORMAT: - * Can we handle GCC attribute for checking printf-style formats - */ -/* PRINTF_FORMAT_NULL_OK: - * Allows __printf__ format to be null when checking printf-style - */ -/* HASATTRIBUTE_MALLOC: - * Can we handle GCC attribute for malloc-style functions. - */ -/* HASATTRIBUTE_NONNULL: - * Can we handle GCC attribute for nonnull function parms. - */ -/* HASATTRIBUTE_NORETURN: - * Can we handle GCC attribute for functions that do not return - */ -/* HASATTRIBUTE_PURE: - * Can we handle GCC attribute for pure functions - */ -/* HASATTRIBUTE_UNUSED: - * Can we handle GCC attribute for unused variables and arguments +/* CASTI32: + * This symbol is defined if the C compiler can cast negative + * or large floating point numbers to 32-bit ints. */ -/* HASATTRIBUTE_DEPRECATED: - * Can we handle GCC attribute for marking deprecated APIs +/*#define CASTI32 / **/ + +/* CASTNEGFLOAT: + * This symbol is defined if the C compiler can cast negative + * numbers to unsigned longs, ints and shorts. */ -/* HASATTRIBUTE_WARN_UNUSED_RESULT: - * Can we handle GCC attribute for warning on unused results +/* CASTFLAGS: + * This symbol contains flags that say what difficulties the compiler + * has casting odd floating values to unsigned long: + * 0 = ok + * 1 = couldn't cast < 0 + * 2 = couldn't cast >= 0x80000000 + * 4 = couldn't cast in argument expression list */ -/*#define HASATTRIBUTE_DEPRECATED / **/ -/*#define HASATTRIBUTE_FORMAT / **/ -/*#define PRINTF_FORMAT_NULL_OK / **/ -/*#define HASATTRIBUTE_NORETURN / **/ -/*#define HASATTRIBUTE_MALLOC / **/ -/*#define HASATTRIBUTE_NONNULL / **/ -/*#define HASATTRIBUTE_PURE / **/ -/*#define HASATTRIBUTE_UNUSED / **/ -/*#define HASATTRIBUTE_WARN_UNUSED_RESULT / **/ +/*#define CASTNEGFLOAT / **/ +#define CASTFLAGS 0 /**/ -/* HASCONST: - * This symbol, if defined, indicates that this C compiler knows about - * the const type. There is no need to actually test for that symbol - * within your programs. The mere use of the "const" keyword will - * trigger the necessary tests. +/* VOID_CLOSEDIR: + * This symbol, if defined, indicates that the closedir() routine + * does not return a value. */ -/*#define HASCONST / **/ -#ifndef HASCONST -#define const -#endif +/*#define VOID_CLOSEDIR / **/ /* HAS_CRYPT_R: * This symbol, if defined, indicates that the crypt_r routine @@ -1113,17 +1091,6 @@ /*#define HAS_CRYPT_R / **/ #define CRYPT_R_PROTO 0 /**/ -/* HAS_CSH: - * This symbol, if defined, indicates that the C-shell exists. - */ -/* CSH: - * This symbol, if defined, contains the full pathname of csh. - */ -/*#define HAS_CSH / **/ -#ifdef HAS_CSH -#define CSH "" /**/ -#endif - /* HAS_CTERMID_R: * This symbol, if defined, indicates that the ctermid_r routine * is available to ctermid re-entrantly. @@ -1163,26 +1130,12 @@ /*#define HAS_DRAND48_R / **/ #define DRAND48_R_PROTO 0 /**/ -/* HAS_DRAND48_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the drand48() function. Otherwise, it is up - * to the program to supply one. A good guess is - * extern double drand48(void); - */ -/*#define HAS_DRAND48_PROTO / **/ - /* HAS_EACCESS: * This symbol, if defined, indicates that the eaccess routine is * available to do extended access checks. */ /*#define HAS_EACCESS / **/ -/* HAS_ENDGRENT: - * This symbol, if defined, indicates that the getgrent routine is - * available for finalizing sequential access of the group database. - */ -/*#define HAS_ENDGRENT / **/ - /* HAS_ENDGRENT_R: * This symbol, if defined, indicates that the endgrent_r routine * is available to endgrent re-entrantly. @@ -1196,12 +1149,6 @@ /*#define HAS_ENDGRENT_R / **/ #define ENDGRENT_R_PROTO 0 /**/ -/* HAS_ENDHOSTENT: - * This symbol, if defined, indicates that the endhostent() routine is - * available to close whatever was being used for host queries. - */ -/*#define HAS_ENDHOSTENT / **/ - /* HAS_ENDHOSTENT_R: * This symbol, if defined, indicates that the endhostent_r routine * is available to endhostent re-entrantly. @@ -1215,12 +1162,6 @@ /*#define HAS_ENDHOSTENT_R / **/ #define ENDHOSTENT_R_PROTO 0 /**/ -/* HAS_ENDNETENT: - * This symbol, if defined, indicates that the endnetent() routine is - * available to close whatever was being used for network queries. - */ -/*#define HAS_ENDNETENT / **/ - /* HAS_ENDNETENT_R: * This symbol, if defined, indicates that the endnetent_r routine * is available to endnetent re-entrantly. @@ -1234,12 +1175,6 @@ /*#define HAS_ENDNETENT_R / **/ #define ENDNETENT_R_PROTO 0 /**/ -/* HAS_ENDPROTOENT: - * This symbol, if defined, indicates that the endprotoent() routine is - * available to close whatever was being used for protocol queries. - */ -/*#define HAS_ENDPROTOENT / **/ - /* HAS_ENDPROTOENT_R: * This symbol, if defined, indicates that the endprotoent_r routine * is available to endprotoent re-entrantly. @@ -1253,12 +1188,6 @@ /*#define HAS_ENDPROTOENT_R / **/ #define ENDPROTOENT_R_PROTO 0 /**/ -/* HAS_ENDPWENT: - * This symbol, if defined, indicates that the getgrent routine is - * available for finalizing sequential access of the passwd database. - */ -/*#define HAS_ENDPWENT / **/ - /* HAS_ENDPWENT_R: * This symbol, if defined, indicates that the endpwent_r routine * is available to endpwent re-entrantly. @@ -1272,12 +1201,6 @@ /*#define HAS_ENDPWENT_R / **/ #define ENDPWENT_R_PROTO 0 /**/ -/* HAS_ENDSERVENT: - * This symbol, if defined, indicates that the endservent() routine is - * available to close whatever was being used for service queries. - */ -/*#define HAS_ENDSERVENT / **/ - /* HAS_ENDSERVENT_R: * This symbol, if defined, indicates that the endservent_r routine * is available to endservent re-entrantly. @@ -1291,17 +1214,28 @@ /*#define HAS_ENDSERVENT_R / **/ #define ENDSERVENT_R_PROTO 0 /**/ -/* FLEXFILENAMES: - * This symbol, if defined, indicates that the system supports filenames - * longer than 14 characters. +/* HAS_FD_SET: + * This symbol, when defined, indicates presence of the fd_set typedef + * in <sys/types.h> */ -/*#define FLEXFILENAMES / **/ +/*#define HAS_FD_SET / **/ -/* HAS_GETGRENT: - * This symbol, if defined, indicates that the getgrent routine is - * available for sequential access of the group database. +/* Gconvert: + * This preprocessor macro is defined to convert a floating point + * number to a string without a trailing decimal point. This + * emulates the behavior of sprintf("%g"), but is sometimes much more + * efficient. If gconvert() is not available, but gcvt() drops the + * trailing decimal point, then gcvt() is used. If all else fails, + * a macro using sprintf("%g") is used. Arguments for the Gconvert + * macro are: value, number of digits, whether trailing zeros should + * be retained, and the output buffer. + * The usual values are: + * d_Gconvert='gconvert((x),(n),(t),(b))' + * d_Gconvert='gcvt((x),(n),(b))' + * d_Gconvert='sprintf((b),"%.*g",(n),(x))' + * The last two assume trailing zeros should not be kept. */ -/*#define HAS_GETGRENT / **/ +#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x)) /* HAS_GETGRENT_R: * This symbol, if defined, indicates that the getgrent_r routine @@ -1342,53 +1276,6 @@ /*#define HAS_GETGRNAM_R / **/ #define GETGRNAM_R_PROTO 0 /**/ -/* HAS_GETHOSTBYADDR: - * This symbol, if defined, indicates that the gethostbyaddr() routine is - * available to look up hosts by their IP addresses. - */ -/*#define HAS_GETHOSTBYADDR / **/ - -/* HAS_GETHOSTBYNAME: - * This symbol, if defined, indicates that the gethostbyname() routine is - * available to look up host names in some data base or other. - */ -/*#define HAS_GETHOSTBYNAME / **/ - -/* HAS_GETHOSTENT: - * This symbol, if defined, indicates that the gethostent() routine is - * available to look up host names in some data base or another. - */ -/*#define HAS_GETHOSTENT / **/ - -/* HAS_GETHOSTNAME: - * This symbol, if defined, indicates that the C program may use the - * gethostname() routine to derive the host name. See also HAS_UNAME - * and PHOSTNAME. - */ -/* HAS_UNAME: - * This symbol, if defined, indicates that the C program may use the - * uname() routine to derive the host name. See also HAS_GETHOSTNAME - * and PHOSTNAME. - */ -/* PHOSTNAME: - * This symbol, if defined, indicates the command to feed to the - * popen() routine to derive the host name. See also HAS_GETHOSTNAME - * and HAS_UNAME. Note that the command uses a fully qualified path, - * so that it is safe even if used by a process with super-user - * privileges. - */ -/* HAS_PHOSTNAME: - * This symbol, if defined, indicates that the C program may use the - * contents of PHOSTNAME as a command to feed to the popen() routine - * to derive the host name. - */ -/*#define HAS_GETHOSTNAME / **/ -/*#define HAS_UNAME / **/ -/*#define HAS_PHOSTNAME / **/ -#ifdef HAS_PHOSTNAME -#define PHOSTNAME "/bin/hostname" /* How to get the host name */ -#endif - /* HAS_GETHOSTBYADDR_R: * This symbol, if defined, indicates that the gethostbyaddr_r routine * is available to gethostbyaddr re-entrantly. @@ -1428,14 +1315,6 @@ /*#define HAS_GETHOSTENT_R / **/ #define GETHOSTENT_R_PROTO 0 /**/ -/* HAS_GETHOST_PROTOS: - * This symbol, if defined, indicates that <netdb.h> includes - * prototypes for gethostent(), gethostbyname(), and - * gethostbyaddr(). Otherwise, it is up to the program to guess - * them. See netdbtype.U for probing for various Netdb_xxx_t types. - */ -/*#define HAS_GETHOST_PROTOS / **/ - /* HAS_GETLOGIN_R: * This symbol, if defined, indicates that the getlogin_r routine * is available to getlogin re-entrantly. @@ -1449,24 +1328,6 @@ /*#define HAS_GETLOGIN_R / **/ #define GETLOGIN_R_PROTO 0 /**/ -/* HAS_GETNETBYADDR: - * This symbol, if defined, indicates that the getnetbyaddr() routine is - * available to look up networks by their IP addresses. - */ -/*#define HAS_GETNETBYADDR / **/ - -/* HAS_GETNETBYNAME: - * This symbol, if defined, indicates that the getnetbyname() routine is - * available to look up networks by their names. - */ -/*#define HAS_GETNETBYNAME / **/ - -/* HAS_GETNETENT: - * This symbol, if defined, indicates that the getnetent() routine is - * available to look up network names in some data base or another. - */ -/*#define HAS_GETNETENT / **/ - /* HAS_GETNETBYADDR_R: * This symbol, if defined, indicates that the getnetbyaddr_r routine * is available to getnetbyaddr re-entrantly. @@ -1506,41 +1367,12 @@ /*#define HAS_GETNETENT_R / **/ #define GETNETENT_R_PROTO 0 /**/ -/* HAS_GETNET_PROTOS: - * This symbol, if defined, indicates that <netdb.h> includes - * prototypes for getnetent(), getnetbyname(), and - * getnetbyaddr(). Otherwise, it is up to the program to guess - * them. See netdbtype.U for probing for various Netdb_xxx_t types. - */ -/*#define HAS_GETNET_PROTOS / **/ - -/* HAS_GETPROTOENT: - * This symbol, if defined, indicates that the getprotoent() routine is - * available to look up protocols in some data base or another. - */ -/*#define HAS_GETPROTOENT / **/ - -/* HAS_GETPGRP: - * This symbol, if defined, indicates that the getpgrp routine is - * available to get the current process group. - */ -/* USE_BSD_GETPGRP: - * This symbol, if defined, indicates that getpgrp needs one - * arguments whereas USG one needs none. - */ -/*#define HAS_GETPGRP / **/ -/*#define USE_BSD_GETPGRP / **/ - -/* HAS_GETPROTOBYNAME: - * This symbol, if defined, indicates that the getprotobyname() - * routine is available to look up protocols by their name. - */ -/* HAS_GETPROTOBYNUMBER: - * This symbol, if defined, indicates that the getprotobynumber() - * routine is available to look up protocols by their number. +/* HAS_GETPAGESIZE: + * This symbol, if defined, indicates that the getpagesize system call + * is available to get system page size, which is the granularity of + * many memory management calls. */ -/*#define HAS_GETPROTOBYNAME / **/ -/*#define HAS_GETPROTOBYNUMBER / **/ +/*#define HAS_GETPAGESIZE / **/ /* HAS_GETPROTOBYNAME_R: * This symbol, if defined, indicates that the getprotobyname_r routine @@ -1581,21 +1413,6 @@ /*#define HAS_GETPROTOENT_R / **/ #define GETPROTOENT_R_PROTO 0 /**/ -/* HAS_GETPROTO_PROTOS: - * This symbol, if defined, indicates that <netdb.h> includes - * prototypes for getprotoent(), getprotobyname(), and - * getprotobyaddr(). Otherwise, it is up to the program to guess - * them. See netdbtype.U for probing for various Netdb_xxx_t types. - */ -/*#define HAS_GETPROTO_PROTOS / **/ - -/* HAS_GETPWENT: - * This symbol, if defined, indicates that the getpwent routine is - * available for sequential access of the passwd database. - * If this is not available, the older getpw() function may be available. - */ -/*#define HAS_GETPWENT / **/ - /* HAS_GETPWENT_R: * This symbol, if defined, indicates that the getpwent_r routine * is available to getpwent re-entrantly. @@ -1635,12 +1452,6 @@ /*#define HAS_GETPWUID_R / **/ #define GETPWUID_R_PROTO 0 /**/ -/* HAS_GETSERVENT: - * This symbol, if defined, indicates that the getservent() routine is - * available to look up network services in some data base or another. - */ -/*#define HAS_GETSERVENT / **/ - /* HAS_GETSERVBYNAME_R: * This symbol, if defined, indicates that the getservbyname_r routine * is available to getservbyname re-entrantly. @@ -1680,14 +1491,6 @@ /*#define HAS_GETSERVENT_R / **/ #define GETSERVENT_R_PROTO 0 /**/ -/* HAS_GETSERV_PROTOS: - * This symbol, if defined, indicates that <netdb.h> includes - * prototypes for getservent(), getservbyname(), and - * getservbyaddr(). Otherwise, it is up to the program to guess - * them. See netdbtype.U for probing for various Netdb_xxx_t types. - */ -/*#define HAS_GETSERV_PROTOS / **/ - /* HAS_GETSPNAM_R: * This symbol, if defined, indicates that the getspnam_r routine * is available to getspnam re-entrantly. @@ -1701,17 +1504,6 @@ /*#define HAS_GETSPNAM_R / **/ #define GETSPNAM_R_PROTO 0 /**/ -/* HAS_GETSERVBYNAME: - * This symbol, if defined, indicates that the getservbyname() - * routine is available to look up services by their name. - */ -/* HAS_GETSERVBYPORT: - * This symbol, if defined, indicates that the getservbyport() - * routine is available to look up services by their port. - */ -/*#define HAS_GETSERVBYNAME / **/ -/*#define HAS_GETSERVBYPORT / **/ - /* HAS_GMTIME_R: * This symbol, if defined, indicates that the gmtime_r routine * is available to gmtime re-entrantly. @@ -1725,30 +1517,28 @@ /*#define HAS_GMTIME_R / **/ #define GMTIME_R_PROTO 0 /**/ -/* HAS_HTONL: - * This symbol, if defined, indicates that the htonl() routine (and - * friends htons() ntohl() ntohs()) are available to do network - * order byte swapping. - */ -/* HAS_HTONS: - * This symbol, if defined, indicates that the htons() routine (and - * friends htonl() ntohl() ntohs()) are available to do network - * order byte swapping. +/* HAS_GNULIBC: + * This symbol, if defined, indicates to the C program that + * the GNU C library is being used. A better check is to use + * the __GLIBC__ and __GLIBC_MINOR__ symbols supplied with glibc. */ -/* HAS_NTOHL: - * This symbol, if defined, indicates that the ntohl() routine (and - * friends htonl() htons() ntohs()) are available to do network - * order byte swapping. +/*#define HAS_GNULIBC / **/ +#if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE) +# define _GNU_SOURCE +#endif + +/* HAS_ISASCII: + * This manifest constant lets the C program know that isascii + * is available. */ -/* HAS_NTOHS: - * This symbol, if defined, indicates that the ntohs() routine (and - * friends htonl() htons() ntohl()) are available to do network - * order byte swapping. +/*#define HAS_ISASCII / **/ + +/* HAS_LCHOWN: + * This symbol, if defined, indicates that the lchown routine is + * available to operate on a symbolic link (instead of following the + * link). */ -/*#define HAS_HTONL / **/ -/*#define HAS_HTONS / **/ -/*#define HAS_NTOHL / **/ -/*#define HAS_NTOHS / **/ +/*#define HAS_LCHOWN / **/ /* HAS_LOCALTIME_R: * This symbol, if defined, indicates that the localtime_r routine @@ -1776,71 +1566,11 @@ /*#define HAS_LOCALTIME_R / **/ #define LOCALTIME_R_PROTO 0 /**/ -/* HAS_LONG_DOUBLE: - * This symbol will be defined if the C compiler supports long - * doubles. - */ -/* LONG_DOUBLESIZE: - * This symbol contains the size of a long double, so that the - * C preprocessor can make decisions based on it. It is only - * defined if the system supports long doubles. - */ -/*#define HAS_LONG_DOUBLE / **/ -#ifdef HAS_LONG_DOUBLE -#define LONG_DOUBLESIZE 8 /**/ -#endif - -/* HAS_LONG_LONG: - * This symbol will be defined if the C compiler supports long long. - */ -/* LONGLONGSIZE: - * This symbol contains the size of a long long, so that the - * C preprocessor can make decisions based on it. It is only - * defined if the system supports long long. - */ -/*#define HAS_LONG_LONG / **/ -#ifdef HAS_LONG_LONG -#define LONGLONGSIZE 8 /**/ -#endif - -/* HAS_LSEEK_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the lseek() function. Otherwise, it is up - * to the program to supply one. A good guess is - * extern off_t lseek(int, off_t, int); - */ -/*#define HAS_LSEEK_PROTO / **/ - -/* HAS_MEMCHR: - * This symbol, if defined, indicates that the memchr routine is available - * to locate characters within a C string. - */ -#define HAS_MEMCHR /**/ - -/* HAS_MKSTEMP: - * This symbol, if defined, indicates that the mkstemp routine is - * available to exclusively create and open a uniquely named - * temporary file. - */ -/*#define HAS_MKSTEMP / **/ - -/* HAS_MMAP: - * This symbol, if defined, indicates that the mmap system call is - * available to map a file into memory. - */ -/* Mmap_t: - * This symbol holds the return type of the mmap() system call - * (and simultaneously the type of the first argument). - * Usually set to 'void *' or 'caddr_t'. - */ -/*#define HAS_MMAP / **/ -#define Mmap_t void * /**/ - -/* HAS_MSG: - * This symbol, if defined, indicates that the entire msg*(2) library is - * supported (IPC mechanism based on message queues). +/* HAS_OPEN3: + * This manifest constant lets the C program know that the three + * argument form of open(2) is available. */ -/*#define HAS_MSG / **/ +/*#define HAS_OPEN3 / **/ /* OLD_PTHREAD_CREATE_JOINABLE: * This symbol, if defined, indicates how to create pthread @@ -1916,17 +1646,28 @@ /*#define HAS_READDIR_R / **/ #define READDIR_R_PROTO 0 /**/ -/* HAS_SEM: - * This symbol, if defined, indicates that the entire sem*(2) library is - * supported. +/* HAS_SAFE_BCOPY: + * This symbol, if defined, indicates that the bcopy routine is available + * to copy potentially overlapping memory blocks. Normally, you should + * probably use memmove() or memcpy(). If neither is defined, roll your + * own version. */ -/*#define HAS_SEM / **/ +/*#define HAS_SAFE_BCOPY / **/ -/* HAS_SETGRENT: - * This symbol, if defined, indicates that the setgrent routine is - * available for initializing sequential access of the group database. +/* HAS_SAFE_MEMCPY: + * This symbol, if defined, indicates that the memcpy routine is available + * to copy potentially overlapping memory blocks. If you need to + * copy overlapping memory blocks, you should check HAS_MEMMOVE and + * use memmove() instead, if available. */ -/*#define HAS_SETGRENT / **/ +/*#define HAS_SAFE_MEMCPY / **/ + +/* HAS_SANE_MEMCMP: + * This symbol, if defined, indicates that the memcmp routine is available + * and can be used to compare relative magnitudes of chars with their high + * bits set. If it is not defined, roll your own version. + */ +/*#define HAS_SANE_MEMCMP / **/ /* HAS_SETGRENT_R: * This symbol, if defined, indicates that the setgrent_r routine @@ -1941,12 +1682,6 @@ /*#define HAS_SETGRENT_R / **/ #define SETGRENT_R_PROTO 0 /**/ -/* HAS_SETHOSTENT: - * This symbol, if defined, indicates that the sethostent() routine is - * available. - */ -/*#define HAS_SETHOSTENT / **/ - /* HAS_SETHOSTENT_R: * This symbol, if defined, indicates that the sethostent_r routine * is available to sethostent re-entrantly. @@ -1973,12 +1708,6 @@ /*#define HAS_SETLOCALE_R / **/ #define SETLOCALE_R_PROTO 0 /**/ -/* HAS_SETNETENT: - * This symbol, if defined, indicates that the setnetent() routine is - * available. - */ -/*#define HAS_SETNETENT / **/ - /* HAS_SETNETENT_R: * This symbol, if defined, indicates that the setnetent_r routine * is available to setnetent re-entrantly. @@ -1992,24 +1721,6 @@ /*#define HAS_SETNETENT_R / **/ #define SETNETENT_R_PROTO 0 /**/ -/* HAS_SETPROTOENT: - * This symbol, if defined, indicates that the setprotoent() routine is - * available. - */ -/*#define HAS_SETPROTOENT / **/ - -/* HAS_SETPGRP: - * This symbol, if defined, indicates that the setpgrp routine is - * available to set the current process group. - */ -/* USE_BSD_SETPGRP: - * This symbol, if defined, indicates that setpgrp needs two - * arguments whereas USG one needs none. See also HAS_SETPGID - * for a POSIX interface. - */ -/*#define HAS_SETPGRP / **/ -/*#define USE_BSD_SETPGRP / **/ - /* HAS_SETPROTOENT_R: * This symbol, if defined, indicates that the setprotoent_r routine * is available to setprotoent re-entrantly. @@ -2023,12 +1734,6 @@ /*#define HAS_SETPROTOENT_R / **/ #define SETPROTOENT_R_PROTO 0 /**/ -/* HAS_SETPWENT: - * This symbol, if defined, indicates that the setpwent routine is - * available for initializing sequential access of the passwd database. - */ -/*#define HAS_SETPWENT / **/ - /* HAS_SETPWENT_R: * This symbol, if defined, indicates that the setpwent_r routine * is available to setpwent re-entrantly. @@ -2042,12 +1747,6 @@ /*#define HAS_SETPWENT_R / **/ #define SETPWENT_R_PROTO 0 /**/ -/* HAS_SETSERVENT: - * This symbol, if defined, indicates that the setservent() routine is - * available. - */ -/*#define HAS_SETSERVENT / **/ - /* HAS_SETSERVENT_R: * This symbol, if defined, indicates that the setservent_r routine * is available to setservent re-entrantly. @@ -2061,6 +1760,933 @@ /*#define HAS_SETSERVENT_R / **/ #define SETSERVENT_R_PROTO 0 /**/ +/* HAS_SIGACTION: + * This symbol, if defined, indicates that Vr4's sigaction() routine + * is available. + */ +/*#define HAS_SIGACTION / **/ + +/* HAS_SIGSETJMP: + * This variable indicates to the C program that the sigsetjmp() + * routine is available to save the calling process's registers + * and stack environment for later use by siglongjmp(), and + * to optionally save the process's signal mask. See + * Sigjmp_buf, Sigsetjmp, and Siglongjmp. + */ +/* Sigjmp_buf: + * This is the buffer type to be used with Sigsetjmp and Siglongjmp. + */ +/* Sigsetjmp: + * This macro is used in the same way as sigsetjmp(), but will invoke + * traditional setjmp() if sigsetjmp isn't available. + * See HAS_SIGSETJMP. + */ +/* Siglongjmp: + * This macro is used in the same way as siglongjmp(), but will invoke + * traditional longjmp() if siglongjmp isn't available. + * See HAS_SIGSETJMP. + */ +/*#define HAS_SIGSETJMP / **/ +#ifdef HAS_SIGSETJMP +#define Sigjmp_buf sigjmp_buf +#define Sigsetjmp(buf,save_mask) sigsetjmp((buf),(save_mask)) +#define Siglongjmp(buf,retval) siglongjmp((buf),(retval)) +#else +#define Sigjmp_buf jmp_buf +#define Sigsetjmp(buf,save_mask) setjmp((buf)) +#define Siglongjmp(buf,retval) longjmp((buf),(retval)) +#endif + +/* HAS_SRAND48_R: + * This symbol, if defined, indicates that the srand48_r routine + * is available to srand48 re-entrantly. + */ +/* SRAND48_R_PROTO: + * This symbol encodes the prototype of srand48_r. + * It is zero if d_srand48_r is undef, and one of the + * REENTRANT_PROTO_T_ABC macros of reentr.h if d_srand48_r + * is defined. + */ +/*#define HAS_SRAND48_R / **/ +#define SRAND48_R_PROTO 0 /**/ + +/* HAS_SRANDOM_R: + * This symbol, if defined, indicates that the srandom_r routine + * is available to srandom re-entrantly. + */ +/* SRANDOM_R_PROTO: + * This symbol encodes the prototype of srandom_r. + * It is zero if d_srandom_r is undef, and one of the + * REENTRANT_PROTO_T_ABC macros of reentr.h if d_srandom_r + * is defined. + */ +/*#define HAS_SRANDOM_R / **/ +#define SRANDOM_R_PROTO 0 /**/ + +/* USE_STDIO_PTR: + * This symbol is defined if the _ptr and _cnt fields (or similar) + * of the stdio FILE structure can be used to access the stdio buffer + * for a file handle. If this is defined, then the FILE_ptr(fp) + * and FILE_cnt(fp) macros will also be defined and should be used + * to access these fields. + */ +/* FILE_ptr: + * This macro is used to access the _ptr field (or equivalent) of the + * FILE structure pointed to by its argument. This macro will always be + * defined if USE_STDIO_PTR is defined. + */ +/* STDIO_PTR_LVALUE: + * This symbol is defined if the FILE_ptr macro can be used as an + * lvalue. + */ +/* FILE_cnt: + * This macro is used to access the _cnt field (or equivalent) of the + * FILE structure pointed to by its argument. This macro will always be + * defined if USE_STDIO_PTR is defined. + */ +/* STDIO_CNT_LVALUE: + * This symbol is defined if the FILE_cnt macro can be used as an + * lvalue. + */ +/* STDIO_PTR_LVAL_SETS_CNT: + * This symbol is defined if using the FILE_ptr macro as an lvalue + * to increase the pointer by n has the side effect of decreasing the + * value of File_cnt(fp) by n. + */ +/* STDIO_PTR_LVAL_NOCHANGE_CNT: + * This symbol is defined if using the FILE_ptr macro as an lvalue + * to increase the pointer by n leaves File_cnt(fp) unchanged. + */ +/*#define USE_STDIO_PTR / **/ +#ifdef USE_STDIO_PTR +#define FILE_ptr(fp) ((fp)->_IO_read_ptr) +/*#define STDIO_PTR_LVALUE / **/ +#define FILE_cnt(fp) ((fp)->_IO_read_end - (fp)->_IO_read_ptr) +/*#define STDIO_CNT_LVALUE / **/ +/*#define STDIO_PTR_LVAL_SETS_CNT / **/ +/*#define STDIO_PTR_LVAL_NOCHANGE_CNT / **/ +#endif + +/* USE_STDIO_BASE: + * This symbol is defined if the _base field (or similar) of the + * stdio FILE structure can be used to access the stdio buffer for + * a file handle. If this is defined, then the FILE_base(fp) macro + * will also be defined and should be used to access this field. + * Also, the FILE_bufsiz(fp) macro will be defined and should be used + * to determine the number of bytes in the buffer. USE_STDIO_BASE + * will never be defined unless USE_STDIO_PTR is. + */ +/* FILE_base: + * This macro is used to access the _base field (or equivalent) of the + * FILE structure pointed to by its argument. This macro will always be + * defined if USE_STDIO_BASE is defined. + */ +/* FILE_bufsiz: + * This macro is used to determine the number of bytes in the I/O + * buffer pointed to by _base field (or equivalent) of the FILE + * structure pointed to its argument. This macro will always be defined + * if USE_STDIO_BASE is defined. + */ +/*#define USE_STDIO_BASE / **/ +#ifdef USE_STDIO_BASE +#define FILE_base(fp) ((fp)->_IO_read_base) +#define FILE_bufsiz(fp) ((fp)->_IO_read_end - (fp)->_IO_read_base) +#endif + +/* HAS_STRERROR_R: + * This symbol, if defined, indicates that the strerror_r routine + * is available to strerror re-entrantly. + */ +/* STRERROR_R_PROTO: + * This symbol encodes the prototype of strerror_r. + * It is zero if d_strerror_r is undef, and one of the + * REENTRANT_PROTO_T_ABC macros of reentr.h if d_strerror_r + * is defined. + */ +/*#define HAS_STRERROR_R / **/ +#define STRERROR_R_PROTO 0 /**/ + +/* HAS_TMPNAM_R: + * This symbol, if defined, indicates that the tmpnam_r routine + * is available to tmpnam re-entrantly. + */ +/* TMPNAM_R_PROTO: + * This symbol encodes the prototype of tmpnam_r. + * It is zero if d_tmpnam_r is undef, and one of the + * REENTRANT_PROTO_T_ABC macros of reentr.h if d_tmpnam_r + * is defined. + */ +/*#define HAS_TMPNAM_R / **/ +#define TMPNAM_R_PROTO 0 /**/ + +/* HAS_TTYNAME_R: + * This symbol, if defined, indicates that the ttyname_r routine + * is available to ttyname re-entrantly. + */ +/* TTYNAME_R_PROTO: + * This symbol encodes the prototype of ttyname_r. + * It is zero if d_ttyname_r is undef, and one of the + * REENTRANT_PROTO_T_ABC macros of reentr.h if d_ttyname_r + * is defined. + */ +/*#define HAS_TTYNAME_R / **/ +#define TTYNAME_R_PROTO 0 /**/ + +/* HAS_VPRINTF: + * This symbol, if defined, indicates that the vprintf routine is available + * to printf with a pointer to an argument list. If unavailable, you + * may need to write your own, probably in terms of _doprnt(). + */ +/* USE_CHAR_VSPRINTF: + * This symbol is defined if this system has vsprintf() returning type + * (char*). The trend seems to be to declare it as "int vsprintf()". It + * is up to the package author to declare vsprintf correctly based on the + * symbol. + */ +#define HAS_VPRINTF /**/ +/*#define USE_CHAR_VSPRINTF / **/ + +/* DOUBLESIZE: + * This symbol contains the size of a double, so that the C preprocessor + * can make decisions based on it. + */ +#define DOUBLESIZE 8 /**/ + +/* I_MACH_CTHREADS: + * This symbol, if defined, indicates to the C program that it should + * include <mach/cthreads.h>. + */ +/*#define I_MACH_CTHREADS / **/ + +/* I_PTHREAD: + * This symbol, if defined, indicates to the C program that it should + * include <pthread.h>. + */ +/*#define I_PTHREAD / **/ + +/* I_SYS_ACCESS: + * This symbol, if defined, indicates to the C program that it should + * include <sys/access.h>. + */ +/*#define I_SYS_ACCESS / **/ + +/* I_SYS_SECURITY: + * This symbol, if defined, indicates to the C program that it should + * include <sys/security.h>. + */ +/*#define I_SYS_SECURITY / **/ + +/* I_TIME: + * This symbol, if defined, indicates to the C program that it should + * include <time.h>. + */ +/* I_SYS_TIME: + * This symbol, if defined, indicates to the C program that it should + * include <sys/time.h>. + */ +/* I_SYS_TIME_KERNEL: + * This symbol, if defined, indicates to the C program that it should + * include <sys/time.h> with KERNEL defined. + */ +/* HAS_TM_TM_ZONE: + * This symbol, if defined, indicates to the C program that + * the struct tm has a tm_zone field. + */ +/* HAS_TM_TM_GMTOFF: + * This symbol, if defined, indicates to the C program that + * the struct tm has a tm_gmtoff field. + */ +#define I_TIME /**/ +/*#define I_SYS_TIME / **/ +/*#define I_SYS_TIME_KERNEL / **/ +/*#define HAS_TM_TM_ZONE / **/ +/*#define HAS_TM_TM_GMTOFF / **/ + +/* PERL_INC_VERSION_LIST: + * This variable specifies the list of subdirectories in over + * which perl.c:incpush() and lib/lib.pm will automatically + * search when adding directories to @INC, in a format suitable + * for a C initialization string. See the inc_version_list entry + * in Porting/Glossary for more details. + */ +/*#define PERL_INC_VERSION_LIST NULL / **/ + +/* INSTALL_USR_BIN_PERL: + * This symbol, if defined, indicates that Perl is to be installed + * also as /usr/bin/perl. + */ +/*#define INSTALL_USR_BIN_PERL / **/ + +/* VAL_O_NONBLOCK: + * This symbol is to be used during open() or fcntl(F_SETFL) to turn on + * non-blocking I/O for the file descriptor. Note that there is no way + * back, i.e. you cannot turn it blocking again this way. If you wish to + * alternatively switch between blocking and non-blocking, use the + * ioctl(FIOSNBIO) call instead, but that is not supported by all devices. + */ +/* VAL_EAGAIN: + * This symbol holds the errno error code set by read() when no data was + * present on the non-blocking file descriptor. + */ +/* RD_NODATA: + * This symbol holds the return code from read() when no data is present + * on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is + * not defined, then you can't distinguish between no data and EOF by + * issuing a read(). You'll have to find another way to tell for sure! + */ +/* EOF_NONBLOCK: + * This symbol, if defined, indicates to the C program that a read() on + * a non-blocking file descriptor will return 0 on EOF, and not the value + * held in RD_NODATA (-1 usually, in that case!). + */ +#define VAL_O_NONBLOCK O_NONBLOCK +#define VAL_EAGAIN EAGAIN +#define RD_NODATA -1 +#undef EOF_NONBLOCK + +/* PERL_OTHERLIBDIRS: + * This variable contains a colon-separated set of paths for the perl + * binary to search for additional library files or modules. + * These directories will be tacked to the end of @INC. + * Perl will automatically search below each path for version- + * and architecture-specific directories. See PERL_INC_VERSION_LIST + * for more details. + */ +/*#define PERL_OTHERLIBDIRS " " / **/ + +/* PRIVLIB: + * This symbol contains the name of the private library for this package. + * The library is private in the sense that it needn't be in anyone's + * execution path, but it should be accessible by the world. The program + * should be prepared to do ~ expansion. + */ +/* PRIVLIB_EXP: + * This symbol contains the ~name expanded version of PRIVLIB, to be used + * in programs that are not prepared to deal with ~ expansion at run-time. + */ +#define PRIVLIB "/usr/local/lib/perl5/5.14" /**/ +#define PRIVLIB_EXP "/usr/local/lib/perl5/5.14" /**/ + +/* PTRSIZE: + * This symbol contains the size of a pointer, so that the C preprocessor + * can make decisions based on it. It will be sizeof(void *) if + * the compiler supports (void *); otherwise it will be + * sizeof(char *). + */ +#define PTRSIZE 4 /**/ + +/* Drand01: + * This macro is to be used to generate uniformly distributed + * random numbers over the range [0., 1.[. You may have to supply + * an 'extern double drand48();' in your program since SunOS 4.1.3 + * doesn't provide you with anything relevant in its headers. + * See HAS_DRAND48_PROTO. + */ +/* Rand_seed_t: + * This symbol defines the type of the argument of the + * random seed function. + */ +/* seedDrand01: + * This symbol defines the macro to be used in seeding the + * random number generator (see Drand01). + */ +/* RANDBITS: + * This symbol indicates how many bits are produced by the + * function used to generate normalized random numbers. + * Values include 15, 16, 31, and 48. + */ +#define Drand01() ((rand() & 0x7FFF) / (double) ((unsigned long)1 << 15)) /**/ +#define Rand_seed_t int /**/ +#define seedDrand01(x) srand((Rand_seed_t)x) /**/ +#define RANDBITS 48 /**/ + +/* SITEARCH: + * This symbol contains the name of the private library for this package. + * The library is private in the sense that it needn't be in anyone's + * execution path, but it should be accessible by the world. The program + * should be prepared to do ~ expansion. + * The standard distribution will put nothing in this directory. + * After perl has been installed, users may install their own local + * architecture-dependent modules in this directory with + * MakeMaker Makefile.PL + * or equivalent. See INSTALL for details. + */ +/* SITEARCH_EXP: + * This symbol contains the ~name expanded version of SITEARCH, to be used + * in programs that are not prepared to deal with ~ expansion at run-time. + */ +/*#define SITEARCH "/usr/local/lib/perl5/5.14/unknown" / **/ +/*#define SITEARCH_EXP "/usr/local/lib/perl5/5.14/unknown" / **/ + +/* SITELIB: + * This symbol contains the name of the private library for this package. + * The library is private in the sense that it needn't be in anyone's + * execution path, but it should be accessible by the world. The program + * should be prepared to do ~ expansion. + * The standard distribution will put nothing in this directory. + * After perl has been installed, users may install their own local + * architecture-independent modules in this directory with + * MakeMaker Makefile.PL + * or equivalent. See INSTALL for details. + */ +/* SITELIB_EXP: + * This symbol contains the ~name expanded version of SITELIB, to be used + * in programs that are not prepared to deal with ~ expansion at run-time. + */ +/* SITELIB_STEM: + * This define is SITELIB_EXP with any trailing version-specific component + * removed. The elements in inc_version_list (inc_version_list.U) can + * be tacked onto this variable to generate a list of directories to search. + */ +#define SITELIB "/usr/local/lib/perl5/5.14" /**/ +#define SITELIB_EXP "/usr/local/lib/perl5/5.14" /**/ +#define SITELIB_STEM "/usr/local/lib/perl5" /**/ + +/* SSize_t: + * This symbol holds the type used by functions that return + * a count of bytes or an error condition. It must be a signed type. + * It is usually ssize_t, but may be long or int, etc. + * It may be necessary to include <sys/types.h> or <unistd.h> + * to get any typedef'ed information. + * We will pick a type such that sizeof(SSize_t) == sizeof(Size_t). + */ +#define SSize_t int /* signed count of bytes */ + +/* USE_ITHREADS: + * This symbol, if defined, indicates that Perl should be built to + * use the interpreter-based threading implementation. + */ +/* USE_5005THREADS: + * This symbol, if defined, indicates that Perl should be built to + * use the 5.005-based threading implementation. + * Only valid up to 5.8.x. + */ +/* OLD_PTHREADS_API: + * This symbol, if defined, indicates that Perl should + * be built to use the old draft POSIX threads API. + */ +/* USE_REENTRANT_API: + * This symbol, if defined, indicates that Perl should + * try to use the various _r versions of library functions. + * This is extremely experimental. + */ +/*#define USE_5005THREADS / **/ +/*#define USE_ITHREADS / **/ +#if defined(USE_5005THREADS) && !defined(USE_ITHREADS) +#define USE_THREADS /* until src is revised*/ +#endif +/*#define OLD_PTHREADS_API / **/ +/*#define USE_REENTRANT_API / **/ + +/* PERL_VENDORARCH: + * If defined, this symbol contains the name of a private library. + * The library is private in the sense that it needn't be in anyone's + * execution path, but it should be accessible by the world. + * It may have a ~ on the front. + * The standard distribution will put nothing in this directory. + * Vendors who distribute perl may wish to place their own + * architecture-dependent modules and extensions in this directory with + * MakeMaker Makefile.PL INSTALLDIRS=vendor + * or equivalent. See INSTALL for details. + */ +/* PERL_VENDORARCH_EXP: + * This symbol contains the ~name expanded version of PERL_VENDORARCH, to be used + * in programs that are not prepared to deal with ~ expansion at run-time. + */ +/*#define PERL_VENDORARCH "" / **/ +/*#define PERL_VENDORARCH_EXP "" / **/ + +/* PERL_VENDORLIB_EXP: + * This symbol contains the ~name expanded version of VENDORLIB, to be used + * in programs that are not prepared to deal with ~ expansion at run-time. + */ +/* PERL_VENDORLIB_STEM: + * This define is PERL_VENDORLIB_EXP with any trailing version-specific component + * removed. The elements in inc_version_list (inc_version_list.U) can + * be tacked onto this variable to generate a list of directories to search. + */ +/*#define PERL_VENDORLIB_EXP "" / **/ +/*#define PERL_VENDORLIB_STEM "" / **/ + +/* HAS_STATIC_INLINE: + * This symbol, if defined, indicates that the C compiler supports + * C99-style static inline. That is, the function can't be called + * from another translation unit. + */ +/* PERL_STATIC_INLINE: + * This symbol gives the best-guess incantation to use for static + * inline functions. If HAS_STATIC_INLINE is defined, this will + * give C99-style inline. If HAS_STATIC_INLINE is not defined, + * this will give a plain 'static'. It will always be defined + * to something that gives static linkage. + * Possibilities include + * static inline (c99) + * static __inline__ (gcc -ansi) + * static __inline (MSVC) + * static _inline (older MSVC) + * static (c89 compilers) + */ +/*#define HAS_STATIC_INLINE / **/ +#define PERL_STATIC_INLINE static /**/ + +/* EBCDIC: + * This symbol, if defined, indicates that this system uses + * EBCDIC encoding. + */ +/*#define EBCDIC / **/ + +/* OSNAME: + * This symbol contains the name of the operating system, as determined + * by Configure. You shouldn't rely on it too much; the specific + * feature tests from Configure are generally more reliable. + */ +/* OSVERS: + * This symbol contains the version of the operating system, as determined + * by Configure. You shouldn't rely on it too much; the specific + * feature tests from Configure are generally more reliable. + */ +#define OSNAME "unknown" /**/ +#define OSVERS "unknown" /**/ + +/* CAT2: + * This macro concatenates 2 tokens together. + */ +/* STRINGIFY: + * This macro surrounds its token with double quotes. + */ +#if 42 == 1 +#define CAT2(a,b) a/**/b +#define STRINGIFY(a) "a" +#endif +#if 42 == 42 +#define PeRl_CaTiFy(a, b) a ## b +#define PeRl_StGiFy(a) #a +#define CAT2(a,b) PeRl_CaTiFy(a,b) +#define StGiFy(a) PeRl_StGiFy(a) +#define STRINGIFY(a) PeRl_StGiFy(a) +#endif +#if 42 != 1 && 42 != 42 +#include "Bletch: How does this C preprocessor concatenate tokens?" +#endif + +/* CPPSTDIN: + * This symbol contains the first part of the string which will invoke + * the C preprocessor on the standard input and produce to standard + * output. Typical value of "cc -E" or "/lib/cpp", but it can also + * call a wrapper. See CPPRUN. + */ +/* CPPMINUS: + * This symbol contains the second part of the string which will invoke + * the C preprocessor on the standard input and produce to standard + * output. This symbol will have the value "-" if CPPSTDIN needs a minus + * to specify standard input, otherwise the value is "". + */ +/* CPPRUN: + * This symbol contains the string which will invoke a C preprocessor on + * the standard input and produce to standard output. It needs to end + * with CPPLAST, after all other preprocessor flags have been specified. + * The main difference with CPPSTDIN is that this program will never be a + * pointer to a shell wrapper, i.e. it will be empty if no preprocessor is + * available directly to the user. Note that it may well be different from + * the preprocessor used to compile the C program. + */ +/* CPPLAST: + * This symbol is intended to be used along with CPPRUN in the same manner + * symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "". + */ +#define CPPSTDIN "cc -E" +#define CPPMINUS "-" +#define CPPRUN "cc -E" +#define CPPLAST "-" + +/* HAS_ACCESS: + * This manifest constant lets the C program know that the access() + * system call is available to check for accessibility using real UID/GID. + * (always present on UNIX.) + */ +/*#define HAS_ACCESS / **/ + +/* HASATTRIBUTE_FORMAT: + * Can we handle GCC attribute for checking printf-style formats + */ +/* PRINTF_FORMAT_NULL_OK: + * Allows __printf__ format to be null when checking printf-style + */ +/* HASATTRIBUTE_MALLOC: + * Can we handle GCC attribute for malloc-style functions. + */ +/* HASATTRIBUTE_NONNULL: + * Can we handle GCC attribute for nonnull function parms. + */ +/* HASATTRIBUTE_NORETURN: + * Can we handle GCC attribute for functions that do not return + */ +/* HASATTRIBUTE_PURE: + * Can we handle GCC attribute for pure functions + */ +/* HASATTRIBUTE_UNUSED: + * Can we handle GCC attribute for unused variables and arguments + */ +/* HASATTRIBUTE_DEPRECATED: + * Can we handle GCC attribute for marking deprecated APIs + */ +/* HASATTRIBUTE_WARN_UNUSED_RESULT: + * Can we handle GCC attribute for warning on unused results + */ +/*#define HASATTRIBUTE_DEPRECATED / **/ +/*#define HASATTRIBUTE_FORMAT / **/ +/*#define PRINTF_FORMAT_NULL_OK / **/ +/*#define HASATTRIBUTE_NORETURN / **/ +/*#define HASATTRIBUTE_MALLOC / **/ +/*#define HASATTRIBUTE_NONNULL / **/ +/*#define HASATTRIBUTE_PURE / **/ +/*#define HASATTRIBUTE_UNUSED / **/ +/*#define HASATTRIBUTE_WARN_UNUSED_RESULT / **/ + +/* HASCONST: + * This symbol, if defined, indicates that this C compiler knows about + * the const type. There is no need to actually test for that symbol + * within your programs. The mere use of the "const" keyword will + * trigger the necessary tests. + */ +/*#define HASCONST / **/ +#ifndef HASCONST +#define const +#endif + +/* HAS_CSH: + * This symbol, if defined, indicates that the C-shell exists. + */ +/* CSH: + * This symbol, if defined, contains the full pathname of csh. + */ +/*#define HAS_CSH / **/ +#ifdef HAS_CSH +#define CSH "" /**/ +#endif + +/* SETUID_SCRIPTS_ARE_SECURE_NOW: + * This symbol, if defined, indicates that the bug that prevents + * setuid scripts from being secure is not present in this kernel. + */ +/* DOSUID: + * This symbol, if defined, indicates that the C program should + * check the script that it is executing for setuid/setgid bits, and + * attempt to emulate setuid/setgid on systems that have disabled + * setuid #! scripts because the kernel can't do it securely. + * It is up to the package designer to make sure that this emulation + * is done securely. Among other things, it should do an fstat on + * the script it just opened to make sure it really is a setuid/setgid + * script, it should make sure the arguments passed correspond exactly + * to the argument on the #! line, and it should not trust any + * subprocesses to which it must pass the filename rather than the + * file descriptor of the script to be executed. + */ +/*#define SETUID_SCRIPTS_ARE_SECURE_NOW / **/ +/*#define DOSUID / **/ + +/* HAS_ENDGRENT: + * This symbol, if defined, indicates that the getgrent routine is + * available for finalizing sequential access of the group database. + */ +/*#define HAS_ENDGRENT / **/ + +/* HAS_ENDHOSTENT: + * This symbol, if defined, indicates that the endhostent() routine is + * available to close whatever was being used for host queries. + */ +/*#define HAS_ENDHOSTENT / **/ + +/* HAS_ENDNETENT: + * This symbol, if defined, indicates that the endnetent() routine is + * available to close whatever was being used for network queries. + */ +/*#define HAS_ENDNETENT / **/ + +/* HAS_ENDPROTOENT: + * This symbol, if defined, indicates that the endprotoent() routine is + * available to close whatever was being used for protocol queries. + */ +/*#define HAS_ENDPROTOENT / **/ + +/* HAS_ENDPWENT: + * This symbol, if defined, indicates that the getgrent routine is + * available for finalizing sequential access of the passwd database. + */ +/*#define HAS_ENDPWENT / **/ + +/* HAS_ENDSERVENT: + * This symbol, if defined, indicates that the endservent() routine is + * available to close whatever was being used for service queries. + */ +/*#define HAS_ENDSERVENT / **/ + +/* FLEXFILENAMES: + * This symbol, if defined, indicates that the system supports filenames + * longer than 14 characters. + */ +/*#define FLEXFILENAMES / **/ + +/* HAS_GETGRENT: + * This symbol, if defined, indicates that the getgrent routine is + * available for sequential access of the group database. + */ +/*#define HAS_GETGRENT / **/ + +/* HAS_GETHOSTBYADDR: + * This symbol, if defined, indicates that the gethostbyaddr() routine is + * available to look up hosts by their IP addresses. + */ +/*#define HAS_GETHOSTBYADDR / **/ + +/* HAS_GETHOSTBYNAME: + * This symbol, if defined, indicates that the gethostbyname() routine is + * available to look up host names in some data base or other. + */ +/*#define HAS_GETHOSTBYNAME / **/ + +/* HAS_GETHOSTENT: + * This symbol, if defined, indicates that the gethostent() routine is + * available to look up host names in some data base or another. + */ +/*#define HAS_GETHOSTENT / **/ + +/* HAS_GETHOSTNAME: + * This symbol, if defined, indicates that the C program may use the + * gethostname() routine to derive the host name. See also HAS_UNAME + * and PHOSTNAME. + */ +/* HAS_UNAME: + * This symbol, if defined, indicates that the C program may use the + * uname() routine to derive the host name. See also HAS_GETHOSTNAME + * and PHOSTNAME. + */ +/* PHOSTNAME: + * This symbol, if defined, indicates the command to feed to the + * popen() routine to derive the host name. See also HAS_GETHOSTNAME + * and HAS_UNAME. Note that the command uses a fully qualified path, + * so that it is safe even if used by a process with super-user + * privileges. + */ +/* HAS_PHOSTNAME: + * This symbol, if defined, indicates that the C program may use the + * contents of PHOSTNAME as a command to feed to the popen() routine + * to derive the host name. + */ +/*#define HAS_GETHOSTNAME / **/ +/*#define HAS_UNAME / **/ +/*#define HAS_PHOSTNAME / **/ +#ifdef HAS_PHOSTNAME +#define PHOSTNAME "/bin/hostname" /* How to get the host name */ +#endif + +/* HAS_GETNETBYADDR: + * This symbol, if defined, indicates that the getnetbyaddr() routine is + * available to look up networks by their IP addresses. + */ +/*#define HAS_GETNETBYADDR / **/ + +/* HAS_GETNETBYNAME: + * This symbol, if defined, indicates that the getnetbyname() routine is + * available to look up networks by their names. + */ +/*#define HAS_GETNETBYNAME / **/ + +/* HAS_GETNETENT: + * This symbol, if defined, indicates that the getnetent() routine is + * available to look up network names in some data base or another. + */ +/*#define HAS_GETNETENT / **/ + +/* HAS_GETPROTOENT: + * This symbol, if defined, indicates that the getprotoent() routine is + * available to look up protocols in some data base or another. + */ +/*#define HAS_GETPROTOENT / **/ + +/* HAS_GETPGRP: + * This symbol, if defined, indicates that the getpgrp routine is + * available to get the current process group. + */ +/* USE_BSD_GETPGRP: + * This symbol, if defined, indicates that getpgrp needs one + * arguments whereas USG one needs none. + */ +/*#define HAS_GETPGRP / **/ +/*#define USE_BSD_GETPGRP / **/ + +/* HAS_GETPROTOBYNAME: + * This symbol, if defined, indicates that the getprotobyname() + * routine is available to look up protocols by their name. + */ +/* HAS_GETPROTOBYNUMBER: + * This symbol, if defined, indicates that the getprotobynumber() + * routine is available to look up protocols by their number. + */ +/*#define HAS_GETPROTOBYNAME / **/ +/*#define HAS_GETPROTOBYNUMBER / **/ + +/* HAS_GETPWENT: + * This symbol, if defined, indicates that the getpwent routine is + * available for sequential access of the passwd database. + * If this is not available, the older getpw() function may be available. + */ +/*#define HAS_GETPWENT / **/ + +/* HAS_GETSERVENT: + * This symbol, if defined, indicates that the getservent() routine is + * available to look up network services in some data base or another. + */ +/*#define HAS_GETSERVENT / **/ + +/* HAS_GETSERVBYNAME: + * This symbol, if defined, indicates that the getservbyname() + * routine is available to look up services by their name. + */ +/* HAS_GETSERVBYPORT: + * This symbol, if defined, indicates that the getservbyport() + * routine is available to look up services by their port. + */ +/*#define HAS_GETSERVBYNAME / **/ +/*#define HAS_GETSERVBYPORT / **/ + +/* HAS_HTONL: + * This symbol, if defined, indicates that the htonl() routine (and + * friends htons() ntohl() ntohs()) are available to do network + * order byte swapping. + */ +/* HAS_HTONS: + * This symbol, if defined, indicates that the htons() routine (and + * friends htonl() ntohl() ntohs()) are available to do network + * order byte swapping. + */ +/* HAS_NTOHL: + * This symbol, if defined, indicates that the ntohl() routine (and + * friends htonl() htons() ntohs()) are available to do network + * order byte swapping. + */ +/* HAS_NTOHS: + * This symbol, if defined, indicates that the ntohs() routine (and + * friends htonl() htons() ntohl()) are available to do network + * order byte swapping. + */ +/*#define HAS_HTONL / **/ +/*#define HAS_HTONS / **/ +/*#define HAS_NTOHL / **/ +/*#define HAS_NTOHS / **/ + +/* HAS_LONG_DOUBLE: + * This symbol will be defined if the C compiler supports long + * doubles. + */ +/* LONG_DOUBLESIZE: + * This symbol contains the size of a long double, so that the + * C preprocessor can make decisions based on it. It is only + * defined if the system supports long doubles. + */ +/*#define HAS_LONG_DOUBLE / **/ +#ifdef HAS_LONG_DOUBLE +#define LONG_DOUBLESIZE 8 /**/ +#endif + +/* HAS_LONG_LONG: + * This symbol will be defined if the C compiler supports long long. + */ +/* LONGLONGSIZE: + * This symbol contains the size of a long long, so that the + * C preprocessor can make decisions based on it. It is only + * defined if the system supports long long. + */ +/*#define HAS_LONG_LONG / **/ +#ifdef HAS_LONG_LONG +#define LONGLONGSIZE 8 /**/ +#endif + +/* HAS_MEMCHR: + * This symbol, if defined, indicates that the memchr routine is available + * to locate characters within a C string. + */ +#define HAS_MEMCHR /**/ + +/* HAS_MKSTEMP: + * This symbol, if defined, indicates that the mkstemp routine is + * available to exclusively create and open a uniquely named + * temporary file. + */ +/*#define HAS_MKSTEMP / **/ + +/* HAS_MMAP: + * This symbol, if defined, indicates that the mmap system call is + * available to map a file into memory. + */ +/* Mmap_t: + * This symbol holds the return type of the mmap() system call + * (and simultaneously the type of the first argument). + * Usually set to 'void *' or 'caddr_t'. + */ +/*#define HAS_MMAP / **/ +#define Mmap_t void * /**/ + +/* HAS_MSG: + * This symbol, if defined, indicates that the entire msg*(2) library is + * supported (IPC mechanism based on message queues). + */ +/*#define HAS_MSG / **/ + +/* HAS_SEM: + * This symbol, if defined, indicates that the entire sem*(2) library is + * supported. + */ +/*#define HAS_SEM / **/ + +/* HAS_SETGRENT: + * This symbol, if defined, indicates that the setgrent routine is + * available for initializing sequential access of the group database. + */ +/*#define HAS_SETGRENT / **/ + +/* HAS_SETHOSTENT: + * This symbol, if defined, indicates that the sethostent() routine is + * available. + */ +/*#define HAS_SETHOSTENT / **/ + +/* HAS_SETNETENT: + * This symbol, if defined, indicates that the setnetent() routine is + * available. + */ +/*#define HAS_SETNETENT / **/ + +/* HAS_SETPROTOENT: + * This symbol, if defined, indicates that the setprotoent() routine is + * available. + */ +/*#define HAS_SETPROTOENT / **/ + +/* HAS_SETPGRP: + * This symbol, if defined, indicates that the setpgrp routine is + * available to set the current process group. + */ +/* USE_BSD_SETPGRP: + * This symbol, if defined, indicates that setpgrp needs two + * arguments whereas USG one needs none. See also HAS_SETPGID + * for a POSIX interface. + */ +/*#define HAS_SETPGRP / **/ +/*#define USE_BSD_SETPGRP / **/ + +/* HAS_SETPWENT: + * This symbol, if defined, indicates that the setpwent routine is + * available for initializing sequential access of the passwd database. + */ +/*#define HAS_SETPWENT / **/ + +/* HAS_SETSERVENT: + * This symbol, if defined, indicates that the setservent() routine is + * available. + */ +/*#define HAS_SETSERVENT / **/ + /* HAS_SETVBUF: * This symbol, if defined, indicates that the setvbuf routine is * available to change buffering on an open stdio stream. @@ -2126,40 +2752,25 @@ * Checking just with #ifdef might not be enough because this symbol * has been known to be an enum. */ +/* HAS_SOCKADDR_SA_LEN: + * This symbol, if defined, indicates that the struct sockaddr + * structure has a member called sa_len, indicating the length of + * the structure. + */ +/* HAS_SIN6_SCOPE_ID: + * This symbol, if defined, indicates that the struct sockaddr_in6 + * structure has a member called sin6_scope_id. + */ /*#define HAS_SOCKET / **/ /*#define HAS_SOCKETPAIR / **/ +/*#define HAS_SOCKADDR_SA_LEN / **/ /*#define HAS_MSG_CTRUNC / **/ /*#define HAS_MSG_DONTROUTE / **/ /*#define HAS_MSG_OOB / **/ /*#define HAS_MSG_PEEK / **/ /*#define HAS_MSG_PROXY / **/ /*#define HAS_SCM_RIGHTS / **/ - -/* HAS_SRAND48_R: - * This symbol, if defined, indicates that the srand48_r routine - * is available to srand48 re-entrantly. - */ -/* SRAND48_R_PROTO: - * This symbol encodes the prototype of srand48_r. - * It is zero if d_srand48_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_srand48_r - * is defined. - */ -/*#define HAS_SRAND48_R / **/ -#define SRAND48_R_PROTO 0 /**/ - -/* HAS_SRANDOM_R: - * This symbol, if defined, indicates that the srandom_r routine - * is available to srandom re-entrantly. - */ -/* SRANDOM_R_PROTO: - * This symbol encodes the prototype of srandom_r. - * It is zero if d_srandom_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_srandom_r - * is defined. - */ -/*#define HAS_SRANDOM_R / **/ -#define SRANDOM_R_PROTO 0 /**/ +/*#define HAS_SIN6_SCOPE_ID / **/ /* USE_STAT_BLOCKS: * This symbol is defined if this system has a stat structure declaring @@ -2195,69 +2806,12 @@ /*#define HAS_SYS_ERRLIST / **/ #define Strerror(e) strerror(e) -/* HAS_STRERROR_R: - * This symbol, if defined, indicates that the strerror_r routine - * is available to strerror re-entrantly. - */ -/* STRERROR_R_PROTO: - * This symbol encodes the prototype of strerror_r. - * It is zero if d_strerror_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_strerror_r - * is defined. - */ -/*#define HAS_STRERROR_R / **/ -#define STRERROR_R_PROTO 0 /**/ - /* HAS_STRTOUL: * This symbol, if defined, indicates that the strtoul routine is * available to provide conversion of strings to unsigned long. */ #define HAS_STRTOUL /**/ -/* HAS_TIME: - * This symbol, if defined, indicates that the time() routine exists. - */ -/* Time_t: - * This symbol holds the type returned by time(). It can be long, - * or time_t on BSD sites (in which case <sys/types.h> should be - * included). - */ -#define HAS_TIME /**/ -#define Time_t time_t /* Time type */ - -/* HAS_TIMES: - * This symbol, if defined, indicates that the times() routine exists. - * Note that this became obsolete on some systems (SUNOS), which now - * use getrusage(). It may be necessary to include <sys/times.h>. - */ -/*#define HAS_TIMES / **/ - -/* HAS_TMPNAM_R: - * This symbol, if defined, indicates that the tmpnam_r routine - * is available to tmpnam re-entrantly. - */ -/* TMPNAM_R_PROTO: - * This symbol encodes the prototype of tmpnam_r. - * It is zero if d_tmpnam_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_tmpnam_r - * is defined. - */ -/*#define HAS_TMPNAM_R / **/ -#define TMPNAM_R_PROTO 0 /**/ - -/* HAS_TTYNAME_R: - * This symbol, if defined, indicates that the ttyname_r routine - * is available to ttyname re-entrantly. - */ -/* TTYNAME_R_PROTO: - * This symbol encodes the prototype of ttyname_r. - * It is zero if d_ttyname_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_ttyname_r - * is defined. - */ -/*#define HAS_TTYNAME_R / **/ -#define TTYNAME_R_PROTO 0 /**/ - /* HAS_UNION_SEMUN: * This symbol, if defined, indicates that the union semun is * defined by including <sys/sem.h>. If not, the user code @@ -2308,38 +2862,6 @@ #define volatile #endif -/* Fpos_t: - * This symbol holds the type used to declare file positions in libc. - * It can be fpos_t, long, uint, etc... It may be necessary to include - * <sys/types.h> to get any typedef'ed information. - */ -#define Fpos_t int /* File position type */ - -/* Gid_t_f: - * This symbol defines the format string used for printing a Gid_t. - */ -#define Gid_t_f "lu" /**/ - -/* Gid_t_sign: - * This symbol holds the signedess of a Gid_t. - * 1 for unsigned, -1 for signed. - */ -#define Gid_t_sign 1 /* GID sign */ - -/* Gid_t_size: - * This symbol holds the size of a Gid_t in bytes. - */ -#define Gid_t_size 4 /* GID size */ - -/* Gid_t: - * This symbol holds the return type of getgid() and the type of - * argument to setrgid() and related functions. Typically, - * it is the type of group ids in the kernel. It can be int, ushort, - * gid_t, etc... It may be necessary to include <sys/types.h> to get - * any typedef'ed information. - */ -#define Gid_t int /* Type for getgid(), etc... */ - /* I_DIRENT: * This symbol, if defined, indicates to the C program that it should * include <dirent.h>. Using this symbol also triggers the definition @@ -2371,12 +2893,6 @@ /*#define I_GRP / **/ /*#define GRPASSWD / **/ -/* I_MACH_CTHREADS: - * This symbol, if defined, indicates to the C program that it should - * include <mach/cthreads.h>. - */ -/*#define I_MACH_CTHREADS / **/ - /* I_NDBM: * This symbol, if defined, indicates that <ndbm.h> exists and should * be included. @@ -2428,12 +2944,6 @@ */ /*#define I_NET_ERRNO / **/ -/* I_PTHREAD: - * This symbol, if defined, indicates to the C program that it should - * include <pthread.h>. - */ -/*#define I_PTHREAD / **/ - /* I_PWD: * This symbol, if defined, indicates to the C program that it should * include <pwd.h>. @@ -2480,18 +2990,6 @@ /*#define PWGECOS / **/ /*#define PWPASSWD / **/ -/* I_SYS_ACCESS: - * This symbol, if defined, indicates to the C program that it should - * include <sys/access.h>. - */ -/*#define I_SYS_ACCESS / **/ - -/* I_SYS_SECURITY: - * This symbol, if defined, indicates to the C program that it should - * include <sys/security.h>. - */ -/*#define I_SYS_SECURITY / **/ - /* I_SYSUIO: * This symbol, if defined, indicates that <sys/uio.h> exists and * should be included. @@ -2509,36 +3007,6 @@ #define I_STDARG /**/ /*#define I_VARARGS / **/ -/* PERL_INC_VERSION_LIST: - * This variable specifies the list of subdirectories in over - * which perl.c:incpush() and lib/lib.pm will automatically - * search when adding directories to @INC, in a format suitable - * for a C initialization string. See the inc_version_list entry - * in Porting/Glossary for more details. - */ -/*#define PERL_INC_VERSION_LIST NULL / **/ - -/* INSTALL_USR_BIN_PERL: - * This symbol, if defined, indicates that Perl is to be installed - * also as /usr/bin/perl. - */ -/*#define INSTALL_USR_BIN_PERL / **/ - -/* Off_t: - * This symbol holds the type used to declare offsets in the kernel. - * It can be int, long, off_t, etc... It may be necessary to include - * <sys/types.h> to get any typedef'ed information. - */ -/* LSEEKSIZE: - * This symbol holds the number of bytes used by the Off_t. - */ -/* Off_t_size: - * This symbol holds the number of bytes used by the Off_t. - */ -#define Off_t int /* <offset> type */ -#define LSEEKSIZE 4 /* <offset> size */ -#define Off_t_size 4 /* <offset> size */ - /* Free_t: * This variable contains the return type of free(). It is usually * void, but occasionally int. @@ -2559,65 +3027,6 @@ */ /*#define MYMALLOC / **/ -/* Mode_t: - * This symbol holds the type used to declare file modes - * for systems calls. It is usually mode_t, but may be - * int or unsigned short. It may be necessary to include <sys/types.h> - * to get any typedef'ed information. - */ -#define Mode_t int /* file mode parameter for system calls */ - -/* Netdb_host_t: - * This symbol holds the type used for the 1st argument - * to gethostbyaddr(). - */ -/* Netdb_hlen_t: - * This symbol holds the type used for the 2nd argument - * to gethostbyaddr(). - */ -/* Netdb_name_t: - * This symbol holds the type used for the argument to - * gethostbyname(). - */ -/* Netdb_net_t: - * This symbol holds the type used for the 1st argument to - * getnetbyaddr(). - */ -#define Netdb_host_t const char * /**/ -#define Netdb_hlen_t int /**/ -#define Netdb_name_t const char * /**/ -#define Netdb_net_t unsigned long /**/ - -/* PERL_OTHERLIBDIRS: - * This variable contains a colon-separated set of paths for the perl - * binary to search for additional library files or modules. - * These directories will be tacked to the end of @INC. - * Perl will automatically search below each path for version- - * and architecture-specific directories. See PERL_INC_VERSION_LIST - * for more details. - */ -/*#define PERL_OTHERLIBDIRS " " / **/ - -/* Pid_t: - * This symbol holds the type used to declare process ids in the kernel. - * It can be int, uint, pid_t, etc... It may be necessary to include - * <sys/types.h> to get any typedef'ed information. - */ -#define Pid_t int /* PID type */ - -/* PRIVLIB: - * This symbol contains the name of the private library for this package. - * The library is private in the sense that it needn't be in anyone's - * execution path, but it should be accessible by the world. The program - * should be prepared to do ~ expansion. - */ -/* PRIVLIB_EXP: - * This symbol contains the ~name expanded version of PRIVLIB, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -#define PRIVLIB "/usr/local/lib/perl5/5.11" /**/ -#define PRIVLIB_EXP "/usr/local/lib/perl5/5.11" /**/ - /* CAN_PROTOTYPE: * If defined, this macro indicates that the C compiler can handle * function prototypes. @@ -2636,14 +3045,6 @@ #define _(args) () #endif -/* Select_fd_set_t: - * This symbol holds the type used for the 2nd, 3rd, and 4th - * arguments to select. Usually, this is 'fd_set *', if HAS_FD_SET - * is defined, and 'int *' otherwise. This is only useful if you - * have select(), of course. - */ -#define Select_fd_set_t int /**/ - /* SH_PATH: * This symbol contains the full pathname to the shell used on this * on this system to execute Bourne shell scripts. Usually, this will be @@ -2693,152 +3094,12 @@ #define SIG_NUM 0 /**/ #define SIG_SIZE 1 /**/ -/* SITEARCH: - * This symbol contains the name of the private library for this package. - * The library is private in the sense that it needn't be in anyone's - * execution path, but it should be accessible by the world. The program - * should be prepared to do ~ expansion. - * The standard distribution will put nothing in this directory. - * After perl has been installed, users may install their own local - * architecture-dependent modules in this directory with - * MakeMaker Makefile.PL - * or equivalent. See INSTALL for details. - */ -/* SITEARCH_EXP: - * This symbol contains the ~name expanded version of SITEARCH, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -/*#define SITEARCH "/usr/local/lib/perl5/5.11/unknown" / **/ -/*#define SITEARCH_EXP "/usr/local/lib/perl5/5.11/unknown" / **/ - -/* SITELIB: - * This symbol contains the name of the private library for this package. - * The library is private in the sense that it needn't be in anyone's - * execution path, but it should be accessible by the world. The program - * should be prepared to do ~ expansion. - * The standard distribution will put nothing in this directory. - * After perl has been installed, users may install their own local - * architecture-independent modules in this directory with - * MakeMaker Makefile.PL - * or equivalent. See INSTALL for details. - */ -/* SITELIB_EXP: - * This symbol contains the ~name expanded version of SITELIB, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -/* SITELIB_STEM: - * This define is SITELIB_EXP with any trailing version-specific component - * removed. The elements in inc_version_list (inc_version_list.U) can - * be tacked onto this variable to generate a list of directories to search. - */ -#define SITELIB "/usr/local/lib/perl5/5.11" /**/ -#define SITELIB_EXP "/usr/local/lib/perl5/5.11" /**/ -#define SITELIB_STEM "/usr/local/lib/perl5" /**/ - -/* Size_t_size: - * This symbol holds the size of a Size_t in bytes. - */ -#define Size_t_size 4 /* */ - -/* Size_t: - * This symbol holds the type used to declare length parameters - * for string functions. It is usually size_t, but may be - * unsigned long, int, etc. It may be necessary to include - * <sys/types.h> to get any typedef'ed information. - */ -#define Size_t size_t /* length paramater for string functions */ - -/* Sock_size_t: - * This symbol holds the type used for the size argument of - * various socket calls (just the base type, not the pointer-to). - */ -#define Sock_size_t int /**/ - /* STDCHAR: * This symbol is defined to be the type of char used in stdio.h. * It has the values "unsigned char" or "char". */ #define STDCHAR char /**/ -/* Uid_t_f: - * This symbol defines the format string used for printing a Uid_t. - */ -#define Uid_t_f "lu" /**/ - -/* Uid_t_sign: - * This symbol holds the signedess of a Uid_t. - * 1 for unsigned, -1 for signed. - */ -#define Uid_t_sign 1 /* UID sign */ - -/* Uid_t_size: - * This symbol holds the size of a Uid_t in bytes. - */ -#define Uid_t_size 4 /* UID size */ - -/* Uid_t: - * This symbol holds the type used to declare user ids in the kernel. - * It can be int, ushort, uid_t, etc... It may be necessary to include - * <sys/types.h> to get any typedef'ed information. - */ -#define Uid_t int /* UID type */ - -/* USE_ITHREADS: - * This symbol, if defined, indicates that Perl should be built to - * use the interpreter-based threading implementation. - */ -/* USE_5005THREADS: - * This symbol, if defined, indicates that Perl should be built to - * use the 5.005-based threading implementation. - * Only valid up to 5.8.x. - */ -/* OLD_PTHREADS_API: - * This symbol, if defined, indicates that Perl should - * be built to use the old draft POSIX threads API. - */ -/* USE_REENTRANT_API: - * This symbol, if defined, indicates that Perl should - * try to use the various _r versions of library functions. - * This is extremely experimental. - */ -/*#define USE_5005THREADS / **/ -/*#define USE_ITHREADS / **/ -#if defined(USE_5005THREADS) && !defined(USE_ITHREADS) -#define USE_THREADS /* until src is revised*/ -#endif -/*#define OLD_PTHREADS_API / **/ -/*#define USE_REENTRANT_API / **/ - -/* PERL_VENDORARCH: - * If defined, this symbol contains the name of a private library. - * The library is private in the sense that it needn't be in anyone's - * execution path, but it should be accessible by the world. - * It may have a ~ on the front. - * The standard distribution will put nothing in this directory. - * Vendors who distribute perl may wish to place their own - * architecture-dependent modules and extensions in this directory with - * MakeMaker Makefile.PL INSTALLDIRS=vendor - * or equivalent. See INSTALL for details. - */ -/* PERL_VENDORARCH_EXP: - * This symbol contains the ~name expanded version of PERL_VENDORARCH, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -/*#define PERL_VENDORARCH "" / **/ -/*#define PERL_VENDORARCH_EXP "" / **/ - -/* PERL_VENDORLIB_EXP: - * This symbol contains the ~name expanded version of VENDORLIB, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -/* PERL_VENDORLIB_STEM: - * This define is PERL_VENDORLIB_EXP with any trailing version-specific component - * removed. The elements in inc_version_list (inc_version_list.U) can - * be tacked onto this variable to generate a list of directories to search. - */ -/*#define PERL_VENDORLIB_EXP "" / **/ -/*#define PERL_VENDORLIB_STEM "" / **/ - /* VOIDFLAGS: * This symbol indicates how much support of the void type is given by this * compiler. What various bits mean: @@ -2847,7 +3108,7 @@ * 2 = supports arrays of pointers to functions returning void * 4 = supports comparisons between pointers to void functions and * addresses of void functions - * 8 = suports declaration of generic void pointers + * 8 = supports declaration of generic void pointers * * The package designer should define VOIDUSED to indicate the requirements * of the package. This can be done either by #defining VOIDUSED before @@ -2864,410 +3125,6 @@ #define M_VOID /* Xenix strikes again */ #endif -/* USE_CROSS_COMPILE: - * This symbol, if defined, indicates that Perl is being cross-compiled. - */ -/* PERL_TARGETARCH: - * This symbol, if defined, indicates the target architecture - * Perl has been cross-compiled to. Undefined if not a cross-compile. - */ -#ifndef USE_CROSS_COMPILE -/*#define USE_CROSS_COMPILE / **/ -#define PERL_TARGETARCH "" /**/ -#endif - -/* MEM_ALIGNBYTES: - * This symbol contains the number of bytes required to align a - * double, or a long double when applicable. Usual values are 2, - * 4 and 8. The default is eight, for safety. - */ -#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH) -# define MEM_ALIGNBYTES 8 -#else -#define MEM_ALIGNBYTES 4 -#endif - -/* BYTEORDER: - * This symbol holds the hexadecimal constant defined in byteorder, - * in a UV, i.e. 0x1234 or 0x4321 or 0x12345678, etc... - * If the compiler supports cross-compiling or multiple-architecture - * binaries (eg. on NeXT systems), use compiler-defined macros to - * determine the byte order. - * On NeXT 3.2 (and greater), you can build "Fat" Multiple Architecture - * Binaries (MAB) on either big endian or little endian machines. - * The endian-ness is available at compile-time. This only matters - * for perl, where the config.h can be generated and installed on - * one system, and used by a different architecture to build an - * extension. Older versions of NeXT that might not have - * defined either *_ENDIAN__ were all on Motorola 680x0 series, - * so the default case (for NeXT) is big endian to catch them. - * This might matter for NeXT 3.0. - */ -#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH) -# ifdef __LITTLE_ENDIAN__ -# if LONGSIZE == 4 -# define BYTEORDER 0x1234 -# else -# if LONGSIZE == 8 -# define BYTEORDER 0x12345678 -# endif -# endif -# else -# ifdef __BIG_ENDIAN__ -# if LONGSIZE == 4 -# define BYTEORDER 0x4321 -# else -# if LONGSIZE == 8 -# define BYTEORDER 0x87654321 -# endif -# endif -# endif -# endif -# if !defined(BYTEORDER) && (defined(NeXT) || defined(__NeXT__)) -# define BYTEORDER 0x4321 -# endif -#else -#define BYTEORDER 0x1234 /* large digits for MSB */ -#endif /* NeXT */ - -/* CASTI32: - * This symbol is defined if the C compiler can cast negative - * or large floating point numbers to 32-bit ints. - */ -/*#define CASTI32 / **/ - -/* CASTNEGFLOAT: - * This symbol is defined if the C compiler can cast negative - * numbers to unsigned longs, ints and shorts. - */ -/* CASTFLAGS: - * This symbol contains flags that say what difficulties the compiler - * has casting odd floating values to unsigned long: - * 0 = ok - * 1 = couldn't cast < 0 - * 2 = couldn't cast >= 0x80000000 - * 4 = couldn't cast in argument expression list - */ -/*#define CASTNEGFLOAT / **/ -#define CASTFLAGS 0 /**/ - -/* VOID_CLOSEDIR: - * This symbol, if defined, indicates that the closedir() routine - * does not return a value. - */ -/*#define VOID_CLOSEDIR / **/ - -/* HAS_FD_SET: - * This symbol, when defined, indicates presence of the fd_set typedef - * in <sys/types.h> - */ -/*#define HAS_FD_SET / **/ - -/* Gconvert: - * This preprocessor macro is defined to convert a floating point - * number to a string without a trailing decimal point. This - * emulates the behavior of sprintf("%g"), but is sometimes much more - * efficient. If gconvert() is not available, but gcvt() drops the - * trailing decimal point, then gcvt() is used. If all else fails, - * a macro using sprintf("%g") is used. Arguments for the Gconvert - * macro are: value, number of digits, whether trailing zeros should - * be retained, and the output buffer. - * The usual values are: - * d_Gconvert='gconvert((x),(n),(t),(b))' - * d_Gconvert='gcvt((x),(n),(b))' - * d_Gconvert='sprintf((b),"%.*g",(n),(x))' - * The last two assume trailing zeros should not be kept. - */ -#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x)) - -/* HAS_GETPAGESIZE: - * This symbol, if defined, indicates that the getpagesize system call - * is available to get system page size, which is the granularity of - * many memory management calls. - */ -/*#define HAS_GETPAGESIZE / **/ - -/* HAS_GNULIBC: - * This symbol, if defined, indicates to the C program that - * the GNU C library is being used. A better check is to use - * the __GLIBC__ and __GLIBC_MINOR__ symbols supplied with glibc. - */ -/*#define HAS_GNULIBC / **/ -#if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE) -# define _GNU_SOURCE -#endif - -/* HAS_ISASCII: - * This manifest constant lets the C program know that isascii - * is available. - */ -/*#define HAS_ISASCII / **/ - -/* HAS_LCHOWN: - * This symbol, if defined, indicates that the lchown routine is - * available to operate on a symbolic link (instead of following the - * link). - */ -/*#define HAS_LCHOWN / **/ - -/* HAS_OPEN3: - * This manifest constant lets the C program know that the three - * argument form of open(2) is available. - */ -/*#define HAS_OPEN3 / **/ - -/* HAS_SAFE_BCOPY: - * This symbol, if defined, indicates that the bcopy routine is available - * to copy potentially overlapping memory blocks. Normally, you should - * probably use memmove() or memcpy(). If neither is defined, roll your - * own version. - */ -/*#define HAS_SAFE_BCOPY / **/ - -/* HAS_SAFE_MEMCPY: - * This symbol, if defined, indicates that the memcpy routine is available - * to copy potentially overlapping memory blocks. If you need to - * copy overlapping memory blocks, you should check HAS_MEMMOVE and - * use memmove() instead, if available. - */ -/*#define HAS_SAFE_MEMCPY / **/ - -/* HAS_SANE_MEMCMP: - * This symbol, if defined, indicates that the memcmp routine is available - * and can be used to compare relative magnitudes of chars with their high - * bits set. If it is not defined, roll your own version. - */ -/*#define HAS_SANE_MEMCMP / **/ - -/* HAS_SIGACTION: - * This symbol, if defined, indicates that Vr4's sigaction() routine - * is available. - */ -/*#define HAS_SIGACTION / **/ - -/* HAS_SIGSETJMP: - * This variable indicates to the C program that the sigsetjmp() - * routine is available to save the calling process's registers - * and stack environment for later use by siglongjmp(), and - * to optionally save the process's signal mask. See - * Sigjmp_buf, Sigsetjmp, and Siglongjmp. - */ -/* Sigjmp_buf: - * This is the buffer type to be used with Sigsetjmp and Siglongjmp. - */ -/* Sigsetjmp: - * This macro is used in the same way as sigsetjmp(), but will invoke - * traditional setjmp() if sigsetjmp isn't available. - * See HAS_SIGSETJMP. - */ -/* Siglongjmp: - * This macro is used in the same way as siglongjmp(), but will invoke - * traditional longjmp() if siglongjmp isn't available. - * See HAS_SIGSETJMP. - */ -/*#define HAS_SIGSETJMP / **/ -#ifdef HAS_SIGSETJMP -#define Sigjmp_buf sigjmp_buf -#define Sigsetjmp(buf,save_mask) sigsetjmp((buf),(save_mask)) -#define Siglongjmp(buf,retval) siglongjmp((buf),(retval)) -#else -#define Sigjmp_buf jmp_buf -#define Sigsetjmp(buf,save_mask) setjmp((buf)) -#define Siglongjmp(buf,retval) longjmp((buf),(retval)) -#endif - -/* USE_STDIO_PTR: - * This symbol is defined if the _ptr and _cnt fields (or similar) - * of the stdio FILE structure can be used to access the stdio buffer - * for a file handle. If this is defined, then the FILE_ptr(fp) - * and FILE_cnt(fp) macros will also be defined and should be used - * to access these fields. - */ -/* FILE_ptr: - * This macro is used to access the _ptr field (or equivalent) of the - * FILE structure pointed to by its argument. This macro will always be - * defined if USE_STDIO_PTR is defined. - */ -/* STDIO_PTR_LVALUE: - * This symbol is defined if the FILE_ptr macro can be used as an - * lvalue. - */ -/* FILE_cnt: - * This macro is used to access the _cnt field (or equivalent) of the - * FILE structure pointed to by its argument. This macro will always be - * defined if USE_STDIO_PTR is defined. - */ -/* STDIO_CNT_LVALUE: - * This symbol is defined if the FILE_cnt macro can be used as an - * lvalue. - */ -/* STDIO_PTR_LVAL_SETS_CNT: - * This symbol is defined if using the FILE_ptr macro as an lvalue - * to increase the pointer by n has the side effect of decreasing the - * value of File_cnt(fp) by n. - */ -/* STDIO_PTR_LVAL_NOCHANGE_CNT: - * This symbol is defined if using the FILE_ptr macro as an lvalue - * to increase the pointer by n leaves File_cnt(fp) unchanged. - */ -/*#define USE_STDIO_PTR / **/ -#ifdef USE_STDIO_PTR -#define FILE_ptr(fp) ((fp)->_IO_read_ptr) -/*#define STDIO_PTR_LVALUE / **/ -#define FILE_cnt(fp) ((fp)->_IO_read_end - (fp)->_IO_read_ptr) -/*#define STDIO_CNT_LVALUE / **/ -/*#define STDIO_PTR_LVAL_SETS_CNT / **/ -/*#define STDIO_PTR_LVAL_NOCHANGE_CNT / **/ -#endif - -/* USE_STDIO_BASE: - * This symbol is defined if the _base field (or similar) of the - * stdio FILE structure can be used to access the stdio buffer for - * a file handle. If this is defined, then the FILE_base(fp) macro - * will also be defined and should be used to access this field. - * Also, the FILE_bufsiz(fp) macro will be defined and should be used - * to determine the number of bytes in the buffer. USE_STDIO_BASE - * will never be defined unless USE_STDIO_PTR is. - */ -/* FILE_base: - * This macro is used to access the _base field (or equivalent) of the - * FILE structure pointed to by its argument. This macro will always be - * defined if USE_STDIO_BASE is defined. - */ -/* FILE_bufsiz: - * This macro is used to determine the number of bytes in the I/O - * buffer pointed to by _base field (or equivalent) of the FILE - * structure pointed to its argument. This macro will always be defined - * if USE_STDIO_BASE is defined. - */ -/*#define USE_STDIO_BASE / **/ -#ifdef USE_STDIO_BASE -#define FILE_base(fp) ((fp)->_IO_read_base) -#define FILE_bufsiz(fp) ((fp)->_IO_read_end - (fp)->_IO_read_base) -#endif - -/* HAS_VPRINTF: - * This symbol, if defined, indicates that the vprintf routine is available - * to printf with a pointer to an argument list. If unavailable, you - * may need to write your own, probably in terms of _doprnt(). - */ -/* USE_CHAR_VSPRINTF: - * This symbol is defined if this system has vsprintf() returning type - * (char*). The trend seems to be to declare it as "int vsprintf()". It - * is up to the package author to declare vsprintf correctly based on the - * symbol. - */ -#define HAS_VPRINTF /**/ -/*#define USE_CHAR_VSPRINTF / **/ - -/* DOUBLESIZE: - * This symbol contains the size of a double, so that the C preprocessor - * can make decisions based on it. - */ -#define DOUBLESIZE 8 /**/ - -/* I_TIME: - * This symbol, if defined, indicates to the C program that it should - * include <time.h>. - */ -/* I_SYS_TIME: - * This symbol, if defined, indicates to the C program that it should - * include <sys/time.h>. - */ -/* I_SYS_TIME_KERNEL: - * This symbol, if defined, indicates to the C program that it should - * include <sys/time.h> with KERNEL defined. - */ -/* HAS_TM_TM_ZONE: - * This symbol, if defined, indicates to the C program that - * the struct tm has a tm_zone field. - */ -/* HAS_TM_TM_GMTOFF: - * This symbol, if defined, indicates to the C program that - * the struct tm has a tm_gmtoff field. - */ -#define I_TIME /**/ -/*#define I_SYS_TIME / **/ -/*#define I_SYS_TIME_KERNEL / **/ -/*#define HAS_TM_TM_ZONE / **/ -/*#define HAS_TM_TM_GMTOFF / **/ - -/* VAL_O_NONBLOCK: - * This symbol is to be used during open() or fcntl(F_SETFL) to turn on - * non-blocking I/O for the file descriptor. Note that there is no way - * back, i.e. you cannot turn it blocking again this way. If you wish to - * alternatively switch between blocking and non-blocking, use the - * ioctl(FIOSNBIO) call instead, but that is not supported by all devices. - */ -/* VAL_EAGAIN: - * This symbol holds the errno error code set by read() when no data was - * present on the non-blocking file descriptor. - */ -/* RD_NODATA: - * This symbol holds the return code from read() when no data is present - * on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is - * not defined, then you can't distinguish between no data and EOF by - * issuing a read(). You'll have to find another way to tell for sure! - */ -/* EOF_NONBLOCK: - * This symbol, if defined, indicates to the C program that a read() on - * a non-blocking file descriptor will return 0 on EOF, and not the value - * held in RD_NODATA (-1 usually, in that case!). - */ -#define VAL_O_NONBLOCK O_NONBLOCK -#define VAL_EAGAIN EAGAIN -#define RD_NODATA -1 -#undef EOF_NONBLOCK - -/* PTRSIZE: - * This symbol contains the size of a pointer, so that the C preprocessor - * can make decisions based on it. It will be sizeof(void *) if - * the compiler supports (void *); otherwise it will be - * sizeof(char *). - */ -#define PTRSIZE 4 /**/ - -/* Drand01: - * This macro is to be used to generate uniformly distributed - * random numbers over the range [0., 1.[. You may have to supply - * an 'extern double drand48();' in your program since SunOS 4.1.3 - * doesn't provide you with anything relevant in its headers. - * See HAS_DRAND48_PROTO. - */ -/* Rand_seed_t: - * This symbol defines the type of the argument of the - * random seed function. - */ -/* seedDrand01: - * This symbol defines the macro to be used in seeding the - * random number generator (see Drand01). - */ -/* RANDBITS: - * This symbol indicates how many bits are produced by the - * function used to generate normalized random numbers. - * Values include 15, 16, 31, and 48. - */ -#define Drand01() ((rand() & 0x7FFF) / (double) ((unsigned long)1 << 15)) /**/ -#define Rand_seed_t int /**/ -#define seedDrand01(x) srand((Rand_seed_t)x) /**/ -#define RANDBITS 48 /**/ - -/* SSize_t: - * This symbol holds the type used by functions that return - * a count of bytes or an error condition. It must be a signed type. - * It is usually ssize_t, but may be long or int, etc. - * It may be necessary to include <sys/types.h> or <unistd.h> - * to get any typedef'ed information. - * We will pick a type such that sizeof(SSize_t) == sizeof(Size_t). - */ -#define SSize_t int /* signed count of bytes */ - -/* EBCDIC: - * This symbol, if defined, indicates that this system uses - * EBCDIC encoding. - */ -/*#define EBCDIC / **/ - /* PERL_USE_DEVEL: * This symbol, if defined, indicates that Perl was configured with * -Dusedevel, to enable development features. This should not be @@ -3541,6 +3398,12 @@ */ /*#define HAS_FUTIMES / **/ +/* HAS_GETADDRINFO: + * This symbol, if defined, indicates that the getaddrinfo() function + * is available for use. + */ +/*#define HAS_GETADDRINFO / **/ + /* HAS_GETCWD: * This symbol, if defined, indicates that the getcwd routine is * available to get the current working directory. @@ -3549,7 +3412,7 @@ /* HAS_GETESPWNAM: * This symbol, if defined, indicates that the getespwnam system call is - * available to retrieve enchanced (shadow) password entries by name. + * available to retrieve enhanced (shadow) password entries by name. */ /*#define HAS_GETESPWNAM / **/ @@ -3577,6 +3440,12 @@ */ /*#define HAS_GETMNTENT / **/ +/* HAS_GETNAMEINFO: + * This symbol, if defined, indicates that the getnameinfo() function + * is available for use. + */ +/*#define HAS_GETNAMEINFO / **/ + /* HAS_GETPRPWNAM: * This symbol, if defined, indicates that the getprpwnam system call is * available to retrieve protected (shadow) password entries by name. @@ -3601,6 +3470,18 @@ */ /*#define HAS_ILOGBL / **/ +/* HAS_INETNTOP: + * This symbol, if defined, indicates that the inet_ntop() function + * is available to parse IPv4 and IPv6 strings. + */ +/*#define HAS_INETNTOP / **/ + +/* HAS_INETPTON: + * This symbol, if defined, indicates that the inet_pton() function + * is available to parse IPv4 and IPv6 strings. + */ +/*#define HAS_INETPTON / **/ + /* HAS_INT64_T: * This symbol will defined if the C compiler supports int64_t. * Usually the <inttypes.h> needs to be included, but sometimes @@ -3672,7 +3553,7 @@ /* HAS_MKSTEMPS: * This symbol, if defined, indicates that the mkstemps routine is - * available to excluslvely create and open a uniquely named + * available to exclusively create and open a uniquely named * (with a suffix) temporary file. */ /*#define HAS_MKSTEMPS / **/ @@ -3722,6 +3603,17 @@ */ /*#define HAS_OFF64_T / **/ +/* HAS_PRCTL: + * This symbol, if defined, indicates that the prctl routine is + * available to set process title. + */ +/* HAS_PRCTL_SET_NAME: + * This symbol, if defined, indicates that the prctl routine is + * available to set process title and supports PR_SET_NAME. + */ +/*#define HAS_PRCTL / **/ +/*#define HAS_PRCTL_SET_NAME / **/ + /* HAS_PROCSELFEXE: * This symbol is defined if PROCSELFEXE_PATH is a symlink * to the absolute pathname of the executing program. @@ -4282,7 +4174,7 @@ * of copying mechanisms, handy.h defines a platform- * independent macro, Perl_va_copy(src, dst), to do the job. */ -/*#define NEED_VA_COPY / **/ +#define NEED_VA_COPY /**/ /* IVTYPE: * This symbol defines the C type used for Perl's IV. @@ -4361,7 +4253,7 @@ /* NV_OVERFLOWS_INTEGERS_AT: * This symbol gives the largest integer value that NVs can hold. This * value + 1.0 cannot be stored accurately. It is expressed as constant - * floating point expression to reduce the chance of decimale/binary + * floating point expression to reduce the chance of decimal/binary * conversion issues. If it can not be determined, the value 0 is given. */ /* NV_ZERO_IS_ALLBITS_ZERO: @@ -4370,7 +4262,7 @@ */ #define IVTYPE long /**/ #define UVTYPE unsigned long /**/ -#define I8TYPE char /**/ +#define I8TYPE signed char /**/ #define U8TYPE unsigned char /**/ #define I16TYPE short /**/ #define U16TYPE unsigned short /**/ @@ -4592,4 +4484,208 @@ /*#define USE_SOCKS / **/ #endif +/* HAS_DRAND48_PROTO: + * This symbol, if defined, indicates that the system provides + * a prototype for the drand48() function. Otherwise, it is up + * to the program to supply one. A good guess is + * extern double drand48(void); + */ +/*#define HAS_DRAND48_PROTO / **/ + +/* HAS_GETHOST_PROTOS: + * This symbol, if defined, indicates that <netdb.h> includes + * prototypes for gethostent(), gethostbyname(), and + * gethostbyaddr(). Otherwise, it is up to the program to guess + * them. See netdbtype.U for probing for various Netdb_xxx_t types. + */ +/*#define HAS_GETHOST_PROTOS / **/ + +/* HAS_GETNET_PROTOS: + * This symbol, if defined, indicates that <netdb.h> includes + * prototypes for getnetent(), getnetbyname(), and + * getnetbyaddr(). Otherwise, it is up to the program to guess + * them. See netdbtype.U for probing for various Netdb_xxx_t types. + */ +/*#define HAS_GETNET_PROTOS / **/ + +/* HAS_GETPROTO_PROTOS: + * This symbol, if defined, indicates that <netdb.h> includes + * prototypes for getprotoent(), getprotobyname(), and + * getprotobyaddr(). Otherwise, it is up to the program to guess + * them. See netdbtype.U for probing for various Netdb_xxx_t types. + */ +/*#define HAS_GETPROTO_PROTOS / **/ + +/* HAS_GETSERV_PROTOS: + * This symbol, if defined, indicates that <netdb.h> includes + * prototypes for getservent(), getservbyname(), and + * getservbyaddr(). Otherwise, it is up to the program to guess + * them. See netdbtype.U for probing for various Netdb_xxx_t types. + */ +/*#define HAS_GETSERV_PROTOS / **/ + +/* HAS_LSEEK_PROTO: + * This symbol, if defined, indicates that the system provides + * a prototype for the lseek() function. Otherwise, it is up + * to the program to supply one. A good guess is + * extern off_t lseek(int, off_t, int); + */ +/*#define HAS_LSEEK_PROTO / **/ + +/* Netdb_host_t: + * This symbol holds the type used for the 1st argument + * to gethostbyaddr(). + */ +/* Netdb_hlen_t: + * This symbol holds the type used for the 2nd argument + * to gethostbyaddr(). + */ +/* Netdb_name_t: + * This symbol holds the type used for the argument to + * gethostbyname(). + */ +/* Netdb_net_t: + * This symbol holds the type used for the 1st argument to + * getnetbyaddr(). + */ +#define Netdb_host_t const char * /**/ +#define Netdb_hlen_t int /**/ +#define Netdb_name_t const char * /**/ +#define Netdb_net_t unsigned long /**/ + +/* Select_fd_set_t: + * This symbol holds the type used for the 2nd, 3rd, and 4th + * arguments to select. Usually, this is 'fd_set *', if HAS_FD_SET + * is defined, and 'int *' otherwise. This is only useful if you + * have select(), of course. + */ +#define Select_fd_set_t int /**/ + +/* Sock_size_t: + * This symbol holds the type used for the size argument of + * various socket calls (just the base type, not the pointer-to). + */ +#define Sock_size_t int /**/ + +/* HAS_TIME: + * This symbol, if defined, indicates that the time() routine exists. + */ +/* Time_t: + * This symbol holds the type returned by time(). It can be long, + * or time_t on BSD sites (in which case <sys/types.h> should be + * included). + */ +#define HAS_TIME /**/ +#define Time_t time_t /* Time type */ + +/* HAS_TIMES: + * This symbol, if defined, indicates that the times() routine exists. + * Note that this became obsolete on some systems (SUNOS), which now + * use getrusage(). It may be necessary to include <sys/times.h>. + */ +/*#define HAS_TIMES / **/ + +/* Fpos_t: + * This symbol holds the type used to declare file positions in libc. + * It can be fpos_t, long, uint, etc... It may be necessary to include + * <sys/types.h> to get any typedef'ed information. + */ +#define Fpos_t int /* File position type */ + +/* Gid_t_f: + * This symbol defines the format string used for printing a Gid_t. + */ +#define Gid_t_f "lu" /**/ + +/* Gid_t_sign: + * This symbol holds the signedess of a Gid_t. + * 1 for unsigned, -1 for signed. + */ +#define Gid_t_sign 1 /* GID sign */ + +/* Gid_t_size: + * This symbol holds the size of a Gid_t in bytes. + */ +#define Gid_t_size 4 /* GID size */ + +/* Gid_t: + * This symbol holds the return type of getgid() and the type of + * argument to setrgid() and related functions. Typically, + * it is the type of group ids in the kernel. It can be int, ushort, + * gid_t, etc... It may be necessary to include <sys/types.h> to get + * any typedef'ed information. + */ +#define Gid_t int /* Type for getgid(), etc... */ + +/* Off_t: + * This symbol holds the type used to declare offsets in the kernel. + * It can be int, long, off_t, etc... It may be necessary to include + * <sys/types.h> to get any typedef'ed information. + */ +/* LSEEKSIZE: + * This symbol holds the number of bytes used by the Off_t. + */ +/* Off_t_size: + * This symbol holds the number of bytes used by the Off_t. + */ +#define Off_t int /* <offset> type */ +#define LSEEKSIZE 4 /* <offset> size */ +#define Off_t_size 4 /* <offset> size */ + +/* Mode_t: + * This symbol holds the type used to declare file modes + * for systems calls. It is usually mode_t, but may be + * int or unsigned short. It may be necessary to include <sys/types.h> + * to get any typedef'ed information. + */ +#define Mode_t int /* file mode parameter for system calls */ + +/* Pid_t: + * This symbol holds the type used to declare process ids in the kernel. + * It can be int, uint, pid_t, etc... It may be necessary to include + * <sys/types.h> to get any typedef'ed information. + */ +#define Pid_t int /* PID type */ + +/* Size_t_size: + * This symbol holds the size of a Size_t in bytes. + */ +#define Size_t_size 4 /* */ + +/* Size_t: + * This symbol holds the type used to declare length parameters + * for string functions. It is usually size_t, but may be + * unsigned long, int, etc. It may be necessary to include + * <sys/types.h> to get any typedef'ed information. + */ +#define Size_t size_t /* length parameter for string functions */ + +/* Uid_t_f: + * This symbol defines the format string used for printing a Uid_t. + */ +#define Uid_t_f "lu" /**/ + +/* Uid_t_sign: + * This symbol holds the signedess of a Uid_t. + * 1 for unsigned, -1 for signed. + */ +#define Uid_t_sign 1 /* UID sign */ + +/* Uid_t_size: + * This symbol holds the size of a Uid_t in bytes. + */ +#define Uid_t_size 4 /* UID size */ + +/* Uid_t: + * This symbol holds the type used to declare user ids in the kernel. + * It can be int, ushort, uid_t, etc... It may be necessary to include + * <sys/types.h> to get any typedef'ed information. + */ +#define Uid_t int /* UID type */ + #endif + +/* Generated from: + * 323778627146f2762cd41f4dd1db6659f59006ec9bcaaf6bcc645d0380dda938 config_h.SH + * 2cf3a76ed7acc1c0fee31fb6f5117eef18b28c542aa7225a22c84ed74b710c83 uconfig.sh + * ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/utf8.h b/Master/tlpkg/tlperl/lib/CORE/utf8.h index 87653360eae..c40fb5883e1 100644 --- a/Master/tlpkg/tlperl/lib/CORE/utf8.h +++ b/Master/tlpkg/tlperl/lib/CORE/utf8.h @@ -16,10 +16,28 @@ # define USE_UTF8_IN_NAMES (PL_hints & HINT_UTF8) #endif +#define to_uni_fold(c, p, lenp) _to_uni_fold_flags(c, p, lenp, 1) +#define to_utf8_fold(c, p, lenp) _to_utf8_fold_flags(c, p, lenp, 1) + /* Source backward compatibility. */ #define uvuni_to_utf8(d, uv) uvuni_to_utf8_flags(d, uv, 0) #define is_utf8_string_loc(s, len, ep) is_utf8_string_loclen(s, len, ep, 0) +#define foldEQ_utf8(s1, pe1, l1, u1, s2, pe2, l2, u2) \ + foldEQ_utf8_flags(s1, pe1, l1, u1, s2, pe2, l2, u2, 0) +#define FOLDEQ_UTF8_NOMIX_ASCII (1 << 0) +#define FOLDEQ_UTF8_LOCALE (1 << 1) + +/* +=for apidoc ibcmp_utf8 + +This is a synonym for (! foldEQ_utf8()) + +=cut +*/ +#define ibcmp_utf8(s1, pe1, l1, u1, s2, pe2, l2, u2) \ + cBOOL(! foldEQ_utf8(s1, pe1, l1, u1, s2, pe2, l2, u2)) + #ifdef EBCDIC /* The equivalent of these macros but implementing UTF-EBCDIC are in the following header file: @@ -104,13 +122,14 @@ As you can see, the continuation bytes all begin with C<10>, and the leading bits of the start byte tell how many bytes there are in the encoded character. -*/ +Perl's extended UTF-8 means we can have start bytes up to FF. +*/ #define UNI_IS_INVARIANT(c) (((UV)c) < 0x80) /* Note that C0 and C1 are invalid in legal UTF8, so the lower bound of the * below might ought to be C2 */ -#define UTF8_IS_START(c) (((U8)c) >= 0xc0 && (((U8)c) <= 0xfd)) +#define UTF8_IS_START(c) (((U8)c) >= 0xc0) #define UTF8_IS_CONTINUATION(c) (((U8)c) >= 0x80 && (((U8)c) <= 0xbf)) #define UTF8_IS_CONTINUED(c) (((U8)c) & 0x80) #define UTF8_IS_DOWNGRADEABLE_START(c) (((U8)c & 0xfc) == 0xc0) @@ -151,6 +170,15 @@ encoded character. #define UTF8_ACCUMULATE(old, new) (((old) << UTF_ACCUMULATION_SHIFT) | (((U8)new) & UTF_CONTINUATION_MASK)) +/* Convert a two (not one) byte utf8 character to a unicode code point value. + * Needs just one iteration of accumulate. Should not be used unless it is + * known that the two bytes are legal: 1) two-byte start, and 2) continuation. + * Note that the result can be larger than 255 if the input character is not + * downgradable */ +#define TWO_BYTE_UTF8_TO_UNI(HI, LO) \ + UTF8_ACCUMULATE((NATIVE_TO_UTF(HI) & UTF_START_MASK(2)), \ + NATIVE_TO_UTF(LO)) + #define UTF8SKIP(s) PL_utf8skip[*(const U8*)(s)] #define UTF8_IS_INVARIANT(c) UNI_IS_INVARIANT(NATIVE_TO_UTF(c)) @@ -162,8 +190,8 @@ encoded character. * bytes from an ordinal that is known to fit into two bytes; it must be less * than 0x3FF to work across both encodings. */ /* Nocast allows these to be used in the case label of a switch statement */ -#define UTF8_TWO_BYTE_HI_nocast(c) UTF_TO_NATIVE(((c)>>UTF_ACCUMULATION_SHIFT)|UTF_START_MARK(2)) -#define UTF8_TWO_BYTE_LO_nocast(c) UTF_TO_NATIVE(((c)&UTF_CONTINUATION_MASK)|UTF_CONTINUATION_MARK) +#define UTF8_TWO_BYTE_HI_nocast(c) UTF_TO_NATIVE(((c) >> UTF_ACCUMULATION_SHIFT) | (0xFF & UTF_START_MARK(2))) +#define UTF8_TWO_BYTE_LO_nocast(c) UTF_TO_NATIVE(((c) & UTF_CONTINUATION_MASK) | UTF_CONTINUATION_MARK) #define UTF8_TWO_BYTE_HI(c) ((U8) (UTF8_TWO_BYTE_HI_nocast(c))) #define UTF8_TWO_BYTE_LO(c) ((U8) (UTF8_TWO_BYTE_LO_nocast(c))) @@ -201,61 +229,208 @@ encoded character. * version. An example of maximal expansion is the U+03B0 which * uppercases to U+03C5 U+0308 U+0301. The Unicode databases that * tell these things are UnicodeData.txt, CaseFolding.txt, and - * SpecialCasing.txt. */ -#define UTF8_MAXBYTES_CASE 6 + * SpecialCasing.txt. The value is 6 for strict Unicode characters, but it has + * to be as big as Perl allows for a single character */ +#define UTF8_MAXBYTES_CASE UTF8_MAXBYTES + +/* A Unicode character can fold to up to 3 characters */ +#define UTF8_MAX_FOLD_CHAR_EXPAND 3 #define IN_BYTES (CopHINTS_get(PL_curcop) & HINT_BYTES) #define DO_UTF8(sv) (SvUTF8(sv) && !IN_BYTES) #define IN_UNI_8_BIT ( (CopHINTS_get(PL_curcop) & HINT_UNI_8_BIT) \ && ! IN_LOCALE_RUNTIME && ! IN_BYTES) -#define UTF8_ALLOW_EMPTY 0x0001 +#define UTF8_ALLOW_EMPTY 0x0001 /* Allow a zero length string */ + +/* Allow first byte to be a continuation byte */ #define UTF8_ALLOW_CONTINUATION 0x0002 + +/* Allow second... bytes to be non-continuation bytes */ #define UTF8_ALLOW_NON_CONTINUATION 0x0004 -#define UTF8_ALLOW_FE_FF 0x0008 /* Allow FE or FF start bytes, \ - yields above 0x7fffFFFF */ -#define UTF8_ALLOW_SHORT 0x0010 /* expecting more bytes */ -#define UTF8_ALLOW_SURROGATE 0x0020 -#define UTF8_ALLOW_FFFF 0x0040 /* Allow UNICODE_ILLEGAL */ -#define UTF8_ALLOW_LONG 0x0080 /* expecting fewer bytes */ -#define UTF8_ALLOW_ANYUV (UTF8_ALLOW_EMPTY|UTF8_ALLOW_FE_FF|\ - UTF8_ALLOW_SURROGATE|UTF8_ALLOW_FFFF) -#define UTF8_ALLOW_ANY 0x00FF -#define UTF8_CHECK_ONLY 0x0200 + +/* expecting more bytes than were available in the string */ +#define UTF8_ALLOW_SHORT 0x0008 + +/* Overlong sequence; i.e., the code point can be specified in fewer bytes. */ +#define UTF8_ALLOW_LONG 0x0010 + +#define UTF8_DISALLOW_SURROGATE 0x0020 /* Unicode surrogates */ +#define UTF8_WARN_SURROGATE 0x0040 + +#define UTF8_DISALLOW_NONCHAR 0x0080 /* Unicode non-character */ +#define UTF8_WARN_NONCHAR 0x0100 /* code points */ + +#define UTF8_DISALLOW_SUPER 0x0200 /* Super-set of Unicode: code */ +#define UTF8_WARN_SUPER 0x0400 /* points above the legal max */ + +/* Code points which never were part of the original UTF-8 standard, the first + * byte of which is a FE or FF on ASCII platforms. */ +#define UTF8_DISALLOW_FE_FF 0x0800 +#define UTF8_WARN_FE_FF 0x1000 + +#define UTF8_CHECK_ONLY 0x2000 + +/* For backwards source compatibility. They do nothing, as the default now + * includes what they used to mean. The first one's meaning was to allow the + * just the single non-character 0xFFFF */ +#define UTF8_ALLOW_FFFF 0 +#define UTF8_ALLOW_SURROGATE 0 + +#define UTF8_DISALLOW_ILLEGAL_INTERCHANGE (UTF8_DISALLOW_SUPER|UTF8_DISALLOW_NONCHAR|UTF8_DISALLOW_SURROGATE|UTF8_DISALLOW_FE_FF) +#define UTF8_WARN_ILLEGAL_INTERCHANGE \ + (UTF8_WARN_SUPER|UTF8_WARN_NONCHAR|UTF8_WARN_SURROGATE|UTF8_WARN_FE_FF) +#define UTF8_ALLOW_ANY \ + (~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE|UTF8_WARN_ILLEGAL_INTERCHANGE)) +#define UTF8_ALLOW_ANYUV \ + (UTF8_ALLOW_EMPTY \ + & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE|UTF8_WARN_ILLEGAL_INTERCHANGE)) #define UTF8_ALLOW_DEFAULT (ckWARN(WARN_UTF8) ? 0 : \ UTF8_ALLOW_ANYUV) +/* Surrogates, non-character code points and above-Unicode code points are + * problematic in some contexts. This allows code that needs to check for + * those to to quickly exclude the vast majority of code points it will + * encounter */ +#ifdef EBCDIC +# define UTF8_FIRST_PROBLEMATIC_CODE_POINT_FIRST_BYTE UTF_TO_NATIVE(0xF1) +#else +# define UTF8_FIRST_PROBLEMATIC_CODE_POINT_FIRST_BYTE 0xED +#endif + +/* ASCII EBCDIC I8 + * U+D7FF: \xED\x9F\xBF \xF1\xB5\xBF\xBF last before surrogates + * U+D800: \xED\xA0\x80 \xF1\xB6\xA0\xA0 1st surrogate + * U+DFFF: \xED\xBF\xBF \xF1\xB7\xBF\xBF final surrogate + * U+E000: \xEE\x80\x80 \xF1\xB8\xA0\xA0 next after surrogates + */ +#ifdef EBCDIC /* Both versions assume well-formed UTF8 */ +# define UTF8_IS_SURROGATE(s) (*(s) == UTF_TO_NATIVE(0xF1) \ + && (*((s) +1) == UTF_TO_NATIVE(0xB6)) || *((s) + 1) == UTF_TO_NATIVE(0xB7)) +#else +# define UTF8_IS_SURROGATE(s) (*(s) == 0xED && *((s) + 1) >= 0xA0) +#endif + +/* ASCII EBCDIC I8 + * U+10FFFF: \xF4\x8F\xBF\xBF \xF9\xA1\xBF\xBF\xBF max legal Unicode + * U+110000: \xF4\x90\x80\x80 \xF9\xA2\xA0\xA0\xA0 + * U+110001: \xF4\x90\x80\x81 \xF9\xA2\xA0\xA0\xA1 + */ +#ifdef EBCDIC /* Both versions assume well-formed UTF8 */ +# define UTF8_IS_SUPER(s) (*(s) >= UTF_TO_NATIVE(0xF9) \ + && (*(s) > UTF_TO_NATIVE(0xF9) || (*((s) + 1) >= UTF_TO_NATIVE(0xA2)))) +#else +# define UTF8_IS_SUPER(s) (*(s) >= 0xF4 \ + && (*(s) > 0xF4 || (*((s) + 1) >= 0x90))) +#endif + +/* ASCII EBCDIC I8 + * U+FDCF: \xEF\xB7\x8F \xF1\xBF\xAE\xAF last before non-char block + * U+FDD0: \xEF\xB7\x90 \xF1\xBF\xAE\xB0 first non-char in block + * U+FDEF: \xEF\xB7\xAF \xF1\xBF\xAF\xAF last non-char in block + * U+FDF0: \xEF\xB7\xB0 \xF1\xBF\xAF\xB0 first after non-char block + * U+FFFF: \xEF\xBF\xBF \xF1\xBF\xBF\xBF + * U+1FFFF: \xF0\x9F\xBF\xBF \xF3\xBF\xBF\xBF + * U+2FFFF: \xF0\xAF\xBF\xBF \xF5\xBF\xBF\xBF + * U+3FFFF: \xF0\xBF\xBF\xBF \xF7\xBF\xBF\xBF + * U+4FFFF: \xF1\x8F\xBF\xBF \xF8\xA9\xBF\xBF\xBF + * U+5FFFF: \xF1\x9F\xBF\xBF \xF8\xAB\xBF\xBF\xBF + * U+6FFFF: \xF1\xAF\xBF\xBF \xF8\xAD\xBF\xBF\xBF + * U+7FFFF: \xF1\xBF\xBF\xBF \xF8\xAF\xBF\xBF\xBF + * U+8FFFF: \xF2\x8F\xBF\xBF \xF8\xB1\xBF\xBF\xBF + * U+9FFFF: \xF2\x9F\xBF\xBF \xF8\xB3\xBF\xBF\xBF + * U+AFFFF: \xF2\xAF\xBF\xBF \xF8\xB5\xBF\xBF\xBF + * U+BFFFF: \xF2\xBF\xBF\xBF \xF8\xB7\xBF\xBF\xBF + * U+CFFFF: \xF3\x8F\xBF\xBF \xF8\xB9\xBF\xBF\xBF + * U+DFFFF: \xF3\x9F\xBF\xBF \xF8\xBB\xBF\xBF\xBF + * U+EFFFF: \xF3\xAF\xBF\xBF \xF8\xBD\xBF\xBF\xBF + * U+FFFFF: \xF3\xBF\xBF\xBF \xF8\xBF\xBF\xBF\xBF + * U+10FFFF: \xF4\x8F\xBF\xBF \xF9\xA1\xBF\xBF\xBF + */ +#define UTF8_IS_NONCHAR_(s) ( \ + *(s) >= UTF8_FIRST_PROBLEMATIC_CODE_POINT_FIRST_BYTE \ + && ! UTF8_IS_SUPER(s) \ + && UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_FIRST_PROBLEMATIC(s) \ + +#ifdef EBCDIC /* Both versions assume well-formed UTF8 */ +# define UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC(s) \ + ((*(s) == UTF_TO_NATIVE(0xF1) \ + && (*((s) + 1) == UTF_TO_NATIVE(0xBF) \ + && ((*((s) + 2) == UTF_TO_NATIVE(0xAE) \ + && *((s) + 3) >= UTF_TO_NATIVE(0xB0)) \ + || (*((s) + 2) == UTF_TO_NATIVE(0xAF) \ + && *((s) + 3) <= UTF_TO_NATIVE(0xAF))))) \ + || (UTF8SKIP(*(s)) > 3 \ + /* (These were all derived by inspection and experimentation with an */ \ + /* editor) The next line checks the next to final byte in the char */ \ + && *((s) + UTF8SKIP(*(s)) - 2) == UTF_TO_NATIVE(0xBF) \ + && *((s) + UTF8SKIP(*(s)) - 3) == UTF_TO_NATIVE(0xBF) \ + && (NATIVE_TO_UTF(*((s) + UTF8SKIP(*(s)) - 4)) & 0x81) == 0x81 \ + && (NATIVE_TO_UTF(*((s) + UTF8SKIP(*(s)) - 1)) & 0xBE) == 0XBE)) +#else +# define UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC(s) \ + ((*(s) == 0xEF \ + && ((*((s) + 1) == 0xB7 && (*((s) + 2) >= 0x90 && (*((s) + 2) <= 0xAF)))\ + /* Gets U+FFF[EF] */ \ + || (*((s) + 1) == 0xBF && ((*((s) + 2) & 0xBE) == 0xBE)))) \ + || ((*((s) + 2) == 0xBF \ + && (*((s) + 3) & 0xBE) == 0xBE \ + /* Excludes things like U+10FFE = \xF0\x90\xBF\xBE */ \ + && (*((s) + 1) & 0x8F) == 0x8F))) +#endif + #define UNICODE_SURROGATE_FIRST 0xD800 #define UNICODE_SURROGATE_LAST 0xDFFF #define UNICODE_REPLACEMENT 0xFFFD #define UNICODE_BYTE_ORDER_MARK 0xFEFF -#define UNICODE_ILLEGAL 0xFFFF /* Though our UTF-8 encoding can go beyond this, - * let's be conservative and do as Unicode 5.1 says. */ + * let's be conservative and do as Unicode says. */ #define PERL_UNICODE_MAX 0x10FFFF -#define UNICODE_ALLOW_SURROGATE 0x0001 /* Allow UTF-16 surrogates (EVIL) */ -#define UNICODE_ALLOW_FDD0 0x0002 /* Allow the U+FDD0...U+FDEF */ -#define UNICODE_ALLOW_FFFF 0x0004 /* Allow U+FFF[EF], U+1FFF[EF], ... */ -#define UNICODE_ALLOW_SUPER 0x0008 /* Allow past 0x10FFFF */ -#define UNICODE_ALLOW_ANY 0x000F +#define UNICODE_WARN_SURROGATE 0x0001 /* UTF-16 surrogates */ +#define UNICODE_WARN_NONCHAR 0x0002 /* Non-char code points */ +#define UNICODE_WARN_SUPER 0x0004 /* Above 0x10FFFF */ +#define UNICODE_WARN_FE_FF 0x0008 /* Above 0x10FFFF */ +#define UNICODE_DISALLOW_SURROGATE 0x0010 +#define UNICODE_DISALLOW_NONCHAR 0x0020 +#define UNICODE_DISALLOW_SUPER 0x0040 +#define UNICODE_DISALLOW_FE_FF 0x0080 +#define UNICODE_WARN_ILLEGAL_INTERCHANGE \ + (UNICODE_WARN_SURROGATE|UNICODE_WARN_NONCHAR|UNICODE_WARN_SUPER) +#define UNICODE_DISALLOW_ILLEGAL_INTERCHANGE \ + (UNICODE_DISALLOW_SURROGATE|UNICODE_DISALLOW_NONCHAR|UNICODE_DISALLOW_SUPER) + +/* For backward source compatibility, as are now the default */ +#define UNICODE_ALLOW_SURROGATE 0 +#define UNICODE_ALLOW_SUPER 0 +#define UNICODE_ALLOW_ANY 0 #define UNICODE_IS_SURROGATE(c) ((c) >= UNICODE_SURROGATE_FIRST && \ (c) <= UNICODE_SURROGATE_LAST) #define UNICODE_IS_REPLACEMENT(c) ((c) == UNICODE_REPLACEMENT) #define UNICODE_IS_BYTE_ORDER_MARK(c) ((c) == UNICODE_BYTE_ORDER_MARK) -#define UNICODE_IS_ILLEGAL(c) ((c) == UNICODE_ILLEGAL) +#define UNICODE_IS_NONCHAR(c) ((c >= 0xFDD0 && c <= 0xFDEF) \ + /* The other noncharacters end in FFFE or FFFF, which \ + * the mask below catches both of, but beyond the last \ + * official unicode code point, they aren't \ + * noncharacters, since those aren't Unicode \ + * characters at all */ \ + || ((((c & 0xFFFE) == 0xFFFE)) && ! UNICODE_IS_SUPER(c))) +#define UNICODE_IS_SUPER(c) ((c) > PERL_UNICODE_MAX) +#define UNICODE_IS_FE_FF(c) ((c) > 0x7FFFFFFF) #ifdef HAS_QUAD # define UTF8_QUAD_MAX UINT64_C(0x1000000000) #endif -#define UTF8_IS_ASCII(c) UTF8_IS_INVARIANT(c) - #define UNICODE_GREEK_CAPITAL_LETTER_SIGMA 0x03A3 #define UNICODE_GREEK_SMALL_LETTER_FINAL_SIGMA 0x03C2 #define UNICODE_GREEK_SMALL_LETTER_SIGMA 0x03C3 +#define GREEK_SMALL_LETTER_MU 0x03BC +#define GREEK_CAPITAL_LETTER_MU 0x039C /* Upper and title case of MICRON */ +#define LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS 0x0178 /* Also is title case */ +#define LATIN_CAPITAL_LETTER_SHARP_S 0x1E9E #define UNI_DISPLAY_ISPRINT 0x0001 #define UNI_DISPLAY_BACKSLASH 0x0002 @@ -266,12 +441,14 @@ encoded character. # define LATIN_SMALL_LETTER_SHARP_S 0x00DF # define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS 0x00FF # define MICRO_SIGN 0x00B5 +# define LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE 0x00C5 +# define LATIN_SMALL_LETTER_A_WITH_RING_ABOVE 0x00E5 #endif #define ANYOF_FOLD_SHARP_S(node, input, end) \ (ANYOF_BITMAP_TEST(node, LATIN_SMALL_LETTER_SHARP_S) && \ - (ANYOF_FLAGS(node) & ANYOF_UNICODE) && \ - (ANYOF_FLAGS(node) & ANYOF_FOLD) && \ + (ANYOF_NONBITMAP(node)) && \ + (ANYOF_FLAGS(node) & ANYOF_LOC_NONBITMAP_FOLD) && \ ((end) > (input) + 1) && \ toLOWER((input)[0]) == 's' && \ toLOWER((input)[1]) == 's') @@ -323,7 +500,7 @@ encoded character. * UTF-8, anyway). The "slow path" in Perl_is_utf8_char() * will take care of the "extended UTF-8". */ #define IS_UTF8_CHAR_4c(p) \ - ((p)[0] == 0xF4 && (p)[0] <= 0xF7 && \ + ((p)[0] >= 0xF4 && (p)[0] <= 0xF7 && \ (p)[1] >= 0x80 && (p)[1] <= 0xBF && \ (p)[2] >= 0x80 && (p)[2] <= 0xBF && \ (p)[3] >= 0x80 && (p)[3] <= 0xBF) diff --git a/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h b/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h index c3fe6036eea..a9197a9bef9 100644 --- a/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h +++ b/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h @@ -7,7 +7,7 @@ * License or the Artistic License, as specified in the README file. * * Macros to implement UTF-EBCDIC as perl's internal encoding - * Taken from version 7.1 of Unicode Techical Report #16: + * Taken from version 7.1 of Unicode Technical Report #16: * http://www.unicode.org/unicode/reports/tr16 * * To summarize, the way it works is: @@ -36,7 +36,7 @@ * ordinal value of 'A' is 193 in EBCDIC, and also is 193 in UTF-EBCDIC. * Step 1) converts it to 65, Step 2 leaves it at 65, and Step 3 converts * it back to 193. As an example of how a variant character works, take - * LATIN SMALL LETTER Y WITH DIAERESIS, which is typicially 0xDF in + * LATIN SMALL LETTER Y WITH DIAERESIS, which is typically 0xDF in * EBCDIC. Step 1 converts it to the Unicode value, 0xFF. Step 2 * converts that to two bytes = 11000111 10111111 = C7 BF, and Step 3 * converts those to 0x8B 0x73. The table is constructed so that the @@ -81,7 +81,7 @@ START_EXTERN_C #ifdef DOINIT /* Indexed by encoded byte this table gives the length of the sequence. Adapted from the shadow flags table in tr16. - The entries marked 9 in tr6 are continuation bytes and are marked + The entries marked 9 in tr16 are continuation bytes and are marked as length 1 here so that we can recover. */ #if '^' == 95 /* if defined(__MVS__) || defined(??) (VM/ESA?) 1047 */ @@ -272,7 +272,7 @@ unsigned char PL_e2utf[] = { /* EBCDIC (IBM-037) to I8 */ #endif /* 037 */ /* These tables moved from perl.h and converted to hex. - They map platfrom code page from/to bottom 256 codes of Unicode (i.e. iso-8859-1). + They map platform code page from/to bottom 256 codes of Unicode (i.e. iso-8859-1). */ #if '^' == 95 /* if defined(__MVS__) || defined(??) (VM/ESA?) 1047 */ @@ -298,6 +298,8 @@ EXTCONST unsigned char PL_a2e[] = { /* ASCII (iso-8859-1) to EBCDIC (IBM-1047) * #define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS 0xDF #define LATIN_SMALL_LETTER_SHARP_S 0x59 #define MICRO_SIGN 0xA0 +#define LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE 0x0067 +#define LATIN_SMALL_LETTER_A_WITH_RING_ABOVE 0x0047 EXTCONST unsigned char PL_e2a[] = { /* EBCDIC (IBM-1047) to ASCII (iso-8859-1) */ 0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F, 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, @@ -317,6 +319,42 @@ EXTCONST unsigned char PL_e2a[] = { /* EBCDIC (IBM-1047) to ASCII (iso-8859-1) * 0x5C, 0xF7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0xB2, 0xD4, 0xD6, 0xD2, 0xD3, 0xD5, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0xB3, 0xDB, 0xDC, 0xD9, 0xDA, 0x9F }; + +EXTCONST unsigned char PL_fold[] = { /* fast EBCDIC case folding table, 'A' => + 'a'; 'a' => 'A' */ + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 98, 99, 100, 101, 102, 103, + 104, 105, 74, 75, 76, 77, 78, 79, + 80, 113, 114, 115, 116, 117, 118, 119, + 120, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 66, 67, 68, 69, 70, 71, + 72, 73, 106, 107, 108, 109, 110, 111, + 128, 81, 82, 83, 84, 85, 86, 87, + 88, 121, 122, 123, 124, 125, 126, 127, + 112, 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 138, 139, 172, 186, 174, 143, + 144, 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 154, 155, 158, 157, 156, 159, + 160, 161, 'S', 'T', 'U', 'V', 'W', 'X', + 'Y', 'Z', 170, 171, 140, 173, 142, 175, + 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 141, 187, 188, 189, 190, 191, + 192, 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 202, 235, 236, 237, 238, 239, + 208, 'j', 'k', 'l', 'm', 'n', 'o', 'p', + 'q', 'r', 218, 251, 252, 253, 254, 223, + 224, 225, 's', 't', 'u', 'v', 'w', 'x', + 'y', 'z', 234, 203, 204, 205, 206, 207, + 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 219, 220, 221, 222, 255 +}; #endif /* 1047 */ #if '^' == 106 /* if defined(_OSD_POSIX) POSIX-BC */ @@ -342,6 +380,8 @@ EXTCONST unsigned char PL_a2e[] = { /* ASCII (ISO8859-1) to EBCDIC (POSIX-BC) */ #define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS 0xDF #define LATIN_SMALL_LETTER_SHARP_S 0x59 #define MICRO_SIGN 0xA0 +#define LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE 0x0067 +#define LATIN_SMALL_LETTER_A_WITH_RING_ABOVE 0x0047 EXTCONST unsigned char PL_e2a[] = { /* EBCDIC (POSIX-BC) to ASCII (ISO8859-1) */ 0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F, 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, @@ -361,6 +401,42 @@ EXTCONST unsigned char PL_e2a[] = { /* EBCDIC (POSIX-BC) to ASCII (ISO8859-1) */ 0xD9, 0xF7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0xB2, 0xD4, 0xD6, 0xD2, 0xD3, 0xD5, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0xB3, 0x7B, 0xDC, 0x7D, 0xDA, 0x7E }; + +EXTCONST unsigned char PL_fold[] = { /* fast EBCDIC case folding table, 'A' => + 'a'; 'a' => 'A' */ + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 98, 99, 100, 101, 102, 103, + 104, 105, 74, 75, 76, 77, 78, 79, + 80, 113, 114, 115, 116, 117, 118, 119, + 120, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 66, 67, 68, 69, 70, 71, + 72, 73, 106, 107, 108, 109, 110, 111, + 128, 81, 82, 83, 84, 85, 86, 87, + 88, 121, 122, 123, 124, 125, 126, 127, + 112, 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 138, 139, 172, 173, 174, 143, + 144, 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 154, 155, 158, 157, 156, 159, + 160, 161, 'S', 'T', 'U', 'V', 'W', 'X', + 'Y', 'Z', 170, 171, 140, 141, 142, 175, + 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, + 224, 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 202, 235, 236, 237, 238, 239, + 208, 'j', 'k', 'l', 'm', 'n', 'o', 'p', + 'q', 'r', 218, 221, 252, 219, 254, 223, + 192, 225, 's', 't', 'u', 'v', 'w', 'x', + 'y', 'z', 234, 203, 204, 205, 206, 207, + 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 220, 253, 222, 255 +}; #endif /* POSIX-BC */ #if '^' == 176 /* if defined(??) (OS/400?) 037 */ @@ -387,6 +463,8 @@ EXTCONST unsigned char PL_a2e[] = { /* ASCII (ISO8859-1) to EBCDIC (IBM-037) */ #define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS 0xDF #define LATIN_SMALL_LETTER_SHARP_S 0x59 #define MICRO_SIGN 0xA0 +#define LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE 0x0067 +#define LATIN_SMALL_LETTER_A_WITH_RING_ABOVE 0x0047 EXTCONST unsigned char PL_e2a[] = { /* EBCDIC (IBM-037) to ASCII (ISO8859-1) */ 0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F, 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, @@ -406,6 +484,42 @@ EXTCONST unsigned char PL_e2a[] = { /* EBCDIC (IBM-037) to ASCII (ISO8859-1) */ 0x5C, 0xF7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0xB2, 0xD4, 0xD6, 0xD2, 0xD3, 0xD5, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0xB3, 0xDB, 0xDC, 0xD9, 0xDA, 0x9F }; + +EXTCONST unsigned char PL_fold[] = { /* fast EBCDIC case folding table, 'A' => + 'a'; 'a' => 'A' */ + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 98, 99, 100, 101, 102, 103, + 104, 105, 74, 75, 76, 77, 78, 79, + 80, 113, 114, 115, 116, 117, 118, 119, + 120, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 66, 67, 68, 69, 70, 71, + 72, 73, 106, 107, 108, 109, 110, 111, + 128, 81, 82, 83, 84, 85, 86, 87, + 88, 121, 122, 123, 124, 125, 126, 127, + 112, 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 138, 139, 172, 173, 174, 143, + 144, 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 154, 155, 158, 157, 156, 159, + 160, 161, 'S', 'T', 'U', 'V', 'W', 'X', + 'Y', 'Z', 170, 171, 140, 141, 142, 175, + 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, + 192, 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 202, 235, 236, 237, 238, 239, + 208, 'j', 'k', 'l', 'm', 'n', 'o', 'p', + 'q', 'r', 218, 251, 252, 253, 254, 223, + 224, 225, 's', 't', 'u', 'v', 'w', 'x', + 'y', 'z', 234, 203, 204, 205, 206, 207, + 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 219, 220, 221, 222, 255 +}; #endif /* 037 */ #else @@ -414,8 +528,13 @@ EXTCONST unsigned char PL_e2utf[]; EXTCONST unsigned char PL_utf2e[]; EXTCONST unsigned char PL_e2a[]; EXTCONST unsigned char PL_a2e[]; +EXTCONST unsigned char PL_fold[]; #endif +/* Since the EBCDIC code pages are isomorphic to Latin1, that table is merely a + * duplicate */ +EXTCONST unsigned char * PL_fold_latin1 = PL_fold; + END_EXTERN_C /* EBCDIC-happy ways of converting native code to UTF-8 */ @@ -423,9 +542,9 @@ END_EXTERN_C /* Native to iso-8859-1 */ #define NATIVE_TO_ASCII(ch) PL_e2a[(U8)(ch)] #define ASCII_TO_NATIVE(ch) PL_a2e[(U8)(ch)] -/* Transform after encoding */ -#define NATIVE_TO_UTF(ch) PL_e2utf[(U8)(ch)] -#define UTF_TO_NATIVE(ch) PL_utf2e[(U8)(ch)] +/* Transform after encoding, essentially converts to/from I8 */ +#define NATIVE_TO_UTF(ch) PL_e2utf[(U8)(ch)] /* to I8 */ +#define UTF_TO_NATIVE(ch) PL_utf2e[(U8)(ch)] /* from I8 */ /* Transform in wide UV char space */ #define NATIVE_TO_UNI(ch) (((ch) > 255) ? (ch) : NATIVE_TO_ASCII(ch)) #define UNI_TO_NATIVE(ch) (((ch) > 255) ? (ch) : ASCII_TO_NATIVE(ch)) diff --git a/Master/tlpkg/tlperl/lib/CORE/util.h b/Master/tlpkg/tlperl/lib/CORE/util.h index 6eab0556860..3981656eae9 100644 --- a/Master/tlpkg/tlperl/lib/CORE/util.h +++ b/Master/tlpkg/tlperl/lib/CORE/util.h @@ -39,6 +39,21 @@ #endif /* VMS */ /* +=for apidoc ibcmp + +This is a synonym for (! foldEQ()) + +=for apidoc ibcmp_locale + +This is a synonym for (! foldEQ_locale()) + +=cut +*/ +#define ibcmp(s1, s2, len) cBOOL(! foldEQ(s1, s2, len)) +#define ibcmp_locale(s1, s2, len) cBOOL(! foldEQ_locale(s1, s2, len)) + + +/* * Local variables: * c-indentation-style: bsd * c-basic-offset: 4 diff --git a/Master/tlpkg/tlperl/lib/CORE/warnings.h b/Master/tlpkg/tlperl/lib/CORE/warnings.h index 3ed9ecf56d5..39ebe6a78c1 100644 --- a/Master/tlpkg/tlperl/lib/CORE/warnings.h +++ b/Master/tlpkg/tlperl/lib/CORE/warnings.h @@ -1,8 +1,8 @@ /* -*- buffer-read-only: t -*- !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - This file is built by warnings.pl + This file is built by regen/warnings.pl. Any changes made here will be lost! -*/ + */ #define Off(x) ((x) / 8) @@ -81,9 +81,15 @@ #define WARN_IMPRECISION 46 #define WARN_ILLEGALPROTO 47 -#define WARNsize 12 -#define WARN_ALLstring "\125\125\125\125\125\125\125\125\125\125\125\125" -#define WARN_NONEstring "\0\0\0\0\0\0\0\0\0\0\0\0" +/* Warnings Categories added in Perl 5.013 */ + +#define WARN_NON_UNICODE 48 +#define WARN_NONCHAR 49 +#define WARN_SURROGATE 50 + +#define WARNsize 13 +#define WARN_ALLstring "\125\125\125\125\125\125\125\125\125\125\125\125\125" +#define WARN_NONEstring "\0\0\0\0\0\0\0\0\0\0\0\0\0" #define isLEXWARN_on (PL_curcop->cop_warnings != pWARN_STD) #define isLEXWARN_off (PL_curcop->cop_warnings == pWARN_STD) @@ -127,4 +133,5 @@ isWARNf_on(PL_curcop->cop_warnings, unpackWARN4(x)))) /* end of file warnings.h */ + /* ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/win32.h b/Master/tlpkg/tlperl/lib/CORE/win32.h index 762ab54068b..4c58b8c2520 100644 --- a/Master/tlpkg/tlperl/lib/CORE/win32.h +++ b/Master/tlpkg/tlperl/lib/CORE/win32.h @@ -10,7 +10,7 @@ #define _INC_WIN32_PERL5 #ifndef _WIN32_WINNT -# define _WIN32_WINNT 0x0400 /* needed for TryEnterCriticalSection() etc. */ +# define _WIN32_WINNT 0x0500 /* needed for CreateHardlink() etc. */ #endif #if defined(PERL_IMPLICIT_SYS) @@ -41,20 +41,36 @@ /* Define DllExport akin to perl's EXT, - * If we are in the DLL or mimicing the DLL for Win95 work round - * then Export the symbol, + * If we are in the DLL then Export the symbol, * otherwise import it. */ /* now even GCC supports __declspec() */ -#if defined(PERLDLL) || defined(WIN95FIX) +#if defined(PERLDLL) #define DllExport /*#define DllExport __declspec(dllexport)*/ /* noises with VC5+sp3 */ #else #define DllExport __declspec(dllimport) #endif +/* The Perl APIs can only be called directly inside the perl5xx.dll. + * All other code has to import them. By declaring them as "dllimport" + * we tell the compiler to generate an indirect call instruction and + * avoid redirection through a call thunk. + * + * The XS code in the re extension is special, in that it redefines + * core APIs locally, so don't mark them as "dllimport" because GCC + * cannot handle this situation. + */ +#if !defined(PERLDLL) && !defined(PERL_EXT_RE_BUILD) +# ifdef __cplusplus +# define PERL_CALLCONV extern "C" __declspec(dllimport) +# else +# define PERL_CALLCONV __declspec(dllimport) +# endif +#endif + #define WIN32_LEAN_AND_MEAN #include <windows.h> @@ -141,17 +157,6 @@ struct utsname { #define PERL_NO_FORCE_LINK /* no need for PL_force_link_funcs */ -/* Define USE_FIXED_OSFHANDLE to fix MSVCRT's _open_osfhandle() on W95. - It now uses some black magic to work seamlessly with the DLL CRT and - works with MSVC++ 4.0+ or GCC/Mingw32 - -- BKS 1-24-2000 - Only use this fix for VC++ 6.x or earlier (and for GCC, which we assume - uses MSVCRT.DLL). Later versions use MSVCR70.dll, MSVCR71.dll, etc, which - do not require the fix. */ -#if (defined(_M_IX86) && _MSC_VER >= 1000 && _MSC_VER <= 1200) || defined(__MINGW32__) -#define USE_FIXED_OSFHANDLE -#endif - /* Define PERL_WIN32_SOCK_DLOAD to have Perl dynamically load the winsock DLL when needed. Don't use if your compiler supports delayloading (ie, VC++ 6.0) -- BKS 5-29-2000 */ @@ -363,12 +368,9 @@ DllExport HWND win32_create_message_window(void); extern FILE * my_fdopen(int, char *); #endif extern int my_fclose(FILE *); -extern int my_fstat(int fd, Stat_t *sbufptr); extern char * win32_get_privlib(const char *pl, STRLEN *const len); extern char * win32_get_sitelib(const char *pl, STRLEN *const len); extern char * win32_get_vendorlib(const char *pl, STRLEN *const len); -extern int IsWin95(void); -extern int IsWinNT(void); #ifdef PERL_IMPLICIT_SYS extern void win32_delete_internal_host(void *h); @@ -420,9 +422,7 @@ struct thread_intern { # ifdef USE_SOCKETS_AS_HANDLES int Winit_socktype; # endif -# ifdef HAVE_DES_FCRYPT char Wcrypt_buffer[30]; -# endif # ifdef USE_RTL_THREAD_API void * retv; /* slot for thread return value */ # endif @@ -443,6 +443,7 @@ typedef struct { DWORD pids[MAXIMUM_WAIT_OBJECTS]; HANDLE handles[MAXIMUM_WAIT_OBJECTS]; HWND message_hwnds[MAXIMUM_WAIT_OBJECTS]; + char sigterm[MAXIMUM_WAIT_OBJECTS]; } pseudo_child_tab; #endif @@ -488,6 +489,7 @@ DllExport int win32_async_check(pTHX); #define w32_pseudo_child_pids (w32_pseudo_children->pids) #define w32_pseudo_child_handles (w32_pseudo_children->handles) #define w32_pseudo_child_message_hwnds (w32_pseudo_children->message_hwnds) +#define w32_pseudo_child_sigterm (w32_pseudo_children->sigterm) #define w32_internal_host (PL_sys_intern.internal_host) #define w32_timerid (PL_sys_intern.timerid) #define w32_message_hwnd (PL_sys_intern.message_hwnd) @@ -503,70 +505,8 @@ DllExport int win32_async_check(pTHX); #define w32_showwindow (PL_sys_intern.thr_intern.Wshowwindow) #ifdef USE_ITHREADS -# define PERL_WAIT_FOR_CHILDREN \ - STMT_START { \ - if (w32_pseudo_children && w32_num_pseudo_children) { \ - long children = w32_num_pseudo_children; \ - WaitForMultipleObjects(children, \ - w32_pseudo_child_handles, \ - TRUE, INFINITE); \ - while (children) \ - CloseHandle(w32_pseudo_child_handles[--children]); \ - } \ - } STMT_END -#endif - -#if defined(USE_FIXED_OSFHANDLE) || defined(PERL_MSVCRT_READFIX) -#ifdef PERL_CORE - -/* C doesn't like repeat struct definitions */ -#if defined(__MINGW32__) && (__MINGW32_MAJOR_VERSION>=3) -#undef _CRTIMP -#endif -#ifndef _CRTIMP -#define _CRTIMP __declspec(dllimport) -#endif - -/* - * Control structure for lowio file handles - */ -typedef struct { - intptr_t osfhnd;/* underlying OS file HANDLE */ - char osfile; /* attributes of file (e.g., open in text mode?) */ - char pipech; /* one char buffer for handles opened on pipes */ - int lockinitflag; - CRITICAL_SECTION lock; -} ioinfo; - - -/* - * Array of arrays of control structures for lowio files. - */ -EXTERN_C _CRTIMP ioinfo* __pioinfo[]; - -/* - * Definition of IOINFO_L2E, the log base 2 of the number of elements in each - * array of ioinfo structs. - */ -#define IOINFO_L2E 5 - -/* - * Definition of IOINFO_ARRAY_ELTS, the number of elements in ioinfo array - */ -#define IOINFO_ARRAY_ELTS (1 << IOINFO_L2E) - -/* - * Access macros for getting at an ioinfo struct and its fields from a - * file handle - */ -#define _pioinfo(i) (__pioinfo[(i) >> IOINFO_L2E] + ((i) & (IOINFO_ARRAY_ELTS - 1))) -#define _osfhnd(i) (_pioinfo(i)->osfhnd) -#define _osfile(i) (_pioinfo(i)->osfile) -#define _pipech(i) (_pioinfo(i)->pipech) - -/* since we are not doing a dup2(), this works fine */ -#define _set_osfhnd(fh, osfh) (void)(_osfhnd(fh) = (intptr_t)osfh) -#endif +void win32_wait_for_children(pTHX); +# define PERL_WAIT_FOR_CHILDREN win32_wait_for_children(aTHX) #endif /* IO.xs and POSIX.xs define PERLIO_NOT_STDIO to 1 */ @@ -585,17 +525,6 @@ EXTERN_C _CRTIMP ioinfo* __pioinfo[]; #define EXEC_ARGV_CAST(x) ((const char *const *) x) -#if !defined(ECONNABORTED) && defined(WSAECONNABORTED) -#define ECONNABORTED WSAECONNABORTED -#endif -#if !defined(ECONNRESET) && defined(WSAECONNRESET) -#define ECONNRESET WSAECONNRESET -#endif -#if !defined(EAFNOSUPPORT) && defined(WSAEAFNOSUPPORT) -#define EAFNOSUPPORT WSAEAFNOSUPPORT -#endif -/* Why not needed for ECONNREFUSED? --abe */ - DllExport void *win32_signal_context(void); #define PERL_GET_SIG_CONTEXT win32_signal_context() diff --git a/Master/tlpkg/tlperl/lib/CORE/win32iop.h b/Master/tlpkg/tlperl/lib/CORE/win32iop.h index 9c59037c535..45207900de5 100644 --- a/Master/tlpkg/tlperl/lib/CORE/win32iop.h +++ b/Master/tlpkg/tlperl/lib/CORE/win32iop.h @@ -124,6 +124,7 @@ DllExport long win32_telldir(DIR *dirp); DllExport void win32_seekdir(DIR *dirp, long loc); DllExport void win32_rewinddir(DIR *dirp); DllExport int win32_closedir(DIR *dirp); +DllExport DIR* win32_dirp_dup(DIR *const dirp, CLONE_PARAMS *const param); DllExport char* win32_getenv(const char *name); DllExport int win32_putenv(const char *name); |