diff --git a/INTERN.h b/INTERN.h index 4305b6bc02998..0db47b76613be 100644 --- a/INTERN.h +++ b/INTERN.h @@ -21,15 +21,15 @@ # if (defined(WIN32) && defined(__MINGW32__) && ! defined(PERL_IS_MINIPERL)) # ifdef __cplusplus -# define EXT __declspec(dllexport) +# define EXT __declspec(dllexport) # define dEXT -# define EXTCONST __declspec(dllexport) extern const -# define dEXTCONST const +# define EXTCONST __declspec(dllexport) extern const +# define dEXTCONST const # else -# define EXT __declspec(dllexport) +# define EXT __declspec(dllexport) # define dEXT -# define EXTCONST __declspec(dllexport) const -# define dEXTCONST const +# define EXTCONST __declspec(dllexport) const +# define dEXTCONST const # endif # else # ifdef __cplusplus diff --git a/XSUB.h b/XSUB.h index 82cd0dc7777c5..0bce7278a0d87 100644 --- a/XSUB.h +++ b/XSUB.h @@ -159,8 +159,8 @@ is a lexical C<$_> in scope. #define dAX const I32 ax = (I32)(MARK - PL_stack_base + 1) -#define dAXMARK \ - I32 ax = POPMARK; \ +#define dAXMARK \ + I32 ax = POPMARK; \ SV **mark = PL_stack_base + ax++ #define dITEMS I32 items = (I32)(SP - MARK) @@ -174,10 +174,10 @@ is a lexical C<$_> in scope. Note these macros are not drop in replacements for dXSARGS since they set PL_xsubfilename. */ #define dXSBOOTARGSXSAPIVERCHK \ - I32 ax = XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \ + I32 ax = XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \ SV **mark = PL_stack_base + ax - 1; dSP; dITEMS #define dXSBOOTARGSAPIVERCHK \ - I32 ax = XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \ + I32 ax = XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \ SV **mark = PL_stack_base + ax - 1; dSP; dITEMS /* dXSBOOTARGSNOVERCHK has no API in xsubpp to choose it so do #undef dXSBOOTARGSXSAPIVERCHK @@ -203,9 +203,9 @@ is a lexical C<$_> in scope. # define XSINTERFACE_CVT(ret,name) ret (*name)() # define XSINTERFACE_CVT_ANON(ret) ret (*)() #endif -#define dXSFUNCTION(ret) XSINTERFACE_CVT(ret,XSFUNCTION) +#define dXSFUNCTION(ret) XSINTERFACE_CVT(ret,XSFUNCTION) #define XSINTERFACE_FUNC(ret,cv,f) ((XSINTERFACE_CVT_ANON(ret))(f)) -#define XSINTERFACE_FUNC_SET(cv,f) \ +#define XSINTERFACE_FUNC_SET(cv,f) \ CvXSUBANY(cv).any_dxptr = (void (*) (pTHX_ void*))(f) #define dUNDERBAR dNOOP @@ -321,12 +321,12 @@ Rethrows a previously caught exception. See L. #define XST_mYES(i) (ST(i) = &PL_sv_yes ) #define XST_mUNDEF(i) (ST(i) = &PL_sv_undef) -#define XSRETURN(off) \ - STMT_START { \ - const IV tmpXSoff = (off); \ +#define XSRETURN(off) \ + STMT_START { \ + const IV tmpXSoff = (off); \ assert(tmpXSoff >= 0);\ - PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); \ - return; \ + PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); \ + return; \ } STMT_END #define XSRETURN_IV(v) STMT_START { XST_mIV(0,v); XSRETURN(1); } STMT_END @@ -339,24 +339,24 @@ Rethrows a previously caught exception. See L. #define XSRETURN_UNDEF STMT_START { XST_mUNDEF(0); XSRETURN(1); } STMT_END #define XSRETURN_EMPTY STMT_START { XSRETURN(0); } STMT_END -#define newXSproto(a,b,c,d) newXS_flags(a,b,c,d,0) +#define newXSproto(a,b,c,d) newXS_flags(a,b,c,d,0) #ifdef XS_VERSION -# define XS_VERSION_BOOTCHECK \ - Perl_xs_handshake(HS_KEY(FALSE, FALSE, "", XS_VERSION), HS_CXT, __FILE__, \ +# define XS_VERSION_BOOTCHECK \ + Perl_xs_handshake(HS_KEY(FALSE, FALSE, "", XS_VERSION), HS_CXT, __FILE__, \ items, ax, XS_VERSION) #else # define XS_VERSION_BOOTCHECK #endif -#define XS_APIVERSION_BOOTCHECK \ - Perl_xs_handshake(HS_KEY(FALSE, FALSE, "v" PERL_API_VERSION_STRING, ""), \ +#define XS_APIVERSION_BOOTCHECK \ + Perl_xs_handshake(HS_KEY(FALSE, FALSE, "v" PERL_API_VERSION_STRING, ""), \ HS_CXT, __FILE__, items, ax, "v" PERL_API_VERSION_STRING) /* public API, this is a combination of XS_VERSION_BOOTCHECK and XS_APIVERSION_BOOTCHECK in 1, and is backportable */ #ifdef XS_VERSION -# define XS_BOTHVERSION_BOOTCHECK \ - Perl_xs_handshake(HS_KEY(FALSE, FALSE, "v" PERL_API_VERSION_STRING, XS_VERSION), \ +# define XS_BOTHVERSION_BOOTCHECK \ + Perl_xs_handshake(HS_KEY(FALSE, FALSE, "v" PERL_API_VERSION_STRING, XS_VERSION), \ HS_CXT, __FILE__, items, ax, "v" PERL_API_VERSION_STRING, XS_VERSION) #else /* should this be a #error? if you want both checked, you better supply XS_VERSION right? */ @@ -364,23 +364,23 @@ Rethrows a previously caught exception. See L. #endif /* private API */ -#define XS_APIVERSION_POPMARK_BOOTCHECK \ - Perl_xs_handshake(HS_KEY(FALSE, TRUE, "v" PERL_API_VERSION_STRING, ""), \ +#define XS_APIVERSION_POPMARK_BOOTCHECK \ + Perl_xs_handshake(HS_KEY(FALSE, TRUE, "v" PERL_API_VERSION_STRING, ""), \ HS_CXT, __FILE__, "v" PERL_API_VERSION_STRING) #ifdef XS_VERSION -# define XS_BOTHVERSION_POPMARK_BOOTCHECK \ - Perl_xs_handshake(HS_KEY(FALSE, TRUE, "v" PERL_API_VERSION_STRING, XS_VERSION), \ +# define XS_BOTHVERSION_POPMARK_BOOTCHECK \ + Perl_xs_handshake(HS_KEY(FALSE, TRUE, "v" PERL_API_VERSION_STRING, XS_VERSION), \ HS_CXT, __FILE__, "v" PERL_API_VERSION_STRING, XS_VERSION) #else /* should this be a #error? if you want both checked, you better supply XS_VERSION right? */ # define XS_BOTHVERSION_POPMARK_BOOTCHECK XS_APIVERSION_POPMARK_BOOTCHECK #endif -#define XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK \ - Perl_xs_handshake(HS_KEY(TRUE, TRUE, "v" PERL_API_VERSION_STRING, ""), \ +#define XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK \ + Perl_xs_handshake(HS_KEY(TRUE, TRUE, "v" PERL_API_VERSION_STRING, ""), \ HS_CXT, __FILE__, "v" PERL_API_VERSION_STRING) #ifdef XS_VERSION -# define XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK \ +# define XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK \ Perl_xs_handshake(HS_KEY(TRUE, TRUE, "v" PERL_API_VERSION_STRING, XS_VERSION),\ HS_CXT, __FILE__, "v" PERL_API_VERSION_STRING, XS_VERSION) #else @@ -408,88 +408,88 @@ Rethrows a previously caught exception. See L. the *DB*_File modules */ -#define DBM_setFilter(db_type,code) \ - STMT_START { \ - if (db_type) \ - RETVAL = sv_mortalcopy(db_type) ; \ - ST(0) = RETVAL ; \ - if (db_type && (code == &PL_sv_undef)) { \ - SvREFCNT_dec_NN(db_type) ; \ - db_type = NULL ; \ - } \ - else if (code) { \ - if (db_type) \ - sv_setsv(db_type, code) ; \ - else \ - db_type = newSVsv(code) ; \ - } \ +#define DBM_setFilter(db_type,code) \ + STMT_START { \ + if (db_type) \ + RETVAL = sv_mortalcopy(db_type); \ + ST(0) = RETVAL; \ + if (db_type && (code == &PL_sv_undef)) { \ + SvREFCNT_dec_NN(db_type); \ + db_type = NULL; \ + } \ + else if (code) { \ + if (db_type) \ + sv_setsv(db_type, code); \ + else \ + db_type = newSVsv(code); \ + } \ } STMT_END -#define DBM_ckFilter(arg,type,name) \ - STMT_START { \ - if (db->type) { \ - if (db->filtering) { \ - croak("recursion detected in %s", name) ; \ - } \ - ENTER ; \ - SAVETMPS ; \ - SAVEINT(db->filtering) ; \ - db->filtering = TRUE ; \ - SAVE_DEFSV ; \ +#define DBM_ckFilter(arg,type,name) \ + STMT_START { \ + if (db->type) { \ + if (db->filtering) { \ + croak("recursion detected in %s", name); \ + } \ + ENTER; \ + SAVETMPS; \ + SAVEINT(db->filtering); \ + db->filtering = TRUE; \ + SAVE_DEFSV; \ if (name[7] == 's') \ arg = newSVsv(arg); \ - DEFSV_set(arg) ; \ - SvTEMP_off(arg) ; \ - PUSHMARK(SP) ; \ - PUTBACK ; \ - (void) perl_call_sv(db->type, G_DISCARD); \ - SPAGAIN ; \ - PUTBACK ; \ - FREETMPS ; \ - LEAVE ; \ + DEFSV_set(arg); \ + SvTEMP_off(arg); \ + PUSHMARK(SP); \ + PUTBACK; \ + (void) perl_call_sv(db->type, G_DISCARD); \ + SPAGAIN; \ + PUTBACK; \ + FREETMPS; \ + LEAVE; \ if (name[7] == 's'){ \ arg = sv_2mortal(arg); \ } \ } \ } STMT_END -#if 1 /* for compatibility */ -# define VTBL_sv &PL_vtbl_sv -# define VTBL_env &PL_vtbl_env -# define VTBL_envelem &PL_vtbl_envelem -# define VTBL_sigelem &PL_vtbl_sigelem -# define VTBL_pack &PL_vtbl_pack -# define VTBL_packelem &PL_vtbl_packelem -# define VTBL_dbline &PL_vtbl_dbline -# define VTBL_isa &PL_vtbl_isa -# define VTBL_isaelem &PL_vtbl_isaelem -# define VTBL_arylen &PL_vtbl_arylen -# define VTBL_glob &PL_vtbl_glob -# define VTBL_mglob &PL_vtbl_mglob -# define VTBL_nkeys &PL_vtbl_nkeys -# define VTBL_taint &PL_vtbl_taint -# define VTBL_substr &PL_vtbl_substr -# define VTBL_vec &PL_vtbl_vec -# define VTBL_pos &PL_vtbl_pos -# define VTBL_bm &PL_vtbl_bm -# define VTBL_fm &PL_vtbl_fm -# define VTBL_uvar &PL_vtbl_uvar -# define VTBL_defelem &PL_vtbl_defelem -# define VTBL_regexp &PL_vtbl_regexp -# define VTBL_regdata &PL_vtbl_regdata -# define VTBL_regdatum &PL_vtbl_regdatum +#if 1 /* for compatibility */ +# define VTBL_sv &PL_vtbl_sv +# define VTBL_env &PL_vtbl_env +# define VTBL_envelem &PL_vtbl_envelem +# define VTBL_sigelem &PL_vtbl_sigelem +# define VTBL_pack &PL_vtbl_pack +# define VTBL_packelem &PL_vtbl_packelem +# define VTBL_dbline &PL_vtbl_dbline +# define VTBL_isa &PL_vtbl_isa +# define VTBL_isaelem &PL_vtbl_isaelem +# define VTBL_arylen &PL_vtbl_arylen +# define VTBL_glob &PL_vtbl_glob +# define VTBL_mglob &PL_vtbl_mglob +# define VTBL_nkeys &PL_vtbl_nkeys +# define VTBL_taint &PL_vtbl_taint +# define VTBL_substr &PL_vtbl_substr +# define VTBL_vec &PL_vtbl_vec +# define VTBL_pos &PL_vtbl_pos +# define VTBL_bm &PL_vtbl_bm +# define VTBL_fm &PL_vtbl_fm +# define VTBL_uvar &PL_vtbl_uvar +# define VTBL_defelem &PL_vtbl_defelem +# define VTBL_regexp &PL_vtbl_regexp +# define VTBL_regdata &PL_vtbl_regdata +# define VTBL_regdatum &PL_vtbl_regdatum # ifdef USE_LOCALE_COLLATE -# define VTBL_collxfrm &PL_vtbl_collxfrm +# define VTBL_collxfrm &PL_vtbl_collxfrm # endif -# define VTBL_amagic &PL_vtbl_amagic -# define VTBL_amagicelem &PL_vtbl_amagicelem +# define VTBL_amagic &PL_vtbl_amagic +# define VTBL_amagicelem &PL_vtbl_amagicelem #endif #if defined(MULTIPLICITY) && !defined(PERL_NO_GET_CONTEXT) && !defined(PERL_CORE) # undef aTHX # undef aTHX_ -# define aTHX PERL_GET_THX -# define aTHX_ aTHX, +# define aTHX PERL_GET_THX +# define aTHX_ aTHX, #endif #if defined(PERL_IMPLICIT_SYS) && !defined(PERL_CORE) @@ -517,162 +517,162 @@ Rethrows a previously caught exception. See L. # undef socketpair -# define mkdir PerlDir_mkdir -# define chdir PerlDir_chdir -# define rmdir PerlDir_rmdir -# define closedir PerlDir_close -# define opendir PerlDir_open -# define readdir PerlDir_read -# define rewinddir PerlDir_rewind -# define seekdir PerlDir_seek -# define telldir PerlDir_tell -# define putenv PerlEnv_putenv -# define getenv PerlEnv_getenv -# define uname PerlEnv_uname -# define stdin PerlSIO_stdin -# define stdout PerlSIO_stdout -# define stderr PerlSIO_stderr -# define fopen PerlSIO_fopen -# define fclose PerlSIO_fclose -# define feof PerlSIO_feof -# define ferror PerlSIO_ferror -# define clearerr PerlSIO_clearerr -# define getc PerlSIO_getc -# define fgets PerlSIO_fgets -# define fputc PerlSIO_fputc -# define fputs PerlSIO_fputs -# define fflush PerlSIO_fflush -# define ungetc PerlSIO_ungetc -# define fileno PerlSIO_fileno -# define fdopen PerlSIO_fdopen -# define freopen PerlSIO_freopen -# define fread PerlSIO_fread -# define fwrite PerlSIO_fwrite -# define setbuf PerlSIO_setbuf -# define setvbuf PerlSIO_setvbuf -# define setlinebuf PerlSIO_setlinebuf -# define stdoutf PerlSIO_stdoutf -# define vfprintf PerlSIO_vprintf -# define ftell PerlSIO_ftell -# define fseek PerlSIO_fseek -# define fgetpos PerlSIO_fgetpos -# define fsetpos PerlSIO_fsetpos -# define frewind PerlSIO_rewind -# define tmpfile PerlSIO_tmpfile -# define access PerlLIO_access -# define chmod PerlLIO_chmod -# define chsize PerlLIO_chsize -# define close PerlLIO_close -# define dup PerlLIO_dup -# define dup2 PerlLIO_dup2 -# define flock PerlLIO_flock -# define fstat PerlLIO_fstat -# define ioctl PerlLIO_ioctl -# define isatty PerlLIO_isatty +# define mkdir PerlDir_mkdir +# define chdir PerlDir_chdir +# define rmdir PerlDir_rmdir +# define closedir PerlDir_close +# define opendir PerlDir_open +# define readdir PerlDir_read +# define rewinddir PerlDir_rewind +# define seekdir PerlDir_seek +# define telldir PerlDir_tell +# define putenv PerlEnv_putenv +# define getenv PerlEnv_getenv +# define uname PerlEnv_uname +# define stdin PerlSIO_stdin +# define stdout PerlSIO_stdout +# define stderr PerlSIO_stderr +# define fopen PerlSIO_fopen +# define fclose PerlSIO_fclose +# define feof PerlSIO_feof +# define ferror PerlSIO_ferror +# define clearerr PerlSIO_clearerr +# define getc PerlSIO_getc +# define fgets PerlSIO_fgets +# define fputc PerlSIO_fputc +# define fputs PerlSIO_fputs +# define fflush PerlSIO_fflush +# define ungetc PerlSIO_ungetc +# define fileno PerlSIO_fileno +# define fdopen PerlSIO_fdopen +# define freopen PerlSIO_freopen +# define fread PerlSIO_fread +# define fwrite PerlSIO_fwrite +# define setbuf PerlSIO_setbuf +# define setvbuf PerlSIO_setvbuf +# define setlinebuf PerlSIO_setlinebuf +# define stdoutf PerlSIO_stdoutf +# define vfprintf PerlSIO_vprintf +# define ftell PerlSIO_ftell +# define fseek PerlSIO_fseek +# define fgetpos PerlSIO_fgetpos +# define fsetpos PerlSIO_fsetpos +# define frewind PerlSIO_rewind +# define tmpfile PerlSIO_tmpfile +# define access PerlLIO_access +# define chmod PerlLIO_chmod +# define chsize PerlLIO_chsize +# define close PerlLIO_close +# define dup PerlLIO_dup +# define dup2 PerlLIO_dup2 +# define flock PerlLIO_flock +# define fstat PerlLIO_fstat +# define ioctl PerlLIO_ioctl +# define isatty PerlLIO_isatty # define link PerlLIO_link -# define lseek PerlLIO_lseek -# define lstat PerlLIO_lstat -# define mktemp PerlLIO_mktemp -# define open PerlLIO_open -# define read PerlLIO_read -# define rename PerlLIO_rename -# define setmode PerlLIO_setmode -# define stat(buf,sb) PerlLIO_stat(buf,sb) -# define tmpnam PerlLIO_tmpnam -# define umask PerlLIO_umask -# define unlink PerlLIO_unlink -# define utime PerlLIO_utime -# define write PerlLIO_write -# define malloc PerlMem_malloc +# define lseek PerlLIO_lseek +# define lstat PerlLIO_lstat +# define mktemp PerlLIO_mktemp +# define open PerlLIO_open +# define read PerlLIO_read +# define rename PerlLIO_rename +# define setmode PerlLIO_setmode +# define stat(buf,sb) PerlLIO_stat(buf,sb) +# define tmpnam PerlLIO_tmpnam +# define umask PerlLIO_umask +# define unlink PerlLIO_unlink +# define utime PerlLIO_utime +# define write PerlLIO_write +# define malloc PerlMem_malloc # define calloc PerlMem_calloc -# define realloc PerlMem_realloc -# define free PerlMem_free -# define abort PerlProc_abort -# define exit PerlProc_exit -# define _exit PerlProc__exit -# define execl PerlProc_execl -# define execv PerlProc_execv -# define execvp PerlProc_execvp -# define getuid PerlProc_getuid -# define geteuid PerlProc_geteuid -# define getgid PerlProc_getgid -# define getegid PerlProc_getegid -# define getlogin PerlProc_getlogin -# define kill PerlProc_kill -# define killpg PerlProc_killpg -# define pause PerlProc_pause -# define popen PerlProc_popen -# define pclose PerlProc_pclose -# define pipe PerlProc_pipe -# define setuid PerlProc_setuid -# define setgid PerlProc_setgid -# define sleep PerlProc_sleep -# define times PerlProc_times -# define wait PerlProc_wait -# define setjmp PerlProc_setjmp -# define longjmp PerlProc_longjmp -# define signal PerlProc_signal -# define getpid PerlProc_getpid -# define gettimeofday PerlProc_gettimeofday -# define htonl PerlSock_htonl -# define htons PerlSock_htons -# define ntohl PerlSock_ntohl -# define ntohs PerlSock_ntohs -# define accept PerlSock_accept -# define bind PerlSock_bind -# define connect PerlSock_connect -# define endhostent PerlSock_endhostent -# define endnetent PerlSock_endnetent -# define endprotoent PerlSock_endprotoent -# define endservent PerlSock_endservent -# define gethostbyaddr PerlSock_gethostbyaddr -# define gethostbyname PerlSock_gethostbyname -# define gethostent PerlSock_gethostent -# define gethostname PerlSock_gethostname -# define getnetbyaddr PerlSock_getnetbyaddr -# define getnetbyname PerlSock_getnetbyname -# define getnetent PerlSock_getnetent -# define getpeername PerlSock_getpeername -# define getprotobyname PerlSock_getprotobyname -# define getprotobynumber PerlSock_getprotobynumber -# define getprotoent PerlSock_getprotoent -# define getservbyname PerlSock_getservbyname -# define getservbyport PerlSock_getservbyport -# define getservent PerlSock_getservent -# define getsockname PerlSock_getsockname -# define getsockopt PerlSock_getsockopt -# define inet_addr PerlSock_inet_addr -# define inet_ntoa PerlSock_inet_ntoa -# define listen PerlSock_listen -# define recv PerlSock_recv -# define recvfrom PerlSock_recvfrom -# define select PerlSock_select -# define send PerlSock_send -# define sendto PerlSock_sendto -# define sethostent PerlSock_sethostent -# define setnetent PerlSock_setnetent -# define setprotoent PerlSock_setprotoent -# define setservent PerlSock_setservent -# define setsockopt PerlSock_setsockopt -# define shutdown PerlSock_shutdown -# define socket PerlSock_socket -# define socketpair PerlSock_socketpair +# define realloc PerlMem_realloc +# define free PerlMem_free +# define abort PerlProc_abort +# define exit PerlProc_exit +# define _exit PerlProc__exit +# define execl PerlProc_execl +# define execv PerlProc_execv +# define execvp PerlProc_execvp +# define getuid PerlProc_getuid +# define geteuid PerlProc_geteuid +# define getgid PerlProc_getgid +# define getegid PerlProc_getegid +# define getlogin PerlProc_getlogin +# define kill PerlProc_kill +# define killpg PerlProc_killpg +# define pause PerlProc_pause +# define popen PerlProc_popen +# define pclose PerlProc_pclose +# define pipe PerlProc_pipe +# define setuid PerlProc_setuid +# define setgid PerlProc_setgid +# define sleep PerlProc_sleep +# define times PerlProc_times +# define wait PerlProc_wait +# define setjmp PerlProc_setjmp +# define longjmp PerlProc_longjmp +# define signal PerlProc_signal +# define getpid PerlProc_getpid +# define gettimeofday PerlProc_gettimeofday +# define htonl PerlSock_htonl +# define htons PerlSock_htons +# define ntohl PerlSock_ntohl +# define ntohs PerlSock_ntohs +# define accept PerlSock_accept +# define bind PerlSock_bind +# define connect PerlSock_connect +# define endhostent PerlSock_endhostent +# define endnetent PerlSock_endnetent +# define endprotoent PerlSock_endprotoent +# define endservent PerlSock_endservent +# define gethostbyaddr PerlSock_gethostbyaddr +# define gethostbyname PerlSock_gethostbyname +# define gethostent PerlSock_gethostent +# define gethostname PerlSock_gethostname +# define getnetbyaddr PerlSock_getnetbyaddr +# define getnetbyname PerlSock_getnetbyname +# define getnetent PerlSock_getnetent +# define getpeername PerlSock_getpeername +# define getprotobyname PerlSock_getprotobyname +# define getprotobynumber PerlSock_getprotobynumber +# define getprotoent PerlSock_getprotoent +# define getservbyname PerlSock_getservbyname +# define getservbyport PerlSock_getservbyport +# define getservent PerlSock_getservent +# define getsockname PerlSock_getsockname +# define getsockopt PerlSock_getsockopt +# define inet_addr PerlSock_inet_addr +# define inet_ntoa PerlSock_inet_ntoa +# define listen PerlSock_listen +# define recv PerlSock_recv +# define recvfrom PerlSock_recvfrom +# define select PerlSock_select +# define send PerlSock_send +# define sendto PerlSock_sendto +# define sethostent PerlSock_sethostent +# define setnetent PerlSock_setnetent +# define setprotoent PerlSock_setprotoent +# define setservent PerlSock_setservent +# define setsockopt PerlSock_setsockopt +# define shutdown PerlSock_shutdown +# define socket PerlSock_socket +# define socketpair PerlSock_socketpair # undef fd_set # undef FD_SET # undef FD_CLR # undef FD_ISSET # undef FD_ZERO -# define fd_set Perl_fd_set -# define FD_SET(n,p) PERL_FD_SET(n,p) -# define FD_CLR(n,p) PERL_FD_CLR(n,p) -# define FD_ISSET(n,p) PERL_FD_ISSET(n,p) -# define FD_ZERO(p) PERL_FD_ZERO(p) +# define fd_set Perl_fd_set +# define FD_SET(n,p) PERL_FD_SET(n,p) +# define FD_CLR(n,p) PERL_FD_CLR(n,p) +# define FD_ISSET(n,p) PERL_FD_ISSET(n,p) +# define FD_ZERO(p) PERL_FD_ZERO(p) # endif /* NO_XSLOCKS */ #endif /* PERL_IMPLICIT_SYS && !PERL_CORE */ -#endif /* PERL_XSUB_H_ */ /* include guard */ +#endif /* PERL_XSUB_H_ */ /* include guard */ /* * ex: set ts=8 sts=4 sw=4 et: diff --git a/av.h b/av.h index 6e0b24d7b3ad1..1e54849138d73 100644 --- a/av.h +++ b/av.h @@ -9,14 +9,14 @@ */ struct xpvav { - 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 */ - SV** xav_alloc; /* pointer to beginning of C array of SVs */ + 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 */ + SV** xav_alloc; /* pointer to beginning of C array of SVs */ }; -/* SV* xav_arylen; */ +/* SV* xav_arylen; */ /* SVpav_REAL is set for all AVs whose xav_array contents are refcounted * and initialized such that any element can be retrieved as a SV*. @@ -75,25 +75,25 @@ If all you need is to look up an array element, then prefer C. # define Nullav Null(AV*) #endif -#define AvARRAY(av) ((av)->sv_u.svu_array) -#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))) - -#define AvREAL(av) (SvFLAGS(av) & SVpav_REAL) -#define AvREAL_on(av) (SvFLAGS(av) |= SVpav_REAL) -#define AvREAL_off(av) (SvFLAGS(av) &= ~SVpav_REAL) -#define AvREAL_only(av) (AvREIFY_off(av), SvFLAGS(av) |= SVpav_REAL) -#define AvREIFY(av) (SvFLAGS(av) & SVpav_REIFY) -#define AvREIFY_on(av) (SvFLAGS(av) |= SVpav_REIFY) -#define AvREIFY_off(av) (SvFLAGS(av) &= ~SVpav_REIFY) -#define AvREIFY_only(av) (AvREAL_off(av), SvFLAGS(av) |= SVpav_REIFY) - - -#define AvREALISH(av) (SvFLAGS(av) & (SVpav_REAL|SVpav_REIFY)) - -#define AvFILL(av) ((SvRMAGICAL((const SV *) (av))) \ +#define AvARRAY(av) ((av)->sv_u.svu_array) +#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))) + +#define AvREAL(av) (SvFLAGS(av) & SVpav_REAL) +#define AvREAL_on(av) (SvFLAGS(av) |= SVpav_REAL) +#define AvREAL_off(av) (SvFLAGS(av) &= ~SVpav_REAL) +#define AvREAL_only(av) (AvREIFY_off(av), SvFLAGS(av) |= SVpav_REAL) +#define AvREIFY(av) (SvFLAGS(av) & SVpav_REIFY) +#define AvREIFY_on(av) (SvFLAGS(av) |= SVpav_REIFY) +#define AvREIFY_off(av) (SvFLAGS(av) &= ~SVpav_REIFY) +#define AvREIFY_only(av) (AvREAL_off(av), SvFLAGS(av) |= SVpav_REIFY) + + +#define AvREALISH(av) (SvFLAGS(av) & (SVpav_REAL|SVpav_REIFY)) + +#define AvFILL(av) ((SvRMAGICAL((const SV *) (av))) \ ? mg_size(MUTABLE_SV(av)) : AvFILLp(av)) #define av_top_index(av) AvFILL(av) #define av_tindex(av) av_top_index(av) @@ -209,7 +209,7 @@ to fit one element without extending: */ -#define newAV() MUTABLE_AV(newSV_type(SVt_PVAV)) +#define newAV() MUTABLE_AV(newSV_type(SVt_PVAV)) #define newAV_alloc_x(size) av_new_alloc(size,0) #define newAV_alloc_xz(size) av_new_alloc(size,1) diff --git a/cop.h b/cop.h index 7bd500f54a800..469fe92ef9834 100644 --- a/cop.h +++ b/cop.h @@ -30,10 +30,10 @@ */ struct jmpenv { - struct jmpenv * je_prev; - Sigjmp_buf je_buf; /* uninit if je_prev is NULL */ - int je_ret; /* last exception thrown */ - bool je_mustcatch; /* longjmp()s must be caught locally */ + struct jmpenv * je_prev; + Sigjmp_buf je_buf; /* uninit if je_prev is NULL */ + int je_ret; /* last exception thrown */ + bool je_mustcatch; /* longjmp()s must be caught locally */ U16 je_old_delaymagic; /* saved PL_delaymagic */ SSize_t je_old_stack_hwm; }; @@ -64,13 +64,13 @@ typedef struct jmpenv JMPENV; */ #define JMPENV_BOOTSTRAP \ - STMT_START { \ + STMT_START { \ PERL_POISON_EXPR(PoisonNew(&PL_start_env, 1, JMPENV));\ - PL_top_env = &PL_start_env; \ - PL_start_env.je_prev = NULL; \ - PL_start_env.je_ret = -1; \ - PL_start_env.je_mustcatch = TRUE; \ - PL_start_env.je_old_delaymagic = 0; \ + PL_top_env = &PL_start_env; \ + PL_start_env.je_prev = NULL; \ + PL_start_env.je_ret = -1; \ + PL_start_env.je_mustcatch = TRUE; \ + PL_start_env.je_old_delaymagic = 0; \ JE_OLD_STACK_HWM_zero; \ } STMT_END @@ -108,80 +108,80 @@ typedef struct jmpenv JMPENV; * */ -#define dJMPENV JMPENV cur_env +#define dJMPENV JMPENV cur_env #define JMPENV_PUSH(v) \ - STMT_START { \ + STMT_START { \ DEBUG_l({ \ int i = 0; \ JMPENV *p = PL_top_env; \ - while (p) { i++; p = p->je_prev; } \ + while (p) { i++; p = p->je_prev; } \ Perl_deb(aTHX_ "JMPENV_PUSH pre level=%d in %s at %s:%d\n", \ i, SAFE_FUNCTION__, __FILE__, __LINE__); \ }); \ - cur_env.je_prev = PL_top_env; \ + cur_env.je_prev = PL_top_env; \ JE_OLD_STACK_HWM_save(cur_env); \ - /* setjmp() is callable in limited contexts which does not */ \ - /* include assignment, so switch() instead */ \ + /* setjmp() is callable in limited contexts which does not */ \ + /* include assignment, so switch() instead */ \ switch (PerlProc_setjmp(cur_env.je_buf, SCOPE_SAVES_SIGNAL_MASK)) { \ - case 0: cur_env.je_ret = 0; break; \ - case 1: cur_env.je_ret = 1; break; \ - case 2: cur_env.je_ret = 2; break; \ - case 3: cur_env.je_ret = 3; break; \ + case 0: cur_env.je_ret = 0; break; \ + case 1: cur_env.je_ret = 1; break; \ + case 2: cur_env.je_ret = 2; break; \ + case 3: cur_env.je_ret = 3; break; \ default: Perl_croak(aTHX_ "panic: unexpected setjmp() result\n"); \ - } \ + } \ JE_OLD_STACK_HWM_restore(cur_env); \ - PL_top_env = &cur_env; \ - cur_env.je_mustcatch = FALSE; \ - cur_env.je_old_delaymagic = PL_delaymagic; \ + PL_top_env = &cur_env; \ + cur_env.je_mustcatch = FALSE; \ + cur_env.je_old_delaymagic = PL_delaymagic; \ DEBUG_l({ \ int i = 0; \ JMPENV *p = PL_top_env; \ - while (p) { i++; p = p->je_prev; } \ + while (p) { i++; p = p->je_prev; } \ Perl_deb(aTHX_ "JMPENV_PUSH level=%d ret=%d in %s at %s:%d\n", \ i, cur_env.je_ret, SAFE_FUNCTION__, __FILE__, __LINE__); \ }); \ - (v) = cur_env.je_ret; \ + (v) = cur_env.je_ret; \ } STMT_END #define JMPENV_POP \ - STMT_START { \ + STMT_START { \ DEBUG_l({ \ - int i = -1; JMPENV *p = PL_top_env; \ - while (p) { i++; p = p->je_prev; } \ + int i = -1; JMPENV *p = PL_top_env; \ + while (p) { i++; p = p->je_prev; } \ Perl_deb(aTHX_ "JMPENV_POP level=%d in %s at %s:%d\n", \ i, SAFE_FUNCTION__, __FILE__, __LINE__);}) \ - assert(PL_top_env == &cur_env); \ - PL_delaymagic = cur_env.je_old_delaymagic; \ - PL_top_env = cur_env.je_prev; \ + assert(PL_top_env == &cur_env); \ + PL_delaymagic = cur_env.je_old_delaymagic; \ + PL_top_env = cur_env.je_prev; \ } STMT_END #define JMPENV_JUMP(v) \ - STMT_START { \ + STMT_START { \ DEBUG_l({ \ - int i = -1; JMPENV *p = PL_top_env; \ - while (p) { i++; p = p->je_prev; } \ + int i = -1; JMPENV *p = PL_top_env; \ + while (p) { i++; p = p->je_prev; } \ Perl_deb(aTHX_ "JMPENV_JUMP(%d) level=%d in %s at %s:%d\n", \ (int)(v), i, SAFE_FUNCTION__, __FILE__, __LINE__);}) \ - if (PL_top_env->je_prev) { \ - assert((v) >= 0 && (v) <= 3); \ - PerlProc_longjmp(PL_top_env->je_buf, (v)); \ - } \ - if ((v) == 2) \ - PerlProc_exit(STATUS_EXIT); \ + if (PL_top_env->je_prev) { \ + assert((v) >= 0 && (v) <= 3); \ + PerlProc_longjmp(PL_top_env->je_buf, (v)); \ + } \ + if ((v) == 2) \ + PerlProc_exit(STATUS_EXIT); \ PerlIO_printf(PerlIO_stderr(), "panic: top_env, v=%d\n", (int)(v)); \ - PerlProc_exit(1); \ + PerlProc_exit(1); \ } STMT_END -#define CATCH_GET (PL_top_env->je_mustcatch) +#define CATCH_GET (PL_top_env->je_mustcatch) #define CATCH_SET(v) \ - STMT_START { \ + STMT_START { \ DEBUG_l( \ - Perl_deb(aTHX_ \ + Perl_deb(aTHX_ \ "JUMPLEVEL set catch %d => %d (for %p) in %s at %s:%d\n", \ PL_top_env->je_mustcatch, (v), (void*)PL_top_env, \ - SAFE_FUNCTION__, __FILE__, __LINE__);) \ - PL_top_env->je_mustcatch = (v); \ + SAFE_FUNCTION__, __FILE__, __LINE__);) \ + PL_top_env->je_mustcatch = (v); \ } STMT_END /* @@ -437,26 +437,26 @@ struct cop { line_t cop_line; /* line # of this command */ /* label for this construct is now stored in cop_hints_hash */ #ifdef USE_ITHREADS - PADOFFSET cop_stashoff; /* offset into PL_stashpad, for the + PADOFFSET cop_stashoff; /* offset into PL_stashpad, for the package the line was compiled in */ - char * cop_file; /* name of file this command is from */ + char * cop_file; /* name of file this command is from */ #else - HV * cop_stash; /* package line was compiled in */ - GV * cop_filegv; /* name of GV file this command is from */ + HV * cop_stash; /* package line was compiled in */ + GV * cop_filegv; /* name of GV file this command is from */ #endif - U32 cop_hints; /* hints bits from pragmata */ - U32 cop_seq; /* parse sequence number */ + U32 cop_hints; /* hints bits from pragmata */ + U32 cop_seq; /* parse sequence number */ /* Beware. mg.c and warnings.pl assume the type of this is STRLEN *: */ - STRLEN * cop_warnings; /* lexical warnings bitmask */ + 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. */ - COPHH * cop_hints_hash; + COPHH * cop_hints_hash; /* for now just a bitmask stored here. If we get sufficient features this may become a pointer. How these flags are stored is subject to change without notice. Use the macros to test for features. */ - U32 cop_features; + U32 cop_features; }; /* @@ -508,55 +508,55 @@ string C

, creating the package if necessary. #ifdef USE_ITHREADS -# define CopFILE(c) ((c)->cop_file) -# define CopFILEGV(c) (CopFILE(c) \ +# define CopFILE(c) ((c)->cop_file) +# define CopFILEGV(c) (CopFILE(c) \ ? gv_fetchfile(CopFILE(c)) : NULL) -# define CopFILE_set(c,pv) ((c)->cop_file = savesharedpv(pv)) +# define CopFILE_set(c,pv) ((c)->cop_file = savesharedpv(pv)) # define CopFILE_setn(c,pv,l) ((c)->cop_file = savesharedpvn((pv),(l))) -# define CopFILESV(c) (CopFILE(c) \ +# define CopFILESV(c) (CopFILE(c) \ ? GvSV(gv_fetchfile(CopFILE(c))) : NULL) -# define CopFILEAV(c) (CopFILE(c) \ +# define CopFILEAV(c) (CopFILE(c) \ ? GvAV(gv_fetchfile(CopFILE(c))) : NULL) -# define CopFILEAVx(c) (assert_(CopFILE(c)) \ +# define CopFILEAVx(c) (assert_(CopFILE(c)) \ GvAV(gv_fetchfile(CopFILE(c)))) # define CopFILEAVn(c) (cop_file_avn(c)) # define CopSTASH(c) PL_stashpad[(c)->cop_stashoff] -# define CopSTASH_set(c,hv) ((c)->cop_stashoff = (hv) \ - ? alloccopstash(hv) \ +# define CopSTASH_set(c,hv) ((c)->cop_stashoff = (hv) \ + ? alloccopstash(hv) \ : 0) -# define CopFILE_free(c) (PerlMemShared_free(CopFILE(c)),(CopFILE(c) = NULL)) +# define CopFILE_free(c) (PerlMemShared_free(CopFILE(c)),(CopFILE(c) = NULL)) #else /* Above: yes threads; Below no threads */ -# define CopFILEGV(c) ((c)->cop_filegv) -# define CopFILEGV_set(c,gv) ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv)) -# define CopFILE_set(c,pv) CopFILEGV_set((c), gv_fetchfile(pv)) -# define CopFILE_setn(c,pv,l) CopFILEGV_set((c), gv_fetchfile_flags((pv),(l),0)) -# define CopFILESV(c) (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : NULL) -# define CopFILEAV(c) (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : NULL) +# define CopFILEGV(c) ((c)->cop_filegv) +# define CopFILEGV_set(c,gv) ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv)) +# define CopFILE_set(c,pv) CopFILEGV_set((c), gv_fetchfile(pv)) +# define CopFILE_setn(c,pv,l) CopFILEGV_set((c), gv_fetchfile_flags((pv),(l),0)) +# define CopFILESV(c) (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : NULL) +# define CopFILEAV(c) (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : NULL) # ifdef DEBUGGING -# define CopFILEAVx(c) (assert(CopFILEGV(c)), GvAV(CopFILEGV(c))) +# define CopFILEAVx(c) (assert(CopFILEGV(c)), GvAV(CopFILEGV(c))) # else -# define CopFILEAVx(c) (GvAV(CopFILEGV(c))) +# define CopFILEAVx(c) (GvAV(CopFILEGV(c))) # endif # define CopFILEAVn(c) (CopFILEGV(c) ? GvAVn(CopFILEGV(c)) : NULL) -# define CopFILE(c) (CopFILEGV(c) /* +2 for '_<' */ \ +# define CopFILE(c) (CopFILEGV(c) /* +2 for '_<' */ \ ? GvNAME(CopFILEGV(c))+2 : NULL) -# define CopSTASH(c) ((c)->cop_stash) -# define CopSTASH_set(c,hv) ((c)->cop_stash = (hv)) -# define CopFILE_free(c) (SvREFCNT_dec(CopFILEGV(c)),(CopFILEGV(c) = NULL)) +# define CopSTASH(c) ((c)->cop_stash) +# define CopSTASH_set(c,hv) ((c)->cop_stash = (hv)) +# define CopFILE_free(c) (SvREFCNT_dec(CopFILEGV(c)),(CopFILEGV(c) = NULL)) #endif /* USE_ITHREADS */ -#define CopSTASHPV(c) (CopSTASH(c) ? HvNAME_get(CopSTASH(c)) : NULL) +#define CopSTASHPV(c) (CopSTASH(c) ? HvNAME_get(CopSTASH(c)) : NULL) /* cop_stash is not refcounted */ -#define CopSTASHPV_set(c,pv) CopSTASH_set((c), gv_stashpv(pv,GV_ADD)) -#define CopSTASH_eq(c,hv) (CopSTASH(c) == (hv)) +#define CopSTASHPV_set(c,pv) CopSTASH_set((c), gv_stashpv(pv,GV_ADD)) +#define CopSTASH_eq(c,hv) (CopSTASH(c) == (hv)) -#define CopHINTHASH_get(c) ((COPHH*)((c)->cop_hints_hash)) -#define CopHINTHASH_set(c,h) ((c)->cop_hints_hash = (h)) +#define CopHINTHASH_get(c) ((COPHH*)((c)->cop_hints_hash)) +#define CopHINTHASH_set(c,h) ((c)->cop_hints_hash = (h)) /* =for apidoc Am|SV *|cop_hints_fetch_pv |const COP *cop|const char *key |U32 hash|U32 flags @@ -678,20 +678,20 @@ by setting C<*flags> to 0 or C. #define CopLABEL(c) Perl_cop_fetch_label(aTHX_ (c), NULL, NULL) #define CopLABEL_len(c,len) Perl_cop_fetch_label(aTHX_ (c), len, NULL) #define CopLABEL_len_flags(c,len,flags) Perl_cop_fetch_label(aTHX_ (c), len, flags) -#define CopLABEL_alloc(pv) ((pv)?savepv(pv):NULL) +#define CopLABEL_alloc(pv) ((pv)?savepv(pv):NULL) -#define CopSTASH_ne(c,hv) (!CopSTASH_eq(c,hv)) -#define CopLINE(c) ((c)->cop_line) -#define CopLINE_inc(c) (++CopLINE(c)) -#define CopLINE_dec(c) (--CopLINE(c)) -#define CopLINE_set(c,l) (CopLINE(c) = (l)) +#define CopSTASH_ne(c,hv) (!CopSTASH_eq(c,hv)) +#define CopLINE(c) ((c)->cop_line) +#define CopLINE_inc(c) (++CopLINE(c)) +#define CopLINE_dec(c) (--CopLINE(c)) +#define CopLINE_set(c,l) (CopLINE(c) = (l)) /* OutCopFILE() is CopFILE for output (caller, die, warn, etc.) */ #define OutCopFILE(c) CopFILE(c) -#define CopHINTS_get(c) ((c)->cop_hints + 0) -#define CopHINTS_set(c, h) STMT_START { \ - (c)->cop_hints = (h); \ +#define CopHINTS_get(c) ((c)->cop_hints + 0) +#define CopHINTS_set(c, h) STMT_START { \ + (c)->cop_hints = (h); \ } STMT_END /* @@ -700,27 +700,27 @@ by setting C<*flags> to 0 or C. /* subroutine context */ struct block_sub { - OP * retop; /* op to execute on exit from sub */ + OP * retop; /* op to execute on exit from sub */ I32 old_cxsubix; /* previous value of si_cxsubix */ /* Above here is the same for sub, format and eval. */ - PAD *prevcomppad; /* the caller's PL_comppad */ - CV * cv; + PAD *prevcomppad; /* the caller's PL_comppad */ + CV * cv; /* Above here is the same for sub and format. */ - I32 olddepth; - AV *savearray; + I32 olddepth; + AV *savearray; }; /* format context */ struct block_format { - OP * retop; /* op to execute on exit from sub */ + OP * retop; /* op to execute on exit from sub */ I32 old_cxsubix; /* previous value of si_cxsubix */ /* Above here is the same for sub, format and eval. */ - PAD *prevcomppad; /* the caller's PL_comppad */ - CV * cv; + PAD *prevcomppad; /* the caller's PL_comppad */ + CV * cv; /* Above here is the same for sub and format. */ - GV * gv; - GV * dfoutgv; + GV * gv; + GV * dfoutgv; }; /* return a pointer to the current context */ @@ -744,44 +744,44 @@ struct block_format { #endif #define CX_PUSHSUB_GET_LVALUE_MASK(func) \ - /* If the context is indeterminate, then only the lvalue */ \ - /* flags that the caller also has are applicable. */ \ - ( \ - (PL_op->op_flags & OPf_WANT) \ - ? OPpENTERSUB_LVAL_MASK \ - : !(PL_op->op_private & OPpENTERSUB_LVAL_MASK) \ - ? 0 : (U8)func(aTHX) \ + /* If the context is indeterminate, then only the lvalue */ \ + /* flags that the caller also has are applicable. */ \ + ( \ + (PL_op->op_flags & OPf_WANT) \ + ? OPpENTERSUB_LVAL_MASK \ + : !(PL_op->op_private & OPpENTERSUB_LVAL_MASK) \ + ? 0 : (U8)func(aTHX) \ ) /* Restore old @_ */ -#define CX_POP_SAVEARRAY(cx) \ - STMT_START { \ +#define CX_POP_SAVEARRAY(cx) \ + STMT_START { \ AV *cx_pop_savearray_av = GvAV(PL_defgv); \ - GvAV(PL_defgv) = cx->blk_sub.savearray; \ + GvAV(PL_defgv) = cx->blk_sub.savearray; \ cx->blk_sub.savearray = NULL; \ - SvREFCNT_dec(cx_pop_savearray_av); \ + SvREFCNT_dec(cx_pop_savearray_av); \ } STMT_END /* junk in @_ spells trouble when cloning CVs and in pp_caller(), so don't * leave any (a fast av_clear(ary), basically) */ #define CLEAR_ARGARRAY(ary) \ - STMT_START { \ - AvMAX(ary) += AvARRAY(ary) - AvALLOC(ary); \ - AvARRAY(ary) = AvALLOC(ary); \ - AvFILLp(ary) = -1; \ + STMT_START { \ + AvMAX(ary) += AvARRAY(ary) - AvALLOC(ary); \ + AvARRAY(ary) = AvALLOC(ary); \ + AvFILLp(ary) = -1; \ } STMT_END /* eval context */ struct block_eval { - OP * retop; /* op to execute on exit from eval */ + OP * retop; /* op to execute on exit from eval */ I32 old_cxsubix; /* previous value of si_cxsubix */ /* Above here is the same for sub, format and eval. */ - SV * old_namesv; - OP * old_eval_root; - SV * cur_text; - CV * cv; - JMPENV * cur_top_env; /* value of PL_top_env when eval CX created */ + SV * old_namesv; + OP * old_eval_root; + SV * cur_text; + CV * cv; + JMPENV * cur_top_env; /* value of PL_top_env when eval CX created */ }; /* If we ever need more than 512 op types, change the shift from 7. @@ -790,14 +790,14 @@ struct block_eval { /* blk_u16 bit usage for eval contexts: */ -#define CxOLD_IN_EVAL(cx) (((cx)->blk_u16) & 0x3F) /* saved PL_in_eval */ -#define CxEVAL_TXT_REFCNTED(cx) (((cx)->blk_u16) & 0x40) /* cur_text rc++ */ -#define CxOLD_OP_TYPE(cx) (((cx)->blk_u16) >> 7) /* type of eval op */ +#define CxOLD_IN_EVAL(cx) (((cx)->blk_u16) & 0x3F) /* saved PL_in_eval */ +#define CxEVAL_TXT_REFCNTED(cx) (((cx)->blk_u16) & 0x40) /* cur_text rc++ */ +#define CxOLD_OP_TYPE(cx) (((cx)->blk_u16) >> 7) /* type of eval op */ /* loop context */ struct block_loop { - LOOP * my_op; /* My op, that contains redo, next and last ops. */ - union { /* different ways of locating the iteration variable */ + LOOP * my_op; /* My op, that contains redo, next and last ops. */ + union { /* different ways of locating the iteration variable */ SV **svp; /* for lexicals: address of pad slot */ GV *gv; /* for package vars */ } itervar_u; @@ -832,10 +832,10 @@ struct block_loop { ? &GvSV((c)->blk_loop.itervar_u.gv) \ : (SV **)&(c)->blk_loop.itervar_u.gv) -#define CxLABEL(c) (CopLABEL((c)->blk_oldcop)) -#define CxLABEL_len(c,len) (CopLABEL_len((c)->blk_oldcop, len)) -#define CxLABEL_len_flags(c,len,flags) ((const char *)CopLABEL_len_flags((c)->blk_oldcop, len, flags)) -#define CxHASARGS(c) (((c)->cx_type & CXp_HASARGS) == CXp_HASARGS) +#define CxLABEL(c) (CopLABEL((c)->blk_oldcop)) +#define CxLABEL_len(c,len) (CopLABEL_len((c)->blk_oldcop, len)) +#define CxLABEL_len_flags(c,len,flags) ((const char *)CopLABEL_len_flags((c)->blk_oldcop, len, flags)) +#define CxHASARGS(c) (((c)->cx_type & CXp_HASARGS) == CXp_HASARGS) /* CxLVAL(): the lval flags of the call site: the relevant flag bits from * the op_private field of the calling pp_entersub (or its caller's caller @@ -848,7 +848,7 @@ struct block_loop { * Note the contrast with CvLVALUE(), which is a property of the sub * rather than the call site. */ -#define CxLVAL(c) (0 + ((U8)((c)->blk_u16))) +#define CxLVAL(c) (0 + ((U8)((c)->blk_u16))) @@ -862,50 +862,50 @@ struct block_givwhen { /* context common to subroutines, evals and loops */ struct block { - U8 blku_type; /* what kind of context this is */ - U8 blku_gimme; /* is this block running in list context? */ - U16 blku_u16; /* used by block_sub and block_eval (so far) */ - I32 blku_oldsaveix; /* saved PL_savestack_ix */ + U8 blku_type; /* what kind of context this is */ + U8 blku_gimme; /* is this block running in list context? */ + U16 blku_u16; /* used by block_sub and block_eval (so far) */ + I32 blku_oldsaveix; /* saved PL_savestack_ix */ /* all the fields above must be aligned with same-sized fields as sbu */ - I32 blku_oldsp; /* current sp floor: where nextstate pops to */ - I32 blku_oldmarksp; /* mark stack index */ - COP * blku_oldcop; /* old curcop pointer */ - PMOP * blku_oldpm; /* values of pattern match vars */ + I32 blku_oldsp; /* current sp floor: where nextstate pops to */ + I32 blku_oldmarksp; /* mark stack index */ + COP * blku_oldcop; /* old curcop pointer */ + PMOP * blku_oldpm; /* values of pattern match vars */ SSize_t blku_old_tmpsfloor; /* saved PL_tmps_floor */ - I32 blku_oldscopesp; /* scope stack index */ + I32 blku_oldscopesp; /* scope stack index */ union { - struct block_sub blku_sub; - struct block_format blku_format; - struct block_eval blku_eval; - struct block_loop blku_loop; - struct block_givwhen blku_givwhen; + struct block_sub blku_sub; + struct block_format blku_format; + struct block_eval blku_eval; + struct block_loop blku_loop; + struct block_givwhen blku_givwhen; } blk_u; }; -#define blk_oldsp cx_u.cx_blk.blku_oldsp -#define blk_oldcop cx_u.cx_blk.blku_oldcop -#define blk_oldmarksp cx_u.cx_blk.blku_oldmarksp -#define blk_oldscopesp cx_u.cx_blk.blku_oldscopesp -#define blk_oldpm cx_u.cx_blk.blku_oldpm -#define blk_gimme cx_u.cx_blk.blku_gimme -#define blk_u16 cx_u.cx_blk.blku_u16 +#define blk_oldsp cx_u.cx_blk.blku_oldsp +#define blk_oldcop cx_u.cx_blk.blku_oldcop +#define blk_oldmarksp cx_u.cx_blk.blku_oldmarksp +#define blk_oldscopesp cx_u.cx_blk.blku_oldscopesp +#define blk_oldpm cx_u.cx_blk.blku_oldpm +#define blk_gimme cx_u.cx_blk.blku_gimme +#define blk_u16 cx_u.cx_blk.blku_u16 #define blk_oldsaveix cx_u.cx_blk.blku_oldsaveix #define blk_old_tmpsfloor cx_u.cx_blk.blku_old_tmpsfloor -#define blk_sub cx_u.cx_blk.blk_u.blku_sub -#define blk_format cx_u.cx_blk.blk_u.blku_format -#define blk_eval cx_u.cx_blk.blk_u.blku_eval -#define blk_loop cx_u.cx_blk.blk_u.blku_loop -#define blk_givwhen cx_u.cx_blk.blk_u.blku_givwhen - -#define CX_DEBUG(cx, action) \ - DEBUG_l( \ +#define blk_sub cx_u.cx_blk.blk_u.blku_sub +#define blk_format cx_u.cx_blk.blk_u.blku_format +#define blk_eval cx_u.cx_blk.blk_u.blku_eval +#define blk_loop cx_u.cx_blk.blk_u.blku_loop +#define blk_givwhen cx_u.cx_blk.blk_u.blku_givwhen + +#define CX_DEBUG(cx, action) \ + DEBUG_l( \ Perl_deb(aTHX_ "CX %ld %s %s (scope %ld,%ld) (save %ld,%ld) in %s at %s:%d\n",\ - (long)cxstack_ix, \ - action, \ - PL_block_type[CxTYPE(cx)], \ - (long)PL_scopestack_ix, \ - (long)(cx->blk_oldscopesp), \ - (long)PL_savestack_ix, \ + (long)cxstack_ix, \ + action, \ + PL_block_type[CxTYPE(cx)], \ + (long)PL_scopestack_ix, \ + (long)(cx->blk_oldscopesp), \ + (long)PL_savestack_ix, \ (long)(cx->blk_oldsaveix), \ SAFE_FUNCTION__, __FILE__, __LINE__)); @@ -913,62 +913,62 @@ struct block { /* substitution context */ struct subst { - U8 sbu_type; /* same as blku_type */ - U8 sbu_rflags; - U16 sbu_rxtainted; - I32 sbu_oldsaveix; /* same as blku_oldsaveix */ + U8 sbu_type; /* same as blku_type */ + U8 sbu_rflags; + U16 sbu_rxtainted; + I32 sbu_oldsaveix; /* same as blku_oldsaveix */ /* all the fields above must be aligned with same-sized fields as blk_u */ - SSize_t sbu_iters; - SSize_t sbu_maxiters; - char * sbu_orig; - SV * sbu_dstr; - SV * sbu_targ; - char * sbu_s; - char * sbu_m; - char * sbu_strend; - void * sbu_rxres; - REGEXP * sbu_rx; + SSize_t sbu_iters; + SSize_t sbu_maxiters; + char * sbu_orig; + SV * sbu_dstr; + SV * sbu_targ; + char * sbu_s; + char * sbu_m; + char * sbu_strend; + void * sbu_rxres; + REGEXP * sbu_rx; }; #ifdef PERL_CORE -#define sb_iters cx_u.cx_subst.sbu_iters -#define sb_maxiters cx_u.cx_subst.sbu_maxiters -#define sb_rflags cx_u.cx_subst.sbu_rflags -#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 -#define sb_targ cx_u.cx_subst.sbu_targ -#define sb_s cx_u.cx_subst.sbu_s -#define sb_m cx_u.cx_subst.sbu_m -#define sb_strend cx_u.cx_subst.sbu_strend -#define sb_rxres cx_u.cx_subst.sbu_rxres -#define sb_rx cx_u.cx_subst.sbu_rx - -# define CX_PUSHSUBST(cx) CXINC, cx = CX_CUR(), \ - cx->blk_oldsaveix = oldsave, \ - cx->sb_iters = iters, \ - cx->sb_maxiters = maxiters, \ - cx->sb_rflags = r_flags, \ - cx->sb_rxtainted = rxtainted, \ - cx->sb_orig = orig, \ - cx->sb_dstr = dstr, \ - cx->sb_targ = targ, \ - cx->sb_s = s, \ - cx->sb_m = m, \ - cx->sb_strend = strend, \ - cx->sb_rxres = NULL, \ - cx->sb_rx = rx, \ - cx->cx_type = CXt_SUBST | (once ? CXp_ONCE : 0); \ - rxres_save(&cx->sb_rxres, rx); \ - (void)ReREFCNT_inc(rx); \ +#define sb_iters cx_u.cx_subst.sbu_iters +#define sb_maxiters cx_u.cx_subst.sbu_maxiters +#define sb_rflags cx_u.cx_subst.sbu_rflags +#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 +#define sb_targ cx_u.cx_subst.sbu_targ +#define sb_s cx_u.cx_subst.sbu_s +#define sb_m cx_u.cx_subst.sbu_m +#define sb_strend cx_u.cx_subst.sbu_strend +#define sb_rxres cx_u.cx_subst.sbu_rxres +#define sb_rx cx_u.cx_subst.sbu_rx + +# define CX_PUSHSUBST(cx) CXINC, cx = CX_CUR(), \ + cx->blk_oldsaveix = oldsave, \ + cx->sb_iters = iters, \ + cx->sb_maxiters = maxiters, \ + cx->sb_rflags = r_flags, \ + cx->sb_rxtainted = rxtainted, \ + cx->sb_orig = orig, \ + cx->sb_dstr = dstr, \ + cx->sb_targ = targ, \ + cx->sb_s = s, \ + cx->sb_m = m, \ + cx->sb_strend = strend, \ + cx->sb_rxres = NULL, \ + cx->sb_rx = rx, \ + cx->cx_type = CXt_SUBST | (once ? CXp_ONCE : 0); \ + rxres_save(&cx->sb_rxres, rx); \ + (void)ReREFCNT_inc(rx); \ SvREFCNT_inc_void_NN(targ) # define CX_POPSUBST(cx) \ - STMT_START { \ + STMT_START { \ REGEXP *re; \ assert(CxTYPE(cx) == CXt_SUBST); \ - rxres_free(&cx->sb_rxres); \ + rxres_free(&cx->sb_rxres); \ re = cx->sb_rx; \ cx->sb_rx = NULL; \ ReREFCNT_dec(re); \ @@ -976,37 +976,37 @@ struct subst { } STMT_END #endif -#define CxONCE(cx) ((cx)->cx_type & CXp_ONCE) +#define CxONCE(cx) ((cx)->cx_type & CXp_ONCE) struct context { union { - struct block cx_blk; - struct subst cx_subst; + struct block cx_blk; + struct subst cx_subst; } cx_u; }; #define cx_type cx_u.cx_subst.sbu_type /* If you re-order these, there is also an array of uppercase names in perl.h and a static array of context names in pp_ctl.c */ -#define CXTYPEMASK 0xf -#define CXt_NULL 0 /* currently only used for sort BLOCK */ -#define CXt_WHEN 1 -#define CXt_BLOCK 2 +#define CXTYPEMASK 0xf +#define CXt_NULL 0 /* currently only used for sort BLOCK */ +#define CXt_WHEN 1 +#define CXt_BLOCK 2 /* When micro-optimising :-) keep GIVEN next to the LOOPs, as these 5 share a jump table in pp_ctl.c The first 4 don't have a 'case' in at least one switch statement in pp_ctl.c */ -#define CXt_GIVEN 3 +#define CXt_GIVEN 3 /* be careful of the ordering of these five. Macros like CxTYPE_is_LOOP, * CxFOREACH compare ranges */ -#define CXt_LOOP_ARY 4 /* for (@ary) { ...; } */ -#define CXt_LOOP_LAZYSV 5 /* for ('a'..'z') { ...; } */ -#define CXt_LOOP_LAZYIV 6 /* for (1..9) { ...; } */ -#define CXt_LOOP_LIST 7 /* for (1,2,3) { ...; } */ -#define CXt_LOOP_PLAIN 8 /* while (...) { ...; } +#define CXt_LOOP_ARY 4 /* for (@ary) { ...; } */ +#define CXt_LOOP_LAZYSV 5 /* for ('a'..'z') { ...; } */ +#define CXt_LOOP_LAZYIV 6 /* for (1..9) { ...; } */ +#define CXt_LOOP_LIST 7 /* for (1,2,3) { ...; } */ +#define CXt_LOOP_PLAIN 8 /* while (...) { ...; } or plain block { ...; } */ -#define CXt_SUB 9 +#define CXt_SUB 9 #define CXt_FORMAT 10 #define CXt_EVAL 11 /* eval'', eval{}, try{} */ #define CXt_SUBST 12 @@ -1014,42 +1014,42 @@ struct context { /* SUBST doesn't feature in all switch statements. */ /* private flags for CXt_SUB and CXt_FORMAT */ -#define CXp_MULTICALL 0x10 /* part of a multicall (so don't tear down +#define CXp_MULTICALL 0x10 /* part of a multicall (so don't tear down context on exit). (not CXt_FORMAT) */ -#define CXp_HASARGS 0x20 -#define CXp_SUB_RE 0x40 /* code called within regex, i.e. (?{}) */ -#define CXp_SUB_RE_FAKE 0x80 /* fake sub CX for (?{}) in current scope */ +#define CXp_HASARGS 0x20 +#define CXp_SUB_RE 0x40 /* code called within regex, i.e. (?{}) */ +#define CXp_SUB_RE_FAKE 0x80 /* fake sub CX for (?{}) in current scope */ /* private flags for CXt_EVAL */ -#define CXp_REAL 0x20 /* truly eval'', not a lookalike */ -#define CXp_EVALBLOCK 0x40 /* eval{}, not eval'' or similar */ +#define CXp_REAL 0x20 /* truly eval'', not a lookalike */ +#define CXp_EVALBLOCK 0x40 /* eval{}, not eval'' or similar */ #define CXp_TRY 0x80 /* try {} block */ /* private flags for CXt_LOOP */ /* this is only set in conjunction with CXp_FOR_GV */ -#define CXp_FOR_DEF 0x10 /* foreach using $_ */ +#define CXp_FOR_DEF 0x10 /* foreach using $_ */ /* these 3 are mutually exclusive */ -#define CXp_FOR_LVREF 0x20 /* foreach using \$var */ -#define CXp_FOR_GV 0x40 /* foreach using package var */ -#define CXp_FOR_PAD 0x80 /* foreach using lexical var */ +#define CXp_FOR_LVREF 0x20 /* foreach using \$var */ +#define CXp_FOR_GV 0x40 /* foreach using package var */ +#define CXp_FOR_PAD 0x80 /* foreach using lexical var */ -#define CxPADLOOP(c) ((c)->cx_type & CXp_FOR_PAD) +#define CxPADLOOP(c) ((c)->cx_type & CXp_FOR_PAD) /* private flags for CXt_SUBST */ -#define CXp_ONCE 0x10 /* What was sbu_once in struct subst */ +#define CXp_ONCE 0x10 /* What was sbu_once in struct subst */ -#define CxTYPE(c) ((c)->cx_type & CXTYPEMASK) +#define CxTYPE(c) ((c)->cx_type & CXTYPEMASK) #define CxTYPE_is_LOOP(c) ( CxTYPE(cx) >= CXt_LOOP_ARY \ && CxTYPE(cx) <= CXt_LOOP_PLAIN) -#define CxMULTICALL(c) ((c)->cx_type & CXp_MULTICALL) -#define CxREALEVAL(c) (((c)->cx_type & (CXTYPEMASK|CXp_REAL)) \ +#define CxMULTICALL(c) ((c)->cx_type & CXp_MULTICALL) +#define CxREALEVAL(c) (((c)->cx_type & (CXTYPEMASK|CXp_REAL)) \ == (CXt_EVAL|CXp_REAL)) -#define CxEVALBLOCK(c) (((c)->cx_type & (CXTYPEMASK|CXp_EVALBLOCK)) \ +#define CxEVALBLOCK(c) (((c)->cx_type & (CXTYPEMASK|CXp_EVALBLOCK)) \ == (CXt_EVAL|CXp_EVALBLOCK)) #define CxTRY(c) (((c)->cx_type & (CXTYPEMASK|CXp_TRY)) \ == (CXt_EVAL|CXp_TRY)) -#define CxFOREACH(c) ( CxTYPE(cx) >= CXt_LOOP_ARY \ +#define CxFOREACH(c) ( CxTYPE(cx) >= CXt_LOOP_ARY \ && CxTYPE(cx) <= CXt_LOOP_LIST) /* private flags for CXt_DEFER */ @@ -1073,32 +1073,32 @@ struct context { #endif /* extra flags for Perl_call_* routines */ -#define G_DISCARD 0x4 /* Call FREETMPS. +#define G_DISCARD 0x4 /* Call FREETMPS. Don't change this without consulting the hash actions codes defined in hv.h */ -#define G_EVAL 0x8 /* Assume eval {} around subroutine call. */ -#define G_NOARGS 0x10 /* Don't construct a @_ array. */ -#define G_KEEPERR 0x20 /* Warn for errors, don't overwrite $@ */ -#define G_NODEBUG 0x40 /* Disable debugging at toplevel. */ +#define G_EVAL 0x8 /* Assume eval {} around subroutine call. */ +#define G_NOARGS 0x10 /* Don't construct a @_ array. */ +#define G_KEEPERR 0x20 /* Warn for errors, don't overwrite $@ */ +#define G_NODEBUG 0x40 /* Disable debugging at toplevel. */ #define G_METHOD 0x80 /* Calling method. */ -#define G_FAKINGEVAL 0x100 /* Faking an eval context for call_sv or +#define G_FAKINGEVAL 0x100 /* Faking an eval context for call_sv or fold_constants. */ -#define G_UNDEF_FILL 0x200 /* Fill the stack with &PL_sv_undef +#define G_UNDEF_FILL 0x200 /* Fill the stack with &PL_sv_undef A special case for UNSHIFT in Perl_magic_methcall(). */ #define G_WRITING_TO_STDERR 0x400 /* Perl_write_to_stderr() is calling Perl_magic_methcall(). */ #define G_RE_REPARSING 0x800 /* compiling a run-time /(?{..})/ */ -#define G_METHOD_NAMED 0x1000 /* calling named method, eg without :: or ' */ -#define G_RETHROW 0x2000 /* eval_sv(): re-throw any error */ +#define G_METHOD_NAMED 0x1000 /* calling named method, eg without :: or ' */ +#define G_RETHROW 0x2000 /* eval_sv(): re-throw any error */ /* flag bits for PL_in_eval */ -#define EVAL_NULL 0 /* not in an eval */ -#define EVAL_INEVAL 1 /* some enclosing scope is an eval */ -#define EVAL_WARNONLY 2 /* used by yywarn() when calling yyerror() */ -#define EVAL_KEEPERR 4 /* set by Perl_call_sv if G_KEEPERR */ -#define EVAL_INREQUIRE 8 /* The code is being required. */ -#define EVAL_RE_REPARSING 0x10 /* eval_sv() called with G_RE_REPARSING */ +#define EVAL_NULL 0 /* not in an eval */ +#define EVAL_INEVAL 1 /* some enclosing scope is an eval */ +#define EVAL_WARNONLY 2 /* used by yywarn() when calling yyerror() */ +#define EVAL_KEEPERR 4 /* set by Perl_call_sv if G_KEEPERR */ +#define EVAL_INREQUIRE 8 /* The code is being required. */ +#define EVAL_RE_REPARSING 0x10 /* eval_sv() called with G_RE_REPARSING */ /* if adding extra bits, make sure they can fit in CxOLD_OP_TYPE() */ /* Support for switching (stack and block) contexts. @@ -1107,30 +1107,30 @@ struct context { * http://nntp.perl.org/group/perl.perl5.porters/257169 */ -#define PERLSI_UNKNOWN -1 -#define PERLSI_UNDEF 0 -#define PERLSI_MAIN 1 -#define PERLSI_MAGIC 2 -#define PERLSI_SORT 3 -#define PERLSI_SIGNAL 4 -#define PERLSI_OVERLOAD 5 -#define PERLSI_DESTROY 6 -#define PERLSI_WARNHOOK 7 -#define PERLSI_DIEHOOK 8 -#define PERLSI_REQUIRE 9 +#define PERLSI_UNKNOWN -1 +#define PERLSI_UNDEF 0 +#define PERLSI_MAIN 1 +#define PERLSI_MAGIC 2 +#define PERLSI_SORT 3 +#define PERLSI_SIGNAL 4 +#define PERLSI_OVERLOAD 5 +#define PERLSI_DESTROY 6 +#define PERLSI_WARNHOOK 7 +#define PERLSI_DIEHOOK 8 +#define PERLSI_REQUIRE 9 #define PERLSI_MULTICALL 10 #define PERLSI_REGCOMP 11 struct stackinfo { - AV * si_stack; /* stack for current runlevel */ - PERL_CONTEXT * si_cxstack; /* context stack for runlevel */ - struct stackinfo * si_prev; - struct stackinfo * si_next; - I32 si_cxix; /* current context index */ - I32 si_cxmax; /* maximum allocated index */ - I32 si_cxsubix; /* topmost sub/eval/format */ - I32 si_type; /* type of runlevel */ - I32 si_markoff; /* offset where markstack begins for us. + AV * si_stack; /* stack for current runlevel */ + PERL_CONTEXT * si_cxstack; /* context stack for runlevel */ + struct stackinfo * si_prev; + struct stackinfo * si_next; + I32 si_cxix; /* current context index */ + I32 si_cxmax; /* maximum allocated index */ + I32 si_cxsubix; /* topmost sub/eval/format */ + I32 si_type; /* type of runlevel */ + I32 si_markoff; /* offset where markstack begins for us. * currently used only with DEBUGGING, * but not #ifdef-ed for bincompat */ #if defined DEBUGGING && !defined DEBUGGING_RE_ONLY @@ -1149,15 +1149,15 @@ Use this typedef to declare variables that are to hold C. */ typedef struct stackinfo PERL_SI; -#define cxstack (PL_curstackinfo->si_cxstack) -#define cxstack_ix (PL_curstackinfo->si_cxix) -#define cxstack_max (PL_curstackinfo->si_cxmax) +#define cxstack (PL_curstackinfo->si_cxstack) +#define cxstack_ix (PL_curstackinfo->si_cxix) +#define cxstack_max (PL_curstackinfo->si_cxmax) #ifdef DEBUGGING -# define SET_MARK_OFFSET \ +# define SET_MARK_OFFSET \ PL_curstackinfo->si_markoff = PL_markstack_ptr - PL_markstack #else -# define SET_MARK_OFFSET NOOP +# define SET_MARK_OFFSET NOOP #endif #if defined DEBUGGING && !defined DEBUGGING_RE_ONLY @@ -1167,26 +1167,26 @@ typedef struct stackinfo PERL_SI; #endif #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; } \ + 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 in %s at %s:%d\n", \ i, SAFE_FUNCTION__, __FILE__, __LINE__);}) \ - if (!next) { \ - next = new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1); \ - next->si_prev = PL_curstackinfo; \ - PL_curstackinfo->si_next = next; \ - } \ - next->si_type = type; \ - next->si_cxix = -1; \ - next->si_cxsubix = -1; \ + if (!next) { \ + next = new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1); \ + next->si_prev = PL_curstackinfo; \ + PL_curstackinfo->si_next = next; \ + } \ + next->si_type = type; \ + next->si_cxix = -1; \ + next->si_cxsubix = -1; \ PUSHSTACK_INIT_HWM(next); \ - AvFILLp(next->si_stack) = 0; \ - SWITCHSTACK(PL_curstack,next->si_stack); \ - PL_curstackinfo = next; \ - SET_MARK_OFFSET; \ + AvFILLp(next->si_stack) = 0; \ + SWITCHSTACK(PL_curstack,next->si_stack); \ + PL_curstackinfo = next; \ + SET_MARK_OFFSET; \ } STMT_END #define PUSHSTACK PUSHSTACKi(PERLSI_UNKNOWN) @@ -1194,28 +1194,28 @@ typedef struct stackinfo PERL_SI; /* POPSTACK works with PL_stack_sp, so it may need to be bracketed by * PUTBACK/SPAGAIN to flush/refresh any local SP that may be active */ #define POPSTACK \ - 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; } \ + 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 in %s at %s:%d\n", \ i, SAFE_FUNCTION__, __FILE__, __LINE__);}) \ - if (!prev) { \ - Perl_croak_popstack(); \ - } \ - SWITCHSTACK(PL_curstack,prev->si_stack); \ - /* don't free prev here, free them all at the END{} */ \ - PL_curstackinfo = prev; \ + if (!prev) { \ + Perl_croak_popstack(); \ + } \ + SWITCHSTACK(PL_curstack,prev->si_stack); \ + /* don't free prev here, free them all at the END{} */ \ + PL_curstackinfo = prev; \ } STMT_END #define POPSTACK_TO(s) \ - STMT_START { \ - while (PL_curstack != s) { \ - dounwind(-1); \ - POPSTACK; \ - } \ + STMT_START { \ + while (PL_curstack != s) { \ + dounwind(-1); \ + POPSTACK; \ + } \ } STMT_END /* @@ -1254,7 +1254,7 @@ See L. */ #define dMULTICALL \ - OP *multicall_cop; \ + OP *multicall_cop; \ bool multicall_oldcatch #define PUSH_MULTICALL(the_cv) \ @@ -1264,66 +1264,66 @@ See L. * for the CX stack entry (this isn't part of the public API) */ #define PUSH_MULTICALL_FLAGS(the_cv, flags) \ - STMT_START { \ - PERL_CONTEXT *cx; \ - CV * const _nOnclAshIngNamE_ = the_cv; \ - CV * const cv = _nOnclAshIngNamE_; \ - PADLIST * const padlist = CvPADLIST(cv); \ - multicall_oldcatch = CATCH_GET; \ - CATCH_SET(TRUE); \ - PUSHSTACKi(PERLSI_MULTICALL); \ + STMT_START { \ + PERL_CONTEXT *cx; \ + CV * const _nOnclAshIngNamE_ = the_cv; \ + CV * const cv = _nOnclAshIngNamE_; \ + PADLIST * const padlist = CvPADLIST(cv); \ + multicall_oldcatch = CATCH_GET; \ + CATCH_SET(TRUE); \ + PUSHSTACKi(PERLSI_MULTICALL); \ cx = cx_pushblock((CXt_SUB|CXp_MULTICALL|flags), (U8)gimme, \ - PL_stack_sp, PL_savestack_ix); \ + PL_stack_sp, PL_savestack_ix); \ cx_pushsub(cx, cv, NULL, 0); \ - SAVEOP(); \ + SAVEOP(); \ if (!(flags & CXp_SUB_RE_FAKE)) \ - CvDEPTH(cv)++; \ - if (CvDEPTH(cv) >= 2) \ - Perl_pad_push(aTHX_ padlist, CvDEPTH(cv)); \ - PAD_SET_CUR_NOSAVE(padlist, CvDEPTH(cv)); \ - multicall_cop = CvSTART(cv); \ + CvDEPTH(cv)++; \ + if (CvDEPTH(cv) >= 2) \ + Perl_pad_push(aTHX_ padlist, CvDEPTH(cv)); \ + PAD_SET_CUR_NOSAVE(padlist, CvDEPTH(cv)); \ + multicall_cop = CvSTART(cv); \ } STMT_END #define MULTICALL \ - STMT_START { \ - PL_op = multicall_cop; \ - CALLRUNOPS(aTHX); \ + STMT_START { \ + PL_op = multicall_cop; \ + CALLRUNOPS(aTHX); \ } STMT_END #define POP_MULTICALL \ - STMT_START { \ - PERL_CONTEXT *cx; \ - cx = CX_CUR(); \ + STMT_START { \ + PERL_CONTEXT *cx; \ + cx = CX_CUR(); \ CX_LEAVE_SCOPE(cx); \ cx_popsub_common(cx); \ gimme = cx->blk_gimme; \ PERL_UNUSED_VAR(gimme); /* for API */ \ - cx_popblock(cx); \ + cx_popblock(cx); \ CX_POP(cx); \ - POPSTACK; \ - CATCH_SET(multicall_oldcatch); \ - SPAGAIN; \ + POPSTACK; \ + CATCH_SET(multicall_oldcatch); \ + SPAGAIN; \ } STMT_END /* Change the CV of an already-pushed MULTICALL CxSUB block. * (this isn't part of the public API) */ #define CHANGE_MULTICALL_FLAGS(the_cv, flags) \ - STMT_START { \ - CV * const _nOnclAshIngNamE_ = the_cv; \ - CV * const cv = _nOnclAshIngNamE_; \ - PADLIST * const padlist = CvPADLIST(cv); \ - PERL_CONTEXT *cx = CX_CUR(); \ + STMT_START { \ + CV * const _nOnclAshIngNamE_ = the_cv; \ + CV * const cv = _nOnclAshIngNamE_; \ + PADLIST * const padlist = CvPADLIST(cv); \ + PERL_CONTEXT *cx = CX_CUR(); \ assert(CxMULTICALL(cx)); \ cx_popsub_common(cx); \ cx->cx_type = (CXt_SUB|CXp_MULTICALL|flags); \ - cx_pushsub(cx, cv, NULL, 0); \ + cx_pushsub(cx, cv, NULL, 0); \ if (!(flags & CXp_SUB_RE_FAKE)) \ - CvDEPTH(cv)++; \ - if (CvDEPTH(cv) >= 2) \ - Perl_pad_push(aTHX_ padlist, CvDEPTH(cv)); \ - PAD_SET_CUR_NOSAVE(padlist, CvDEPTH(cv)); \ - multicall_cop = CvSTART(cv); \ + CvDEPTH(cv)++; \ + if (CvDEPTH(cv) >= 2) \ + Perl_pad_push(aTHX_ padlist, CvDEPTH(cv)); \ + PAD_SET_CUR_NOSAVE(padlist, CvDEPTH(cv)); \ + multicall_cop = CvSTART(cv); \ } STMT_END /* * ex: set ts=8 sts=4 sw=4 et: diff --git a/cv.h b/cv.h index 51f411629d767..857dac208f302 100644 --- a/cv.h +++ b/cv.h @@ -38,31 +38,31 @@ See L. # define Nullcv Null(CV*) #endif -#define CvSTASH(sv) (MUTABLE_HV(((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_stash)) +#define CvSTASH(sv) (MUTABLE_HV(((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) Perl_CvGV(aTHX_ (CV *)(sv)) -#define CvGV_set(cv,gv) Perl_cvgv_set(aTHX_ cv, gv) -#define CvHASGV(cv) cBOOL(SvANY(cv)->xcv_gv_u.xcv_gv) -#define CvFILE(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_file +#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) Perl_CvGV(aTHX_ (CV *)(sv)) +#define CvGV_set(cv,gv) Perl_cvgv_set(aTHX_ cv, gv) +#define CvHASGV(cv) cBOOL(SvANY(cv)->xcv_gv_u.xcv_gv) +#define CvFILE(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_file #ifdef USE_ITHREADS -# define CvFILE_set_from_cop(sv, cop) \ +# define CvFILE_set_from_cop(sv, cop) \ (CvFILE(sv) = savepv(CopFILE(cop)), CvDYNFILE_on(sv)) #else -# define CvFILE_set_from_cop(sv, cop) \ +# define CvFILE_set_from_cop(sv, cop) \ (CvFILE(sv) = CopFILE(cop), CvDYNFILE_off(sv)) #endif -#define CvFILEGV(sv) (gv_fetchfile(CvFILE(sv))) -#define CvDEPTH(sv) (*Perl_CvDEPTH((const CV *)sv)) +#define CvFILEGV(sv) (gv_fetchfile(CvFILE(sv))) +#define CvDEPTH(sv) (*Perl_CvDEPTH((const CV *)sv)) /* For use when you only have a XPVCV*, not a real CV*. Must be assert protected as in Perl_CvDEPTH before use. */ #define CvDEPTHunsafe(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_depth /* these CvPADLIST/CvRESERVED asserts can be reverted one day, once stabilized */ -#define CvPADLIST(sv) (*(assert_(!CvISXSUB((CV*)(sv))) \ +#define CvPADLIST(sv) (*(assert_(!CvISXSUB((CV*)(sv))) \ &(((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_padlist_u.xcv_padlist))) /* CvPADLIST_set is not public API, it can be removed one day, once stabilized */ #ifdef DEBUGGING @@ -70,7 +70,7 @@ See L. #else # define CvPADLIST_set(sv, padlist) (CvPADLIST(sv) = (padlist)) #endif -#define CvHSCXT(sv) *(assert_(CvISXSUB((CV*)(sv))) \ +#define CvHSCXT(sv) *(assert_(CvISXSUB((CV*)(sv))) \ &(((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_padlist_u.xcv_hscxt)) #ifdef DEBUGGING # if PTRSIZE == 8 @@ -86,9 +86,9 @@ See L. # define PoisonPADLIST(sv) NOOP #endif -#define CvOUTSIDE(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_outside +#define CvOUTSIDE(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_outside #define CvOUTSIDE_SEQ(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_outside_seq -#define CvFLAGS(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_flags +#define CvFLAGS(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_flags /* These two are sometimes called on non-CVs */ #define CvPROTO(sv) \ @@ -98,7 +98,7 @@ See L. ? SvEND(sv)+1 : SvPVX_const(sv) \ : NULL \ ) -#define CvPROTOLEN(sv) \ +#define CvPROTOLEN(sv) \ ( \ SvPOK(sv) \ ? SvTYPE(sv) == SVt_PVCV && CvAUTOLOAD(sv) \ @@ -109,124 +109,124 @@ See L. /* CV has the `:method` attribute. This used to be called CVf_METHOD but is * renamed to avoid collision with an upcoming feature */ -#define CVf_NOWARN_AMBIGUOUS 0x0001 +#define CVf_NOWARN_AMBIGUOUS 0x0001 -#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_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 /* CV is not pointed to by a GV */ -#define CVf_UNIQUE 0x0100 /* sub is only called once (eg PL_main_cv, +#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 /* 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 +#define CVf_NODEBUG 0x0200 /* no DB::sub indirection for this CV (esp. useful for special XSUBs) */ -#define CVf_CVGV_RC 0x0400 /* CvGV is reference counted */ +#define CVf_CVGV_RC 0x0400 /* CvGV is reference counted */ #if defined(PERL_CORE) || defined(PERL_EXT) -# define CVf_SLABBED 0x0800 /* Holds refcount on op slab */ +# define CVf_SLABBED 0x0800 /* Holds refcount on op slab */ #endif -#define CVf_DYNFILE 0x1000 /* The filename is malloced */ -#define CVf_AUTOLOAD 0x2000 /* SvPVX contains AUTOLOADed sub name */ -#define CVf_HASEVAL 0x4000 /* contains string eval */ -#define CVf_NAMED 0x8000 /* Has a name HEK */ -#define CVf_LEXICAL 0x10000 /* Omit package from name */ -#define CVf_ANONCONST 0x20000 /* :const - create anonconst op */ +#define CVf_DYNFILE 0x1000 /* The filename is malloced */ +#define CVf_AUTOLOAD 0x2000 /* SvPVX contains AUTOLOADed sub name */ +#define CVf_HASEVAL 0x4000 /* contains string eval */ +#define CVf_NAMED 0x8000 /* Has a name HEK */ +#define CVf_LEXICAL 0x10000 /* Omit package from name */ +#define CVf_ANONCONST 0x20000 /* :const - create anonconst op */ #define CVf_SIGNATURE 0x40000 /* CV uses a signature */ #define CVf_REFCOUNTED_ANYSV 0x80000 /* CvXSUBANY().any_sv is refcounted */ /* This symbol for optimised communication between toke.c and op.c: */ -#define CVf_BUILTIN_ATTRS (CVf_NOWARN_AMBIGUOUS|CVf_LVALUE|CVf_ANONCONST) +#define CVf_BUILTIN_ATTRS (CVf_NOWARN_AMBIGUOUS|CVf_LVALUE|CVf_ANONCONST) -#define CvCLONE(cv) (CvFLAGS(cv) & CVf_CLONE) -#define CvCLONE_on(cv) (CvFLAGS(cv) |= CVf_CLONE) -#define CvCLONE_off(cv) (CvFLAGS(cv) &= ~CVf_CLONE) +#define CvCLONE(cv) (CvFLAGS(cv) & CVf_CLONE) +#define CvCLONE_on(cv) (CvFLAGS(cv) |= CVf_CLONE) +#define CvCLONE_off(cv) (CvFLAGS(cv) &= ~CVf_CLONE) -#define CvCLONED(cv) (CvFLAGS(cv) & CVf_CLONED) -#define CvCLONED_on(cv) (CvFLAGS(cv) |= CVf_CLONED) -#define CvCLONED_off(cv) (CvFLAGS(cv) &= ~CVf_CLONED) +#define CvCLONED(cv) (CvFLAGS(cv) & CVf_CLONED) +#define CvCLONED_on(cv) (CvFLAGS(cv) |= CVf_CLONED) +#define CvCLONED_off(cv) (CvFLAGS(cv) &= ~CVf_CLONED) -#define CvANON(cv) (CvFLAGS(cv) & CVf_ANON) -#define CvANON_on(cv) (CvFLAGS(cv) |= CVf_ANON) -#define CvANON_off(cv) (CvFLAGS(cv) &= ~CVf_ANON) +#define CvANON(cv) (CvFLAGS(cv) & CVf_ANON) +#define CvANON_on(cv) (CvFLAGS(cv) |= CVf_ANON) +#define CvANON_off(cv) (CvFLAGS(cv) &= ~CVf_ANON) /* CvEVAL or CvSPECIAL */ -#define CvUNIQUE(cv) (CvFLAGS(cv) & CVf_UNIQUE) -#define CvUNIQUE_on(cv) (CvFLAGS(cv) |= CVf_UNIQUE) -#define CvUNIQUE_off(cv) (CvFLAGS(cv) &= ~CVf_UNIQUE) +#define CvUNIQUE(cv) (CvFLAGS(cv) & CVf_UNIQUE) +#define CvUNIQUE_on(cv) (CvFLAGS(cv) |= CVf_UNIQUE) +#define CvUNIQUE_off(cv) (CvFLAGS(cv) &= ~CVf_UNIQUE) -#define CvNODEBUG(cv) (CvFLAGS(cv) & CVf_NODEBUG) -#define CvNODEBUG_on(cv) (CvFLAGS(cv) |= CVf_NODEBUG) -#define CvNODEBUG_off(cv) (CvFLAGS(cv) &= ~CVf_NODEBUG) +#define CvNODEBUG(cv) (CvFLAGS(cv) & CVf_NODEBUG) +#define CvNODEBUG_on(cv) (CvFLAGS(cv) |= CVf_NODEBUG) +#define CvNODEBUG_off(cv) (CvFLAGS(cv) &= ~CVf_NODEBUG) -#define CvNOWARN_AMBIGUOUS(cv) (CvFLAGS(cv) & CVf_NOWARN_AMBIGUOUS) -#define CvNOWARN_AMBIGUOUS_on(cv) (CvFLAGS(cv) |= CVf_NOWARN_AMBIGUOUS) -#define CvNOWARN_AMBIGUOUS_off(cv) (CvFLAGS(cv) &= ~CVf_NOWARN_AMBIGUOUS) +#define CvNOWARN_AMBIGUOUS(cv) (CvFLAGS(cv) & CVf_NOWARN_AMBIGUOUS) +#define CvNOWARN_AMBIGUOUS_on(cv) (CvFLAGS(cv) |= CVf_NOWARN_AMBIGUOUS) +#define CvNOWARN_AMBIGUOUS_off(cv) (CvFLAGS(cv) &= ~CVf_NOWARN_AMBIGUOUS) -#define CvLVALUE(cv) (CvFLAGS(cv) & CVf_LVALUE) -#define CvLVALUE_on(cv) (CvFLAGS(cv) |= CVf_LVALUE) -#define CvLVALUE_off(cv) (CvFLAGS(cv) &= ~CVf_LVALUE) +#define CvLVALUE(cv) (CvFLAGS(cv) & CVf_LVALUE) +#define CvLVALUE_on(cv) (CvFLAGS(cv) |= CVf_LVALUE) +#define CvLVALUE_off(cv) (CvFLAGS(cv) &= ~CVf_LVALUE) /* eval or PL_main_cv */ -#define CvEVAL(cv) (CvUNIQUE(cv) && !SvFAKE(cv)) -#define CvEVAL_on(cv) (CvUNIQUE_on(cv),SvFAKE_off(cv)) -#define CvEVAL_off(cv) CvUNIQUE_off(cv) +#define CvEVAL(cv) (CvUNIQUE(cv) && !SvFAKE(cv)) +#define CvEVAL_on(cv) (CvUNIQUE_on(cv),SvFAKE_off(cv)) +#define CvEVAL_off(cv) CvUNIQUE_off(cv) /* BEGIN|CHECK|INIT|UNITCHECK|END */ -#define CvSPECIAL(cv) (CvUNIQUE(cv) && SvFAKE(cv)) -#define CvSPECIAL_on(cv) (CvUNIQUE_on(cv),SvFAKE_on(cv)) -#define CvSPECIAL_off(cv) (CvUNIQUE_off(cv),SvFAKE_off(cv)) +#define CvSPECIAL(cv) (CvUNIQUE(cv) && SvFAKE(cv)) +#define CvSPECIAL_on(cv) (CvUNIQUE_on(cv),SvFAKE_on(cv)) +#define CvSPECIAL_off(cv) (CvUNIQUE_off(cv),SvFAKE_off(cv)) -#define CvCONST(cv) (CvFLAGS(cv) & CVf_CONST) -#define CvCONST_on(cv) (CvFLAGS(cv) |= CVf_CONST) -#define CvCONST_off(cv) (CvFLAGS(cv) &= ~CVf_CONST) +#define CvCONST(cv) (CvFLAGS(cv) & CVf_CONST) +#define CvCONST_on(cv) (CvFLAGS(cv) |= CVf_CONST) +#define CvCONST_off(cv) (CvFLAGS(cv) &= ~CVf_CONST) -#define CvWEAKOUTSIDE(cv) (CvFLAGS(cv) & CVf_WEAKOUTSIDE) -#define CvWEAKOUTSIDE_on(cv) (CvFLAGS(cv) |= CVf_WEAKOUTSIDE) -#define CvWEAKOUTSIDE_off(cv) (CvFLAGS(cv) &= ~CVf_WEAKOUTSIDE) +#define CvWEAKOUTSIDE(cv) (CvFLAGS(cv) & CVf_WEAKOUTSIDE) +#define CvWEAKOUTSIDE_on(cv) (CvFLAGS(cv) |= CVf_WEAKOUTSIDE) +#define CvWEAKOUTSIDE_off(cv) (CvFLAGS(cv) &= ~CVf_WEAKOUTSIDE) -#define CvISXSUB(cv) (CvFLAGS(cv) & CVf_ISXSUB) -#define CvISXSUB_on(cv) (CvFLAGS(cv) |= CVf_ISXSUB) -#define CvISXSUB_off(cv) (CvFLAGS(cv) &= ~CVf_ISXSUB) +#define CvISXSUB(cv) (CvFLAGS(cv) & CVf_ISXSUB) +#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) +#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) #ifdef PERL_CORE -# define CvSLABBED(cv) (CvFLAGS(cv) & CVf_SLABBED) -# define CvSLABBED_on(cv) (CvFLAGS(cv) |= CVf_SLABBED) -# define CvSLABBED_off(cv) (CvFLAGS(cv) &= ~CVf_SLABBED) +# define CvSLABBED(cv) (CvFLAGS(cv) & CVf_SLABBED) +# define CvSLABBED_on(cv) (CvFLAGS(cv) |= CVf_SLABBED) +# define CvSLABBED_off(cv) (CvFLAGS(cv) &= ~CVf_SLABBED) #endif -#define CvDYNFILE(cv) (CvFLAGS(cv) & CVf_DYNFILE) -#define CvDYNFILE_on(cv) (CvFLAGS(cv) |= CVf_DYNFILE) -#define CvDYNFILE_off(cv) (CvFLAGS(cv) &= ~CVf_DYNFILE) +#define CvDYNFILE(cv) (CvFLAGS(cv) & CVf_DYNFILE) +#define CvDYNFILE_on(cv) (CvFLAGS(cv) |= CVf_DYNFILE) +#define CvDYNFILE_off(cv) (CvFLAGS(cv) &= ~CVf_DYNFILE) -#define CvAUTOLOAD(cv) (CvFLAGS(cv) & CVf_AUTOLOAD) -#define CvAUTOLOAD_on(cv) (CvFLAGS(cv) |= CVf_AUTOLOAD) -#define CvAUTOLOAD_off(cv) (CvFLAGS(cv) &= ~CVf_AUTOLOAD) +#define CvAUTOLOAD(cv) (CvFLAGS(cv) & CVf_AUTOLOAD) +#define CvAUTOLOAD_on(cv) (CvFLAGS(cv) |= CVf_AUTOLOAD) +#define CvAUTOLOAD_off(cv) (CvFLAGS(cv) &= ~CVf_AUTOLOAD) -#define CvHASEVAL(cv) (CvFLAGS(cv) & CVf_HASEVAL) -#define CvHASEVAL_on(cv) (CvFLAGS(cv) |= CVf_HASEVAL) -#define CvHASEVAL_off(cv) (CvFLAGS(cv) &= ~CVf_HASEVAL) +#define CvHASEVAL(cv) (CvFLAGS(cv) & CVf_HASEVAL) +#define CvHASEVAL_on(cv) (CvFLAGS(cv) |= CVf_HASEVAL) +#define CvHASEVAL_off(cv) (CvFLAGS(cv) &= ~CVf_HASEVAL) -#define CvNAMED(cv) (CvFLAGS(cv) & CVf_NAMED) -#define CvNAMED_on(cv) (CvFLAGS(cv) |= CVf_NAMED) -#define CvNAMED_off(cv) (CvFLAGS(cv) &= ~CVf_NAMED) +#define CvNAMED(cv) (CvFLAGS(cv) & CVf_NAMED) +#define CvNAMED_on(cv) (CvFLAGS(cv) |= CVf_NAMED) +#define CvNAMED_off(cv) (CvFLAGS(cv) &= ~CVf_NAMED) -#define CvLEXICAL(cv) (CvFLAGS(cv) & CVf_LEXICAL) -#define CvLEXICAL_on(cv) (CvFLAGS(cv) |= CVf_LEXICAL) -#define CvLEXICAL_off(cv) (CvFLAGS(cv) &= ~CVf_LEXICAL) +#define CvLEXICAL(cv) (CvFLAGS(cv) & CVf_LEXICAL) +#define CvLEXICAL_on(cv) (CvFLAGS(cv) |= CVf_LEXICAL) +#define CvLEXICAL_off(cv) (CvFLAGS(cv) &= ~CVf_LEXICAL) -#define CvANONCONST(cv) (CvFLAGS(cv) & CVf_ANONCONST) -#define CvANONCONST_on(cv) (CvFLAGS(cv) |= CVf_ANONCONST) -#define CvANONCONST_off(cv) (CvFLAGS(cv) &= ~CVf_ANONCONST) +#define CvANONCONST(cv) (CvFLAGS(cv) & CVf_ANONCONST) +#define CvANONCONST_on(cv) (CvFLAGS(cv) |= CVf_ANONCONST) +#define CvANONCONST_off(cv) (CvFLAGS(cv) &= ~CVf_ANONCONST) -#define CvSIGNATURE(cv) (CvFLAGS(cv) & CVf_SIGNATURE) -#define CvSIGNATURE_on(cv) (CvFLAGS(cv) |= CVf_SIGNATURE) -#define CvSIGNATURE_off(cv) (CvFLAGS(cv) &= ~CVf_SIGNATURE) +#define CvSIGNATURE(cv) (CvFLAGS(cv) & CVf_SIGNATURE) +#define CvSIGNATURE_on(cv) (CvFLAGS(cv) |= CVf_SIGNATURE) +#define CvSIGNATURE_off(cv) (CvFLAGS(cv) &= ~CVf_SIGNATURE) /* @@ -266,7 +266,7 @@ Helper macro to turn off the C flag. #endif /* Flags for newXS_flags */ -#define XS_DYNAMIC_FILENAME 0x01 /* The filename isn't static */ +#define XS_DYNAMIC_FILENAME 0x01 /* The filename isn't static */ PERL_STATIC_INLINE HEK * CvNAME_HEK(CV *sv) @@ -288,11 +288,11 @@ CvNAME_HEK(CV *sv) /* This lowers the reference count of the previous value, but does *not* increment the reference count of the new value. */ #define CvNAME_HEK_set(cv, hek) ( \ - CvNAME_HEK((CV *)(cv)) \ - ? unshare_hek(SvANY((CV *)(cv))->xcv_gv_u.xcv_hek) \ - : (void)0, \ + CvNAME_HEK((CV *)(cv)) \ + ? unshare_hek(SvANY((CV *)(cv))->xcv_gv_u.xcv_hek) \ + : (void)0, \ ((XPVCV*)MUTABLE_PTR(SvANY(cv)))->xcv_gv_u.xcv_hek = (hek), \ - CvNAMED_on(cv) \ + CvNAMED_on(cv) \ ) /* @@ -351,12 +351,12 @@ should print 123: typedef OP *(*Perl_call_checker)(pTHX_ OP *, GV *, SV *); -#define CALL_CHECKER_REQUIRE_GV MGf_REQUIRE_GV +#define CALL_CHECKER_REQUIRE_GV MGf_REQUIRE_GV -#define CV_NAME_NOTQUAL 1 +#define CV_NAME_NOTQUAL 1 #ifdef PERL_CORE -# define CV_UNDEF_KEEP_NAME 1 +# define CV_UNDEF_KEEP_NAME 1 #endif /* diff --git a/dosish.h b/dosish.h index 8a1ce980484bf..b6c51fcd14bc9 100644 --- a/dosish.h +++ b/dosish.h @@ -14,12 +14,12 @@ #endif #ifdef WIN32 -# define PERL_SYS_INIT_BODY(c,v) \ +# define PERL_SYS_INIT_BODY(c,v) \ MALLOC_CHECK_TAINT2(*c,*v) Perl_win32_init(c,v); PERLIO_INIT # define PERL_SYS_TERM_BODY() Perl_win32_term() # define BIT_BUCKET "nul" #else -# define PERL_SYS_INIT_BODY(c,v) \ +# define PERL_SYS_INIT_BODY(c,v) \ MALLOC_CHECK_TAINT2(*c,*v); PERLIO_INIT # define BIT_BUCKET "\\dev\\nul" /* "wanna be like, umm, Newlined, or somethin?" */ #endif @@ -34,23 +34,23 @@ ENV_TERM; USER_PROP_MUTEX_TERM; LOCALE_TERM; \ HINTS_REFCNT_TERM; KEYWORD_PLUGIN_MUTEX_TERM; \ OP_CHECK_MUTEX_TERM; OP_REFCNT_TERM; \ - PERLIO_TERM; MALLOC_TERM; + PERLIO_TERM; MALLOC_TERM; #endif #define dXSUB_SYS dNOOP /* USEMYBINMODE - * This symbol, if defined, indicates that the program should - * use the routine my_binmode(FILE *fp, char iotype, int mode) to insure - * that a file is in "binary" mode -- that is, that no translation - * of bytes occurs on read or write operations. + * This symbol, if defined, indicates that the program should + * use the routine my_binmode(FILE *fp, char iotype, int mode) to insure + * that a file is in "binary" mode -- that is, that no translation + * of bytes occurs on read or write operations. */ #undef USEMYBINMODE /* Stat_t: - * This symbol holds the type used to declare buffers for information - * returned by stat(). It's usually just struct stat. It may be necessary - * to include and to get any typedef'ed - * information. + * This symbol holds the type used to declare buffers for information + * returned by stat(). It's usually just struct stat. It may be necessary + * to include and to get any typedef'ed + * information. */ #if defined(WIN32) # define Stat_t struct w32_stat @@ -59,27 +59,27 @@ #endif /* USE_STAT_RDEV: - * This symbol is defined if this system has a stat structure declaring - * st_rdev + * This symbol is defined if this system has a stat structure declaring + * st_rdev */ -#define USE_STAT_RDEV /**/ +#define USE_STAT_RDEV /**/ /* ACME_MESS: - * This symbol, if defined, indicates that error messages should be - * should be generated in a format that allows the use of the Acme - * GUI/editor's autofind feature. + * This symbol, if defined, indicates that error messages should be + * should be generated in a format that allows the use of the Acme + * GUI/editor's autofind feature. */ -#undef ACME_MESS /**/ +#undef ACME_MESS /**/ /* ALTERNATE_SHEBANG: - * This symbol, if defined, contains a "magic" string which may be used - * as the first line of a Perl program designed to be executed directly - * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG - * begins with a character other then #, then Perl will only treat - * it as a command line if it finds the string "perl" in the first - * word; otherwise it's treated as the first line of code in the script. - * (IOW, Perl won't hand off to another interpreter via an alternate - * shebang sequence that might be legal Perl code.) + * This symbol, if defined, contains a "magic" string which may be used + * as the first line of a Perl program designed to be executed directly + * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG + * begins with a character other then #, then Perl will only treat + * it as a command line if it finds the string "perl" in the first + * word; otherwise it's treated as the first line of code in the script. + * (IOW, Perl won't hand off to another interpreter via an alternate + * shebang sequence that might be legal Perl code.) */ /* #define ALTERNATE_SHEBANG "#!" / **/ @@ -105,7 +105,7 @@ # define HAS_KILL # define HAS_WAIT # define HAS_CHOWN -#endif /* WIN32 */ +#endif /* WIN32 */ /* Don't go reading from /dev/urandom */ #define PERL_NO_DEV_RANDOM diff --git a/fakesdio.h b/fakesdio.h index b8f972a0a98b9..dc8ad0a9463e8 100644 --- a/fakesdio.h +++ b/fakesdio.h @@ -13,7 +13,7 @@ */ #define _CANNOT "CANNOT" #undef FILE -#define FILE PerlIO +#define FILE PerlIO #undef clearerr #undef fclose #undef fdopen @@ -57,8 +57,8 @@ #undef vfprintf #undef printf -/* printf used to live in perl.h like this - more sophisticated - than the rest +/* printf used to live in perl.h like this - more sophisticated + than the rest */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) && !defined(PERL_GCC_PEDANTIC) #define printf(fmt,args...) PerlIO_stdoutf(fmt,##args) @@ -66,61 +66,61 @@ #define printf PerlIO_stdoutf #endif -#define fprintf PerlIO_printf -#define stdin PerlIO_stdin() -#define stdout PerlIO_stdout() -#define stderr PerlIO_stderr() -#define tmpfile() PerlIO_tmpfile() -#define fclose(f) PerlIO_close(f) -#define fflush(f) PerlIO_flush(f) -#define fopen(p,m) PerlIO_open(p,m) -#define vfprintf(f,fmt,a) PerlIO_vprintf(f,fmt,a) -#define fgetc(f) PerlIO_getc(f) -#define fputc(c,f) PerlIO_putc(f,c) -#define fputs(s,f) PerlIO_puts(f,s) -#define getc(f) PerlIO_getc(f) -#define getc_unlocked(f) PerlIO_getc(f) -#define putc(c,f) PerlIO_putc(f,c) -#define putc_unlocked(c,f) PerlIO_putc(c,f) -#define ungetc(c,f) PerlIO_ungetc(f,c) +#define fprintf PerlIO_printf +#define stdin PerlIO_stdin() +#define stdout PerlIO_stdout() +#define stderr PerlIO_stderr() +#define tmpfile() PerlIO_tmpfile() +#define fclose(f) PerlIO_close(f) +#define fflush(f) PerlIO_flush(f) +#define fopen(p,m) PerlIO_open(p,m) +#define vfprintf(f,fmt,a) PerlIO_vprintf(f,fmt,a) +#define fgetc(f) PerlIO_getc(f) +#define fputc(c,f) PerlIO_putc(f,c) +#define fputs(s,f) PerlIO_puts(f,s) +#define getc(f) PerlIO_getc(f) +#define getc_unlocked(f) PerlIO_getc(f) +#define putc(c,f) PerlIO_putc(f,c) +#define putc_unlocked(c,f) PerlIO_putc(c,f) +#define ungetc(c,f) PerlIO_ungetc(f,c) #if 0 /* return values of read/write need work */ -#define fread(b,s,c,f) PerlIO_read(f,b,(s*c)) -#define fwrite(b,s,c,f) PerlIO_write(f,b,(s*c)) +#define fread(b,s,c,f) PerlIO_read(f,b,(s*c)) +#define fwrite(b,s,c,f) PerlIO_write(f,b,(s*c)) #else -#define fread(b,s,c,f) _CANNOT fread -#define fwrite(b,s,c,f) _CANNOT fwrite +#define fread(b,s,c,f) _CANNOT fread +#define fwrite(b,s,c,f) _CANNOT fwrite #endif -#define fseek(f,o,w) PerlIO_seek(f,o,w) -#define ftell(f) PerlIO_tell(f) -#define rewind(f) PerlIO_rewind(f) -#define clearerr(f) PerlIO_clearerr(f) -#define feof(f) PerlIO_eof(f) -#define ferror(f) PerlIO_error(f) -#define fdopen(fd,p) PerlIO_fdopen(fd,p) -#define fileno(f) PerlIO_fileno(f) -#define popen(c,m) my_popen(c,m) -#define pclose(f) my_pclose(f) +#define fseek(f,o,w) PerlIO_seek(f,o,w) +#define ftell(f) PerlIO_tell(f) +#define rewind(f) PerlIO_rewind(f) +#define clearerr(f) PerlIO_clearerr(f) +#define feof(f) PerlIO_eof(f) +#define ferror(f) PerlIO_error(f) +#define fdopen(fd,p) PerlIO_fdopen(fd,p) +#define fileno(f) PerlIO_fileno(f) +#define popen(c,m) my_popen(c,m) +#define pclose(f) my_pclose(f) -#define fsetpos(f,p) _CANNOT _fsetpos_ -#define fgetpos(f,p) _CANNOT _fgetpos_ +#define fsetpos(f,p) _CANNOT _fsetpos_ +#define fgetpos(f,p) _CANNOT _fgetpos_ -#define __filbuf(f) _CANNOT __filbuf_ -#define _filbuf(f) _CANNOT _filbuf_ -#define __flsbuf(c,f) _CANNOT __flsbuf_ -#define _flsbuf(c,f) _CANNOT _flsbuf_ -#define getw(f) _CANNOT _getw_ -#define putw(v,f) _CANNOT _putw_ +#define __filbuf(f) _CANNOT __filbuf_ +#define _filbuf(f) _CANNOT _filbuf_ +#define __flsbuf(c,f) _CANNOT __flsbuf_ +#define _flsbuf(c,f) _CANNOT _flsbuf_ +#define getw(f) _CANNOT _getw_ +#define putw(v,f) _CANNOT _putw_ #if SFIO_VERSION < 20000101L -#define flockfile(f) _CANNOT _flockfile_ -#define ftrylockfile(f) _CANNOT _ftrylockfile_ -#define funlockfile(f) _CANNOT _funlockfile_ +#define flockfile(f) _CANNOT _flockfile_ +#define ftrylockfile(f) _CANNOT _ftrylockfile_ +#define funlockfile(f) _CANNOT _funlockfile_ #endif -#define freopen(p,m,f) _CANNOT _freopen_ -#define setbuf(f,b) _CANNOT _setbuf_ -#define setvbuf(f,b,x,s) _CANNOT _setvbuf_ -#define fscanf _CANNOT _fscanf_ -#define fgets(s,n,f) _CANNOT _fgets_ +#define freopen(p,m,f) _CANNOT _freopen_ +#define setbuf(f,b) _CANNOT _setbuf_ +#define setvbuf(f,b,x,s) _CANNOT _setvbuf_ +#define fscanf _CANNOT _fscanf_ +#define fgets(s,n,f) _CANNOT _fgets_ /* * ex: set ts=8 sts=4 sw=4 et: diff --git a/gv.h b/gv.h index 68865b99916d6..ad41e6ce7041a 100644 --- a/gv.h +++ b/gv.h @@ -9,67 +9,67 @@ */ struct gp { - SV * gp_sv; /* scalar value */ - struct io * gp_io; /* filehandle value */ - CV * gp_cv; /* subroutine value */ - U32 gp_cvgen; /* generational validity of cached gp_cv */ - U32 gp_refcnt; /* how many globs point to this? */ - HV * gp_hv; /* hash value */ - AV * gp_av; /* array value */ - CV * gp_form; /* format value */ - GV * gp_egv; /* effective gv, if *glob */ - PERL_BITFIELD32 gp_line:31; /* line first declared at (for -w) */ + SV * gp_sv; /* scalar value */ + struct io * gp_io; /* filehandle value */ + CV * gp_cv; /* subroutine value */ + U32 gp_cvgen; /* generational validity of cached gp_cv */ + U32 gp_refcnt; /* how many globs point to this? */ + HV * gp_hv; /* hash value */ + AV * gp_av; /* array value */ + CV * gp_form; /* format value */ + GV * gp_egv; /* effective gv, if *glob */ + PERL_BITFIELD32 gp_line:31; /* line first declared at (for -w) */ PERL_BITFIELD32 gp_flags:1; - HEK * gp_file_hek; /* file first declared in (for -w) */ + HEK * gp_file_hek; /* file first declared in (for -w) */ }; -#define GvXPVGV(gv) ((XPVGV*)SvANY(gv)) +#define GvXPVGV(gv) ((XPVGV*)SvANY(gv)) #if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS) && !defined(__INTEL_COMPILER) -# define GvGP(gv) \ - ((GP *)(*({GV *const _gvgp = (GV *) (gv); \ +# define GvGP(gv) \ + ((GP *)(*({GV *const _gvgp = (GV *) (gv); \ assert(SvTYPE(_gvgp) == SVt_PVGV || SvTYPE(_gvgp) == SVt_PVLV); \ - assert(isGV_with_GP(_gvgp)); \ + assert(isGV_with_GP(_gvgp)); \ &((_gvgp)->sv_u.svu_gp);}))) -# define GvGP_set(gv,gp) \ - {GV *const _gvgp = (GV *) (gv); \ +# define GvGP_set(gv,gp) \ + {GV *const _gvgp = (GV *) (gv); \ assert(SvTYPE(_gvgp) == SVt_PVGV || SvTYPE(_gvgp) == SVt_PVLV); \ - assert(isGV_with_GP(_gvgp)); \ + assert(isGV_with_GP(_gvgp)); \ (_gvgp)->sv_u.svu_gp = (gp); } -# define GvFLAGS(gv) \ - (*({GV *const _gvflags = (GV *) (gv); \ +# define GvFLAGS(gv) \ + (*({GV *const _gvflags = (GV *) (gv); \ assert(SvTYPE(_gvflags) == SVt_PVGV || SvTYPE(_gvflags) == SVt_PVLV); \ - assert(isGV_with_GP(_gvflags)); \ + assert(isGV_with_GP(_gvflags)); \ &(GvXPVGV(_gvflags)->xpv_cur);})) -# define GvSTASH(gv) \ - (*({ GV * const _gvstash = (GV *) (gv); \ - assert(isGV_with_GP(_gvstash)); \ +# define GvSTASH(gv) \ + (*({ GV * const _gvstash = (GV *) (gv); \ + assert(isGV_with_GP(_gvstash)); \ assert(SvTYPE(_gvstash) == SVt_PVGV || SvTYPE(_gvstash) >= SVt_PVLV); \ - &(GvXPVGV(_gvstash)->xnv_u.xgv_stash); \ + &(GvXPVGV(_gvstash)->xnv_u.xgv_stash); \ })) -# define GvNAME_HEK(gv) \ - (*({ GV * const _gvname_hek = (GV *) (gv); \ - assert(isGV_with_GP(_gvname_hek)); \ +# define GvNAME_HEK(gv) \ + (*({ GV * const _gvname_hek = (GV *) (gv); \ + assert(isGV_with_GP(_gvname_hek)); \ assert(SvTYPE(_gvname_hek) == SVt_PVGV || SvTYPE(_gvname_hek) >= SVt_PVLV); \ - &(GvXPVGV(_gvname_hek)->xiv_u.xivu_namehek); \ + &(GvXPVGV(_gvname_hek)->xiv_u.xivu_namehek); \ })) -# 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)); }) -# define GvNAMEUTF8(gv) ({ assert(GvNAME_HEK(gv)); HEK_UTF8(GvNAME_HEK(gv)); }) +# 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)); }) +# define GvNAMEUTF8(gv) ({ assert(GvNAME_HEK(gv)); HEK_UTF8(GvNAME_HEK(gv)); }) #else -# 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) -# define GvNAME_get(gv) HEK_KEY(GvNAME_HEK(gv)) -# define GvNAMELEN_get(gv) HEK_LEN(GvNAME_HEK(gv)) -# define GvNAMEUTF8(gv) HEK_UTF8(GvNAME_HEK(gv)) +# 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) +# define GvNAME_get(gv) HEK_KEY(GvNAME_HEK(gv)) +# define GvNAMELEN_get(gv) HEK_LEN(GvNAME_HEK(gv)) +# define GvNAMEUTF8(gv) HEK_UTF8(GvNAME_HEK(gv)) #endif -#define GvNAME(gv) GvNAME_get(gv) -#define GvNAMELEN(gv) GvNAMELEN_get(gv) +#define GvNAME(gv) GvNAME_get(gv) +#define GvNAMELEN(gv) GvNAMELEN_get(gv) /* =for apidoc Am|SV*|GvSV|GV* gv @@ -98,16 +98,16 @@ Return the CV from the GV. =cut */ -#define GvSV(gv) (GvGP(gv)->gp_sv) +#define GvSV(gv) (GvGP(gv)->gp_sv) #ifdef PERL_DONT_CREATE_GVSV -#define GvSVn(gv) (*(GvGP(gv)->gp_sv ? \ +#define GvSVn(gv) (*(GvGP(gv)->gp_sv ? \ &(GvGP(gv)->gp_sv) : \ &(GvGP(gv_SVadd(gv))->gp_sv))) #else -#define GvSVn(gv) GvSV(gv) +#define GvSVn(gv) GvSV(gv) #endif -#define GvREFCNT(gv) (GvGP(gv)->gp_refcnt) +#define GvREFCNT(gv) (GvGP(gv)->gp_refcnt) #define GvIO(gv) \ ( \ (gv) \ @@ -119,92 +119,92 @@ Return the CV from the GV. ? GvIOp(gv) \ : NULL \ ) -#define GvIOp(gv) (GvGP(gv)->gp_io) -#define GvIOn(gv) (GvIO(gv) ? GvIOp(gv) : GvIOp(gv_IOadd(gv))) +#define GvIOp(gv) (GvGP(gv)->gp_io) +#define GvIOn(gv) (GvIO(gv) ? GvIOp(gv) : GvIOp(gv_IOadd(gv))) -#define GvFORM(gv) (GvGP(gv)->gp_form) -#define GvAV(gv) (GvGP(gv)->gp_av) +#define GvFORM(gv) (GvGP(gv)->gp_form) +#define GvAV(gv) (GvGP(gv)->gp_av) -#define GvAVn(gv) (GvGP(gv)->gp_av ? \ +#define GvAVn(gv) (GvGP(gv)->gp_av ? \ GvGP(gv)->gp_av : \ GvGP(gv_AVadd(gv))->gp_av) -#define GvHV(gv) ((GvGP(gv))->gp_hv) +#define GvHV(gv) ((GvGP(gv))->gp_hv) -#define GvHVn(gv) (GvGP(gv)->gp_hv ? \ +#define GvHVn(gv) (GvGP(gv)->gp_hv ? \ GvGP(gv)->gp_hv : \ GvGP(gv_HVadd(gv))->gp_hv) -#define GvCV(gv) ((CV*)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) +#define GvCV(gv) ((CV*)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) -#define GvGPFLAGS(gv) (GvGP(gv)->gp_flags) +#define GvGPFLAGS(gv) (GvGP(gv)->gp_flags) -#define GvLINE(gv) (GvGP(gv)->gp_line) -#define GvFILE_HEK(gv) (GvGP(gv)->gp_file_hek) -#define GvFILEx(gv) HEK_KEY(GvFILE_HEK(gv)) -#define GvFILE(gv) (GvFILE_HEK(gv) ? GvFILEx(gv) : NULL) -#define GvFILEGV(gv) (GvFILE_HEK(gv) ? gv_fetchfile(GvFILEx(gv)) : NULL) +#define GvLINE(gv) (GvGP(gv)->gp_line) +#define GvFILE_HEK(gv) (GvGP(gv)->gp_file_hek) +#define GvFILEx(gv) HEK_KEY(GvFILE_HEK(gv)) +#define GvFILE(gv) (GvFILE_HEK(gv) ? GvFILEx(gv) : NULL) +#define GvFILEGV(gv) (GvFILE_HEK(gv) ? gv_fetchfile(GvFILEx(gv)) : NULL) -#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 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 GvENAMELEN(gv) GvNAMELEN(GvEGV(gv) ? GvEGV(gv) : gv) #define GvENAMEUTF8(gv) GvNAMEUTF8(GvEGV(gv) ? GvEGV(gv) : gv) #define GvENAME_HEK(gv) GvNAME_HEK(GvEGV(gv) ? GvEGV(gv) : gv) -#define GvESTASH(gv) GvSTASH(GvEGV(gv) ? GvEGV(gv) : gv) +#define GvESTASH(gv) GvSTASH(GvEGV(gv) ? GvEGV(gv) : gv) /* GVf_INTRO is one-shot flag which indicates that the next assignment of a reference to the glob is to be localised; it distinguishes 'local *g = $ref' from '*g = $ref'. */ -#define GVf_INTRO 0x01 -#define GVf_MULTI 0x02 -#define GVf_ASSUMECV 0x04 +#define GVf_INTRO 0x01 +#define GVf_MULTI 0x02 +#define GVf_ASSUMECV 0x04 #define GVf_RESERVED 0x08 /* unused */ -#define GVf_IMPORTED 0xF0 -#define GVf_IMPORTED_SV 0x10 -#define GVf_IMPORTED_AV 0x20 -#define GVf_IMPORTED_HV 0x40 -#define GVf_IMPORTED_CV 0x80 +#define GVf_IMPORTED 0xF0 +#define GVf_IMPORTED_SV 0x10 +#define GVf_IMPORTED_AV 0x20 +#define GVf_IMPORTED_HV 0x40 +#define GVf_IMPORTED_CV 0x80 -#define GvINTRO(gv) (GvFLAGS(gv) & GVf_INTRO) -#define GvINTRO_on(gv) (GvFLAGS(gv) |= GVf_INTRO) -#define GvINTRO_off(gv) (GvFLAGS(gv) &= ~GVf_INTRO) +#define GvINTRO(gv) (GvFLAGS(gv) & GVf_INTRO) +#define GvINTRO_on(gv) (GvFLAGS(gv) |= GVf_INTRO) +#define GvINTRO_off(gv) (GvFLAGS(gv) &= ~GVf_INTRO) -#define GvMULTI(gv) (GvFLAGS(gv) & GVf_MULTI) -#define GvMULTI_on(gv) (GvFLAGS(gv) |= GVf_MULTI) -#define GvMULTI_off(gv) (GvFLAGS(gv) &= ~GVf_MULTI) +#define GvMULTI(gv) (GvFLAGS(gv) & GVf_MULTI) +#define GvMULTI_on(gv) (GvFLAGS(gv) |= GVf_MULTI) +#define GvMULTI_off(gv) (GvFLAGS(gv) &= ~GVf_MULTI) -#define GvASSUMECV(gv) (GvFLAGS(gv) & GVf_ASSUMECV) -#define GvASSUMECV_on(gv) (GvFLAGS(gv) |= GVf_ASSUMECV) -#define GvASSUMECV_off(gv) (GvFLAGS(gv) &= ~GVf_ASSUMECV) +#define GvASSUMECV(gv) (GvFLAGS(gv) & GVf_ASSUMECV) +#define GvASSUMECV_on(gv) (GvFLAGS(gv) |= GVf_ASSUMECV) +#define GvASSUMECV_off(gv) (GvFLAGS(gv) &= ~GVf_ASSUMECV) -#define GvIMPORTED(gv) (GvFLAGS(gv) & GVf_IMPORTED) -#define GvIMPORTED_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED) -#define GvIMPORTED_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED) +#define GvIMPORTED(gv) (GvFLAGS(gv) & GVf_IMPORTED) +#define GvIMPORTED_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED) +#define GvIMPORTED_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED) -#define GvIMPORTED_SV(gv) (GvFLAGS(gv) & GVf_IMPORTED_SV) -#define GvIMPORTED_SV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_SV) -#define GvIMPORTED_SV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_SV) +#define GvIMPORTED_SV(gv) (GvFLAGS(gv) & GVf_IMPORTED_SV) +#define GvIMPORTED_SV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_SV) +#define GvIMPORTED_SV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_SV) -#define GvIMPORTED_AV(gv) (GvFLAGS(gv) & GVf_IMPORTED_AV) -#define GvIMPORTED_AV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_AV) -#define GvIMPORTED_AV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_AV) +#define GvIMPORTED_AV(gv) (GvFLAGS(gv) & GVf_IMPORTED_AV) +#define GvIMPORTED_AV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_AV) +#define GvIMPORTED_AV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_AV) -#define GvIMPORTED_HV(gv) (GvFLAGS(gv) & GVf_IMPORTED_HV) -#define GvIMPORTED_HV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_HV) -#define GvIMPORTED_HV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_HV) +#define GvIMPORTED_HV(gv) (GvFLAGS(gv) & GVf_IMPORTED_HV) +#define GvIMPORTED_HV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_HV) +#define GvIMPORTED_HV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_HV) -#define GvIMPORTED_CV(gv) (GvFLAGS(gv) & GVf_IMPORTED_CV) -#define GvIMPORTED_CV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_CV) -#define GvIMPORTED_CV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_CV) +#define GvIMPORTED_CV(gv) (GvFLAGS(gv) & GVf_IMPORTED_CV) +#define GvIMPORTED_CV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_CV) +#define GvIMPORTED_CV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_CV) #ifndef PERL_CORE -# define GvIN_PAD(gv) 0 -# define GvIN_PAD_on(gv) NOOP -# define GvIN_PAD_off(gv) NOOP +# define GvIN_PAD(gv) 0 +# define GvIN_PAD_on(gv) NOOP +# define GvIN_PAD_off(gv) NOOP # define Nullgv Null(GV*) #endif @@ -220,35 +220,35 @@ Return the CV from the GV. /* * symbol creation flags, for use in gv_fetchpv() and get_*v() */ -#define GV_ADD 0x01 /* add, if symbol not already there +#define GV_ADD 0x01 /* add, if symbol not already there For gv_name_set, adding a HEK for the first time, so don't try to free what's there. */ -#define GV_ADDMULTI 0x02 /* add, pretending it has been added +#define GV_ADDMULTI 0x02 /* add, pretending it has been added already; used also by gv_init_* */ -#define GV_ADDWARN 0x04 /* add, but warn if symbol wasn't already there */ - /* 0x08 UNUSED */ -#define GV_NOINIT 0x10 /* add, but don't init symbol, if type != PVGV */ +#define GV_ADDWARN 0x04 /* add, but warn if symbol wasn't already there */ + /* 0x08 UNUSED */ +#define GV_NOINIT 0x10 /* add, but don't init symbol, if type != PVGV */ /* This is used by toke.c to avoid turing placeholder constants in the symbol table into full PVGVs with attached constant subroutines. */ -#define GV_NOADD_NOINIT 0x20 /* Don't add the symbol if it's not there. +#define GV_NOADD_NOINIT 0x20 /* Don't add the symbol if it's not there. Don't init it if it is there but ! PVGV */ -#define GV_NOEXPAND 0x40 /* Don't expand SvOK() entries to PVGV */ -#define GV_NOTQUAL 0x80 /* A plain symbol name, not qualified with a +#define GV_NOEXPAND 0x40 /* Don't expand SvOK() entries to PVGV */ +#define GV_NOTQUAL 0x80 /* A plain symbol name, not qualified with a package (so skip checks for :: and ') */ -#define GV_AUTOLOAD 0x100 /* gv_fetchmethod_flags() should AUTOLOAD */ -#define GV_CROAK 0x200 /* gv_fetchmethod_flags() should croak */ -#define GV_ADDMG 0x400 /* add if magical */ -#define GV_NO_SVGMAGIC 0x800 /* Skip get-magic on an SV argument; +#define GV_AUTOLOAD 0x100 /* gv_fetchmethod_flags() should AUTOLOAD */ +#define GV_CROAK 0x200 /* gv_fetchmethod_flags() should croak */ +#define GV_ADDMG 0x400 /* add if magical */ +#define GV_NO_SVGMAGIC 0x800 /* Skip get-magic on an SV argument; used only by gv_fetchsv(_nomg) */ -#define GV_CACHE_ONLY 0x1000 /* return stash only if found in cache; +#define GV_CACHE_ONLY 0x1000 /* return stash only if found in cache; used only in flags parameter to gv_stash* family */ /* Flags for gv_fetchmeth_pvn and gv_autoload_pvn*/ -#define GV_SUPER 0x1000 /* SUPER::method */ +#define GV_SUPER 0x1000 /* SUPER::method */ #define GV_NOUNIVERSAL 0x2000 /* Skip UNIVERSAL lookup */ /* Flags for gv_autoload_*/ -#define GV_AUTOLOAD_ISMETHOD 1 /* autoloading a method? */ +#define GV_AUTOLOAD_ISMETHOD 1 /* autoloading a method? */ /* SVf_UTF8 (more accurately the return value from SvUTF8) is also valid as a flag to various gv_* functions, so ensure it lies @@ -283,11 +283,11 @@ Equivalent to C>. #define gv_autoload4(stash, name, len, autoload) \ gv_autoload_pvn(stash, name, len, cBOOL(autoload)) #define newGVgen(pack) newGVgen_flags(pack, 0) -#define gv_method_changed(gv) \ - ( \ - assert_(isGV_with_GP(gv)) \ - GvREFCNT(gv) > 1 \ - ? (void)++PL_sub_generation \ +#define gv_method_changed(gv) \ + ( \ + assert_(isGV_with_GP(gv)) \ + GvREFCNT(gv) > 1 \ + ? (void)++PL_sub_generation \ : mro_method_changed_in(GvSTASH(gv)) \ ) diff --git a/handy.h b/handy.h index 187936d76d6b0..8cb725cde7ff1 100644 --- a/handy.h +++ b/handy.h @@ -101,12 +101,12 @@ blindly casts away const. # define MUTABLE_PTR(p) ((void *) (p)) #endif -#define MUTABLE_AV(p) ((AV *)MUTABLE_PTR(p)) -#define MUTABLE_CV(p) ((CV *)MUTABLE_PTR(p)) -#define MUTABLE_GV(p) ((GV *)MUTABLE_PTR(p)) -#define MUTABLE_HV(p) ((HV *)MUTABLE_PTR(p)) -#define MUTABLE_IO(p) ((IO *)MUTABLE_PTR(p)) -#define MUTABLE_SV(p) ((SV *)MUTABLE_PTR(p)) +#define MUTABLE_AV(p) ((AV *)MUTABLE_PTR(p)) +#define MUTABLE_CV(p) ((CV *)MUTABLE_PTR(p)) +#define MUTABLE_GV(p) ((GV *)MUTABLE_PTR(p)) +#define MUTABLE_HV(p) ((HV *)MUTABLE_PTR(p)) +#define MUTABLE_IO(p) ((IO *)MUTABLE_PTR(p)) +#define MUTABLE_SV(p) ((SV *)MUTABLE_PTR(p)) #ifndef __cplusplus # include @@ -149,7 +149,7 @@ required, but is kept for backwards compatibility. for the Cray.) This has the advantage of meshing nicely with standard library calls (where we pass an I32 and the library is expecting an int), but the disadvantage that an I32 is not 32 bits. - Andy Dougherty August 1996 + Andy Dougherty August 1996 There is no guarantee that there is *any* integral type with exactly 32 bits. It is perfectly legal for a system to have @@ -430,7 +430,7 @@ Perl_xxx(aTHX_ ...) form for any API calls where it's used. /* STR_WITH_LEN() shortcuts */ #define newSVpvs(str) Perl_newSVpvn(aTHX_ STR_WITH_LEN(str)) -#define newSVpvs_flags(str,flags) \ +#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_flags(sv, str, flags) \ @@ -459,7 +459,7 @@ Perl_xxx(aTHX_ ...) form for any API calls where it's used. #define lex_stuff_pvs(pv,flags) Perl_lex_stuff_pvn(aTHX_ STR_WITH_LEN(pv), flags) -#define get_cvs(str, flags) \ +#define get_cvs(str, flags) \ Perl_get_cvn_flags(aTHX_ STR_WITH_LEN(str), (flags)) /* internal helpers */ @@ -1409,7 +1409,7 @@ or casts /* Likewise, this is effectively a static assert to be used to guarantee the * parameter is a pointer * - * NOT suitable for void* + * NOT suitable for void* */ #define ASSERT_IS_PTR(x) (__ASSERT_(sizeof(*(x))) (x)) @@ -2112,9 +2112,9 @@ END_EXTERN_C #define isIDCONT(c) isWORDCHAR(c) #define isIDCONT_A(c) isWORDCHAR_A(c) -#define isIDCONT_L1(c) isWORDCHAR_L1(c) -#define isIDCONT_LC(c) isWORDCHAR_LC(c) -#define isPSXSPC_LC(c) isSPACE_LC(c) +#define isIDCONT_L1(c) isWORDCHAR_L1(c) +#define isIDCONT_LC(c) isWORDCHAR_LC(c) +#define isPSXSPC_LC(c) isSPACE_LC(c) /* For internal core Perl use only: the base macros for defining macros like * isALPHA_uvchr. 'c' is the code point to check. 'classnum' is the POSIX class @@ -2159,10 +2159,10 @@ END_EXTERN_C #define isWORDCHAR_uvchr(c) generic_invlist_uvchr_(CC_WORDCHAR_, c) #define isXDIGIT_uvchr(c) generic_uvchr_(CC_XDIGIT_, is_XDIGIT_cp_high, c) -#define toFOLD_uvchr(c,s,l) to_uni_fold(c,s,l) -#define toLOWER_uvchr(c,s,l) to_uni_lower(c,s,l) -#define toTITLE_uvchr(c,s,l) to_uni_title(c,s,l) -#define toUPPER_uvchr(c,s,l) to_uni_upper(c,s,l) +#define toFOLD_uvchr(c,s,l) to_uni_fold(c,s,l) +#define toLOWER_uvchr(c,s,l) to_uni_lower(c,s,l) +#define toTITLE_uvchr(c,s,l) to_uni_title(c,s,l) +#define toUPPER_uvchr(c,s,l) to_uni_upper(c,s,l) /* For backwards compatibility, even though '_uni' should mean official Unicode * code points, in Perl it means native for those below 256 */ @@ -2362,10 +2362,10 @@ END_EXTERN_C (U8 *) (p), (U8 *) (e), 0, 1), 0) \ : is_XDIGIT_high(p))) -#define toFOLD_utf8(p,e,s,l) toFOLD_utf8_safe(p,e,s,l) -#define toLOWER_utf8(p,e,s,l) toLOWER_utf8_safe(p,e,s,l) -#define toTITLE_utf8(p,e,s,l) toTITLE_utf8_safe(p,e,s,l) -#define toUPPER_utf8(p,e,s,l) toUPPER_utf8_safe(p,e,s,l) +#define toFOLD_utf8(p,e,s,l) toFOLD_utf8_safe(p,e,s,l) +#define toLOWER_utf8(p,e,s,l) toLOWER_utf8_safe(p,e,s,l) +#define toTITLE_utf8(p,e,s,l) toTITLE_utf8_safe(p,e,s,l) +#define toUPPER_utf8(p,e,s,l) toUPPER_utf8_safe(p,e,s,l) /* For internal core use only, subject to change */ #define _toFOLD_utf8_flags(p,e,s,l,f) _to_utf8_fold_flags (p,e,s,l,f) @@ -2477,12 +2477,12 @@ END_EXTERN_C #define isALNUM_LC_uvchr(c) isWORDCHAR_LC_uvchr(c) #define isALNUM_utf8(p,e) isWORDCHAR_utf8(p,e) #define isALNUM_utf8_safe(p,e) isWORDCHAR_utf8_safe(p,e) -#define isALNUM_LC_utf8(p,e)isWORDCHAR_LC_utf8(p,e) -#define isALNUM_LC_utf8_safe(p,e)isWORDCHAR_LC_utf8_safe(p,e) +#define isALNUM_LC_utf8(p,e) isWORDCHAR_LC_utf8(p,e) +#define isALNUM_LC_utf8_safe(p,e) isWORDCHAR_LC_utf8_safe(p,e) #define isALNUMC_A(c) isALPHANUMERIC_A(c) /* Mnemonic: "C's alnum" */ #define isALNUMC_L1(c) isALPHANUMERIC_L1(c) -#define isALNUMC(c) isALPHANUMERIC(c) -#define isALNUMC_LC(c) isALPHANUMERIC_LC(c) +#define isALNUMC(c) isALPHANUMERIC(c) +#define isALNUMC_LC(c) isALPHANUMERIC_LC(c) #define isALNUMC_uni(c) isALPHANUMERIC_uni(c) #define isALNUMC_LC_uvchr(c) isALPHANUMERIC_LC_uvchr(c) #define isALNUMC_utf8(p,e) isALPHANUMERIC_utf8(p,e) @@ -2681,7 +2681,7 @@ PoisonWith(0xEF) for catching access to freed memory. /* Maintained for backwards-compatibility only. Use newSV() instead. */ #ifndef PERL_CORE -#define NEWSV(x,len) newSV(len) +#define NEWSV(x,len) newSV(len) #endif #define MEM_SIZE_MAX ((MEM_SIZE)-1) @@ -2815,15 +2815,15 @@ enum mem_log_type { #define MEM_LOG_FREE(a) (a) #endif -#define Newx(v,n,t) (v = (MEM_WRAP_CHECK_(n,t) (t*)MEM_LOG_ALLOC(n,t,safemalloc((MEM_SIZE)((n)*sizeof(t)))))) -#define Newxc(v,n,t,c) (v = (MEM_WRAP_CHECK_(n,t) (c*)MEM_LOG_ALLOC(n,t,safemalloc((MEM_SIZE)((n)*sizeof(t)))))) -#define Newxz(v,n,t) (v = (MEM_WRAP_CHECK_(n,t) (t*)MEM_LOG_ALLOC(n,t,safecalloc((n),sizeof(t))))) +#define Newx(v,n,t) (v = (MEM_WRAP_CHECK_(n,t) (t*)MEM_LOG_ALLOC(n,t,safemalloc((MEM_SIZE)((n)*sizeof(t)))))) +#define Newxc(v,n,t,c) (v = (MEM_WRAP_CHECK_(n,t) (c*)MEM_LOG_ALLOC(n,t,safemalloc((MEM_SIZE)((n)*sizeof(t)))))) +#define Newxz(v,n,t) (v = (MEM_WRAP_CHECK_(n,t) (t*)MEM_LOG_ALLOC(n,t,safecalloc((n),sizeof(t))))) #ifndef PERL_CORE /* pre 5.9.x compatibility */ -#define New(x,v,n,t) Newx(v,n,t) -#define Newc(x,v,n,t,c) Newxc(v,n,t,c) -#define Newz(x,v,n,t) Newxz(v,n,t) +#define New(x,v,n,t) Newx(v,n,t) +#define Newc(x,v,n,t,c) Newxc(v,n,t,c) +#define Newz(x,v,n,t) Newxz(v,n,t) #endif #define Renew(v,n,t) \ @@ -2835,7 +2835,7 @@ enum mem_log_type { #define Safefree(d) \ ((d) ? (void)(safefree(MEM_LOG_FREE((Malloc_t)(d))), Poison(&(d), 1, Malloc_t)) : (void) 0) #else -#define Safefree(d) safefree(MEM_LOG_FREE((Malloc_t)(d))) +#define Safefree(d) safefree(MEM_LOG_FREE((Malloc_t)(d))) #endif /* assert that a valid ptr has been supplied - use this instead of assert(ptr) * @@ -2844,19 +2844,19 @@ enum mem_log_type { #define perl_assert_ptr(p) assert( ((void*)(p)) != 0 ) -#define Move(s,d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), perl_assert_ptr(s), (void)memmove((char*)(d),(const char*)(s), (n) * sizeof(t))) -#define Copy(s,d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), perl_assert_ptr(s), (void)memcpy((char*)(d),(const char*)(s), (n) * sizeof(t))) -#define Zero(d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), (void)memzero((char*)(d), (n) * sizeof(t))) +#define Move(s,d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), perl_assert_ptr(s), (void)memmove((char*)(d),(const char*)(s), (n) * sizeof(t))) +#define Copy(s,d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), perl_assert_ptr(s), (void)memcpy((char*)(d),(const char*)(s), (n) * sizeof(t))) +#define Zero(d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), (void)memzero((char*)(d), (n) * sizeof(t))) /* Like above, but returns a pointer to 'd' */ -#define MoveD(s,d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), perl_assert_ptr(s), memmove((char*)(d),(const char*)(s), (n) * sizeof(t))) -#define CopyD(s,d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), perl_assert_ptr(s), memcpy((char*)(d),(const char*)(s), (n) * sizeof(t))) -#define ZeroD(d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), memzero((char*)(d), (n) * sizeof(t))) +#define MoveD(s,d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), perl_assert_ptr(s), memmove((char*)(d),(const char*)(s), (n) * sizeof(t))) +#define CopyD(s,d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), perl_assert_ptr(s), memcpy((char*)(d),(const char*)(s), (n) * sizeof(t))) +#define ZeroD(d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), memzero((char*)(d), (n) * sizeof(t))) -#define PoisonWith(d,n,t,b) (MEM_WRAP_CHECK_(n,t) (void)memset((char*)(d), (U8)(b), (n) * sizeof(t))) -#define PoisonNew(d,n,t) PoisonWith(d,n,t,0xAB) -#define PoisonFree(d,n,t) PoisonWith(d,n,t,0xEF) -#define Poison(d,n,t) PoisonFree(d,n,t) +#define PoisonWith(d,n,t,b) (MEM_WRAP_CHECK_(n,t) (void)memset((char*)(d), (U8)(b), (n) * sizeof(t))) +#define PoisonNew(d,n,t) PoisonWith(d,n,t,0xAB) +#define PoisonFree(d,n,t) PoisonWith(d,n,t,0xEF) +#define Poison(d,n,t) PoisonFree(d,n,t) #ifdef PERL_POISON # define PERL_POISON_EXPR(x) x @@ -2884,8 +2884,8 @@ Returns a pointer to one element past the final element of the input C array. C_ARRAY_END is one past the last: half-open/half-closed range, not last-inclusive range. */ -#define C_ARRAY_LENGTH(a) (sizeof(a)/sizeof((a)[0])) -#define C_ARRAY_END(a) ((a) + C_ARRAY_LENGTH(a)) +#define C_ARRAY_LENGTH(a) (sizeof(a)/sizeof((a)[0])) +#define C_ARRAY_END(a) ((a) + C_ARRAY_LENGTH(a)) #if defined(PERL_CORE) || defined(PERL_EXT_RE_BUILD) /* strlen() of a literal string constant. Restricting this to core, in part diff --git a/hv.h b/hv.h index 2083ce9b2c2e2..b3eece2d653f7 100644 --- a/hv.h +++ b/hv.h @@ -40,11 +40,11 @@ struct he { /* Keep hent_next first in this structure, because sv_free_arenas take advantage of this to share code between the he arenas and the SV body arenas */ - HE *hent_next; /* next entry in chain */ - HEK *hent_hek; /* hash key */ + HE *hent_next; /* next entry in chain */ + HEK *hent_hek; /* hash key */ union { - SV *hent_val; /* scalar value that was hashed */ - Size_t hent_refcount; /* references for this shared hash key */ + SV *hent_val; /* scalar value that was hashed */ + Size_t hent_refcount; /* references for this shared hash key */ } he_valu; }; @@ -77,7 +77,7 @@ struct mro_alg { AV *(*resolve)(pTHX_ HV* stash, U32 level); const char *name; U16 length; - U16 kflags; /* For the hash API - set HVhek_UTF8 if name is UTF-8 */ + U16 kflags; /* For the hash API - set HVhek_UTF8 if name is UTF-8 */ U32 hash; /* or 0 */ }; @@ -98,9 +98,9 @@ struct mro_meta { U32 destroy_gen; /* Generation number of DESTROY cache */ }; -#define MRO_GET_PRIVATE_DATA(smeta, which) \ +#define MRO_GET_PRIVATE_DATA(smeta, which) \ (((smeta)->mro_which && (which) == (smeta)->mro_which) \ - ? (smeta)->mro_linear_current \ + ? (smeta)->mro_linear_current \ : Perl_mro_get_private_data(aTHX_ (smeta), (which))) /* Subject to change. @@ -108,23 +108,23 @@ struct mro_meta { */ union _xhvnameu { - HEK *xhvnameu_name; /* When xhv_name_count is 0 */ - HEK **xhvnameu_names; /* When xhv_name_count is non-0 */ + HEK *xhvnameu_name; /* When xhv_name_count is 0 */ + HEK **xhvnameu_names; /* When xhv_name_count is non-0 */ }; struct xpvhv_aux { - 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 */ + 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 +/* 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; + I32 xhv_name_count; struct mro_meta *xhv_mro_meta; #ifdef PERL_HASH_RANDOMIZE_KEYS U32 xhv_rand; /* random value for hash traversal */ @@ -140,8 +140,8 @@ struct xpvhv_aux { /* hash structure: */ /* This structure must match the beginning of struct xpvmg in sv.h. */ struct xpvhv { - HV* xmg_stash; /* class package */ - union _xmgu xmg_u; + 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 */ }; @@ -258,12 +258,12 @@ C. #define PERL_HASH_DEFAULT_HvMAX 7 /* these hash entry flags ride on hent_klen (for use only in magic/tied HVs) */ -#define HEf_SVKEY -2 /* hent_key is an SV* */ +#define HEf_SVKEY -2 /* hent_key is an SV* */ #ifndef PERL_CORE # define Nullhv Null(HV*) #endif -#define HvARRAY(hv) ((hv)->sv_u.svu_hash) +#define HvARRAY(hv) ((hv)->sv_u.svu_hash) /* @@ -281,8 +281,8 @@ hash. */ -#define HvFILL(hv) Perl_hv_fill(aTHX_ MUTABLE_HV(hv)) -#define HvMAX(hv) ((XPVHV*) SvANY(hv))->xhv_max +#define HvFILL(hv) Perl_hv_fill(aTHX_ MUTABLE_HV(hv)) +#define HvMAX(hv) ((XPVHV*) SvANY(hv))->xhv_max /* @@ -294,23 +294,23 @@ whether it is valid to call C. =cut */ -#define HvHasAUX(hv) (SvFLAGS(hv) & SVphv_HasAUX) +#define HvHasAUX(hv) (SvFLAGS(hv) & SVphv_HasAUX) /* This quite intentionally does no flag checking first. That's your responsibility. Use HvHasAUX() first */ #define HvAUX(hv) (&(((struct xpvhv_with_aux*) SvANY(hv))->xhv_aux)) -#define HvRITER(hv) (*Perl_hv_riter_p(aTHX_ MUTABLE_HV(hv))) -#define HvEITER(hv) (*Perl_hv_eiter_p(aTHX_ MUTABLE_HV(hv))) -#define HvRITER_set(hv,r) Perl_hv_riter_set(aTHX_ MUTABLE_HV(hv), r) -#define HvEITER_set(hv,e) Perl_hv_eiter_set(aTHX_ MUTABLE_HV(hv), e) -#define HvRITER_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_riter : -1) -#define HvEITER_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_eiter : NULL) -#define HvRAND_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_rand : 0) -#define HvLASTRAND_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_last_rand : 0) - -#define HvNAME(hv) HvNAME_get(hv) +#define HvRITER(hv) (*Perl_hv_riter_p(aTHX_ MUTABLE_HV(hv))) +#define HvEITER(hv) (*Perl_hv_eiter_p(aTHX_ MUTABLE_HV(hv))) +#define HvRITER_set(hv,r) Perl_hv_riter_set(aTHX_ MUTABLE_HV(hv), r) +#define HvEITER_set(hv,e) Perl_hv_eiter_set(aTHX_ MUTABLE_HV(hv), e) +#define HvRITER_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_riter : -1) +#define HvEITER_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_eiter : NULL) +#define HvRAND_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_rand : 0) +#define HvLASTRAND_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_last_rand : 0) + +#define HvNAME(hv) HvNAME_get(hv) #define HvNAMELEN(hv) HvNAMELEN_get(hv) -#define HvENAME(hv) HvENAME_get(hv) +#define HvENAME(hv) HvENAME_get(hv) #define HvENAMELEN(hv) HvENAMELEN_get(hv) /* Checking that hv is a valid package stash is the @@ -319,11 +319,11 @@ whether it is valid to call C. ? HvAUX(hv)->xhv_mro_meta \ : Perl_mro_meta_init(aTHX_ hv)) -#define HvNAME_HEK_NN(hv) \ - ( \ - HvAUX(hv)->xhv_name_count \ - ? *HvAUX(hv)->xhv_name_u.xhvnameu_names \ - : HvAUX(hv)->xhv_name_u.xhvnameu_name \ +#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) \ @@ -361,12 +361,12 @@ whether it is valid to call C. * for backwards compatibility with old XS code. The core uses HvUSEDKEYS * (keys, excluding placeholders) and HvTOTALKEYS (including placeholders) */ -#define HvKEYS(hv) HvUSEDKEYS(hv) -#define HvUSEDKEYS(hv) (HvTOTALKEYS(hv) - HvPLACEHOLDERS_get(hv)) +#define HvKEYS(hv) HvUSEDKEYS(hv) +#define HvUSEDKEYS(hv) (HvTOTALKEYS(hv) - HvPLACEHOLDERS_get(hv)) #define HvTOTALKEYS(hv) (((XPVHV*) SvANY(hv))->xhv_keys) -#define HvPLACEHOLDERS(hv) (*Perl_hv_placeholders_p(aTHX_ MUTABLE_HV(hv))) -#define HvPLACEHOLDERS_get(hv) (SvMAGIC(hv) ? Perl_hv_placeholders_get(aTHX_ (const HV *)hv) : 0) -#define HvPLACEHOLDERS_set(hv,p) Perl_hv_placeholders_set(aTHX_ MUTABLE_HV(hv), p) +#define HvPLACEHOLDERS(hv) (*Perl_hv_placeholders_p(aTHX_ MUTABLE_HV(hv))) +#define HvPLACEHOLDERS_get(hv) (SvMAGIC(hv) ? Perl_hv_placeholders_get(aTHX_ (const HV *)hv) : 0) +#define HvPLACEHOLDERS_set(hv,p) Perl_hv_placeholders_set(aTHX_ MUTABLE_HV(hv), p) /* This (now) flags whether *new* keys in the hash will be allocated from the * shared string table. We have a heuristic to call HvSHAREKEYS_off() if a hash @@ -375,9 +375,9 @@ whether it is valid to call C. * * If we didn't do this, we'd have to reallocate all keys when we switched this * flag, which would be work for no real gain. */ -#define HvSHAREKEYS(hv) (SvFLAGS(hv) & SVphv_SHAREKEYS) -#define HvSHAREKEYS_on(hv) (SvFLAGS(hv) |= SVphv_SHAREKEYS) -#define HvSHAREKEYS_off(hv) (SvFLAGS(hv) &= ~SVphv_SHAREKEYS) +#define HvSHAREKEYS(hv) (SvFLAGS(hv) & SVphv_SHAREKEYS) +#define HvSHAREKEYS_on(hv) (SvFLAGS(hv) |= SVphv_SHAREKEYS) +#define HvSHAREKEYS_off(hv) (SvFLAGS(hv) &= ~SVphv_SHAREKEYS) /* This is an optimisation flag. It won't be set if all hash keys have a 0 * flag. Currently the only flags relate to utf8. @@ -387,143 +387,143 @@ whether it is valid to call C. * any utf8 keys. * See HVhek_ENABLEHVKFLAGS for the trigger. */ -#define HvHASKFLAGS(hv) (SvFLAGS(hv) & SVphv_HASKFLAGS) -#define HvHASKFLAGS_on(hv) (SvFLAGS(hv) |= SVphv_HASKFLAGS) -#define HvHASKFLAGS_off(hv) (SvFLAGS(hv) &= ~SVphv_HASKFLAGS) +#define HvHASKFLAGS(hv) (SvFLAGS(hv) & SVphv_HASKFLAGS) +#define HvHASKFLAGS_on(hv) (SvFLAGS(hv) |= SVphv_HASKFLAGS) +#define HvHASKFLAGS_off(hv) (SvFLAGS(hv) &= ~SVphv_HASKFLAGS) -#define HvLAZYDEL(hv) (SvFLAGS(hv) & SVphv_LAZYDEL) -#define HvLAZYDEL_on(hv) (SvFLAGS(hv) |= SVphv_LAZYDEL) -#define HvLAZYDEL_off(hv) (SvFLAGS(hv) &= ~SVphv_LAZYDEL) +#define HvLAZYDEL(hv) (SvFLAGS(hv) & SVphv_LAZYDEL) +#define HvLAZYDEL_on(hv) (SvFLAGS(hv) |= SVphv_LAZYDEL) +#define HvLAZYDEL_off(hv) (SvFLAGS(hv) &= ~SVphv_LAZYDEL) #ifndef PERL_CORE # define Nullhe Null(HE*) #endif -#define HeNEXT(he) (he)->hent_next -#define HeKEY_hek(he) (he)->hent_hek -#define HeKEY(he) HEK_KEY(HeKEY_hek(he)) -#define HeKEY_sv(he) (*(SV**)HeKEY(he)) -#define HeKLEN(he) HEK_LEN(HeKEY_hek(he)) +#define HeNEXT(he) (he)->hent_next +#define HeKEY_hek(he) (he)->hent_hek +#define HeKEY(he) HEK_KEY(HeKEY_hek(he)) +#define HeKEY_sv(he) (*(SV**)HeKEY(he)) +#define HeKLEN(he) HEK_LEN(HeKEY_hek(he)) #define HeKUTF8(he) HEK_UTF8(HeKEY_hek(he)) #define HeKWASUTF8(he) HEK_WASUTF8(HeKEY_hek(he)) #define HeKLEN_UTF8(he) (HeKUTF8(he) ? -HeKLEN(he) : HeKLEN(he)) #define HeKFLAGS(he) HEK_FLAGS(HeKEY_hek(he)) -#define HeVAL(he) (he)->he_valu.hent_val -#define HeHASH(he) HEK_HASH(HeKEY_hek(he)) -#define HePV(he,lp) ((HeKLEN(he) == HEf_SVKEY) ? \ - SvPV(HeKEY_sv(he),lp) : \ +#define HeVAL(he) (he)->he_valu.hent_val +#define HeHASH(he) HEK_HASH(HeKEY_hek(he)) +#define HePV(he,lp) ((HeKLEN(he) == HEf_SVKEY) ? \ + SvPV(HeKEY_sv(he),lp) : \ ((lp = HeKLEN(he)), HeKEY(he))) -#define HeUTF8(he) ((HeKLEN(he) == HEf_SVKEY) ? \ - SvUTF8(HeKEY_sv(he)) : \ +#define HeUTF8(he) ((HeKLEN(he) == HEf_SVKEY) ? \ + SvUTF8(HeKEY_sv(he)) : \ (U32)HeKUTF8(he)) -#define HeSVKEY(he) ((HeKEY(he) && \ - HeKLEN(he) == HEf_SVKEY) ? \ +#define HeSVKEY(he) ((HeKEY(he) && \ + HeKLEN(he) == HEf_SVKEY) ? \ HeKEY_sv(he) : NULL) -#define HeSVKEY_force(he) (HeKEY(he) ? \ - ((HeKLEN(he) == HEf_SVKEY) ? \ - HeKEY_sv(he) : \ - newSVpvn_flags(HeKEY(he), \ +#define HeSVKEY_force(he) (HeKEY(he) ? \ + ((HeKLEN(he) == HEf_SVKEY) ? \ + HeKEY_sv(he) : \ + newSVpvn_flags(HeKEY(he), \ HeKLEN(he), \ SVs_TEMP | \ ( HeKUTF8(he) ? SVf_UTF8 : 0 ))) : \ &PL_sv_undef) -#define HeSVKEY_set(he,sv) ((HeKLEN(he) = HEf_SVKEY), (HeKEY_sv(he) = sv)) +#define HeSVKEY_set(he,sv) ((HeKLEN(he) = HEf_SVKEY), (HeKEY_sv(he) = sv)) #ifndef PERL_CORE # define Nullhek Null(HEK*) #endif -#define HEK_BASESIZE STRUCT_OFFSET(HEK, hek_key[0]) -#define HEK_HASH(hek) (hek)->hek_hash -#define HEK_LEN(hek) (hek)->hek_len -#define HEK_KEY(hek) (hek)->hek_key -#define HEK_FLAGS(hek) (*((unsigned char *)(HEK_KEY(hek))+HEK_LEN(hek)+1)) - -#define HVhek_UTF8 0x01 /* Key is utf8 encoded. */ -#define HVhek_WASUTF8 0x02 /* Key is bytes here, but was supplied as utf8. */ +#define HEK_BASESIZE STRUCT_OFFSET(HEK, hek_key[0]) +#define HEK_HASH(hek) (hek)->hek_hash +#define HEK_LEN(hek) (hek)->hek_len +#define HEK_KEY(hek) (hek)->hek_key +#define HEK_FLAGS(hek) (*((unsigned char *)(HEK_KEY(hek))+HEK_LEN(hek)+1)) + +#define HVhek_UTF8 0x01 /* Key is utf8 encoded. */ +#define HVhek_WASUTF8 0x02 /* Key is bytes here, but was supplied as utf8. */ #define HVhek_NOTSHARED 0x04 /* This key isn't a shared hash key. */ /* the following flags are options for functions, they are not stored in heks */ -#define HVhek_FREEKEY 0x100 /* Internal flag to say key is Newx()ed. */ -#define HVhek_PLACEHOLD 0x200 /* Internal flag to create placeholder. +#define HVhek_FREEKEY 0x100 /* Internal flag to say key is Newx()ed. */ +#define HVhek_PLACEHOLD 0x200 /* Internal flag to create placeholder. * (may change, but Storable is a core module) */ #define HVhek_KEYCANONICAL 0x400 /* Internal flag - key is in canonical form. If the string is UTF-8, it cannot be converted to bytes. */ #define HVhek_ENABLEHVKFLAGS (HVhek_UTF8|HVhek_WASUTF8) -#define HEK_UTF8(hek) (HEK_FLAGS(hek) & HVhek_UTF8) -#define HEK_UTF8_on(hek) (HEK_FLAGS(hek) |= HVhek_UTF8) -#define HEK_UTF8_off(hek) (HEK_FLAGS(hek) &= ~HVhek_UTF8) -#define HEK_WASUTF8(hek) (HEK_FLAGS(hek) & HVhek_WASUTF8) -#define HEK_WASUTF8_on(hek) (HEK_FLAGS(hek) |= HVhek_WASUTF8) -#define HEK_WASUTF8_off(hek) (HEK_FLAGS(hek) &= ~HVhek_WASUTF8) +#define HEK_UTF8(hek) (HEK_FLAGS(hek) & HVhek_UTF8) +#define HEK_UTF8_on(hek) (HEK_FLAGS(hek) |= HVhek_UTF8) +#define HEK_UTF8_off(hek) (HEK_FLAGS(hek) &= ~HVhek_UTF8) +#define HEK_WASUTF8(hek) (HEK_FLAGS(hek) & HVhek_WASUTF8) +#define HEK_WASUTF8_on(hek) (HEK_FLAGS(hek) |= HVhek_WASUTF8) +#define HEK_WASUTF8_off(hek) (HEK_FLAGS(hek) &= ~HVhek_WASUTF8) /* calculate HV array allocation */ #ifndef PERL_USE_LARGE_HV_ALLOC /* Default to allocating the correct size - default to assuming that malloc() is not broken and is efficient at allocating blocks sized at powers-of-two. -*/ +*/ # define PERL_HV_ARRAY_ALLOC_BYTES(size) ((size) * sizeof(HE*)) #else # define MALLOC_OVERHEAD 16 # define PERL_HV_ARRAY_ALLOC_BYTES(size) \ - (((size) < 64) \ - ? (size) * sizeof(HE*) \ + (((size) < 64) \ + ? (size) * sizeof(HE*) \ : (size) * sizeof(HE*) * 2 - MALLOC_OVERHEAD) #endif /* Flags for hv_iternext_flags. */ -#define HV_ITERNEXT_WANTPLACEHOLDERS 0x01 /* Don't skip placeholders. */ +#define HV_ITERNEXT_WANTPLACEHOLDERS 0x01 /* Don't skip placeholders. */ -#define hv_iternext(hv) hv_iternext_flags(hv, 0) +#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) #define Perl_sharepvn(pv, len, hash) HEK_KEY(share_hek(pv, len, hash)) -#define sharepvn(pv, len, hash) Perl_sharepvn(pv, len, hash) +#define sharepvn(pv, len, hash) Perl_sharepvn(pv, len, hash) -#define share_hek_hek(hek) \ - (++(((struct shared_he *)(((char *)hek) \ - - STRUCT_OFFSET(struct shared_he, \ - shared_he_hek))) \ - ->shared_he_he.he_valu.hent_refcount), \ +#define share_hek_hek(hek) \ + (++(((struct shared_he *)(((char *)hek) \ + - STRUCT_OFFSET(struct shared_he, \ + shared_he_hek))) \ + ->shared_he_he.he_valu.hent_refcount), \ hek) -#define hv_store_ent(hv, keysv, val, hash) \ - ((HE *) hv_common((hv), (keysv), NULL, 0, 0, HV_FETCH_ISSTORE, \ +#define hv_store_ent(hv, keysv, val, hash) \ + ((HE *) hv_common((hv), (keysv), NULL, 0, 0, HV_FETCH_ISSTORE, \ (val), (hash))) -#define hv_exists_ent(hv, keysv, hash) \ +#define hv_exists_ent(hv, keysv, hash) \ cBOOL(hv_common((hv), (keysv), NULL, 0, 0, HV_FETCH_ISEXISTS, 0, (hash))) -#define hv_fetch_ent(hv, keysv, lval, hash) \ - ((HE *) hv_common((hv), (keysv), NULL, 0, 0, \ +#define hv_fetch_ent(hv, keysv, lval, hash) \ + ((HE *) hv_common((hv), (keysv), NULL, 0, 0, \ ((lval) ? HV_FETCH_LVALUE : 0), NULL, (hash))) -#define hv_delete_ent(hv, key, flags, hash) \ - (MUTABLE_SV(hv_common((hv), (key), NULL, 0, 0, (flags) | HV_DELETE, \ +#define hv_delete_ent(hv, key, flags, hash) \ + (MUTABLE_SV(hv_common((hv), (key), NULL, 0, 0, (flags) | HV_DELETE, \ NULL, (hash)))) -#define hv_store_flags(hv, key, klen, val, hash, flags) \ - ((SV**) hv_common((hv), NULL, (key), (klen), (flags), \ - (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), (val), \ +#define hv_store_flags(hv, key, klen, val, hash, flags) \ + ((SV**) hv_common((hv), NULL, (key), (klen), (flags), \ + (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), (val), \ (hash))) -#define hv_store(hv, key, klen, val, hash) \ - ((SV**) hv_common_key_len((hv), (key), (klen), \ - (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), \ +#define hv_store(hv, key, klen, val, hash) \ + ((SV**) hv_common_key_len((hv), (key), (klen), \ + (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), \ (val), (hash))) -#define hv_exists(hv, key, klen) \ +#define hv_exists(hv, key, klen) \ cBOOL(hv_common_key_len((hv), (key), (klen), HV_FETCH_ISEXISTS, NULL, 0)) -#define hv_fetch(hv, key, klen, lval) \ - ((SV**) hv_common_key_len((hv), (key), (klen), (lval) \ - ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) \ +#define hv_fetch(hv, key, klen, lval) \ + ((SV**) hv_common_key_len((hv), (key), (klen), (lval) \ + ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) \ : HV_FETCH_JUST_SV, NULL, 0)) -#define hv_delete(hv, key, klen, flags) \ - (MUTABLE_SV(hv_common_key_len((hv), (key), (klen), \ +#define hv_delete(hv, key, klen, flags) \ + (MUTABLE_SV(hv_common_key_len((hv), (key), (klen), \ (flags) | HV_DELETE, NULL, 0))) /* Provide 's' suffix subs for constant strings (and avoid needing to count @@ -546,14 +546,14 @@ whether it is valid to call C. #ifdef PERL_CORE # define hv_storehek(hv, hek, val) \ - hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \ + hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \ HV_FETCH_ISSTORE|HV_FETCH_JUST_SV, (val), HEK_HASH(hek)) # define hv_fetchhek(hv, hek, lval) \ - ((SV **) \ - hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \ - (lval) \ - ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) \ - : HV_FETCH_JUST_SV, \ + ((SV **) \ + hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \ + (lval) \ + ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) \ + : HV_FETCH_JUST_SV, \ NULL, HEK_HASH(hek))) # define hv_deletehek(hv, hek, flags) \ hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \ @@ -572,27 +572,27 @@ whether it is valid to call C. struct refcounted_he; /* flags for the refcounted_he API */ -#define REFCOUNTED_HE_KEY_UTF8 0x00000001 -#define REFCOUNTED_HE_EXISTS 0x00000002 +#define REFCOUNTED_HE_KEY_UTF8 0x00000001 +#define REFCOUNTED_HE_EXISTS 0x00000002 #ifdef PERL_CORE /* Gosh. This really isn't a good name any longer. */ struct refcounted_he { - struct refcounted_he *refcounted_he_next; /* next entry in chain */ + struct refcounted_he *refcounted_he_next; /* next entry in chain */ #ifdef USE_ITHREADS U32 refcounted_he_hash; U32 refcounted_he_keylen; #else - HEK *refcounted_he_hek; /* hint key */ + HEK *refcounted_he_hek; /* hint key */ #endif union { IV refcounted_he_u_iv; UV refcounted_he_u_uv; STRLEN refcounted_he_u_len; - void *refcounted_he_u_ptr; /* Might be useful in future */ + void *refcounted_he_u_ptr; /* Might be useful in future */ } refcounted_he_val; - U32 refcounted_he_refcnt; /* reference count */ + U32 refcounted_he_refcnt; /* reference count */ /* First byte is flags. Then NUL-terminated value. Then for ithreads, non-NUL terminated key. */ char refcounted_he_data[1]; @@ -623,56 +623,56 @@ instead of a string/length pair, and no precomputed hash. 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. */ -#define HVrhek_IV 0x20 /* Value is IV. */ -#define HVrhek_UV 0x30 /* Value is UV. */ -#define HVrhek_PV 0x40 /* Value is a (byte) string. */ -#define HVrhek_PV_UTF8 0x50 /* Value is a (utf8) string. */ +#define HVrhek_undef 0x00 /* Value is undef. */ +#define HVrhek_delete 0x10 /* Value is placeholder - signifies delete. */ +#define HVrhek_IV 0x20 /* Value is IV. */ +#define HVrhek_UV 0x30 /* Value is UV. */ +#define HVrhek_PV 0x40 /* Value is a (byte) string. */ +#define HVrhek_PV_UTF8 0x50 /* Value is a (utf8) string. */ /* Two spare. As these have to live in the optree, you can't store anything interpreter specific, such as SVs. :-( */ #define HVrhek_typemask 0x70 #ifdef USE_ITHREADS /* A big expression to find the key offset */ -#define REF_HE_KEY(chain) \ - ((((chain->refcounted_he_data[0] & 0x60) == 0x40) \ - ? chain->refcounted_he_val.refcounted_he_u_len + 1 : 0) \ +#define REF_HE_KEY(chain) \ + ((((chain->refcounted_he_data[0] & 0x60) == 0x40) \ + ? chain->refcounted_he_val.refcounted_he_u_len + 1 : 0) \ + 1 + chain->refcounted_he_data) #endif # ifdef USE_ITHREADS -# define HINTS_REFCNT_LOCK MUTEX_LOCK(&PL_hints_mutex) -# define HINTS_REFCNT_UNLOCK MUTEX_UNLOCK(&PL_hints_mutex) +# define HINTS_REFCNT_LOCK MUTEX_LOCK(&PL_hints_mutex) +# define HINTS_REFCNT_UNLOCK MUTEX_UNLOCK(&PL_hints_mutex) # else -# define HINTS_REFCNT_LOCK NOOP -# define HINTS_REFCNT_UNLOCK NOOP +# define HINTS_REFCNT_LOCK NOOP +# define HINTS_REFCNT_UNLOCK NOOP # endif #endif #ifdef USE_ITHREADS -# define HINTS_REFCNT_INIT MUTEX_INIT(&PL_hints_mutex) -# define HINTS_REFCNT_TERM MUTEX_DESTROY(&PL_hints_mutex) +# define HINTS_REFCNT_INIT MUTEX_INIT(&PL_hints_mutex) +# define HINTS_REFCNT_TERM MUTEX_DESTROY(&PL_hints_mutex) #else -# define HINTS_REFCNT_INIT NOOP -# define HINTS_REFCNT_TERM NOOP +# define HINTS_REFCNT_INIT NOOP +# define HINTS_REFCNT_TERM NOOP #endif /* Hash actions * Passed in PERL_MAGIC_uvar calls */ -#define HV_DISABLE_UVAR_XKEY 0x01 +#define HV_DISABLE_UVAR_XKEY 0x01 /* We need to ensure that these don't clash with G_DISCARD, which is 2, as it is documented as being passed to hv_delete(). */ -#define HV_FETCH_ISSTORE 0x04 -#define HV_FETCH_ISEXISTS 0x08 -#define HV_FETCH_LVALUE 0x10 -#define HV_FETCH_JUST_SV 0x20 -#define HV_DELETE 0x40 -#define HV_FETCH_EMPTY_HE 0x80 /* Leave HeVAL null. */ +#define HV_FETCH_ISSTORE 0x04 +#define HV_FETCH_ISEXISTS 0x08 +#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 +#define HV_NAME_SETALL 0x02 /* =for apidoc newHV @@ -682,7 +682,7 @@ Creates a new HV. The reference count is set to 1. =cut */ -#define newHV() MUTABLE_HV(newSV_type(SVt_PVHV)) +#define newHV() MUTABLE_HV(newSV_type(SVt_PVHV)) #include "hv_func.h" diff --git a/inline.h b/inline.h index 597b0709f8502..e02b10186220c 100644 --- a/inline.h +++ b/inline.h @@ -1797,7 +1797,7 @@ See also C>. =cut */ -#define is_c9strict_utf8_string_loc(s, len, ep) \ +#define is_c9strict_utf8_string_loc(s, len, ep) \ is_c9strict_utf8_string_loclen(s, len, ep, 0) /* @@ -2633,7 +2633,7 @@ S_get_regex_charset_name(const U32 flags, STRLEN* const lenp) /* The NOT_REACHED; hides an assert() which has a rather complex * definition in perl.h. */ NOT_REACHED; /* NOTREACHED */ - return "?"; /* Unknown */ + return "?"; /* Unknown */ } #endif diff --git a/intrpvar.h b/intrpvar.h index 9316b56f2f247..688e9eeafbeb7 100644 --- a/intrpvar.h +++ b/intrpvar.h @@ -1,4 +1,4 @@ -/* intrpvar.h +/* intrpvar.h * * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, * 2006, 2007, 2008 by Larry Wall and others @@ -28,33 +28,33 @@ * * Important ones in the first cache line (if alignment is done right) */ -PERLVAR(I, stack_sp, SV **) /* top of the stack */ -PERLVAR(I, op, OP *) /* currently executing op */ -PERLVAR(I, curpad, SV **) /* active pad (lexicals+tmps) */ +PERLVAR(I, stack_sp, SV **) /* top of the stack */ +PERLVAR(I, op, OP *) /* currently executing op */ +PERLVAR(I, curpad, SV **) /* active pad (lexicals+tmps) */ -PERLVAR(I, stack_base, SV **) -PERLVAR(I, stack_max, SV **) +PERLVAR(I, stack_base, SV **) +PERLVAR(I, stack_max, SV **) -PERLVAR(I, savestack, ANY *) /* items that need to be restored when +PERLVAR(I, savestack, ANY *) /* items that need to be restored when LEAVEing scopes we've ENTERed */ PERLVAR(I, savestack_ix, I32) PERLVAR(I, savestack_max, I32) -PERLVAR(I, scopestack, I32 *) /* scopes we've ENTERed */ +PERLVAR(I, scopestack, I32 *) /* scopes we've ENTERed */ PERLVAR(I, scopestack_ix, I32) PERLVAR(I, scopestack_max, I32) -PERLVAR(I, tmps_stack, SV **) /* mortals we've made */ -PERLVARI(I, tmps_ix, SSize_t, -1) -PERLVARI(I, tmps_floor, SSize_t, -1) -PERLVAR(I, tmps_max, SSize_t) /* first unalloced slot in tmps stack */ +PERLVAR(I, tmps_stack, SV **) /* mortals we've made */ +PERLVARI(I, tmps_ix, SSize_t, -1) +PERLVARI(I, tmps_floor, SSize_t, -1) +PERLVAR(I, tmps_max, SSize_t) /* first unalloced slot in tmps stack */ -PERLVAR(I, markstack, I32 *) /* stack_sp locations we're +PERLVAR(I, markstack, I32 *) /* stack_sp locations we're remembering */ PERLVAR(I, markstack_ptr, I32 *) PERLVAR(I, markstack_max, I32 *) -PERLVARI(I, sub_generation, U32, 1) /* incr to invalidate method cache */ +PERLVARI(I, sub_generation, U32, 1) /* incr to invalidate method cache */ #ifdef PERL_HASH_RANDOMIZE_KEYS #ifdef USE_PERL_PERTURB_KEYS @@ -65,17 +65,17 @@ PERLVARI(I, hash_rand_bits_enabled, U8, 1) /* used to randomize hash stuff #endif PERLVARI(I, hash_rand_bits, UV, 0) /* used to randomize hash stuff */ #endif -PERLVAR(I, strtab, HV *) /* shared string table */ +PERLVAR(I, strtab, HV *) /* shared string table */ /* prog counter for the currently executing OP_MULTIDEREF Used to signal * to S_find_uninit_var() where we are */ PERLVAR(I, multideref_pc, UNOP_AUX_item *) /* Fields used by magic variables such as $@, $/ and so on */ -PERLVAR(I, curpm, PMOP *) /* what to do \ interps in REs from */ +PERLVAR(I, curpm, PMOP *) /* what to do \ interps in REs from */ PERLVAR(I, curpm_under, PMOP *) /* what to do \ interps in REs from */ -PERLVAR(I, tainting, bool) /* ? doing taint checks */ -PERLVARI(I, tainted, bool, FALSE) /* using variables controlled by $< */ +PERLVAR(I, tainting, bool) /* ? doing taint checks */ +PERLVARI(I, tainted, bool, FALSE) /* using variables controlled by $< */ /* PL_delaymagic is currently used for two purposes: to assure simultaneous * updates in ($<,$>) = ..., and to assure atomic update in push/unshift @@ -90,7 +90,7 @@ PERLVARI(I, tainted, bool, FALSE) /* using variables controlled by $< */ * / POP. This removes the need to do ENTER/SAVEI16(PL_delaymagic)/LEAVE * in hot code like pp_push. */ -PERLVAR(I, delaymagic, U16) /* ($<,$>) = ... */ +PERLVAR(I, delaymagic, U16) /* ($<,$>) = ... */ /* =for apidoc_section $warning @@ -107,14 +107,14 @@ thread's copy. =cut */ -PERLVAR(I, dowarn, U8) +PERLVAR(I, dowarn, U8) #if defined (PERL_UTF8_CACHE_ASSERT) || defined (DEBUGGING) # define PERL___I -1 #else # define PERL___I 1 #endif -PERLVARI(I, utf8cache, I8, PERL___I) /* Is the utf8 caching code enabled? */ +PERLVARI(I, utf8cache, I8, PERL___I) /* Is the utf8 caching code enabled? */ #undef PERL___I /* @@ -130,9 +130,9 @@ thread's copy. =cut */ -PERLVAR(I, localizing, U8) /* are we processing a local() list? */ -PERLVAR(I, in_eval, U8) /* trap "fatal" errors? */ -PERLVAR(I, defgv, GV *) /* the *_ glob */ +PERLVAR(I, localizing, U8) /* are we processing a local() list? */ +PERLVAR(I, in_eval, U8) /* trap "fatal" errors? */ +PERLVAR(I, defgv, GV *) /* the *_ glob */ /* =for apidoc_section $GV @@ -148,8 +148,8 @@ thread's copy. */ /* Stashes */ -PERLVAR(I, defstash, HV *) /* main symbol table */ -PERLVAR(I, curstash, HV *) /* symbol table for current package */ +PERLVAR(I, defstash, HV *) /* main symbol table */ +PERLVAR(I, curstash, HV *) /* symbol table for current package */ /* =for apidoc_section $COP @@ -165,17 +165,17 @@ thread's copy. =cut */ -PERLVAR(I, curcop, COP *) -PERLVAR(I, curstack, AV *) /* THE STACK */ -PERLVAR(I, curstackinfo, PERL_SI *) /* current stack + context */ -PERLVAR(I, mainstack, AV *) /* the stack when nothing funny is +PERLVAR(I, curcop, COP *) +PERLVAR(I, curstack, AV *) /* THE STACK */ +PERLVAR(I, curstackinfo, PERL_SI *) /* current stack + context */ +PERLVAR(I, mainstack, AV *) /* the stack when nothing funny is happening */ /* memory management */ -PERLVAR(I, sv_count, IV) /* how many SV* are currently allocated */ +PERLVAR(I, sv_count, IV) /* how many SV* are currently allocated */ -PERLVAR(I, sv_root, SV *) /* storage for SVs belonging to interp */ -PERLVAR(I, sv_arenaroot, SV *) /* list of areas for garbage collection */ +PERLVAR(I, sv_root, SV *) /* storage for SVs belonging to interp */ +PERLVAR(I, sv_arenaroot, SV *) /* list of areas for garbage collection */ /* fake PMOP that PL_curpm points to while in (?{}) so $1 et al are visible */ PERLVARI(I, reg_curpm, PMOP*, NULL) @@ -184,10 +184,10 @@ PERLVARI(I, reg_curpm, PMOP*, NULL) * and the currently active state within that slab. This stack of states * is shared amongst re-entrant calls to the regex engine */ -PERLVARI(I, regmatch_slab, regmatch_slab *, NULL) +PERLVARI(I, regmatch_slab, regmatch_slab *, NULL) PERLVAR(I, regmatch_state, regmatch_state *) -PERLVAR(I, comppad, PAD *) /* storage for lexically scoped temporaries */ +PERLVAR(I, comppad, PAD *) /* storage for lexically scoped temporaries */ /* =for apidoc_section $SV @@ -213,18 +213,18 @@ C<&PL_sv_zero>. Introduced in 5.28. */ #ifdef MULTIPLICITY -PERLVAR(I, sv_yes, SV) -PERLVAR(I, sv_undef, SV) -PERLVAR(I, sv_no, SV) -PERLVAR(I, sv_zero, SV) +PERLVAR(I, sv_yes, SV) +PERLVAR(I, sv_undef, SV) +PERLVAR(I, sv_no, SV) +PERLVAR(I, sv_zero, SV) #else /* store the immortals as an array to ensure they are contiguous in * memory: makes SvIMMORTAL_INTERP(sv) possible */ PERLVARA(I, sv_immortals, 4, SV) #endif -PERLVAR(I, padname_undef, PADNAME) -PERLVAR(I, padname_const, PADNAME) +PERLVAR(I, padname_undef, PADNAME) +PERLVAR(I, padname_const, PADNAME) /* =for apidoc_section $SV @@ -241,11 +241,11 @@ get zapped, leading to hard-to-diagnose errors. =cut */ -PERLVAR(I, Sv, SV *) +PERLVAR(I, Sv, SV *) -PERLVAR(I, parser, yy_parser *) /* current parser state */ +PERLVAR(I, parser, yy_parser *) /* current parser state */ -PERLVAR(I, stashcache, HV *) /* Cache to speed up S_method_common */ +PERLVAR(I, stashcache, HV *) /* Cache to speed up S_method_common */ /* @@ -269,13 +269,13 @@ instead, or to use the C macro. =cut */ -PERLVAR(I, na, STRLEN) /* for use in SvPV when length is +PERLVAR(I, na, STRLEN) /* for use in SvPV when length is Not Applicable */ /* stat stuff */ -PERLVAR(I, statcache, Stat_t) /* _ */ -PERLVAR(I, statgv, GV *) -PERLVARI(I, statname, SV *, NULL) +PERLVAR(I, statcache, Stat_t) /* _ */ +PERLVAR(I, statgv, GV *) +PERLVARI(I, statname, SV *, NULL) /* =for apidoc_section $io @@ -308,39 +308,39 @@ thread's copy. =cut */ -PERLVAR(I, rs, SV *) /* input record separator $/ */ -PERLVAR(I, last_in_gv, GV *) /* GV used in last */ -PERLVAR(I, ofsgv, GV *) /* GV of output field separator *, */ -PERLVAR(I, defoutgv, GV *) /* default FH for output */ -PERLVARI(I, chopset, const char *, " \n-") /* $: */ -PERLVAR(I, formtarget, SV *) -PERLVAR(I, bodytarget, SV *) -PERLVAR(I, toptarget, SV *) +PERLVAR(I, rs, SV *) /* input record separator $/ */ +PERLVAR(I, last_in_gv, GV *) /* GV used in last */ +PERLVAR(I, ofsgv, GV *) /* GV of output field separator *, */ +PERLVAR(I, defoutgv, GV *) /* default FH for output */ +PERLVARI(I, chopset, const char *, " \n-") /* $: */ +PERLVAR(I, formtarget, SV *) +PERLVAR(I, bodytarget, SV *) +PERLVAR(I, toptarget, SV *) -PERLVAR(I, restartop, OP *) /* propagating an error from croak? */ -PERLVAR(I, restartjmpenv, JMPENV *) /* target frame for longjmp in die */ +PERLVAR(I, restartop, OP *) /* propagating an error from croak? */ +PERLVAR(I, restartjmpenv, JMPENV *) /* target frame for longjmp in die */ -PERLVAR(I, top_env, JMPENV *) /* ptr to current sigjmp environment */ -PERLVAR(I, start_env, JMPENV) /* empty startup sigjmp environment */ -PERLVARI(I, errors, SV *, NULL) /* outstanding queued errors */ +PERLVAR(I, top_env, JMPENV *) /* ptr to current sigjmp environment */ +PERLVAR(I, start_env, JMPENV) /* empty startup sigjmp environment */ +PERLVARI(I, errors, SV *, NULL) /* outstanding queued errors */ /* statics "owned" by various functions */ -PERLVAR(I, hv_fetch_ent_mh, HE*) /* owned by hv_fetch_ent() */ +PERLVAR(I, hv_fetch_ent_mh, HE*) /* owned by hv_fetch_ent() */ -PERLVAR(I, lastgotoprobe, OP*) /* from pp_ctl.c */ +PERLVAR(I, lastgotoprobe, OP*) /* from pp_ctl.c */ /* sort stuff */ -PERLVAR(I, sortcop, OP *) /* user defined sort routine */ -PERLVAR(I, sortstash, HV *) /* which is in some package or other */ -PERLVAR(I, firstgv, GV *) /* $a */ -PERLVAR(I, secondgv, GV *) /* $b */ +PERLVAR(I, sortcop, OP *) /* user defined sort routine */ +PERLVAR(I, sortstash, HV *) /* which is in some package or other */ +PERLVAR(I, firstgv, GV *) /* $a */ +PERLVAR(I, secondgv, GV *) /* $b */ /* float buffer */ -PERLVAR(I, efloatbuf, char *) -PERLVAR(I, efloatsize, STRLEN) +PERLVAR(I, efloatbuf, char *) +PERLVAR(I, efloatsize, STRLEN) -PERLVARI(I, dumpindent, U16, 4) /* number of blanks per dump +PERLVARI(I, dumpindent, U16, 4) /* number of blanks per dump indentation level */ /* @@ -384,9 +384,9 @@ thread's copy. =cut */ -PERLVAR(I, exit_flags, U8) /* was exit() unexpected, etc. */ +PERLVAR(I, exit_flags, U8) /* was exit() unexpected, etc. */ -PERLVAR(I, utf8locale, bool) /* utf8 locale detected */ +PERLVAR(I, utf8locale, bool) /* utf8 locale detected */ #if defined(USE_LOCALE) && defined(USE_LOCALE_THREADS) PERLVARI(I, locale_mutex_depth, int, 0) /* Emulate general semaphore */ @@ -398,7 +398,7 @@ PERLVAR(I, in_utf8_CTYPE_locale, bool) PERLVAR(I, in_utf8_turkic_locale, bool) #endif -PERLVARA(I, colors,6, char *) /* values from PERL_RE_COLORS env var */ +PERLVARA(I, colors,6, char *) /* values from PERL_RE_COLORS env var */ /* =for apidoc_section $optree_construction @@ -426,7 +426,7 @@ thread's copy. =cut */ -PERLVARI(I, peepp, peep_t, Perl_peep) +PERLVARI(I, peepp, peep_t, Perl_peep) /* =for apidoc_section $optree_construction @@ -455,7 +455,7 @@ thread's copy. =cut */ -PERLVARI(I, rpeepp, peep_t, Perl_rpeep) +PERLVARI(I, rpeepp, peep_t, Perl_rpeep) /* =for apidoc_section $optrees @@ -474,75 +474,75 @@ thread's copy. =cut */ -PERLVARI(I, opfreehook, Perl_ophook_t, 0) /* op_free() hook */ +PERLVARI(I, opfreehook, Perl_ophook_t, 0) /* op_free() hook */ -PERLVARI(I, watchaddr, char **, 0) -PERLVAR(I, watchok, char *) +PERLVARI(I, watchaddr, char **, 0) +PERLVAR(I, watchok, char *) -PERLVAR(I, perldb, U32) +PERLVAR(I, perldb, U32) -PERLVAR(I, signals, U32) /* Using which pre-5.8 signals */ +PERLVAR(I, signals, U32) /* Using which pre-5.8 signals */ -PERLVAR(I, reentrant_retint, int) /* Integer return value from reentrant functions */ +PERLVAR(I, reentrant_retint, int) /* Integer return value from reentrant functions */ /* pseudo environmental stuff */ -PERLVAR(I, origargc, int) -PERLVAR(I, origargv, char **) -PERLVAR(I, envgv, GV *) -PERLVAR(I, incgv, GV *) -PERLVAR(I, hintgv, GV *) +PERLVAR(I, origargc, int) +PERLVAR(I, origargv, char **) +PERLVAR(I, envgv, GV *) +PERLVAR(I, incgv, GV *) +PERLVAR(I, hintgv, GV *) PERLVAR(I, origfilename, char *) PERLVARI(I, xsubfilename, const char *, NULL) -PERLVAR(I, diehook, SV *) -PERLVAR(I, warnhook, SV *) +PERLVAR(I, diehook, SV *) +PERLVAR(I, warnhook, SV *) /* switches */ -PERLVAR(I, patchlevel, SV *) +PERLVAR(I, patchlevel, SV *) PERLVAR(I, localpatches, const char * const *) -PERLVARI(I, splitstr, const char *, " ") +PERLVARI(I, splitstr, const char *, " ") -PERLVAR(I, minus_c, bool) -PERLVAR(I, minus_n, bool) -PERLVAR(I, minus_p, bool) -PERLVAR(I, minus_l, bool) -PERLVAR(I, minus_a, bool) -PERLVAR(I, minus_F, bool) -PERLVAR(I, doswitches, bool) -PERLVAR(I, minus_E, bool) +PERLVAR(I, minus_c, bool) +PERLVAR(I, minus_n, bool) +PERLVAR(I, minus_p, bool) +PERLVAR(I, minus_l, bool) +PERLVAR(I, minus_a, bool) +PERLVAR(I, minus_F, bool) +PERLVAR(I, doswitches, bool) +PERLVAR(I, minus_E, bool) -PERLVAR(I, inplace, char *) -PERLVAR(I, e_script, SV *) +PERLVAR(I, inplace, char *) +PERLVAR(I, e_script, SV *) -PERLVAR(I, basetime, Time_t) /* $^T */ +PERLVAR(I, basetime, Time_t) /* $^T */ -PERLVARI(I, maxsysfd, I32, MAXSYSFD) +PERLVARI(I, maxsysfd, I32, MAXSYSFD) /* top fd to pass to subprocesses */ -PERLVAR(I, statusvalue, I32) /* $? */ +PERLVAR(I, statusvalue, I32) /* $? */ #ifdef VMS PERLVAR(I, statusvalue_vms, U32) #else PERLVAR(I, statusvalue_posix, I32) #endif -PERLVARI(I, sig_pending, int, 0) /* Number if highest signal pending */ -PERLVAR(I, psig_pend, int *) /* per-signal "count" of pending */ +PERLVARI(I, sig_pending, int, 0) /* Number if highest signal pending */ +PERLVAR(I, psig_pend, int *) /* per-signal "count" of pending */ /* shortcuts to various I/O objects */ -PERLVAR(I, stdingv, GV *) /* *STDIN */ -PERLVAR(I, stderrgv, GV *) /* *STDERR */ -PERLVAR(I, argvgv, GV *) /* *ARGV */ -PERLVAR(I, argvoutgv, GV *) /* *ARGVOUT */ +PERLVAR(I, stdingv, GV *) /* *STDIN */ +PERLVAR(I, stderrgv, GV *) /* *STDERR */ +PERLVAR(I, argvgv, GV *) /* *ARGV */ +PERLVAR(I, argvoutgv, GV *) /* *ARGVOUT */ PERLVAR(I, argvout_stack, AV *) /* shortcuts to regexp stuff */ -PERLVAR(I, replgv, GV *) /* *^R */ +PERLVAR(I, replgv, GV *) /* *^R */ /* shortcuts to misc objects */ -PERLVAR(I, errgv, GV *) /* *@ */ +PERLVAR(I, errgv, GV *) /* *@ */ /* shortcuts to debugging objects */ -PERLVAR(I, DBgv, GV *) /* *DB::DB */ -PERLVAR(I, DBline, GV *) /* *DB::line */ +PERLVAR(I, DBgv, GV *) /* *DB::DB */ +PERLVAR(I, DBline, GV *) /* *DB::line */ /* =for apidoc_section $debugging @@ -579,68 +579,68 @@ thread's copy. =cut */ -PERLVAR(I, DBsub, GV *) /* *DB::sub */ -PERLVAR(I, DBsingle, SV *) /* $DB::single */ -PERLVAR(I, DBtrace, SV *) /* $DB::trace */ -PERLVAR(I, DBsignal, SV *) /* $DB::signal */ -PERLVAR(I, dbargs, AV *) /* args to call listed by caller function */ +PERLVAR(I, DBsub, GV *) /* *DB::sub */ +PERLVAR(I, DBsingle, SV *) /* $DB::single */ +PERLVAR(I, DBtrace, SV *) /* $DB::trace */ +PERLVAR(I, DBsignal, SV *) /* $DB::signal */ +PERLVAR(I, dbargs, AV *) /* args to call listed by caller function */ PERLVARA(I, DBcontrol, DBVARMG_COUNT, IV) /* IV versions of $DB::single, trace, signal */ /* symbol tables */ -PERLVAR(I, debstash, HV *) /* symbol table for perldb package */ -PERLVAR(I, globalstash, HV *) /* global keyword overrides imported here */ -PERLVAR(I, curstname, SV *) /* name of current package */ -PERLVAR(I, beginav, AV *) /* names of BEGIN subroutines */ -PERLVAR(I, endav, AV *) /* names of END subroutines */ -PERLVAR(I, unitcheckav, AV *) /* names of UNITCHECK subroutines */ -PERLVAR(I, checkav, AV *) /* names of CHECK subroutines */ -PERLVAR(I, initav, AV *) /* names of INIT subroutines */ +PERLVAR(I, debstash, HV *) /* symbol table for perldb package */ +PERLVAR(I, globalstash, HV *) /* global keyword overrides imported here */ +PERLVAR(I, curstname, SV *) /* name of current package */ +PERLVAR(I, beginav, AV *) /* names of BEGIN subroutines */ +PERLVAR(I, endav, AV *) /* names of END subroutines */ +PERLVAR(I, unitcheckav, AV *) /* names of UNITCHECK subroutines */ +PERLVAR(I, checkav, AV *) /* names of CHECK subroutines */ +PERLVAR(I, initav, AV *) /* names of INIT subroutines */ /* subprocess state */ -PERLVAR(I, fdpid, AV *) /* keep fd-to-pid mappings for my_popen */ +PERLVAR(I, fdpid, AV *) /* keep fd-to-pid mappings for my_popen */ /* internal state */ -PERLVARI(I, op_mask, char *, NULL) /* masked operations for safe evals */ +PERLVARI(I, op_mask, char *, NULL) /* masked operations for safe evals */ /* current interpreter roots */ -PERLVAR(I, main_cv, CV *) -PERLVAR(I, main_root, OP *) -PERLVAR(I, main_start, OP *) -PERLVAR(I, eval_root, OP *) -PERLVAR(I, eval_start, OP *) +PERLVAR(I, main_cv, CV *) +PERLVAR(I, main_root, OP *) +PERLVAR(I, main_start, OP *) +PERLVAR(I, eval_root, OP *) +PERLVAR(I, eval_start, OP *) /* runtime control stuff */ -PERLVARI(I, curcopdb, COP *, NULL) +PERLVARI(I, curcopdb, COP *, NULL) -PERLVAR(I, filemode, int) /* so nextargv() can preserve mode */ -PERLVAR(I, lastfd, int) /* what to preserve mode on */ -PERLVAR(I, oldname, char *) /* what to preserve mode on */ +PERLVAR(I, filemode, int) /* so nextargv() can preserve mode */ +PERLVAR(I, lastfd, int) /* what to preserve mode on */ +PERLVAR(I, oldname, char *) /* what to preserve mode on */ /* Elements in this array have ';' appended and are injected as a single line into the tokeniser. You can't put any (literal) newlines into any program you stuff in into this array, as the point where it's injected is expecting a single physical line. */ -PERLVAR(I, preambleav, AV *) -PERLVAR(I, mess_sv, SV *) -PERLVAR(I, ors_sv, SV *) /* output record separator $\ */ +PERLVAR(I, preambleav, AV *) +PERLVAR(I, mess_sv, SV *) +PERLVAR(I, ors_sv, SV *) /* output record separator $\ */ /* funky return mechanisms */ -PERLVAR(I, forkprocess, int) /* so do_open |- can return proc# */ +PERLVAR(I, forkprocess, int) /* so do_open |- can return proc# */ /* statics moved here for shared library purposes */ -PERLVARI(I, gensym, I32, 0) /* next symbol for getsym() to define */ -PERLVARI(I, cv_has_eval, bool, FALSE) /* PL_compcv includes an entereval or similar */ -PERLVAR(I, taint_warn, bool) /* taint warns instead of dying */ -PERLVARI(I, laststype, U16, OP_STAT) +PERLVARI(I, gensym, I32, 0) /* next symbol for getsym() to define */ +PERLVARI(I, cv_has_eval, bool, FALSE) /* PL_compcv includes an entereval or similar */ +PERLVAR(I, taint_warn, bool) /* taint warns instead of dying */ +PERLVARI(I, laststype, U16, OP_STAT) -PERLVARI(I, laststatval, int, -1) +PERLVARI(I, laststatval, int, -1) -PERLVAR(I, modcount, I32) /* how much op_lvalue()ification in +PERLVAR(I, modcount, I32) /* how much op_lvalue()ification in assignment? */ /* interpreter atexit processing */ -PERLVARI(I, exitlistlen, I32, 0) /* length of same */ -PERLVARI(I, exitlist, PerlExitListEntry *, NULL) +PERLVARI(I, exitlistlen, I32, 0) /* length of same */ +PERLVARI(I, exitlist, PerlExitListEntry *, NULL) /* list of exit functions */ /* @@ -660,41 +660,41 @@ thread's copy. =cut */ -PERLVAR(I, modglobal, HV *) /* per-interp module data */ +PERLVAR(I, modglobal, HV *) /* per-interp module data */ /* these used to be in global before 5.004_68 */ -PERLVARI(I, profiledata, U32 *, NULL) /* table of ops, counts */ +PERLVARI(I, profiledata, U32 *, NULL) /* table of ops, counts */ -PERLVAR(I, compiling, COP) /* compiling/done executing marker */ +PERLVAR(I, compiling, COP) /* compiling/done executing marker */ -PERLVAR(I, compcv, CV *) /* currently compiling subroutine */ -PERLVAR(I, comppad_name, PADNAMELIST *) /* variable names for "my" variables */ -PERLVAR(I, comppad_name_fill, PADOFFSET)/* last "introduced" variable offset */ -PERLVAR(I, comppad_name_floor, PADOFFSET)/* start of vars in innermost block */ +PERLVAR(I, compcv, CV *) /* currently compiling subroutine */ +PERLVAR(I, comppad_name, PADNAMELIST *) /* variable names for "my" variables */ +PERLVAR(I, comppad_name_fill, PADOFFSET)/* last "introduced" variable offset */ +PERLVAR(I, comppad_name_floor, PADOFFSET)/* start of vars in innermost block */ #ifdef HAVE_INTERP_INTERN -PERLVAR(I, sys_intern, struct interp_intern) +PERLVAR(I, sys_intern, struct interp_intern) /* platform internals */ #endif /* more statics moved here */ -PERLVAR(I, DBcv, CV *) /* from perl.c */ -PERLVARI(I, generation, int, 100) /* scan sequence# for OP_AASSIGN +PERLVAR(I, DBcv, CV *) /* from perl.c */ +PERLVARI(I, generation, int, 100) /* scan sequence# for OP_AASSIGN compile-time common elem detection */ -PERLVAR(I, unicode, U32) /* Unicode features: $ENV{PERL_UNICODE} or -C */ +PERLVAR(I, unicode, U32) /* Unicode features: $ENV{PERL_UNICODE} or -C */ -PERLVARI(I, in_clean_objs,bool, FALSE) /* from sv.c */ -PERLVARI(I, in_clean_all, bool, FALSE) /* ptrs to freed SVs now legal */ -PERLVAR(I, nomemok, bool) /* let malloc context handle nomem */ -PERLVARI(I, savebegin, bool, FALSE) /* save BEGINs for compiler */ +PERLVARI(I, in_clean_objs,bool, FALSE) /* from sv.c */ +PERLVARI(I, in_clean_all, bool, FALSE) /* ptrs to freed SVs now legal */ +PERLVAR(I, nomemok, bool) /* let malloc context handle nomem */ +PERLVARI(I, savebegin, bool, FALSE) /* save BEGINs for compiler */ -PERLVAR(I, delaymagic_uid, Uid_t) /* current real user id, only for delaymagic */ -PERLVAR(I, delaymagic_euid, Uid_t) /* current effective user id, only for delaymagic */ -PERLVAR(I, delaymagic_gid, Gid_t) /* current real group id, only for delaymagic */ -PERLVAR(I, delaymagic_egid, Gid_t) /* current effective group id, only for delaymagic */ -PERLVARI(I, an, U32, 0) /* malloc sequence number */ +PERLVAR(I, delaymagic_uid, Uid_t) /* current real user id, only for delaymagic */ +PERLVAR(I, delaymagic_euid, Uid_t) /* current effective user id, only for delaymagic */ +PERLVAR(I, delaymagic_gid, Gid_t) /* current real group id, only for delaymagic */ +PERLVAR(I, delaymagic_egid, Gid_t) /* current effective group id, only for delaymagic */ +PERLVARI(I, an, U32, 0) /* malloc sequence number */ /* Perl_Ibreakable_sub_generation_ptr was too long for VMS, hence "gen" */ PERLVARI(I, breakable_sub_gen, U32, 0) @@ -705,41 +705,41 @@ PERLVARI(I, breakable_sub_gen, U32, 0) #else #define PERL_COP_SEQMAX 0 #endif -PERLVARI(I, cop_seqmax, U32, PERL_COP_SEQMAX) /* statement sequence number */ +PERLVARI(I, cop_seqmax, U32, PERL_COP_SEQMAX) /* statement sequence number */ #undef PERL_COP_SEQMAX -PERLVARI(I, evalseq, U32, 0) /* eval sequence number */ -PERLVAR(I, origalen, U32) +PERLVARI(I, evalseq, U32, 0) /* eval sequence number */ +PERLVAR(I, origalen, U32) #ifdef PERL_USES_PL_PIDSTATUS -PERLVAR(I, pidstatus, HV *) /* pid-to-status mappings for waitpid */ +PERLVAR(I, pidstatus, HV *) /* pid-to-status mappings for waitpid */ #endif -PERLVAR(I, osname, char *) /* operating system */ +PERLVAR(I, osname, char *) /* operating system */ -PERLVAR(I, sighandlerp, Sighandler_t) +PERLVAR(I, sighandlerp, Sighandler_t) /* these two are provided only to solve library linkage issues; they * should not be hooked by user code */ PERLVAR(I, sighandler1p, Sighandler1_t) PERLVAR(I, sighandler3p, Sighandler3_t) -PERLVARA(I, body_roots, PERL_ARENA_ROOTS_SIZE, void*) /* array of body roots */ +PERLVARA(I, body_roots, PERL_ARENA_ROOTS_SIZE, void*) /* array of body roots */ -PERLVAR(I, debug, volatile U32) /* flags given to -D switch */ +PERLVAR(I, debug, volatile U32) /* flags given to -D switch */ -PERLVARI(I, padlist_generation, U32, 1) /* id to identify padlist clones */ +PERLVARI(I, padlist_generation, U32, 1) /* id to identify padlist clones */ -PERLVARI(I, runops, runops_proc_t, RUNOPS_DEFAULT) +PERLVARI(I, runops, runops_proc_t, RUNOPS_DEFAULT) -PERLVAR(I, subname, SV *) /* name of current subroutine */ +PERLVAR(I, subname, SV *) /* name of current subroutine */ -PERLVAR(I, subline, I32) /* line this subroutine began on */ +PERLVAR(I, subline, I32) /* line this subroutine began on */ PERLVAR(I, min_intro_pending, PADOFFSET)/* start of vars to introduce */ PERLVAR(I, max_intro_pending, PADOFFSET)/* end of vars to introduce */ -PERLVAR(I, padix, PADOFFSET) /* lowest unused index - 1 +PERLVAR(I, padix, PADOFFSET) /* lowest unused index - 1 in current "register" pad */ -PERLVAR(I, constpadix, PADOFFSET) /* lowest unused for constants */ +PERLVAR(I, constpadix, PADOFFSET) /* lowest unused for constants */ -PERLVAR(I, padix_floor, PADOFFSET) /* how low may inner block reset padix */ +PERLVAR(I, padix_floor, PADOFFSET) /* how low may inner block reset padix */ #if defined(USE_POSIX_2008_LOCALE) && defined(MULTIPLICITY) PERLVARI(I, cur_locale_obj, locale_t, NULL) @@ -760,15 +760,15 @@ PERLVARI(I, cur_LC_ALL, const char *, NULL) /* The emory needed to store the collxfrm transformation of a string with * length 'x' is predicted by the linear equation mx+b; m=mult, b=base */ -PERLVARI(I, collxfrm_mult,Size_t, 0) /* Expansion factor in *xfrm(); +PERLVARI(I, collxfrm_mult,Size_t, 0) /* Expansion factor in *xfrm(); 0 => unknown or bad, depending on base */ -PERLVAR(I, collxfrm_base, Size_t) /* Basic overhead in *xfrm(); +PERLVAR(I, collxfrm_base, Size_t) /* Basic overhead in *xfrm(); mult == 0, base == 0 => need to compute mult == 0, base != 0 => ill-formed; */ -PERLVAR(I, collation_name, char *) /* Name of current collation */ -PERLVARI(I, collation_ix, U32, 0) /* Collation generation index */ +PERLVAR(I, collation_name, char *) /* Name of current collation */ +PERLVARI(I, collation_ix, U32, 0) /* Collation generation index */ PERLVARI(I, strxfrm_NUL_replacement, U8, 0) /* Code point to replace NULs */ PERLVARI(I, strxfrm_is_behaved, bool, TRUE) /* Assume until proven otherwise that it works */ @@ -786,20 +786,20 @@ PERLVARI(I, stdize_locale_buf, const char *, NULL) PERLVARI(I, stdize_locale_bufsize, Size_t, 0) #ifdef PERL_SAWAMPERSAND -PERLVAR(I, sawampersand, U8) /* must save all match strings */ +PERLVAR(I, sawampersand, U8) /* must save all match strings */ #endif /* current phase the interpreter is in for ordering this structure to remove holes, we're assuming that this is 4 bytes. */ -PERLVARI(I, phase, enum perl_phase, PERL_PHASE_CONSTRUCT) +PERLVARI(I, phase, enum perl_phase, PERL_PHASE_CONSTRUCT) -PERLVARI(I, in_load_module, bool, FALSE) /* to prevent recursions in PerlIO_find_layer */ +PERLVARI(I, in_load_module, bool, FALSE) /* to prevent recursions in PerlIO_find_layer */ PERLVARI(I, eval_begin_nest_depth, U32, 0) -PERLVAR(I, unsafe, bool) -PERLVAR(I, colorset, bool) /* PERL_RE_COLORS env var is in use */ +PERLVAR(I, unsafe, bool) +PERLVAR(I, colorset, bool) /* PERL_RE_COLORS env var is in use */ /* =for apidoc_section $embedding @@ -829,9 +829,9 @@ thread's copy. =cut */ /* mod_perl is special, and also assigns a meaning -1 */ -PERLVARI(I, perl_destruct_level, signed char, 0) +PERLVARI(I, perl_destruct_level, signed char, 0) -PERLVAR(I, pad_reset_pending, bool) /* reset pad on next attempted alloc */ +PERLVAR(I, pad_reset_pending, bool) /* reset pad on next attempted alloc */ PERLVARI(I, srand_called, bool, false) /* has random_state been initialized yet? */ PERLVARI(I, srand_override, U32, 0) /* Should we use a deterministic sequence? */ @@ -843,8 +843,8 @@ PERLVARI(I, numeric_underlying_is_standard, bool, TRUE) PERLVARI(I, numeric_standard, int, TRUE) /* Assume C locale numerics */ PERLVAR(I, numeric_name, char *) /* Name of current numeric locale */ -PERLVAR(I, numeric_radix_sv, SV *) /* The radix separator */ -PERLVAR(I, underlying_radix_sv, SV *) /* The radix in the program's current underlying locale */ +PERLVAR(I, numeric_radix_sv, SV *) /* The radix separator */ +PERLVAR(I, underlying_radix_sv, SV *) /* The radix in the program's current underlying locale */ #if defined(USE_LOCALE_NUMERIC) && defined(USE_POSIX_2008_LOCALE) @@ -863,65 +863,65 @@ PERLVARI(I, ctype_name, const char *, NULL) /* Name of current ctype locale */ /* Array of signal handlers, indexed by signal number, through which the C signal handler dispatches. */ -PERLVAR(I, psig_ptr, SV **) +PERLVAR(I, psig_ptr, SV **) /* Array of names of signals, indexed by signal number, for (re)use as the first argument to a signal handler. Only one block of memory is allocated for both psig_name and psig_ptr. */ -PERLVAR(I, psig_name, SV **) +PERLVAR(I, psig_name, SV **) #if defined(PERL_IMPLICIT_SYS) -PERLVAR(I, Mem, struct IPerlMem *) -PERLVAR(I, MemShared, struct IPerlMem *) -PERLVAR(I, MemParse, struct IPerlMem *) -PERLVAR(I, Env, struct IPerlEnv *) -PERLVAR(I, StdIO, struct IPerlStdIO *) -PERLVAR(I, LIO, struct IPerlLIO *) -PERLVAR(I, Dir, struct IPerlDir *) -PERLVAR(I, Sock, struct IPerlSock *) -PERLVAR(I, Proc, struct IPerlProc *) +PERLVAR(I, Mem, struct IPerlMem *) +PERLVAR(I, MemShared, struct IPerlMem *) +PERLVAR(I, MemParse, struct IPerlMem *) +PERLVAR(I, Env, struct IPerlEnv *) +PERLVAR(I, StdIO, struct IPerlStdIO *) +PERLVAR(I, LIO, struct IPerlLIO *) +PERLVAR(I, Dir, struct IPerlDir *) +PERLVAR(I, Sock, struct IPerlSock *) +PERLVAR(I, Proc, struct IPerlProc *) #endif -PERLVAR(I, ptr_table, PTR_TBL_t *) -PERLVARI(I, beginav_save, AV *, NULL) /* save BEGIN{}s when compiling */ +PERLVAR(I, ptr_table, PTR_TBL_t *) +PERLVARI(I, beginav_save, AV *, NULL) /* save BEGIN{}s when compiling */ -PERLVAR(I, body_arenas, void *) /* pointer to list of body-arenas */ +PERLVAR(I, body_arenas, void *) /* pointer to list of body-arenas */ #if defined(USE_ITHREADS) -PERLVAR(I, regex_pad, SV **) /* Shortcut into the array of +PERLVAR(I, regex_pad, SV **) /* Shortcut into the array of regex_padav */ -PERLVAR(I, regex_padav, AV *) /* All regex objects, indexed via the +PERLVAR(I, regex_padav, AV *) /* All regex objects, indexed via the values in op_pmoffset of pmop. Entry 0 is an SV whose PV is a "packed" list of IVs listing the now-free slots in the array */ -PERLVAR(I, stashpad, HV **) /* for CopSTASH */ +PERLVAR(I, stashpad, HV **) /* for CopSTASH */ PERLVARI(I, stashpadmax, PADOFFSET, 64) PERLVARI(I, stashpadix, PADOFFSET, 0) #endif #ifdef USE_REENTRANT_API -PERLVAR(I, reentrant_buffer, REENTR *) /* here we store the _r buffers */ +PERLVAR(I, reentrant_buffer, REENTR *) /* here we store the _r buffers */ #endif -PERLVAR(I, custom_op_names, HV *) /* Names of user defined ops */ -PERLVAR(I, custom_op_descs, HV *) /* Descriptions of user defined ops */ +PERLVAR(I, custom_op_names, HV *) /* Names of user defined ops */ +PERLVAR(I, custom_op_descs, HV *) /* Descriptions of user defined ops */ #ifdef PERLIO_LAYERS -PERLVARI(I, perlio, PerlIOl *, NULL) +PERLVARI(I, perlio, PerlIOl *, NULL) PERLVARI(I, known_layers, PerlIO_list_t *, NULL) PERLVARI(I, def_layerlist, PerlIO_list_t *, NULL) #endif -PERLVARI(I, checkav_save, AV *, NULL) /* save CHECK{}s when compiling */ +PERLVARI(I, checkav_save, AV *, NULL) /* save CHECK{}s when compiling */ PERLVARI(I, unitcheckav_save, AV *, NULL) /* save UNITCHECK{}s when compiling */ -PERLVARI(I, clocktick, long, 0) /* this many times() ticks in a second */ +PERLVARI(I, clocktick, long, 0) /* this many times() ticks in a second */ /* Hooks to shared SVs and locks. */ -PERLVARI(I, sharehook, share_proc_t, Perl_sv_nosharing) -PERLVARI(I, lockhook, share_proc_t, Perl_sv_nosharing) +PERLVARI(I, sharehook, share_proc_t, Perl_sv_nosharing) +PERLVARI(I, lockhook, share_proc_t, Perl_sv_nosharing) GCC_DIAG_IGNORE(-Wdeprecated-declarations) #ifdef NO_MATHOMS @@ -930,20 +930,20 @@ GCC_DIAG_IGNORE(-Wdeprecated-declarations) /* This reference ensures that the mathoms are linked with perl */ # define PERL_UNLOCK_HOOK Perl_sv_nounlocking #endif -PERLVARI(I, unlockhook, share_proc_t, PERL_UNLOCK_HOOK) +PERLVARI(I, unlockhook, share_proc_t, PERL_UNLOCK_HOOK) GCC_DIAG_RESTORE -PERLVARI(I, threadhook, thrhook_proc_t, Perl_nothreadhook) +PERLVARI(I, threadhook, thrhook_proc_t, Perl_nothreadhook) /* Can shared object be destroyed */ PERLVARI(I, destroyhook, destroyable_proc_t, Perl_sv_destroyable) #ifndef PERL_MICRO -PERLVARI(I, signalhook, despatch_signals_proc_t, Perl_despatch_signals) +PERLVARI(I, signalhook, despatch_signals_proc_t, Perl_despatch_signals) #endif -PERLVARI(I, isarev, HV *, NULL) /* Reverse map of @ISA dependencies */ +PERLVARI(I, isarev, HV *, NULL) /* Reverse map of @ISA dependencies */ /* Register of known Method Resolution Orders. What this actually points to is an implementation detail (it may change to @@ -952,32 +952,32 @@ PERLVARI(I, isarev, HV *, NULL) /* Reverse map of @ISA dependencies */ PERLVAR(I, registered_mros, HV *) /* Compile-time block start/end hooks */ -PERLVAR(I, blockhooks, AV *) +PERLVAR(I, blockhooks, AV *) -PERLVAR(I, custom_ops, HV *) /* custom op registrations */ +PERLVAR(I, custom_ops, HV *) /* custom op registrations */ -PERLVAR(I, Xpv, XPV *) /* (unused) held temporary value */ +PERLVAR(I, Xpv, XPV *) /* (unused) held temporary value */ /* name of the scopes we've ENTERed. Only used with -DDEBUGGING, but needs to be present always, as -DDEBUGGING must be binary compatible with non. */ PERLVARI(I, scopestack_name, const char **, NULL) -PERLVAR(I, debug_pad, struct perl_debug_pad) /* always needed because of the re extension */ +PERLVAR(I, debug_pad, struct perl_debug_pad) /* always needed because of the re extension */ /* Hook for File::Glob */ -PERLVARI(I, globhook, globhook_t, NULL) +PERLVARI(I, globhook, globhook_t, NULL) #if defined(MULTIPLICITY) /* The last unconditional member of the interpreter structure when 5.18.0 was - released. The offset of the end of this is baked into a global variable in + released. The offset of the end of this is baked into a global variable in any shared perl library which will allow a sanity test in future perl releases. */ -# define PERL_LAST_5_18_0_INTERP_MEMBER Iglobhook +# define PERL_LAST_5_18_0_INTERP_MEMBER Iglobhook #endif #ifdef MULTIPLICITY PERLVARI(I, my_cxt_list, void **, NULL) /* per-module array of MY_CXT pointers */ -PERLVARI(I, my_cxt_size, int, 0) /* size of PL_my_cxt_list */ +PERLVARI(I, my_cxt_size, int, 0) /* size of PL_my_cxt_list */ #endif #if defined(MULTIPLICITY) || defined(PERL_DEBUG_READONLY_COW) @@ -990,15 +990,15 @@ PERLVAR(I, memory_debug_header, struct perl_memory_debug_header) #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP /* File descriptor to talk to the child which dumps scalars. */ -PERLVARI(I, dumper_fd, int, -1) +PERLVARI(I, dumper_fd, int, -1) #endif #ifdef DEBUG_LEAKING_SCALARS -PERLVARI(I, sv_serial, U32, 0) /* SV serial number, used in sv.c */ +PERLVARI(I, sv_serial, U32, 0) /* SV serial number, used in sv.c */ #endif -PERLVARA(I, sv_consts, SV_CONSTS_COUNT, SV*) /* constant SVs with precomputed hash value */ +PERLVARA(I, sv_consts, SV_CONSTS_COUNT, SV*) /* constant SVs with precomputed hash value */ #ifdef PERL_TRACE_OPS PERLVARA(I, op_exec_cnt, OP_max+2, UV) /* Counts of executed OPs of the given type. @@ -1022,16 +1022,16 @@ PERLVAR(I, internal_random_state, PL_RANDOM_STATE_TYPE) PERLVARA(I, TR_SPECIAL_HANDLING_UTF8, UTF8_MAXBYTES, char) -PERLVAR(I, AboveLatin1, SV *) +PERLVAR(I, AboveLatin1, SV *) PERLVAR(I, Assigned_invlist, SV *) PERLVAR(I, GCB_invlist, SV *) PERLVAR(I, HasMultiCharFold, SV *) PERLVAR(I, InMultiCharFold, SV *) -PERLVAR(I, Latin1, SV *) +PERLVAR(I, Latin1, SV *) PERLVAR(I, LB_invlist, SV *) PERLVAR(I, SB_invlist, SV *) PERLVAR(I, SCX_invlist, SV *) -PERLVAR(I, UpperLatin1, SV *) /* Code points 128 - 255 */ +PERLVAR(I, UpperLatin1, SV *) /* Code points 128 - 255 */ PERLVARA(I, fold_locale, 256, U8) @@ -1042,7 +1042,7 @@ PERLVAR(I, in_some_fold, SV *) * matching */ PERLVAR(I, utf8_foldclosures, SV *) -PERLVAR(I, utf8_idcont, SV *) +PERLVAR(I, utf8_idcont, SV *) PERLVAR(I, utf8_idstart, SV *) PERLVAR(I, utf8_perl_idcont, SV *) PERLVAR(I, utf8_perl_idstart, SV *) @@ -1054,14 +1054,14 @@ PERLVARA(I, Posix_ptrs, POSIX_CC_COUNT, SV *) PERLVAR(I, utf8_toupper, SV *) PERLVAR(I, utf8_totitle, SV *) PERLVAR(I, utf8_tolower, SV *) -PERLVAR(I, utf8_tofold, SV *) -PERLVAR(I, utf8_tosimplefold, SV *) +PERLVAR(I, utf8_tofold, SV *) +PERLVAR(I, utf8_tosimplefold, SV *) PERLVAR(I, utf8_charname_begin, SV *) PERLVAR(I, utf8_charname_continue, SV *) -PERLVAR(I, utf8_mark, SV *) -PERLVARI(I, InBitmap, SV *, NULL) -PERLVAR(I, CCC_non0_non230, SV *) -PERLVAR(I, Private_Use, SV *) +PERLVAR(I, utf8_mark, SV *) +PERLVARI(I, InBitmap, SV *, NULL) +PERLVAR(I, CCC_non0_non230, SV *) +PERLVAR(I, Private_Use, SV *) #ifdef HAS_MBRLEN PERLVAR(I, mbrlen_ps, mbstate_t) diff --git a/invlist_inline.h b/invlist_inline.h index ebb37b6543d28..fb836a8f45842 100644 --- a/invlist_inline.h +++ b/invlist_inline.h @@ -215,7 +215,7 @@ S_get_invlist_iter_addr(SV* invlist) } PERL_STATIC_INLINE void -S_invlist_iterinit(SV* invlist) /* Initialize iterator for invlist */ +S_invlist_iterinit(SV* invlist) /* Initialize iterator for invlist */ { PERL_ARGS_ASSERT_INVLIST_ITERINIT; @@ -255,7 +255,7 @@ S_invlist_iternext(SV* invlist, UV* start, UV* end) PERL_ARGS_ASSERT_INVLIST_ITERNEXT; if (*pos >= len) { - *pos = (STRLEN) UV_MAX; /* Force iterinit() to be required next time */ + *pos = (STRLEN) UV_MAX; /* Force iterinit() to be required next time */ return FALSE; } diff --git a/iperlsys.h b/iperlsys.h index b922af0e65846..1be8d6e355d4d 100644 --- a/iperlsys.h +++ b/iperlsys.h @@ -633,8 +633,8 @@ typedef Off_t (*LPLIOLseek)(struct IPerlLIO*, int, Off_t, int); typedef int (*LPLIOLstat)(struct IPerlLIO*, const char*, Stat_t*); typedef char* (*LPLIOMktemp)(struct IPerlLIO*, char*); -typedef int (*LPLIOOpen)(struct IPerlLIO*, const char*, int); -typedef int (*LPLIOOpen3)(struct IPerlLIO*, const char*, int, int); +typedef int (*LPLIOOpen)(struct IPerlLIO*, const char*, int); +typedef int (*LPLIOOpen3)(struct IPerlLIO*, const char*, int, int); typedef int (*LPLIORead)(struct IPerlLIO*, int, void*, unsigned int); typedef int (*LPLIORename)(struct IPerlLIO*, const char*, const char*); @@ -893,7 +893,7 @@ struct IPerlMemInfo # define PerlMem_realloc(buf, size) realloc((buf), (size)) # define PerlMem_free(buf) free((buf)) # define PerlMem_calloc(num, size) calloc((num), (size)) -# define PerlMem_get_lock() +# define PerlMem_get_lock() # define PerlMem_free_lock() # define PerlMem_is_locked() 0 @@ -902,7 +902,7 @@ struct IPerlMemInfo # define PerlMemShared_realloc(buf, size) realloc((buf), (size)) # define PerlMemShared_free(buf) free((buf)) # define PerlMemShared_calloc(num, size) calloc((num), (size)) -# define PerlMemShared_get_lock() +# define PerlMemShared_get_lock() # define PerlMemShared_free_lock() # define PerlMemShared_is_locked() 0 @@ -911,7 +911,7 @@ struct IPerlMemInfo # define PerlMemParse_realloc(buf, size) realloc((buf), (size)) # define PerlMemParse_free(buf) free((buf)) # define PerlMemParse_calloc(num, size) calloc((num), (size)) -# define PerlMemParse_get_lock() +# define PerlMemParse_get_lock() # define PerlMemParse_free_lock() # define PerlMemParse_is_locked() 0 @@ -1125,7 +1125,7 @@ struct IPerlProcInfo # define PerlProc_wait(t) wait((t)) # define PerlProc_waitpid(p,s,f) waitpid((p), (s), (f)) # define PerlProc_setjmp(b, n) Sigsetjmp((b), (n)) -# define PerlProc_longjmp(b, n)Siglongjmp((b), (n)) +# define PerlProc_longjmp(b, n) Siglongjmp((b), (n)) # define PerlProc_signal(n, h) signal((n), (h)) # define PerlProc_fork() my_fork() # define PerlProc_getpid() getpid() diff --git a/mg.h b/mg.h index a25641d10c1ce..cc9c370c5eba7 100644 --- a/mg.h +++ b/mg.h @@ -9,59 +9,59 @@ */ struct mgvtbl { - 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, + 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 (*svt_dup) (pTHX_ MAGIC *mg, CLONE_PARAMS *param); - int (*svt_local)(pTHX_ SV *nsv, MAGIC *mg); + int (*svt_dup) (pTHX_ MAGIC *mg, CLONE_PARAMS *param); + int (*svt_local)(pTHX_ SV *nsv, MAGIC *mg); }; struct magic { - MAGIC* mg_moremagic; - MGVTBL* mg_virtual; /* pointer to magic functions */ - U16 mg_private; - char mg_type; - U8 mg_flags; - SSize_t mg_len; - SV* mg_obj; - char* mg_ptr; + MAGIC* mg_moremagic; + MGVTBL* mg_virtual; /* pointer to magic functions */ + U16 mg_private; + char mg_type; + U8 mg_flags; + SSize_t mg_len; + SV* mg_obj; + char* mg_ptr; }; #define MGf_TAINTEDDIR 1 /* PERL_MAGIC_envelem only */ #define MGf_MINMATCH 1 /* PERL_MAGIC_regex_global only */ #define MGf_REQUIRE_GV 1 /* PERL_MAGIC_checkcall only */ #define MGf_REFCOUNTED 2 -#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 */ +#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 */ #define MGf_BYTES 0x40 /* PERL_MAGIC_regex_global only */ #define MGf_PERSIST 0x80 /* PERL_MAGIC_lvref only */ -#define MgTAINTEDDIR(mg) (mg->mg_flags & MGf_TAINTEDDIR) -#define MgTAINTEDDIR_on(mg) (mg->mg_flags |= MGf_TAINTEDDIR) -#define MgTAINTEDDIR_off(mg) (mg->mg_flags &= ~MGf_TAINTEDDIR) +#define MgTAINTEDDIR(mg) (mg->mg_flags & MGf_TAINTEDDIR) +#define MgTAINTEDDIR_on(mg) (mg->mg_flags |= MGf_TAINTEDDIR) +#define MgTAINTEDDIR_off(mg) (mg->mg_flags &= ~MGf_TAINTEDDIR) /* Extracts the SV stored in mg, or NULL. */ -#define MgSV(mg) (((int)((mg)->mg_len) == HEf_SVKEY) ? \ - MUTABLE_SV((mg)->mg_ptr) : \ +#define MgSV(mg) (((int)((mg)->mg_len) == HEf_SVKEY) ? \ + MUTABLE_SV((mg)->mg_ptr) : \ NULL) /* If mg contains an SV, these extract the PV stored in that SV; otherwise, these extract the mg's mg_ptr/mg_len. These do NOT account for the SV's UTF8 flag, so handle with care. */ -#define MgPV(mg,lp) ((((int)(lp = (mg)->mg_len)) == HEf_SVKEY) ? \ - SvPV(MUTABLE_SV((mg)->mg_ptr),lp) : \ +#define MgPV(mg,lp) ((((int)(lp = (mg)->mg_len)) == HEf_SVKEY) ? \ + SvPV(MUTABLE_SV((mg)->mg_ptr),lp) : \ (mg)->mg_ptr) -#define MgPV_const(mg,lp) ((((int)(lp = (mg)->mg_len)) == HEf_SVKEY) ? \ +#define MgPV_const(mg,lp) ((((int)(lp = (mg)->mg_len)) == HEf_SVKEY) ? \ SvPV_const(MUTABLE_SV((mg)->mg_ptr),lp) : \ (const char*)(mg)->mg_ptr) -#define MgPV_nolen_const(mg) (((((int)(mg)->mg_len)) == HEf_SVKEY) ? \ +#define MgPV_nolen_const(mg) (((((int)(mg)->mg_len)) == HEf_SVKEY) ? \ SvPV_nolen_const(MUTABLE_SV((mg)->mg_ptr)) : \ (const char*)(mg)->mg_ptr) @@ -72,13 +72,13 @@ struct magic { #if defined(PERL_CORE) || defined(PERL_EXT) # define MgBYTEPOS(mg,sv,pv,len) S_MgBYTEPOS(aTHX_ mg,sv,pv,len) /* assumes get-magic and stringification have already occurred */ -# define MgBYTEPOS_set(mg,sv,pv,off) ( \ - assert_((mg)->mg_type == PERL_MAGIC_regex_global) \ +# define MgBYTEPOS_set(mg,sv,pv,off) ( \ + assert_((mg)->mg_type == PERL_MAGIC_regex_global) \ SvPOK(sv) && (!SvGMAGICAL(sv) || sv_only_taint_gmagic(sv)) \ ? (mg)->mg_len = (off), (mg)->mg_flags |= MGf_BYTES \ - : ((mg)->mg_len = DO_UTF8(sv) \ + : ((mg)->mg_len = DO_UTF8(sv) \ ? (SSize_t)utf8_length((U8 *)(pv), (U8 *)(pv)+(off)) \ - : (SSize_t)(off), \ + : (SSize_t)(off), \ (mg)->mg_flags &= ~MGf_BYTES)) #endif diff --git a/mydtrace.h b/mydtrace.h index 6c66a08509806..aae54ea6e4ed1 100644 --- a/mydtrace.h +++ b/mydtrace.h @@ -5,8 +5,8 @@ * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * - * Provides macros that wrap the various DTrace probes we use. We add - * an extra level of wrapping to encapsulate the _ENABLED tests. + * Provides macros that wrap the various DTrace probes we use. We add + * an extra level of wrapping to encapsulate the _ENABLED tests. */ #if defined(USE_DTRACE) && defined(PERL_CORE) diff --git a/op.h b/op.h index ec3e1204a3714..b59e72f86f26b 100644 --- a/op.h +++ b/op.h @@ -10,33 +10,33 @@ /* * The fields of BASEOP are: - * op_next Pointer to next ppcode to execute after this one. - * (Top level pre-grafted op points to first op, - * but this is replaced when op is grafted in, when - * this op will point to the real next op, and the new - * parent takes over role of remembering starting op.) - * op_sibparent Pointer to the op's next sibling, or to the parent - * if there are no more siblings. - * op_ppaddr Pointer to current ppcode's function. - * op_targ An index into the current pad, identifying an SV - * that is typically used to store the OP's result - * (such as a lexical variable, or a SVs_PADTMP - * temporary intermediate value). - * op_type The type of the operation. - * op_opt Whether or not the op has been optimised by the - * peephole optimiser. - * op_slabbed allocated via opslab - * op_static tell op_free() to skip PerlMemShared_free(), when + * op_next Pointer to next ppcode to execute after this one. + * (Top level pre-grafted op points to first op, + * but this is replaced when op is grafted in, when + * this op will point to the real next op, and the new + * parent takes over role of remembering starting op.) + * op_sibparent Pointer to the op's next sibling, or to the parent + * if there are no more siblings. + * op_ppaddr Pointer to current ppcode's function. + * op_targ An index into the current pad, identifying an SV + * that is typically used to store the OP's result + * (such as a lexical variable, or a SVs_PADTMP + * temporary intermediate value). + * op_type The type of the operation. + * op_opt Whether or not the op has been optimised by the + * peephole optimiser. + * op_slabbed allocated via opslab + * op_static tell op_free() to skip PerlMemShared_free(), when * !op_slabbed. - * op_savefree on savestack via SAVEFREEOP - * op_folded Result/remainder of a constant fold operation. - * op_moresib this op is not the last sibling - * op_spare One spare bit - * op_flags Flags common to all operations. See OPf_* below. - * op_private Flags peculiar to a particular operation (BUT, - * by default, set to the number of children until - * the operation is privatized by a check routine, - * which may or may not check number of children). + * op_savefree on savestack via SAVEFREEOP + * op_folded Result/remainder of a constant fold operation. + * op_moresib this op is not the last sibling + * op_spare One spare bit + * op_flags Flags common to all operations. See OPf_* below. + * op_private Flags peculiar to a particular operation (BUT, + * by default, set to the number of children until + * the operation is privatized by a check routine, + * which may or may not check number of children). */ #include "op_reg_common.h" @@ -47,21 +47,21 @@ typedef PERL_BITFIELD16 Optype; #ifdef BASEOP_DEFINITION #define BASEOP BASEOP_DEFINITION #else -#define BASEOP \ - OP* op_next; \ - OP* op_sibparent; \ - OP* (*op_ppaddr)(pTHX); \ - PADOFFSET op_targ; \ - PERL_BITFIELD16 op_type:9; \ - PERL_BITFIELD16 op_opt:1; \ - PERL_BITFIELD16 op_slabbed:1; \ - PERL_BITFIELD16 op_savefree:1; \ - PERL_BITFIELD16 op_static:1; \ - PERL_BITFIELD16 op_folded:1; \ +#define BASEOP \ + OP* op_next; \ + OP* op_sibparent; \ + OP* (*op_ppaddr)(pTHX); \ + PADOFFSET op_targ; \ + PERL_BITFIELD16 op_type:9; \ + PERL_BITFIELD16 op_opt:1; \ + PERL_BITFIELD16 op_slabbed:1; \ + PERL_BITFIELD16 op_savefree:1; \ + PERL_BITFIELD16 op_static:1; \ + PERL_BITFIELD16 op_folded:1; \ PERL_BITFIELD16 op_moresib:1; \ - PERL_BITFIELD16 op_spare:1; \ - U8 op_flags; \ - U8 op_private; + PERL_BITFIELD16 op_spare:1; \ + U8 op_flags; \ + U8 op_private; #endif #define OpTYPE_set(o,type) \ @@ -81,7 +81,7 @@ typedef PERL_BITFIELD16 Optype; #define OP_GIMME(op,dfl) \ (((op)->op_flags & OPf_WANT) ? ((op)->op_flags & OPf_WANT) : dfl) -#define OP_GIMME_REVERSE(flags) ((flags) & G_WANT) +#define OP_GIMME_REVERSE(flags) ((flags) & G_WANT) /* =for apidoc_section $callback @@ -99,27 +99,27 @@ Deprecated. Use C instead. =cut */ -#define GIMME_V Perl_gimme_V(aTHX) +#define GIMME_V Perl_gimme_V(aTHX) /* Public flags */ -#define OPf_WANT 3 /* Mask for "want" bits: */ -#define OPf_WANT_VOID 1 /* Want nothing */ -#define OPf_WANT_SCALAR 2 /* Want single value */ -#define OPf_WANT_LIST 3 /* Want list of any length */ -#define OPf_KIDS 4 /* There is a firstborn child. */ -#define OPf_PARENS 8 /* This operator was parenthesized. */ +#define OPf_WANT 3 /* Mask for "want" bits: */ +#define OPf_WANT_VOID 1 /* Want nothing */ +#define OPf_WANT_SCALAR 2 /* Want single value */ +#define OPf_WANT_LIST 3 /* Want list of any length */ +#define OPf_KIDS 4 /* There is a firstborn child. */ +#define OPf_PARENS 8 /* This operator was parenthesized. */ /* (Or block needs explicit scope entry.) */ -#define OPf_REF 16 /* Certified reference. */ +#define OPf_REF 16 /* Certified reference. */ /* (Return container, not containee). */ -#define OPf_MOD 32 /* Will modify (lvalue). */ +#define OPf_MOD 32 /* Will modify (lvalue). */ -#define OPf_STACKED 64 /* Some arg is arriving on the stack. */ +#define OPf_STACKED 64 /* Some arg is arriving on the stack. */ /* Indicates mutator-variant of op for those * ops which support them, e.g. $x += 1 */ -#define OPf_SPECIAL 128 /* Do something weird for this op: */ +#define OPf_SPECIAL 128 /* Do something weird for this op: */ /* On local LVAL, don't init local value. */ /* On OP_SORT, subroutine is inlined. */ /* On OP_NOT, inversion was implicit. */ @@ -167,15 +167,15 @@ Deprecated. Use C instead. #define OPf_FOLDED (1<<16) /* old names; don't use in new code, but don't break them, either */ -#define OPf_LIST OPf_WANT_LIST -#define OPf_KNOW OPf_WANT +#define OPf_LIST OPf_WANT_LIST +#define OPf_KNOW OPf_WANT #if !defined(PERL_CORE) && !defined(PERL_EXT) # define GIMME \ - (PL_op->op_flags & OPf_WANT \ - ? ((PL_op->op_flags & OPf_WANT) == OPf_WANT_LIST \ - ? G_LIST \ - : G_SCALAR) \ + (PL_op->op_flags & OPf_WANT \ + ? ((PL_op->op_flags & OPf_WANT) == OPf_WANT_LIST \ + ? G_LIST \ + : G_SCALAR) \ : dowantarray()) #endif @@ -184,7 +184,7 @@ Deprecated. Use C instead. * from data in regen/op_private */ -#define OPpTRANS_ALL (OPpTRANS_USE_SVOP|OPpTRANS_CAN_FORCE_UTF8|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE) +#define OPpTRANS_ALL (OPpTRANS_USE_SVOP|OPpTRANS_CAN_FORCE_UTF8|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE) #define OPpTRANS_FROM_UTF OPpTRANS_USE_SVOP #define OPpTRANS_TO_UTF OPpTRANS_CAN_FORCE_UTF8 @@ -219,37 +219,37 @@ struct op { struct unop { BASEOP - OP * op_first; + OP * op_first; }; struct unop_aux { BASEOP - OP *op_first; + OP *op_first; UNOP_AUX_item *op_aux; }; struct binop { BASEOP - OP * op_first; - OP * op_last; + OP * op_first; + OP * op_last; }; struct logop { BASEOP - OP * op_first; + OP * op_first; /* Note that op->op_other is the *next* op in execution order of the * alternate branch, not the root of the subtree. I.e. imagine it being * called ->op_otherfirst. * To find the structural subtree root (what could be called * ->op_otherroot), use OpSIBLING of ->op_first */ - OP * op_other; + OP * op_other; }; struct listop { BASEOP - OP * op_first; - OP * op_last; + OP * op_first; + OP * op_last; }; struct methop { @@ -269,8 +269,8 @@ struct methop { struct pmop { BASEOP - OP * op_first; - OP * op_last; + OP * op_first; + OP * op_last; #ifdef USE_ITHREADS PADOFFSET op_pmoffset; #else @@ -278,23 +278,23 @@ struct pmop { #endif U32 op_pmflags; union { - OP * op_pmreplroot; /* For OP_SUBST */ - PADOFFSET op_pmtargetoff; /* For OP_SPLIT lex ary or thr GV */ - GV * op_pmtargetgv; /* For OP_SPLIT non-threaded GV */ - } op_pmreplrootu; + OP * op_pmreplroot; /* For OP_SUBST */ + PADOFFSET op_pmtargetoff; /* For OP_SPLIT lex ary or thr GV */ + GV * op_pmtargetgv; /* For OP_SPLIT non-threaded GV */ + } op_pmreplrootu; union { - OP * op_pmreplstart; /* Only used in OP_SUBST */ + OP * op_pmreplstart; /* Only used in OP_SUBST */ #ifdef USE_ITHREADS PADOFFSET op_pmstashoff; /* Only used in OP_MATCH, with PMf_ONCE set */ #else - HV * op_pmstash; + HV * op_pmstash; #endif - } op_pmstashstartu; - OP * op_code_list; /* list of (?{}) code blocks */ + } op_pmstashstartu; + OP * op_code_list; /* list of (?{}) code blocks */ }; #ifdef USE_ITHREADS -#define PM_GETRE(o) (SvTYPE(PL_regex_pad[(o)->op_pmoffset]) == SVt_REGEXP \ +#define PM_GETRE(o) (SvTYPE(PL_regex_pad[(o)->op_pmoffset]) == SVt_REGEXP \ ? (REGEXP*)(PL_regex_pad[(o)->op_pmoffset]) : NULL) /* The assignment is just to enforce type safety (or at least get a warning). */ @@ -304,9 +304,9 @@ struct pmop { more complex, and we'd have an AV with (SV*)NULL in it, which feels bad */ /* BEWARE - something that calls this macro passes (r) which has a side effect. */ -#define PM_SETRE(o,r) STMT_START { \ - REGEXP *const _pm_setre = (r); \ - assert(_pm_setre); \ +#define PM_SETRE(o,r) STMT_START { \ + REGEXP *const _pm_setre = (r); \ + assert(_pm_setre); \ PL_regex_pad[(o)->op_pmoffset] = MUTABLE_SV(_pm_setre); \ } STMT_END #else @@ -348,48 +348,48 @@ struct pmop { /* Set by the parser if it discovers an error, so the regex shouldn't be * compiled */ -#define PMf_HAS_ERROR (1U<<(PMf_BASE_SHIFT+3)) +#define PMf_HAS_ERROR (1U<<(PMf_BASE_SHIFT+3)) /* 'use re "taint"' in scope: taint $1 etc. if target tainted */ -#define PMf_RETAINT (1U<<(PMf_BASE_SHIFT+4)) +#define PMf_RETAINT (1U<<(PMf_BASE_SHIFT+4)) /* 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 (1U<<(PMf_BASE_SHIFT+5)) +#define PMf_ONCE (1U<<(PMf_BASE_SHIFT+5)) /* PMf_ONCE, i.e. ?pat?, has matched successfully. Not used under threading. */ #define PMf_USED (1U<<(PMf_BASE_SHIFT+6)) /* subst replacement is constant */ -#define PMf_CONST (1U<<(PMf_BASE_SHIFT+7)) +#define PMf_CONST (1U<<(PMf_BASE_SHIFT+7)) /* keep 1st runtime pattern forever */ -#define PMf_KEEP (1U<<(PMf_BASE_SHIFT+8)) +#define PMf_KEEP (1U<<(PMf_BASE_SHIFT+8)) -#define PMf_GLOBAL (1U<<(PMf_BASE_SHIFT+9)) /* pattern had a g modifier */ +#define PMf_GLOBAL (1U<<(PMf_BASE_SHIFT+9)) /* pattern had a g modifier */ /* don't reset pos() if //g fails */ -#define PMf_CONTINUE (1U<<(PMf_BASE_SHIFT+10)) +#define PMf_CONTINUE (1U<<(PMf_BASE_SHIFT+10)) /* evaluating replacement as expr */ -#define PMf_EVAL (1U<<(PMf_BASE_SHIFT+11)) +#define PMf_EVAL (1U<<(PMf_BASE_SHIFT+11)) /* Return substituted string instead of modifying it. */ -#define PMf_NONDESTRUCT (1U<<(PMf_BASE_SHIFT+12)) +#define PMf_NONDESTRUCT (1U<<(PMf_BASE_SHIFT+12)) /* the pattern has a CV attached (currently only under qr/...(?{}).../) */ -#define PMf_HAS_CV (1U<<(PMf_BASE_SHIFT+13)) +#define PMf_HAS_CV (1U<<(PMf_BASE_SHIFT+13)) /* op_code_list is private; don't free it etc. It may well point to * code within another sub, with different pad etc */ -#define PMf_CODELIST_PRIVATE (1U<<(PMf_BASE_SHIFT+14)) +#define PMf_CODELIST_PRIVATE (1U<<(PMf_BASE_SHIFT+14)) /* the PMOP is a QR (we should be able to detect that from the op type, * but the regex compilation API passes just the pm flags, not the op * itself */ -#define PMf_IS_QR (1U<<(PMf_BASE_SHIFT+15)) -#define PMf_USE_RE_EVAL (1U<<(PMf_BASE_SHIFT+16)) /* use re'eval' in scope */ +#define PMf_IS_QR (1U<<(PMf_BASE_SHIFT+15)) +#define PMf_USE_RE_EVAL (1U<<(PMf_BASE_SHIFT+16)) /* use re'eval' in scope */ /* Means that this is a subpattern being compiled while processing a \p{} * wildcard. This isn't called from op.c, but it is passed as a pm flag. */ @@ -408,100 +408,100 @@ struct pmop { # define PmopSTASH(o) ((o)->op_pmflags & PMf_ONCE \ ? PL_stashpad[(o)->op_pmstashstartu.op_pmstashoff] \ : NULL) -# define PmopSTASH_set(o,hv) \ - (assert_((o)->op_pmflags & PMf_ONCE) \ - (o)->op_pmstashstartu.op_pmstashoff = \ +# define PmopSTASH_set(o,hv) \ + (assert_((o)->op_pmflags & PMf_ONCE) \ + (o)->op_pmstashstartu.op_pmstashoff = \ (hv) ? alloccopstash(hv) : 0) #else -# define PmopSTASH(o) \ +# define PmopSTASH(o) \ (((o)->op_pmflags & PMf_ONCE) ? (o)->op_pmstashstartu.op_pmstash : NULL) # if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS) -# define PmopSTASH_set(o,hv) ({ \ - assert((o)->op_pmflags & PMf_ONCE); \ - ((o)->op_pmstashstartu.op_pmstash = (hv)); \ +# define PmopSTASH_set(o,hv) ({ \ + assert((o)->op_pmflags & PMf_ONCE); \ + ((o)->op_pmstashstartu.op_pmstash = (hv)); \ }) # else -# define PmopSTASH_set(o,hv) ((o)->op_pmstashstartu.op_pmstash = (hv)) +# define PmopSTASH_set(o,hv) ((o)->op_pmstashstartu.op_pmstash = (hv)) # endif #endif -#define PmopSTASHPV(o) (PmopSTASH(o) ? HvNAME_get(PmopSTASH(o)) : NULL) +#define PmopSTASHPV(o) (PmopSTASH(o) ? HvNAME_get(PmopSTASH(o)) : NULL) /* op_pmstashstartu.op_pmstash is not refcounted */ -#define PmopSTASHPV_set(o,pv) PmopSTASH_set((o), gv_stashpv(pv,GV_ADD)) +#define PmopSTASHPV_set(o,pv) PmopSTASH_set((o), gv_stashpv(pv,GV_ADD)) struct svop { BASEOP - SV * op_sv; + SV * op_sv; }; struct padop { BASEOP - PADOFFSET op_padix; + PADOFFSET op_padix; }; struct pvop { BASEOP - char * op_pv; + char * op_pv; }; struct loop { BASEOP - OP * op_first; - OP * op_last; - OP * op_redoop; - OP * op_nextop; - OP * op_lastop; + OP * op_first; + OP * op_last; + OP * op_redoop; + OP * op_nextop; + OP * op_lastop; }; -#define cUNOPx(o) ((UNOP*)(o)) -#define cUNOP_AUXx(o) ((UNOP_AUX*)(o)) -#define cBINOPx(o) ((BINOP*)(o)) -#define cLISTOPx(o) ((LISTOP*)(o)) -#define cLOGOPx(o) ((LOGOP*)(o)) -#define cPMOPx(o) ((PMOP*)(o)) -#define cSVOPx(o) ((SVOP*)(o)) -#define cPADOPx(o) ((PADOP*)(o)) -#define cPVOPx(o) ((PVOP*)(o)) -#define cCOPx(o) ((COP*)(o)) -#define cLOOPx(o) ((LOOP*)(o)) -#define cMETHOPx(o) ((METHOP*)(o)) - -#define cUNOP cUNOPx(PL_op) -#define cUNOP_AUX cUNOP_AUXx(PL_op) -#define cBINOP cBINOPx(PL_op) -#define cLISTOP cLISTOPx(PL_op) -#define cLOGOP cLOGOPx(PL_op) -#define cPMOP cPMOPx(PL_op) -#define cSVOP cSVOPx(PL_op) -#define cPADOP cPADOPx(PL_op) -#define cPVOP cPVOPx(PL_op) -#define cCOP cCOPx(PL_op) -#define cLOOP cLOOPx(PL_op) +#define cUNOPx(o) ((UNOP*)(o)) +#define cUNOP_AUXx(o) ((UNOP_AUX*)(o)) +#define cBINOPx(o) ((BINOP*)(o)) +#define cLISTOPx(o) ((LISTOP*)(o)) +#define cLOGOPx(o) ((LOGOP*)(o)) +#define cPMOPx(o) ((PMOP*)(o)) +#define cSVOPx(o) ((SVOP*)(o)) +#define cPADOPx(o) ((PADOP*)(o)) +#define cPVOPx(o) ((PVOP*)(o)) +#define cCOPx(o) ((COP*)(o)) +#define cLOOPx(o) ((LOOP*)(o)) +#define cMETHOPx(o) ((METHOP*)(o)) + +#define cUNOP cUNOPx(PL_op) +#define cUNOP_AUX cUNOP_AUXx(PL_op) +#define cBINOP cBINOPx(PL_op) +#define cLISTOP cLISTOPx(PL_op) +#define cLOGOP cLOGOPx(PL_op) +#define cPMOP cPMOPx(PL_op) +#define cSVOP cSVOPx(PL_op) +#define cPADOP cPADOPx(PL_op) +#define cPVOP cPVOPx(PL_op) +#define cCOP cCOPx(PL_op) +#define cLOOP cLOOPx(PL_op) #define cMETHOP cMETHOPx(PL_op) -#define cUNOPo cUNOPx(o) -#define cUNOP_AUXo cUNOP_AUXx(o) -#define cBINOPo cBINOPx(o) -#define cLISTOPo cLISTOPx(o) -#define cLOGOPo cLOGOPx(o) -#define cPMOPo cPMOPx(o) -#define cSVOPo cSVOPx(o) -#define cPADOPo cPADOPx(o) -#define cPVOPo cPVOPx(o) -#define cCOPo cCOPx(o) -#define cLOOPo cLOOPx(o) +#define cUNOPo cUNOPx(o) +#define cUNOP_AUXo cUNOP_AUXx(o) +#define cBINOPo cBINOPx(o) +#define cLISTOPo cLISTOPx(o) +#define cLOGOPo cLOGOPx(o) +#define cPMOPo cPMOPx(o) +#define cSVOPo cSVOPx(o) +#define cPADOPo cPADOPx(o) +#define cPVOPo cPVOPx(o) +#define cCOPo cCOPx(o) +#define cLOOPo cLOOPx(o) #define cMETHOPo cMETHOPx(o) -#define kUNOP cUNOPx(kid) -#define kUNOP_AUX cUNOP_AUXx(kid) -#define kBINOP cBINOPx(kid) -#define kLISTOP cLISTOPx(kid) -#define kLOGOP cLOGOPx(kid) -#define kPMOP cPMOPx(kid) -#define kSVOP cSVOPx(kid) -#define kPADOP cPADOPx(kid) -#define kPVOP cPVOPx(kid) -#define kCOP cCOPx(kid) -#define kLOOP cLOOPx(kid) +#define kUNOP cUNOPx(kid) +#define kUNOP_AUX cUNOP_AUXx(kid) +#define kBINOP cBINOPx(kid) +#define kLISTOP cLISTOPx(kid) +#define kLOGOP cLOGOPx(kid) +#define kPMOP cPMOPx(kid) +#define kSVOP cSVOPx(kid) +#define kPADOP cPADOPx(kid) +#define kPVOP cPVOPx(kid) +#define kCOP cCOPx(kid) +#define kLOOP cLOOPx(kid) #define kMETHOP cMETHOPx(kid) @@ -524,29 +524,29 @@ typedef enum { #ifdef USE_ITHREADS -# define cGVOPx_gv(o) ((GV*)PAD_SVl(cPADOPx(o)->op_padix)) +# define cGVOPx_gv(o) ((GV*)PAD_SVl(cPADOPx(o)->op_padix)) # ifndef PERL_CORE -# define IS_PADGV(v) (v && isGV(v)) -# define IS_PADCONST(v) \ +# define IS_PADGV(v) (v && isGV(v)) +# define IS_PADCONST(v) \ (v && (SvREADONLY(v) || (SvIsCOW(v) && !SvLEN(v)))) # endif -# define cSVOPx_sv(v) (cSVOPx(v)->op_sv \ +# define cSVOPx_sv(v) (cSVOPx(v)->op_sv \ ? cSVOPx(v)->op_sv : PAD_SVl((v)->op_targ)) -# define cSVOPx_svp(v) (cSVOPx(v)->op_sv \ +# define cSVOPx_svp(v) (cSVOPx(v)->op_sv \ ? &cSVOPx(v)->op_sv : &PAD_SVl((v)->op_targ)) # define cMETHOPx_meth(v) (cMETHOPx(v)->op_u.op_meth_sv \ ? cMETHOPx(v)->op_u.op_meth_sv : PAD_SVl((v)->op_targ)) -# define cMETHOPx_rclass(v) PAD_SVl(cMETHOPx(v)->op_rclass_targ) +# define cMETHOPx_rclass(v) PAD_SVl(cMETHOPx(v)->op_rclass_targ) #else -# define cGVOPx_gv(o) ((GV*)cSVOPx(o)->op_sv) +# define cGVOPx_gv(o) ((GV*)cSVOPx(o)->op_sv) # ifndef PERL_CORE -# define IS_PADGV(v) FALSE -# define IS_PADCONST(v) FALSE +# define IS_PADGV(v) FALSE +# define IS_PADCONST(v) FALSE # endif -# define cSVOPx_sv(v) (cSVOPx(v)->op_sv) -# define cSVOPx_svp(v) (&cSVOPx(v)->op_sv) +# define cSVOPx_sv(v) (cSVOPx(v)->op_sv) +# define cSVOPx_svp(v) (&cSVOPx(v)->op_sv) # define cMETHOPx_meth(v) (cMETHOPx(v)->op_u.op_meth_sv) -# define cMETHOPx_rclass(v) (cMETHOPx(v)->op_rclass_sv) +# define cMETHOPx_rclass(v) (cMETHOPx(v)->op_rclass_sv) #endif #define cMETHOP_meth cMETHOPx_meth(PL_op) @@ -555,12 +555,12 @@ typedef enum { #define cMETHOPo_meth cMETHOPx_meth(o) #define cMETHOPo_rclass cMETHOPx_rclass(o) -#define cGVOP_gv cGVOPx_gv(PL_op) -#define cGVOPo_gv cGVOPx_gv(o) -#define kGVOP_gv cGVOPx_gv(kid) -#define cSVOP_sv cSVOPx_sv(PL_op) -#define cSVOPo_sv cSVOPx_sv(o) -#define kSVOP_sv cSVOPx_sv(kid) +#define cGVOP_gv cGVOPx_gv(PL_op) +#define cGVOPo_gv cGVOPx_gv(o) +#define kGVOP_gv cGVOPx_gv(kid) +#define cSVOP_sv cSVOPx_sv(PL_op) +#define cSVOPo_sv cSVOPx_sv(o) +#define kSVOP_sv cSVOPx_sv(kid) #ifndef PERL_CORE # define Nullop ((OP*)NULL) @@ -621,35 +621,35 @@ typedef enum { */ #ifdef USE_ITHREADS -# define OP_REFCNT_INIT MUTEX_INIT(&PL_op_mutex) +# define OP_REFCNT_INIT MUTEX_INIT(&PL_op_mutex) # ifdef PERL_CORE -# define OP_REFCNT_LOCK MUTEX_LOCK(&PL_op_mutex) -# define OP_REFCNT_UNLOCK MUTEX_UNLOCK(&PL_op_mutex) +# define OP_REFCNT_LOCK MUTEX_LOCK(&PL_op_mutex) +# define OP_REFCNT_UNLOCK MUTEX_UNLOCK(&PL_op_mutex) # else /* Subject non-core uses to clang thread safety analysis */ -# define OP_REFCNT_LOCK op_refcnt_lock() -# define OP_REFCNT_UNLOCK op_refcnt_unlock() +# define OP_REFCNT_LOCK op_refcnt_lock() +# define OP_REFCNT_UNLOCK op_refcnt_unlock() # endif -# define OP_REFCNT_TERM MUTEX_DESTROY(&PL_op_mutex) +# define OP_REFCNT_TERM MUTEX_DESTROY(&PL_op_mutex) #else -# define OP_REFCNT_INIT NOOP -# define OP_REFCNT_LOCK NOOP -# define OP_REFCNT_UNLOCK NOOP -# define OP_REFCNT_TERM NOOP +# define OP_REFCNT_INIT NOOP +# define OP_REFCNT_LOCK NOOP +# define OP_REFCNT_UNLOCK NOOP +# define OP_REFCNT_TERM NOOP #endif -#define OpREFCNT_set(o,n) ((o)->op_targ = (n)) +#define OpREFCNT_set(o,n) ((o)->op_targ = (n)) #ifdef PERL_DEBUG_READONLY_OPS -# define OpREFCNT_inc(o) Perl_op_refcnt_inc(aTHX_ o) -# define OpREFCNT_dec(o) Perl_op_refcnt_dec(aTHX_ o) +# define OpREFCNT_inc(o) Perl_op_refcnt_inc(aTHX_ o) +# define OpREFCNT_dec(o) Perl_op_refcnt_dec(aTHX_ o) #else -# define OpREFCNT_inc(o) ((o) ? (++(o)->op_targ, (o)) : NULL) -# define OpREFCNT_dec(o) (--(o)->op_targ) +# define OpREFCNT_inc(o) ((o) ? (++(o)->op_targ, (o)) : NULL) +# define OpREFCNT_dec(o) (--(o)->op_targ) #endif /* flags used by Perl_load_module() */ -#define PERL_LOADMOD_DENY 0x1 /* no Module */ -#define PERL_LOADMOD_NOIMPORT 0x2 /* use Module () */ -#define PERL_LOADMOD_IMPORT_OPS 0x4 /* import arguments +#define PERL_LOADMOD_DENY 0x1 /* no Module */ +#define PERL_LOADMOD_NOIMPORT 0x2 /* use Module () */ +#define PERL_LOADMOD_IMPORT_OPS 0x4 /* import arguments are passed as a sin- gle op tree, not a list of SVs */ @@ -689,16 +689,16 @@ least an C. #endif #ifdef PERL_CORE -# define my(o) my_attrs((o), NULL) +# define my(o) my_attrs((o), NULL) #endif #ifdef USE_REENTRANT_API #include "reentr.h" #endif -#define NewOp(m,var,c,type) \ +#define NewOp(m,var,c,type) \ (var = (type *) Perl_Slab_Alloc(aTHX_ c*sizeof(type))) -#define NewOpSz(m,var,size) \ +#define NewOpSz(m,var,size) \ (var = (OP *) Perl_Slab_Alloc(aTHX_ size)) #define FreeOp(p) Perl_Slab_Free(aTHX_ p) @@ -726,28 +726,28 @@ least an C. struct opslot { U16 opslot_size; /* size of this slot (in pointers) */ U16 opslot_offset; /* offset from start of slab (in ptr units) */ - OP opslot_op; /* the op itself */ + OP opslot_op; /* the op itself */ }; struct opslab { - OPSLAB * opslab_next; /* next slab */ - OPSLAB * opslab_head; /* first slab in chain */ - OP ** opslab_freed; /* array of sized chains of freed ops (head only)*/ - size_t opslab_refcnt; /* number of ops (head slab only) */ + OPSLAB * opslab_next; /* next slab */ + OPSLAB * opslab_head; /* first slab in chain */ + OP ** opslab_freed; /* array of sized chains of freed ops (head only)*/ + size_t opslab_refcnt; /* number of ops (head slab only) */ U16 opslab_freed_size; /* allocated size of opslab_freed */ - U16 opslab_size; /* size of slab in pointers, + U16 opslab_size; /* size of slab in pointers, including header */ - U16 opslab_free_space; /* space available in this slab + U16 opslab_free_space; /* space available in this slab for allocating new ops (in ptr units) */ # ifdef PERL_DEBUG_READONLY_OPS - bool opslab_readonly; + bool opslab_readonly; # endif - OPSLOT opslab_slots; /* slots begin here */ + OPSLOT opslab_slots; /* slots begin here */ }; -# define OPSLOT_HEADER STRUCT_OFFSET(OPSLOT, opslot_op) -# define OpSLOT(o) (assert_(o->op_slabbed) \ +# define OPSLOT_HEADER STRUCT_OFFSET(OPSLOT, opslot_op) +# define OpSLOT(o) (assert_(o->op_slabbed) \ (OPSLOT *)(((char *)o)-OPSLOT_HEADER)) /* the slab that owns this op */ @@ -767,16 +767,16 @@ struct opslab { /* Variant that does not null out the pads */ # define OpslabREFCNT_dec_padok(slab) \ (((slab)->opslab_refcnt == 1) \ - ? opslab_free(slab) \ + ? opslab_free(slab) \ : (void)--(slab)->opslab_refcnt) #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); + 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); }; /* @@ -814,12 +814,12 @@ preprocessing token; the type of C depends on C. =cut */ -#define BhkFLAGS(hk) ((hk)->bhk_flags) +#define BhkFLAGS(hk) ((hk)->bhk_flags) -#define BHKf_bhk_start 0x01 +#define BHKf_bhk_start 0x01 #define BHKf_bhk_pre_end 0x02 #define BHKf_bhk_post_end 0x04 -#define BHKf_bhk_eval 0x08 +#define BHKf_bhk_eval 0x08 #define BhkENTRY(hk, which) \ ((BhkFLAGS(hk) & BHKf_ ## which) ? ((hk)->which) : NULL) @@ -912,30 +912,30 @@ Reenable a member of the XOP which has been disabled. */ 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); + U32 xop_flags; + const char *xop_name; + const char *xop_desc; + U32 xop_class; + void (*xop_peep)(pTHX_ OP *o, OP *oldop); }; /* return value of Perl_custom_op_get_field, similar to void * then casting but the U32 doesn't need truncation on 64 bit platforms in the caller, also for easier macro writing */ typedef union { - const char *xop_name; - const char *xop_desc; - U32 xop_class; - void (*xop_peep)(pTHX_ OP *o, OP *oldop); + const char *xop_name; + const char *xop_desc; + U32 xop_class; + void (*xop_peep)(pTHX_ OP *o, OP *oldop); XOP *xop_ptr; } XOPRETANY; #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 XOPf_xop_name 0x01 +#define XOPf_xop_desc 0x02 +#define XOPf_xop_class 0x04 +#define XOPf_xop_peep 0x08 /* used by Perl_custom_op_get_field for option checking */ typedef enum { @@ -946,10 +946,10 @@ typedef enum { XOPe_xop_peep = XOPf_xop_peep } xop_flags_enum; -#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 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 { \ @@ -1072,8 +1072,8 @@ C is non-null. For a higher-level interface, see C>. /* should match anything that uses ck_ftst in regen/opcodes */ #define OP_IS_STAT(op) (OP_IS_FILETEST(op) || (op) == OP_LSTAT || (op) == OP_STAT) -#define OpHAS_SIBLING(o) (cBOOL((o)->op_moresib)) -#define OpSIBLING(o) (0 + (o)->op_moresib ? (o)->op_sibparent : NULL) +#define OpHAS_SIBLING(o) (cBOOL((o)->op_moresib)) +#define OpSIBLING(o) (0 + (o)->op_moresib ? (o)->op_sibparent : NULL) #define OpMORESIB_set(o, sib) ((o)->op_moresib = 1, (o)->op_sibparent = (sib)) #define OpLASTSIB_set(o, parent) \ ((o)->op_moresib = 0, (o)->op_sibparent = (parent)) @@ -1082,22 +1082,22 @@ C is non-null. For a higher-level interface, see C>. #if !defined(PERL_CORE) && !defined(PERL_EXT) /* for backwards compatibility only */ -# define OP_SIBLING(o) OpSIBLING(o) +# define OP_SIBLING(o) OpSIBLING(o) #endif #define newATTRSUB(f, o, p, a, b) Perl_newATTRSUB_x(aTHX_ f, o, p, a, b, FALSE) -#define newSUB(f, o, p, b) newATTRSUB((f), (o), (p), NULL, (b)) +#define newSUB(f, o, p, b) newATTRSUB((f), (o), (p), NULL, (b)) #ifdef USE_ITHREADS -# define OP_CHECK_MUTEX_INIT MUTEX_INIT(&PL_check_mutex) -# define OP_CHECK_MUTEX_LOCK MUTEX_LOCK(&PL_check_mutex) -# define OP_CHECK_MUTEX_UNLOCK MUTEX_UNLOCK(&PL_check_mutex) -# define OP_CHECK_MUTEX_TERM MUTEX_DESTROY(&PL_check_mutex) +# define OP_CHECK_MUTEX_INIT MUTEX_INIT(&PL_check_mutex) +# define OP_CHECK_MUTEX_LOCK MUTEX_LOCK(&PL_check_mutex) +# define OP_CHECK_MUTEX_UNLOCK MUTEX_UNLOCK(&PL_check_mutex) +# define OP_CHECK_MUTEX_TERM MUTEX_DESTROY(&PL_check_mutex) #else -# define OP_CHECK_MUTEX_INIT NOOP -# define OP_CHECK_MUTEX_LOCK NOOP -# define OP_CHECK_MUTEX_UNLOCK NOOP -# define OP_CHECK_MUTEX_TERM NOOP +# define OP_CHECK_MUTEX_INIT NOOP +# define OP_CHECK_MUTEX_LOCK NOOP +# define OP_CHECK_MUTEX_UNLOCK NOOP +# define OP_CHECK_MUTEX_TERM NOOP #endif diff --git a/pad.h b/pad.h index fa5b2896d745a..eea0d9f974171 100644 --- a/pad.h +++ b/pad.h @@ -21,7 +21,7 @@ typedef SSize_t PADOFFSET; /* signed so that -1 is a valid value */ */ struct padlist { - SSize_t xpadl_max; /* max index for which array has space */ + SSize_t xpadl_max; /* max index for which array has space */ union { PAD ** xpadlarr_alloc; /* Pointer to beginning of array of AVs. Note that a 'padnamelist *' is stored @@ -32,16 +32,16 @@ struct padlist { PAD * pad_2; /* maybe unalloced */ } * xpadlarr_dbg; /* for use with a C debugger only */ } xpadl_arr; - U32 xpadl_id; /* Semi-unique ID, shared between clones */ - U32 xpadl_outid; /* ID of outer pad */ + U32 xpadl_id; /* Semi-unique ID, shared between clones */ + U32 xpadl_outid; /* ID of outer pad */ }; struct padnamelist { - SSize_t xpadnl_fill; /* max index in use */ - PADNAME ** xpadnl_alloc; /* pointer to beginning of array */ - SSize_t xpadnl_max; /* max index for which array has space */ - PADOFFSET xpadnl_max_named; /* highest index with len > 0 */ - U32 xpadnl_refcnt; + SSize_t xpadnl_fill; /* max index in use */ + PADNAME ** xpadnl_alloc; /* pointer to beginning of array */ + SSize_t xpadnl_max; /* max index for which array has space */ + PADOFFSET xpadnl_max_named; /* highest index with len > 0 */ + U32 xpadnl_refcnt; }; /* PERL_PADNAME_MINIMAL uses less memory, but on some platforms @@ -56,18 +56,18 @@ struct padnamelist { #endif #define _PADNAME_BASE \ - char * xpadn_pv; \ - HV * xpadn_ourstash; \ - union { \ - HV * xpadn_typestash; \ - CV * xpadn_protocv; \ - } xpadn_type_u; \ - U32 xpadn_low; \ - U32 xpadn_high; \ - U32 xpadn_refcnt; \ - int xpadn_gen; \ - U8 xpadn_len; \ - U8 xpadn_flags + char * xpadn_pv; \ + HV * xpadn_ourstash; \ + union { \ + HV * xpadn_typestash; \ + CV * xpadn_protocv; \ + } xpadn_type_u; \ + U32 xpadn_low; \ + U32 xpadn_high; \ + U32 xpadn_refcnt; \ + int xpadn_gen; \ + U8 xpadn_len; \ + U8 xpadn_flags struct padname { _PADNAME_BASE; @@ -77,9 +77,9 @@ struct padname_with_str { #ifdef PERL_PADNAME_MINIMAL _PADNAME_BASE; #else - struct padname xpadn_padname; + struct padname xpadn_padname; #endif - char xpadn_str[1]; + char xpadn_str[1]; }; #undef _PADNAME_BASE @@ -101,10 +101,10 @@ struct padname_with_str { /* Low range end is exclusive (valid from the cop seq after this one) */ /* High range end is inclusive (valid up to this cop seq) */ -#define COP_SEQ_RANGE_LOW(pn) (pn)->xpadn_low -#define COP_SEQ_RANGE_HIGH(pn) (pn)->xpadn_high -#define PARENT_PAD_INDEX(pn) (pn)->xpadn_low -#define PARENT_FAKELEX_FLAGS(pn) (pn)->xpadn_high +#define COP_SEQ_RANGE_LOW(pn) (pn)->xpadn_low +#define COP_SEQ_RANGE_HIGH(pn) (pn)->xpadn_high +#define PARENT_PAD_INDEX(pn) (pn)->xpadn_low +#define PARENT_FAKELEX_FLAGS(pn) (pn)->xpadn_high /* Flags set in the SvIVX field of FAKE namesvs */ @@ -113,24 +113,24 @@ struct padname_with_str { /* flags for the pad_new() function */ -#define padnew_CLONE 1 /* this pad is for a cloned CV */ -#define padnew_SAVE 2 /* save old globals */ -#define padnew_SAVESUB 4 /* also save extra stuff for start of sub */ +#define padnew_CLONE 1 /* this pad is for a cloned CV */ +#define padnew_SAVE 2 /* save old globals */ +#define padnew_SAVESUB 4 /* also save extra stuff for start of sub */ /* values for the pad_tidy() function */ typedef enum { - padtidy_SUB, /* tidy up a pad for a sub, */ - padtidy_SUBCLONE, /* a cloned sub, */ - padtidy_FORMAT /* or a format */ + padtidy_SUB, /* tidy up a pad for a sub, */ + padtidy_SUBCLONE, /* a cloned sub, */ + padtidy_FORMAT /* or a format */ } padtidy_type; /* flags for pad_add_name_pvn. */ -#define padadd_OUR 0x01 /* our declaration. */ -#define padadd_STATE 0x02 /* state declaration. */ -#define padadd_NO_DUP_CHECK 0x04 /* skip warning on dups. */ -#define padadd_STALEOK 0x08 /* allow stale lexical in active +#define padadd_OUR 0x01 /* our declaration. */ +#define padadd_STATE 0x02 /* state declaration. */ +#define padadd_NO_DUP_CHECK 0x04 /* skip warning on dups. */ +#define padadd_STALEOK 0x08 /* allow stale lexical in active * sub, but only one level up */ /* ASSERT_CURPAD_LEGAL and ASSERT_CURPAD_ACTIVE respectively determine @@ -149,7 +149,7 @@ typedef enum { # define ASSERT_CURPAD_ACTIVE(label) \ pad_peg(label); \ - if (!PL_comppad || (AvARRAY(PL_comppad) != PL_curpad)) \ + if (!PL_comppad || (AvARRAY(PL_comppad) != PL_curpad)) \ Perl_croak(aTHX_ "panic: invalid pad in %s: 0x%" UVxf "[0x%" UVxf "]",\ label, PTR2UV(PL_comppad), PTR2UV(PL_curpad)); #else @@ -163,14 +163,14 @@ typedef enum { * they are documented here for completeness, since they directly or * indirectly affect pads. -=for apidoc m|void|SAVEPADSV |PADOFFSET po +=for apidoc m|void|SAVEPADSV |PADOFFSET po Save a pad slot (used to restore after an iteration) =cut XXX DAPM it would make more sense to make the arg a PADOFFSET -=for apidoc m|void|SAVECLEARSV |SV **svp +=for apidoc m|void|SAVECLEARSV |SV **svp Clear the pointed to pad value on scope exit. (i.e. the runtime action of C) @@ -257,22 +257,22 @@ Increases the reference count of the pad name. Returns the pad name itself. Lowers the reference count of the pad name. -=for apidoc m|SV *|PAD_SETSV |PADOFFSET po|SV* sv +=for apidoc m|SV *|PAD_SETSV |PADOFFSET po|SV* sv Set the slot at offset C in the current pad to C -=for apidoc m|SV *|PAD_SV |PADOFFSET po +=for apidoc m|SV *|PAD_SV |PADOFFSET po Get the value at offset C in the current pad -=for apidoc m|SV *|PAD_SVl |PADOFFSET po +=for apidoc m|SV *|PAD_SVl |PADOFFSET po Lightweight and lvalue version of C. Get or set the value at offset C in the current pad. Unlike C, does not print diagnostics with -DX. For internal use only. -=for apidoc m|SV *|PAD_BASE_SV |PADLIST padlist|PADOFFSET po +=for apidoc m|SV *|PAD_BASE_SV |PADLIST padlist|PADOFFSET po Get the value from slot C in the base (DEPTH=1) pad of a padlist -=for apidoc m|void|PAD_SET_CUR |PADLIST padlist|I32 n +=for apidoc m|void|PAD_SET_CUR |PADLIST padlist|I32 n Set the current pad to be pad C in the padlist, saving the previous current pad. NB currently this macro expands to a string too long for some compilers, so it's best to replace it with @@ -281,7 +281,7 @@ long for some compilers, so it's best to replace it with PAD_SET_CUR_NOSAVE(padlist,n); -=for apidoc m|void|PAD_SET_CUR_NOSAVE |PADLIST padlist|I32 n +=for apidoc m|void|PAD_SET_CUR_NOSAVE |PADLIST padlist|I32 n like PAD_SET_CUR, but without the save =for apidoc m|void|PAD_SAVE_SETNULLPAD @@ -297,50 +297,50 @@ Restore the old pad saved into the local variable C by C =cut */ -#define PadlistARRAY(pl) (pl)->xpadl_arr.xpadlarr_alloc -#define PadlistMAX(pl) (pl)->xpadl_max -#define PadlistNAMES(pl) *((PADNAMELIST **)PadlistARRAY(pl)) -#define PadlistNAMESARRAY(pl) PadnamelistARRAY(PadlistNAMES(pl)) -#define PadlistNAMESMAX(pl) PadnamelistMAX(PadlistNAMES(pl)) -#define PadlistREFCNT(pl) 1 /* reserved for future use */ - -#define PadnamelistARRAY(pnl) (pnl)->xpadnl_alloc -#define PadnamelistMAX(pnl) (pnl)->xpadnl_fill -#define PadnamelistMAXNAMED(pnl) (pnl)->xpadnl_max_named -#define PadnamelistREFCNT(pnl) (pnl)->xpadnl_refcnt -#define PadnamelistREFCNT_dec(pnl) Perl_padnamelist_free(aTHX_ pnl) - -#define PadARRAY(pad) AvARRAY(pad) -#define PadMAX(pad) AvFILLp(pad) - -#define PadnamePV(pn) (pn)->xpadn_pv -#define PadnameLEN(pn) (pn)->xpadn_len -#define PadnameUTF8(pn) 1 +#define PadlistARRAY(pl) (pl)->xpadl_arr.xpadlarr_alloc +#define PadlistMAX(pl) (pl)->xpadl_max +#define PadlistNAMES(pl) *((PADNAMELIST **)PadlistARRAY(pl)) +#define PadlistNAMESARRAY(pl) PadnamelistARRAY(PadlistNAMES(pl)) +#define PadlistNAMESMAX(pl) PadnamelistMAX(PadlistNAMES(pl)) +#define PadlistREFCNT(pl) 1 /* reserved for future use */ + +#define PadnamelistARRAY(pnl) (pnl)->xpadnl_alloc +#define PadnamelistMAX(pnl) (pnl)->xpadnl_fill +#define PadnamelistMAXNAMED(pnl) (pnl)->xpadnl_max_named +#define PadnamelistREFCNT(pnl) (pnl)->xpadnl_refcnt +#define PadnamelistREFCNT_dec(pnl) Perl_padnamelist_free(aTHX_ pnl) + +#define PadARRAY(pad) AvARRAY(pad) +#define PadMAX(pad) AvFILLp(pad) + +#define PadnamePV(pn) (pn)->xpadn_pv +#define PadnameLEN(pn) (pn)->xpadn_len +#define PadnameUTF8(pn) 1 #define PadnameSV(pn) \ newSVpvn_flags(PadnamePV(pn), PadnameLEN(pn), SVs_TEMP|SVf_UTF8) -#define PadnameFLAGS(pn) (pn)->xpadn_flags -#define PadnameIsOUR(pn) cBOOL((pn)->xpadn_ourstash) -#define PadnameOURSTASH(pn) (pn)->xpadn_ourstash -#define PadnameTYPE(pn) (pn)->xpadn_type_u.xpadn_typestash +#define PadnameFLAGS(pn) (pn)->xpadn_flags +#define PadnameIsOUR(pn) cBOOL((pn)->xpadn_ourstash) +#define PadnameOURSTASH(pn) (pn)->xpadn_ourstash +#define PadnameTYPE(pn) (pn)->xpadn_type_u.xpadn_typestash #define PadnameHasTYPE(pn) cBOOL(PadnameTYPE(pn)) -#define PadnamePROTOCV(pn) (pn)->xpadn_type_u.xpadn_protocv -#define PadnameREFCNT(pn) (pn)->xpadn_refcnt +#define PadnamePROTOCV(pn) (pn)->xpadn_type_u.xpadn_protocv +#define PadnameREFCNT(pn) (pn)->xpadn_refcnt #define PadnameREFCNT_inc(pn) Perl_padname_refcnt_inc(pn) -#define PadnameREFCNT_dec(pn) Perl_padname_free(aTHX_ pn) +#define PadnameREFCNT_dec(pn) Perl_padname_free(aTHX_ pn) #define PadnameOURSTASH_set(pn,s) (PadnameOURSTASH(pn) = (s)) -#define PadnameTYPE_set(pn,s) (PadnameTYPE(pn) = (s)) -#define PadnameOUTER(pn) (PadnameFLAGS(pn) & PADNAMEf_OUTER) -#define PadnameIsSTATE(pn) (PadnameFLAGS(pn) & PADNAMEf_STATE) -#define PadnameLVALUE(pn) (PadnameFLAGS(pn) & PADNAMEf_LVALUE) +#define PadnameTYPE_set(pn,s) (PadnameTYPE(pn) = (s)) +#define PadnameOUTER(pn) (PadnameFLAGS(pn) & PADNAMEf_OUTER) +#define PadnameIsSTATE(pn) (PadnameFLAGS(pn) & PADNAMEf_STATE) +#define PadnameLVALUE(pn) (PadnameFLAGS(pn) & PADNAMEf_LVALUE) -#define PadnameLVALUE_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_LVALUE) -#define PadnameIsSTATE_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_STATE) +#define PadnameLVALUE_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_LVALUE) +#define PadnameIsSTATE_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_STATE) -#define PADNAMEf_OUTER 0x01 /* outer lexical var */ -#define PADNAMEf_STATE 0x02 /* state var */ -#define PADNAMEf_LVALUE 0x04 /* used as lvalue */ -#define PADNAMEf_TYPED 0x08 /* for B; unused by core */ -#define PADNAMEf_OUR 0x10 /* for B; unused by core */ +#define PADNAMEf_OUTER 0x01 /* outer lexical var */ +#define PADNAMEf_STATE 0x02 /* state var */ +#define PADNAMEf_LVALUE 0x04 /* used as lvalue */ +#define PADNAMEf_TYPED 0x08 /* for B; unused by core */ +#define PADNAMEf_OUR 0x10 /* for B; unused by core */ /* backward compatibility */ #ifndef PERL_CORE @@ -363,7 +363,7 @@ Restore the old pad saved into the local variable C by C #endif #ifdef DEBUGGING -# define PAD_SV(po) pad_sv(po) +# define PAD_SV(po) pad_sv(po) # define PAD_SETSV(po,sv) pad_setsv(po,sv) #else # define PAD_SV(po) (PL_curpad[po]) @@ -373,42 +373,42 @@ Restore the old pad saved into the local variable C by C #define PAD_SVl(po) (PL_curpad[po]) #define PAD_BASE_SV(padlist, po) \ - (PadlistARRAY(padlist)[1]) \ + (PadlistARRAY(padlist)[1]) \ ? AvARRAY(MUTABLE_AV((PadlistARRAY(padlist)[1])))[po] \ : NULL; #define PAD_SET_CUR_NOSAVE(padlist,nth) \ - PL_comppad = (PAD*) (PadlistARRAY(padlist)[nth]); \ - PL_curpad = AvARRAY(PL_comppad); \ - DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ - "Pad 0x%" UVxf "[0x%" UVxf "] set_cur depth=%d\n", \ + PL_comppad = (PAD*) (PadlistARRAY(padlist)[nth]); \ + PL_curpad = AvARRAY(PL_comppad); \ + DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ + "Pad 0x%" UVxf "[0x%" UVxf "] set_cur depth=%d\n", \ PTR2UV(PL_comppad), PTR2UV(PL_curpad), (int)(nth))); #define PAD_SET_CUR(padlist,nth) \ - SAVECOMPPAD(); \ + SAVECOMPPAD(); \ PAD_SET_CUR_NOSAVE(padlist,nth); -#define PAD_SAVE_SETNULLPAD() SAVECOMPPAD(); \ - PL_comppad = NULL; PL_curpad = NULL; \ +#define PAD_SAVE_SETNULLPAD() SAVECOMPPAD(); \ + PL_comppad = NULL; PL_curpad = NULL; \ DEBUG_Xv(PerlIO_printf(Perl_debug_log, "Pad set_null\n")); #define PAD_SAVE_LOCAL(opad,npad) \ - opad = PL_comppad; \ - PL_comppad = (npad); \ - PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ - DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ - "Pad 0x%" UVxf "[0x%" UVxf "] save_local\n", \ + opad = PL_comppad; \ + PL_comppad = (npad); \ + PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ + DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ + "Pad 0x%" UVxf "[0x%" UVxf "] save_local\n", \ PTR2UV(PL_comppad), PTR2UV(PL_curpad))); #define PAD_RESTORE_LOCAL(opad) \ - assert(!opad || !SvIS_FREED(opad)); \ - PL_comppad = opad; \ - PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ - DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ - "Pad 0x%" UVxf "[0x%" UVxf "] restore_local\n", \ + assert(!opad || !SvIS_FREED(opad)); \ + PL_comppad = opad; \ + PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ + DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ + "Pad 0x%" UVxf "[0x%" UVxf "] restore_local\n", \ PTR2UV(PL_comppad), PTR2UV(PL_curpad))); @@ -455,13 +455,13 @@ ling pad (lvalue) to C. */ -#define PAD_COMPNAME(po) PAD_COMPNAME_SV(po) -#define PAD_COMPNAME_SV(po) (PadnamelistARRAY(PL_comppad_name)[(po)]) -#define PAD_COMPNAME_FLAGS(po) PadnameFLAGS(PAD_COMPNAME(po)) +#define PAD_COMPNAME(po) PAD_COMPNAME_SV(po) +#define PAD_COMPNAME_SV(po) (PadnamelistARRAY(PL_comppad_name)[(po)]) +#define PAD_COMPNAME_FLAGS(po) PadnameFLAGS(PAD_COMPNAME(po)) #define PAD_COMPNAME_FLAGS_isOUR(po) PadnameIsOUR(PAD_COMPNAME_SV(po)) -#define PAD_COMPNAME_PV(po) PadnamePV(PAD_COMPNAME(po)) +#define PAD_COMPNAME_PV(po) PadnamePV(PAD_COMPNAME(po)) -#define PAD_COMPNAME_TYPE(po) PadnameTYPE(PAD_COMPNAME(po)) +#define PAD_COMPNAME_TYPE(po) PadnameTYPE(PAD_COMPNAME(po)) #define PAD_COMPNAME_OURSTASH(po) (PadnameOURSTASH(PAD_COMPNAME_SV(po))) @@ -487,19 +487,19 @@ Clone the state variables associated with running and compiling pads. * where the second thread dups the outer sub's comppad but not the * sub's CV or padlist. */ -#define PAD_CLONE_VARS(proto_perl, param) \ - PL_comppad = av_dup(proto_perl->Icomppad, param); \ - PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ - PL_comppad_name = \ - padnamelist_dup(proto_perl->Icomppad_name, param); \ - PL_comppad_name_fill = proto_perl->Icomppad_name_fill; \ - PL_comppad_name_floor = proto_perl->Icomppad_name_floor; \ - PL_min_intro_pending = proto_perl->Imin_intro_pending; \ - PL_max_intro_pending = proto_perl->Imax_intro_pending; \ - PL_padix = proto_perl->Ipadix; \ - PL_padix_floor = proto_perl->Ipadix_floor; \ - PL_pad_reset_pending = proto_perl->Ipad_reset_pending; \ - PL_cop_seqmax = proto_perl->Icop_seqmax; +#define PAD_CLONE_VARS(proto_perl, param) \ + PL_comppad = av_dup(proto_perl->Icomppad, param); \ + PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ + PL_comppad_name = \ + padnamelist_dup(proto_perl->Icomppad_name, param); \ + PL_comppad_name_fill = proto_perl->Icomppad_name_fill; \ + PL_comppad_name_floor = proto_perl->Icomppad_name_floor; \ + PL_min_intro_pending = proto_perl->Imin_intro_pending; \ + PL_max_intro_pending = proto_perl->Imax_intro_pending; \ + PL_padix = proto_perl->Ipadix; \ + PL_padix_floor = proto_perl->Ipadix_floor; \ + PL_pad_reset_pending = proto_perl->Ipad_reset_pending; \ + PL_cop_seqmax = proto_perl->Icop_seqmax; /* =for apidoc Am|PADOFFSET|pad_add_name_pvs|"name"|U32 flags|HV *typestash|HV *ourstash diff --git a/parser.h b/parser.h index 46d6a19c7b1e8..35a33701a5f4a 100644 --- a/parser.h +++ b/parser.h @@ -4,18 +4,18 @@ * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. - * + * * This file defines the layout of the parser object used by the parser * and lexer (perly.c, toke.c). */ -#define YYEMPTY (-2) +#define YYEMPTY (-2) typedef struct { YYSTYPE val; /* semantic value */ short state; - I32 savestack_ix; /* size of savestack at this state */ - CV *compcv; /* value of PL_compcv when this value was created */ + I32 savestack_ix; /* size of savestack at this state */ + CV *compcv; /* value of PL_compcv when this value was created */ #ifdef DEBUGGING const char *name; /* token/rule name for -Dpv */ #endif @@ -24,11 +24,11 @@ typedef struct { /* Fields that need to be shared with (i.e., visible to) inner lex- ing scopes. */ typedef struct yy_lexshared { - struct yy_lexshared *ls_prev; - SV *ls_linestr; /* mirrors PL_parser->linestr */ - char *ls_bufptr; /* mirrors PL_parser->bufptr */ - char *re_eval_start; /* start of "(?{..." text */ - SV *re_eval_str; /* "(?{...})" text */ + struct yy_lexshared *ls_prev; + SV *ls_linestr; /* mirrors PL_parser->linestr */ + char *ls_bufptr; /* mirrors PL_parser->bufptr */ + char *re_eval_start; /* start of "(?{..." text */ + SV *re_eval_str; /* "(?{...})" text */ } LEXSHARED; typedef struct yy_parser { @@ -36,81 +36,81 @@ typedef struct yy_parser { /* parser state */ struct yy_parser *old_parser; /* previous value of PL_parser */ - YYSTYPE yylval; /* value of lookahead symbol, set by yylex() */ - int yychar; /* The lookahead symbol. */ + YYSTYPE yylval; /* value of lookahead symbol, set by yylex() */ + int yychar; /* The lookahead symbol. */ /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yyerrstatus; - yy_stack_frame *stack; /* base of stack */ + yy_stack_frame *stack; /* base of stack */ yy_stack_frame *stack_max1;/* (top-1)th element of allocated stack */ - yy_stack_frame *ps; /* current stack frame */ - int yylen; /* length of active reduction */ + yy_stack_frame *ps; /* current stack frame */ + int yylen; /* length of active reduction */ /* lexer state */ - I32 lex_formbrack; /* bracket count at outer format level */ - 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 */ - U8 lex_defer; /* state after determined token */ - U8 lex_dojoin; /* doing an array interpolation + I32 lex_formbrack; /* bracket count at outer format level */ + 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 */ + U8 lex_defer; /* state after determined token */ + U8 lex_dojoin; /* doing an array interpolation 1 = @{...} 2 = ->@ */ - U8 expect; /* how to interpret ambiguous tokens */ - bool preambled; + U8 expect; /* how to interpret ambiguous tokens */ + bool preambled; bool sub_no_recover; /* can't recover from a sublex error */ - U8 sub_error_count; /* the number of errors before sublexing */ - OP *lex_inpat; /* in pattern $) and $| are special */ - OP *lex_op; /* extra info to pass back on op */ - SV *lex_repl; /* runtime replacement from s/// */ - U16 lex_inwhat; /* what kind of quoting are we in */ - OPCODE last_lop_op; /* last named list or unary operator */ - I32 lex_starts; /* how many interps done on level */ - SV *lex_stuff; /* runtime pattern from m// or s/// */ - I32 multi_start; /* 1st line of multi-line string */ - I32 multi_end; /* last line of multi-line string */ - UV multi_open; /* delimiter code point of said string */ - UV multi_close; /* delimiter code point of said string */ + U8 sub_error_count; /* the number of errors before sublexing */ + OP *lex_inpat; /* in pattern $) and $| are special */ + OP *lex_op; /* extra info to pass back on op */ + SV *lex_repl; /* runtime replacement from s/// */ + U16 lex_inwhat; /* what kind of quoting are we in */ + OPCODE last_lop_op; /* last named list or unary operator */ + I32 lex_starts; /* how many interps done on level */ + SV *lex_stuff; /* runtime pattern from m// or s/// */ + I32 multi_start; /* 1st line of multi-line string */ + I32 multi_end; /* last line of multi-line string */ + UV multi_open; /* delimiter code point of said string */ + UV multi_close; /* delimiter code point of said string */ bool lex_re_reparsing; /* we're doing G_RE_REPARSING */ - U8 lex_super_state;/* lexer state to save */ - U16 lex_sub_inwhat; /* "lex_inwhat" to use in sublex_push */ - I32 lex_allbrackets;/* (), [], {}, ?: bracket count */ - OP *lex_sub_op; /* current op in y/// or pattern */ - SV *lex_sub_repl; /* repl of s/// used in sublex_push */ - LEXSHARED *lex_shared; - SV *linestr; /* current chunk of src text */ - char *bufptr; /* carries the cursor (current parsing + U8 lex_super_state;/* lexer state to save */ + U16 lex_sub_inwhat; /* "lex_inwhat" to use in sublex_push */ + I32 lex_allbrackets;/* (), [], {}, ?: bracket count */ + OP *lex_sub_op; /* current op in y/// or pattern */ + SV *lex_sub_repl; /* repl of s/// used in sublex_push */ + LEXSHARED *lex_shared; + SV *linestr; /* current chunk of src text */ + char *bufptr; /* carries the cursor (current parsing position) from one invocation of yylex to the next */ - char *oldbufptr; /* in yylex, beginning of current token */ - char *oldoldbufptr; /* in yylex, beginning of previous token */ - char *bufend; - char *linestart; /* beginning of most recently read line */ - char *last_uni; /* position of last named-unary op */ - char *last_lop; /* position of last list operator */ + char *oldbufptr; /* in yylex, beginning of current token */ + char *oldoldbufptr; /* in yylex, beginning of previous token */ + char *bufend; + char *linestart; /* beginning of most recently read line */ + char *last_uni; /* position of last named-unary op */ + char *last_lop; /* position of last list operator */ /* copline is used to pass a specific line number to newSTATEOP. It is a one-time line number, as newSTATEOP invalidates it (sets it to NOLINE) after using it. The purpose of this is to report line num- bers in multiline constructs using the number of the first line. */ - line_t copline; - U16 in_my; /* we're compiling a "my"/"our" declaration */ - U8 lex_state; /* next token is determined */ - U8 error_count; /* how many compile errors so far, max 10 */ - HV *in_my_stash; /* declared class of this "my" declaration */ - PerlIO *rsfp; /* current source file pointer */ - AV *rsfp_filters; /* holds chain of active source filters */ - - YYSTYPE nextval[5]; /* value of next token, if any */ - I32 nexttype[5]; /* type of next token */ - U8 nexttoke; - U8 form_lex_state; /* remember lex_state when parsing fmt */ - U8 lex_fakeeof; /* precedence at which to fake EOF */ - U8 lex_flags; - COP *saved_curcop; /* the previous PL_curcop */ - char tokenbuf[256]; - line_t herelines; /* number of lines in here-doc */ - line_t preambling; /* line # when processing $ENV{PERL5DB} */ + line_t copline; + U16 in_my; /* we're compiling a "my"/"our" declaration */ + U8 lex_state; /* next token is determined */ + U8 error_count; /* how many compile errors so far, max 10 */ + HV *in_my_stash; /* declared class of this "my" declaration */ + PerlIO *rsfp; /* current source file pointer */ + AV *rsfp_filters; /* holds chain of active source filters */ + + YYSTYPE nextval[5]; /* value of next token, if any */ + I32 nexttype[5]; /* type of next token */ + U8 nexttoke; + U8 form_lex_state; /* remember lex_state when parsing fmt */ + U8 lex_fakeeof; /* precedence at which to fake EOF */ + U8 lex_flags; + COP *saved_curcop; /* the previous PL_curcop */ + char tokenbuf[256]; + line_t herelines; /* number of lines in here-doc */ + line_t preambling; /* line # when processing $ENV{PERL5DB} */ /* these are valid while parsing a subroutine signature */ UV sig_elems; /* number of signature elements seen so far */ @@ -120,22 +120,22 @@ typedef struct yy_parser { bool recheck_utf8_validity; - PERL_BITFIELD16 in_pod:1; /* lexer is within a =pod section */ - PERL_BITFIELD16 filtered:1; /* source filters in evalbytes */ - PERL_BITFIELD16 saw_infix_sigil:1; /* saw & or * or % operator */ - PERL_BITFIELD16 parsed_sub:1; /* last thing parsed was a sub */ + PERL_BITFIELD16 in_pod:1; /* lexer is within a =pod section */ + PERL_BITFIELD16 filtered:1; /* source filters in evalbytes */ + PERL_BITFIELD16 saw_infix_sigil:1; /* saw & or * or % operator */ + PERL_BITFIELD16 parsed_sub:1; /* last thing parsed was a sub */ } yy_parser; /* flags for lexer API */ -#define LEX_STUFF_UTF8 0x00000001 -#define LEX_KEEP_PREVIOUS 0x00000002 +#define LEX_STUFF_UTF8 0x00000001 +#define LEX_KEEP_PREVIOUS 0x00000002 #ifdef PERL_CORE -# define LEX_START_SAME_FILTER 0x00000001 -# define LEX_IGNORE_UTF8_HINTS 0x00000002 -# define LEX_EVALBYTES 0x00000004 -# define LEX_START_COPIED 0x00000008 -# define LEX_DONT_CLOSE_RSFP 0x00000010 +# define LEX_START_SAME_FILTER 0x00000001 +# define LEX_IGNORE_UTF8_HINTS 0x00000002 +# define LEX_EVALBYTES 0x00000004 +# define LEX_START_COPIED 0x00000008 +# define LEX_DONT_CLOSE_RSFP 0x00000010 # define LEX_START_FLAGS \ (LEX_START_SAME_FILTER|LEX_START_COPIED \ |LEX_IGNORE_UTF8_HINTS|LEX_EVALBYTES|LEX_DONT_CLOSE_RSFP) diff --git a/perl.h b/perl.h index 07fd747b34fb1..fc3137547fdd4 100644 --- a/perl.h +++ b/perl.h @@ -167,24 +167,24 @@ Now a synonym for C>. */ #ifdef MULTIPLICITY -# define tTHX PerlInterpreter* +# define tTHX PerlInterpreter* # define pTHX tTHX my_perl PERL_UNUSED_DECL -# define aTHX my_perl +# define aTHX my_perl # define aTHXa(a) aTHX = (tTHX)a -# define dTHXa(a) pTHX = (tTHX)a -# define dTHX pTHX = PERL_GET_THX -# define pTHX_ pTHX, -# define aTHX_ aTHX, -# define pTHX_1 2 -# define pTHX_2 3 -# define pTHX_3 4 -# define pTHX_4 5 -# define pTHX_5 6 -# define pTHX_6 7 -# define pTHX_7 8 -# define pTHX_8 9 -# define pTHX_9 10 -# define pTHX_12 13 +# define dTHXa(a) pTHX = (tTHX)a +# define dTHX pTHX = PERL_GET_THX +# define pTHX_ pTHX, +# define aTHX_ aTHX, +# define pTHX_1 2 +# define pTHX_2 3 +# define pTHX_3 4 +# define pTHX_4 5 +# define pTHX_5 6 +# define pTHX_6 7 +# define pTHX_7 8 +# define pTHX_8 9 +# define pTHX_9 10 +# define pTHX_12 13 # if defined(DEBUGGING) && !defined(PERL_TRACK_MEMPOOL) # define PERL_TRACK_MEMPOOL # endif @@ -654,26 +654,26 @@ code. #define dNOOP struct Perl___notused_struct #ifndef pTHX -/* Don't bother defining tTHX ; using it outside +/* Don't bother defining tTHX; using it outside * code guarded by MULTIPLICITY is an error. */ -# define pTHX void +# define pTHX void # define pTHX_ # define aTHX # define aTHX_ # define aTHXa(a) NOOP -# define dTHXa(a) dNOOP -# define dTHX dNOOP -# define pTHX_1 1 -# define pTHX_2 2 -# define pTHX_3 3 -# define pTHX_4 4 -# define pTHX_5 5 -# define pTHX_6 6 -# define pTHX_7 7 -# define pTHX_8 8 -# define pTHX_9 9 -# define pTHX_12 12 +# define dTHXa(a) dNOOP +# define dTHX dNOOP +# define pTHX_1 1 +# define pTHX_2 2 +# define pTHX_3 3 +# define pTHX_4 4 +# define pTHX_5 5 +# define pTHX_6 6 +# define pTHX_7 7 +# define pTHX_8 8 +# define pTHX_9 9 +# define pTHX_12 12 #endif /* @@ -691,36 +691,36 @@ Now a placeholder that declares nothing #ifndef PERL_CORE /* Backwards compatibility macro for XS code. It used to be part of the * PERL_GLOBAL_STRUCT(_PRIVATE) feature, which no longer exists */ -# define dVAR dNOOP +# define dVAR dNOOP /* these are only defined for compatibility; should not be used internally. * */ # define dMY_CXT_SV dNOOP # ifndef pTHXo -# define pTHXo pTHX -# define pTHXo_ pTHX_ -# define aTHXo aTHX -# define aTHXo_ aTHX_ -# define dTHXo dTHX -# define dTHXoa(x) dTHXa(x) +# define pTHXo pTHX +# define pTHXo_ pTHX_ +# define aTHXo aTHX +# define aTHXo_ aTHX_ +# define dTHXo dTHX +# define dTHXoa(x) dTHXa(x) # endif #endif #ifndef pTHXx -# define pTHXx PerlInterpreter *my_perl -# define pTHXx_ pTHXx, -# define aTHXx my_perl -# define aTHXx_ aTHXx, -# define dTHXx dTHX +# define pTHXx PerlInterpreter *my_perl +# define pTHXx_ pTHXx, +# define aTHXx my_perl +# define aTHXx_ aTHXx, +# define dTHXx dTHX #endif /* Under PERL_IMPLICIT_SYS (used in Windows for fork emulation) * PerlIO_foo() expands to PL_StdIO->pFOO(PL_StdIO, ...). * dTHXs is therefore needed for all functions using PerlIO_foo(). */ #ifdef PERL_IMPLICIT_SYS -# define dTHXs dTHX +# define dTHXs dTHX #else -# define dTHXs dNOOP +# define dTHXs dNOOP #endif #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus) @@ -740,7 +740,7 @@ as in if (x) STMT_START { ... } STMT_END else ... Note that you can't return a value out of this construct and cannot use it as -an operand to the comma operator. These limit its utility. +an operand to the comma operator. These limit its utility. But, a value could be returned by constructing the API so that a pointer is passed and the macro dereferences this to set the return. If the value can be @@ -803,8 +803,8 @@ Example usage: Trying to select a version that gives no warnings... */ #if !(defined(STMT_START) && defined(STMT_END)) -# define STMT_START do -# define STMT_END while (0) +# define STMT_START do +# define STMT_END while (0) #endif #ifndef BYTEORDER /* Should never happen -- byteorder is in config.h */ @@ -873,15 +873,15 @@ symbol would not be defined on C> platforms. * know what you're doing: tests and CPAN modules' tests are bound to fail. */ #ifdef NO_TAINT_SUPPORT -# define TAINT NOOP -# define TAINT_NOT NOOP -# define TAINT_IF(c) NOOP -# define TAINT_ENV() NOOP -# define TAINT_PROPER(s) NOOP -# define TAINT_set(s) NOOP -# define TAINT_get 0 -# define TAINTING_get 0 -# define TAINTING_set(s) NOOP +# define TAINT NOOP +# define TAINT_NOT NOOP +# define TAINT_IF(c) NOOP +# define TAINT_ENV() NOOP +# define TAINT_PROPER(s) NOOP +# define TAINT_set(s) NOOP +# define TAINT_get 0 +# define TAINTING_get 0 +# define TAINTING_set(s) NOOP # define TAINT_WARN_get 0 # define TAINT_WARN_set(s) NOOP #else @@ -948,30 +948,30 @@ violations are fatal. =cut */ /* Set to tainted if we are running under tainting mode */ -# define TAINT (PL_tainted = PL_tainting) +# define TAINT (PL_tainted = PL_tainting) -# define TAINT_NOT (PL_tainted = FALSE) /* Untaint */ -# define TAINT_IF(c) if (UNLIKELY(c)) { TAINT; } /* Conditionally taint */ -# define TAINT_ENV() if (UNLIKELY(PL_tainting)) { taint_env(); } +# define TAINT_NOT (PL_tainted = FALSE) /* Untaint */ +# define TAINT_IF(c) if (UNLIKELY(c)) { TAINT; } /* Conditionally taint */ +# define TAINT_ENV() if (UNLIKELY(PL_tainting)) { taint_env(); } /* croak or warn if tainting */ -# define TAINT_PROPER(s) if (UNLIKELY(PL_tainting)) { \ +# define TAINT_PROPER(s) if (UNLIKELY(PL_tainting)) { \ taint_proper(NULL, s); \ } -# define TAINT_set(s) (PL_tainted = cBOOL(s)) -# define TAINT_get (cBOOL(UNLIKELY(PL_tainted))) /* Is something tainted? */ -# define TAINTING_get (cBOOL(UNLIKELY(PL_tainting))) -# define TAINTING_set(s) (PL_tainting = cBOOL(s)) +# define TAINT_set(s) (PL_tainted = cBOOL(s)) +# define TAINT_get (cBOOL(UNLIKELY(PL_tainted))) /* Is something tainted? */ +# define TAINTING_get (cBOOL(UNLIKELY(PL_tainting))) +# define TAINTING_set(s) (PL_tainting = cBOOL(s)) # define TAINT_WARN_get (PL_taint_warn) # define TAINT_WARN_set(s) (PL_taint_warn = cBOOL(s)) #endif /* 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) */ +# 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 @@ -982,11 +982,11 @@ violations are fatal. try to preserve that, if possible. */ #ifdef HAS_SETPGID -# define BSD_SETPGRP(pid, pgrp) setpgid((pid), (pgrp)) +# define BSD_SETPGRP(pid, pgrp) setpgid((pid), (pgrp)) #elif defined(HAS_SETPGRP) && defined(USE_BSD_SETPGRP) -# define BSD_SETPGRP(pid, pgrp) setpgrp((pid), (pgrp)) +# define BSD_SETPGRP(pid, pgrp) setpgrp((pid), (pgrp)) #elif defined(HAS_SETPGRP2) -# define BSD_SETPGRP(pid, pgrp) setpgrp2((pid), (pgrp)) +# define BSD_SETPGRP(pid, pgrp) setpgrp2((pid), (pgrp)) #endif #if defined(BSD_SETPGRP) && !defined(HAS_SETPGRP) # define HAS_SETPGRP /* Well, effectively it does . . . */ @@ -996,11 +996,11 @@ violations are fatal. our life easier :-) so we'll try it. */ #ifdef HAS_GETPGID -# define BSD_GETPGRP(pid) getpgid((pid)) +# define BSD_GETPGRP(pid) getpgid((pid)) #elif defined(HAS_GETPGRP) && defined(USE_BSD_GETPGRP) -# define BSD_GETPGRP(pid) getpgrp((pid)) +# define BSD_GETPGRP(pid) getpgrp((pid)) #elif defined(HAS_GETPGRP2) -# define BSD_GETPGRP(pid) getpgrp2((pid)) +# define BSD_GETPGRP(pid) getpgrp2((pid)) #endif #if defined(BSD_GETPGRP) && !defined(HAS_GETPGRP) # define HAS_GETPGRP /* Well, effectively it does . . . */ @@ -1046,7 +1046,7 @@ violations are fatal. #include #include -#ifdef METHOD /* Defined by OSF/1 v3.0 by ctype.h */ +#ifdef METHOD /* Defined by OSF/1 v3.0 by ctype.h */ #undef METHOD #endif @@ -1097,43 +1097,43 @@ violations are fatal. #define */ # if !defined(NO_LOCALE_COLLATE) && defined(LC_COLLATE) \ && defined(HAS_STRXFRM) -# define USE_LOCALE_COLLATE +# define USE_LOCALE_COLLATE # endif # if !defined(NO_LOCALE_CTYPE) && defined(LC_CTYPE) -# define USE_LOCALE_CTYPE +# define USE_LOCALE_CTYPE # endif # if !defined(NO_LOCALE_NUMERIC) && defined(LC_NUMERIC) -# define USE_LOCALE_NUMERIC +# define USE_LOCALE_NUMERIC # endif # if !defined(NO_LOCALE_MESSAGES) && defined(LC_MESSAGES) -# define USE_LOCALE_MESSAGES +# define USE_LOCALE_MESSAGES # endif # if !defined(NO_LOCALE_MONETARY) && defined(LC_MONETARY) -# define USE_LOCALE_MONETARY +# define USE_LOCALE_MONETARY # endif # if !defined(NO_LOCALE_TIME) && defined(LC_TIME) -# define USE_LOCALE_TIME +# define USE_LOCALE_TIME # endif # if !defined(NO_LOCALE_ADDRESS) && defined(LC_ADDRESS) -# define USE_LOCALE_ADDRESS +# define USE_LOCALE_ADDRESS # endif # if !defined(NO_LOCALE_IDENTIFICATION) && defined(LC_IDENTIFICATION) -# define USE_LOCALE_IDENTIFICATION +# define USE_LOCALE_IDENTIFICATION # endif # if !defined(NO_LOCALE_MEASUREMENT) && defined(LC_MEASUREMENT) -# define USE_LOCALE_MEASUREMENT +# define USE_LOCALE_MEASUREMENT # endif # if !defined(NO_LOCALE_PAPER) && defined(LC_PAPER) -# define USE_LOCALE_PAPER +# define USE_LOCALE_PAPER # endif # if !defined(NO_LOCALE_TELEPHONE) && defined(LC_TELEPHONE) -# define USE_LOCALE_TELEPHONE +# define USE_LOCALE_TELEPHONE # endif # if !defined(NO_LOCALE_SYNTAX) && defined(LC_SYNTAX) -# define USE_LOCALE_SYNTAX +# define USE_LOCALE_SYNTAX # endif # if !defined(NO_LOCALE_TOD) && defined(LC_TOD) -# define USE_LOCALE_TOD +# define USE_LOCALE_TOD # endif /* Now create LC_foo_INDEX_ #defines for just those categories on this system */ @@ -1327,7 +1327,7 @@ typedef enum { /* Is the locale UTF8? */ #ifdef I_SYS_PARAM # ifdef PARAM_NEEDS_TYPES -# include +# include # endif # include #endif @@ -1436,24 +1436,24 @@ Use C> to get the largest type available on the platform. /* Prefer the native integer types (int and long) over long long * (which is not C89) and Win32-specific __int64. */ # if QUADKIND == QUAD_IS_INT && INTSIZE == 8 -# define PeRl_INT64_C(c) (c) -# define PeRl_UINT64_C(c) CAT2(c,U) +# define PeRl_INT64_C(c) (c) +# define PeRl_UINT64_C(c) CAT2(c,U) # endif # if QUADKIND == QUAD_IS_LONG && LONGSIZE == 8 -# define PeRl_INT64_C(c) CAT2(c,L) -# define PeRl_UINT64_C(c) CAT2(c,UL) +# define PeRl_INT64_C(c) CAT2(c,L) +# define PeRl_UINT64_C(c) CAT2(c,UL) # endif # if QUADKIND == QUAD_IS_LONG_LONG && defined(HAS_LONG_LONG) -# define PeRl_INT64_C(c) CAT2(c,LL) -# define PeRl_UINT64_C(c) CAT2(c,ULL) +# define PeRl_INT64_C(c) CAT2(c,LL) +# define PeRl_UINT64_C(c) CAT2(c,ULL) # endif # if QUADKIND == QUAD_IS___INT64 -# define PeRl_INT64_C(c) CAT2(c,I64) -# define PeRl_UINT64_C(c) CAT2(c,UI64) +# define PeRl_INT64_C(c) CAT2(c,I64) +# define PeRl_UINT64_C(c) CAT2(c,UI64) # endif # ifndef PeRl_INT64_C -# define PeRl_INT64_C(c) ((I64)(c)) /* last resort */ -# define PeRl_UINT64_C(c) ((U64TYPE)(c)) +# define PeRl_INT64_C(c) ((I64)(c)) /* last resort */ +# define PeRl_UINT64_C(c) ((U64TYPE)(c)) # endif /* In OS X the INT64_C/UINT64_C are defined with LL/ULL, which will * not fly with C89-pedantic gcc, so let's undefine them first so that @@ -1640,29 +1640,29 @@ Use L to declare variables of the maximum usable size on this platform. #ifdef MYMALLOC # ifdef PERL_POLLUTE_MALLOC # ifndef PERL_EXTMALLOC_DEF -# define Perl_malloc malloc -# define Perl_calloc calloc -# define Perl_realloc realloc -# define Perl_mfree free +# define Perl_malloc malloc +# define Perl_calloc calloc +# define Perl_realloc realloc +# define Perl_mfree free # endif # else -# define EMBEDMYMALLOC /* for compatibility */ +# define EMBEDMYMALLOC /* for compatibility */ # endif # define safemalloc Perl_malloc # define safecalloc Perl_calloc # define saferealloc Perl_realloc # define safefree Perl_mfree -# define CHECK_MALLOC_TOO_LATE_FOR_(code) STMT_START { \ - if (!TAINTING_get && MallocCfg_ptr[MallocCfg_cfg_env_read]) \ - code; \ +# define CHECK_MALLOC_TOO_LATE_FOR_(code) STMT_START { \ + if (!TAINTING_get && MallocCfg_ptr[MallocCfg_cfg_env_read]) \ + code; \ } STMT_END -# define CHECK_MALLOC_TOO_LATE_FOR(ch) \ +# define CHECK_MALLOC_TOO_LATE_FOR(ch) \ CHECK_MALLOC_TOO_LATE_FOR_(MALLOC_TOO_LATE_FOR(ch)) -# define panic_write2(s) write(2, s, strlen(s)) -# define CHECK_MALLOC_TAINT(newval) \ - CHECK_MALLOC_TOO_LATE_FOR_( \ - if (newval) { \ +# define panic_write2(s) write(2, s, strlen(s)) +# define CHECK_MALLOC_TAINT(newval) \ + CHECK_MALLOC_TOO_LATE_FOR_( \ + if (newval) { \ PERL_UNUSED_RESULT(panic_write2("panic: tainting with $ENV{PERL_MALLOC_OPT}\n"));\ exit(1); }) # define MALLOC_CHECK_TAINT(argc,argv,env) \ @@ -1676,16 +1676,16 @@ Use L to declare variables of the maximum usable size on this platform. # define safecalloc safesyscalloc # define saferealloc safesysrealloc # define safefree safesysfree -# define CHECK_MALLOC_TOO_LATE_FOR(ch) ((void)0) -# define CHECK_MALLOC_TAINT(newval) ((void)0) +# define CHECK_MALLOC_TOO_LATE_FOR(ch) ((void)0) +# define CHECK_MALLOC_TAINT(newval) ((void)0) # define MALLOC_CHECK_TAINT(argc,argv,env) #endif /* MYMALLOC */ /* diag_listed_as: "-T" is on the #! line, it must also be used on the command line */ -#define TOO_LATE_FOR_(ch,what) Perl_croak(aTHX_ "\"-%c\" is on the #! line, it must also be used on the command line%s", (char)(ch), what) -#define TOO_LATE_FOR(ch) TOO_LATE_FOR_(ch, "") -#define MALLOC_TOO_LATE_FOR(ch) TOO_LATE_FOR_(ch, " with $ENV{PERL_MALLOC_OPT}") -#define MALLOC_CHECK_TAINT2(argc,argv) MALLOC_CHECK_TAINT(argc,argv,NULL) +#define TOO_LATE_FOR_(ch,what) Perl_croak(aTHX_ "\"-%c\" is on the #! line, it must also be used on the command line%s", (char)(ch), what) +#define TOO_LATE_FOR(ch) TOO_LATE_FOR_(ch, "") +#define MALLOC_TOO_LATE_FOR(ch) TOO_LATE_FOR_(ch, " with $ENV{PERL_MALLOC_OPT}") +#define MALLOC_CHECK_TAINT2(argc,argv) MALLOC_CHECK_TAINT(argc,argv,NULL) /* =for apidoc Am|void|memzero|void * d|Size_t l @@ -1738,11 +1738,11 @@ Set the C bytes starting at C<*d> to all zeroes. #ifdef I_SYS_TIME # ifdef I_SYS_TIME_KERNEL -# define KERNEL +# define KERNEL # endif # include # ifdef I_SYS_TIME_KERNEL -# undef KERNEL +# undef KERNEL # endif #endif @@ -1753,7 +1753,7 @@ Set the C bytes starting at C<*d> to all zeroes. #include #if defined(WIN32) && defined(PERL_IMPLICIT_SYS) -# define WIN32SCK_IS_STDSCK /* don't pull in custom wsock layer */ +# define WIN32SCK_IS_STDSCK /* don't pull in custom wsock layer */ #endif #if defined(HAS_SOCKET) && !defined(WIN32) /* WIN32 handles sockets via win32.h */ @@ -1843,44 +1843,44 @@ was saved by C or C. #ifdef VMS # define SETERRNO(errcode,vmserrcode) \ - STMT_START { \ - set_errno(errcode); \ - set_vaxc_errno(vmserrcode); \ + STMT_START { \ + set_errno(errcode); \ + set_vaxc_errno(vmserrcode); \ } STMT_END # define dSAVEDERRNO int saved_errno; unsigned saved_vms_errno # define dSAVE_ERRNO int saved_errno = errno; unsigned saved_vms_errno = vaxc$errno # define SAVE_ERRNO ( saved_errno = errno, saved_vms_errno = vaxc$errno ) # define RESTORE_ERRNO SETERRNO(saved_errno, saved_vms_errno) -# define LIB_INVARG LIB$_INVARG -# define RMS_DIR RMS$_DIR -# define RMS_FAC RMS$_FAC -# define RMS_FEX RMS$_FEX -# define RMS_FNF RMS$_FNF -# define RMS_IFI RMS$_IFI -# define RMS_ISI RMS$_ISI -# define RMS_PRV RMS$_PRV -# define SS_ACCVIO SS$_ACCVIO -# define SS_DEVOFFLINE SS$_DEVOFFLINE -# define SS_IVCHAN SS$_IVCHAN -# define SS_NORMAL SS$_NORMAL -# define SS_NOPRIV SS$_NOPRIV -# define SS_BUFFEROVF SS$_BUFFEROVF +# define LIB_INVARG LIB$_INVARG +# define RMS_DIR RMS$_DIR +# define RMS_FAC RMS$_FAC +# define RMS_FEX RMS$_FEX +# define RMS_FNF RMS$_FNF +# define RMS_IFI RMS$_IFI +# define RMS_ISI RMS$_ISI +# define RMS_PRV RMS$_PRV +# define SS_ACCVIO SS$_ACCVIO +# define SS_DEVOFFLINE SS$_DEVOFFLINE +# define SS_IVCHAN SS$_IVCHAN +# define SS_NORMAL SS$_NORMAL +# define SS_NOPRIV SS$_NOPRIV +# define SS_BUFFEROVF SS$_BUFFEROVF #else -# define LIB_INVARG 0 -# define RMS_DIR 0 -# define RMS_FAC 0 -# define RMS_FEX 0 -# define RMS_FNF 0 -# define RMS_IFI 0 -# define RMS_ISI 0 -# define RMS_PRV 0 -# define SS_ACCVIO 0 -# define SS_DEVOFFLINE 0 -# define SS_IVCHAN 0 -# define SS_NORMAL 0 -# define SS_NOPRIV 0 -# define SS_BUFFEROVF 0 +# define LIB_INVARG 0 +# define RMS_DIR 0 +# define RMS_FAC 0 +# define RMS_FEX 0 +# define RMS_FNF 0 +# define RMS_IFI 0 +# define RMS_ISI 0 +# define RMS_PRV 0 +# define SS_ACCVIO 0 +# define SS_DEVOFFLINE 0 +# define SS_IVCHAN 0 +# define SS_NORMAL 0 +# define SS_NOPRIV 0 +# define SS_BUFFEROVF 0 #endif #ifdef WIN32 @@ -1934,38 +1934,38 @@ any magic. #define ERRSV GvSVn(PL_errgv) /* contains inlined gv_add_by_type */ -#define CLEAR_ERRSV() STMT_START { \ - SV ** const svp = &GvSV(PL_errgv); \ - if (!*svp) { \ +#define CLEAR_ERRSV() STMT_START { \ + SV ** const svp = &GvSV(PL_errgv); \ + if (!*svp) { \ *svp = newSVpvs(""); \ - } else if (SvREADONLY(*svp)) { \ - SvREFCNT_dec_NN(*svp); \ - *svp = newSVpvs(""); \ - } else { \ - SV *const errsv = *svp; \ + } else if (SvREADONLY(*svp)) { \ + SvREFCNT_dec_NN(*svp); \ + *svp = newSVpvs(""); \ + } else { \ + SV *const errsv = *svp; \ SvPVCLEAR(errsv); \ - SvPOK_only(errsv); \ - if (SvMAGICAL(errsv)) { \ - mg_free(errsv); \ - } \ - } \ + SvPOK_only(errsv); \ + if (SvMAGICAL(errsv)) { \ + mg_free(errsv); \ + } \ + } \ } STMT_END /* contains inlined gv_add_by_type */ -#define SANE_ERRSV() STMT_START { \ - SV ** const svp = &GvSV(PL_errgv); \ - if (!*svp) { \ +#define SANE_ERRSV() STMT_START { \ + SV ** const svp = &GvSV(PL_errgv); \ + if (!*svp) { \ *svp = newSVpvs(""); \ - } else if (SvREADONLY(*svp)) { \ - SV *dupsv = newSVsv(*svp); \ - SvREFCNT_dec_NN(*svp); \ - *svp = dupsv; \ - } else { \ - SV *const errsv = *svp; \ - if (SvMAGICAL(errsv)) { \ - mg_free(errsv); \ - } \ - } \ + } else if (SvREADONLY(*svp)) { \ + SV *dupsv = newSVsv(*svp); \ + SvREFCNT_dec_NN(*svp); \ + *svp = dupsv; \ + } else { \ + SV *const errsv = *svp; \ + if (SvMAGICAL(errsv)) { \ + mg_free(errsv); \ + } \ + } \ } STMT_END @@ -2018,22 +2018,22 @@ Localize C<$_>. See L. #ifdef I_SYS_IOCTL # ifndef _IOCTL_ -# include +# include # endif #endif #if defined(mc300) || defined(mc500) || defined(mc700) || defined(mc6000) # ifdef HAS_SOCKETPAIR -# undef HAS_SOCKETPAIR +# undef HAS_SOCKETPAIR # endif # ifdef I_NDBM -# undef I_NDBM +# undef I_NDBM # endif #endif #ifndef HAS_SOCKETPAIR # ifdef HAS_SOCKET -# define socketpair Perl_my_socketpair +# define socketpair Perl_my_socketpair # endif #endif @@ -2066,9 +2066,9 @@ Localize C<$_>. See L. #ifndef S_IFMT # ifdef _S_IFMT -# define S_IFMT _S_IFMT +# define S_IFMT _S_IFMT # else -# define S_IFMT 0170000 +# define S_IFMT 0170000 # endif #endif @@ -2082,9 +2082,9 @@ Localize C<$_>. See L. #ifndef S_ISBLK # ifdef S_IFBLK -# define S_ISBLK(m) ((m & S_IFMT) == S_IFBLK) +# define S_ISBLK(m) ((m & S_IFMT) == S_IFBLK) # else -# define S_ISBLK(m) (0) +# define S_ISBLK(m) (0) # endif #endif @@ -2094,9 +2094,9 @@ Localize C<$_>. See L. #ifndef S_ISFIFO # ifdef S_IFIFO -# define S_ISFIFO(m) ((m & S_IFMT) == S_IFIFO) +# define S_ISFIFO(m) ((m & S_IFMT) == S_IFIFO) # else -# define S_ISFIFO(m) (0) +# define S_ISFIFO(m) (0) # endif #endif @@ -2126,13 +2126,13 @@ Localize C<$_>. See L. #ifndef S_IRUSR # ifdef S_IREAD -# define S_IRUSR S_IREAD -# define S_IWUSR S_IWRITE -# define S_IXUSR S_IEXEC +# define S_IRUSR S_IREAD +# define S_IWUSR S_IWRITE +# define S_IXUSR S_IEXEC # else -# define S_IRUSR 0400 -# define S_IWUSR 0200 -# define S_IXUSR 0100 +# define S_IRUSR 0400 +# define S_IWUSR 0200 +# define S_IXUSR 0100 # endif #endif @@ -2303,24 +2303,24 @@ my_snprintf() #if defined(PERL_CORE) || defined(PERL_EXT) # ifdef HAS_MEMRCHR -# define my_memrchr memrchr +# define my_memrchr memrchr # else -# define my_memrchr S_my_memrchr +# define my_memrchr S_my_memrchr # endif #endif #ifdef HAS_STRLCPY -# define my_strlcpy strlcpy +# define my_strlcpy strlcpy #endif #ifdef HAS_STRNLEN -# define my_strnlen strnlen +# define my_strnlen strnlen #endif /* The IV type is supposed to be long enough to hold any integral value or a pointer. - --Andy Dougherty August 1996 + --Andy Dougherty August 1996 */ typedef IVTYPE IV; @@ -2387,7 +2387,7 @@ typedef UVTYPE UV; #define UV_DIG (BIT_DIGITS(UVSIZE * 8)) #ifndef NO_PERL_PRESERVE_IVUV -#define PERL_PRESERVE_IVUV /* We like our integers to stay integers. */ +#define PERL_PRESERVE_IVUV /* We like our integers to stay integers. */ #endif /* @@ -2454,21 +2454,21 @@ I32 * These are mentioned in perlguts */ #if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) -# define PTRV UV -# define INT2PTR(any,d) (any)(d) +# define PTRV UV +# define INT2PTR(any,d) (any)(d) #elif PTRSIZE == LONGSIZE -# define PTRV unsigned long -# define PTR2ul(p) (unsigned long)(p) +# define PTRV unsigned long +# define PTR2ul(p) (unsigned long)(p) #else -# define PTRV unsigned +# define PTRV unsigned #endif #ifndef INT2PTR -# define INT2PTR(any,d) (any)(PTRV)(d) +# define INT2PTR(any,d) (any)(PTRV)(d) #endif #ifndef PTR2ul -# define PTR2ul(p) INT2PTR(unsigned long,p) +# define PTR2ul(p) INT2PTR(unsigned long,p) #endif /* @@ -2479,11 +2479,11 @@ You probably want to be using L> instead. =cut */ -#define NUM2PTR(any,d) (any)(PTRV)(d) -#define PTR2IV(p) INT2PTR(IV,p) -#define PTR2UV(p) INT2PTR(UV,p) -#define PTR2NV(p) NUM2PTR(NV,p) -#define PTR2nat(p) (PTRV)(p) /* pointer to integer of PTRSIZE */ +#define NUM2PTR(any,d) (any)(PTRV)(d) +#define PTR2IV(p) INT2PTR(IV,p) +#define PTR2UV(p) INT2PTR(UV,p) +#define PTR2NV(p) NUM2PTR(NV,p) +#define PTR2nat(p) (PTRV)(p) /* pointer to integer of PTRSIZE */ /* According to strict ANSI C89 one cannot freely cast between * data pointers and function (code) pointers. There are at least @@ -2495,8 +2495,8 @@ You probably want to be using L> instead. * The only feasible use is probably temporarily storing * function pointers in a data pointer (such as a void pointer). */ -#define DPTR2FPTR(t,p) ((t)PTR2nat(p)) /* data pointer to function pointer */ -#define FPTR2DPTR(t,p) ((t)PTR2nat(p)) /* function pointer to data pointer */ +#define DPTR2FPTR(t,p) ((t)PTR2nat(p)) /* data pointer to function pointer */ +#define FPTR2DPTR(t,p) ((t)PTR2nat(p)) /* function pointer to data pointer */ #ifdef USE_LONG_DOUBLE # if LONG_DOUBLESIZE == DOUBLESIZE @@ -2616,7 +2616,7 @@ You probably want to be using L> instead. prototype in */ # ifndef HAS_MODFL_PROTO EXTERN_C long double modfl(long double, long double *); -# endif +# endif # elif (defined(HAS_TRUNCL) || defined(HAS_AINTL)) && defined(HAS_COPYSIGNL) extern long double Perl_my_modfl(long double x, long double *ip); # define Perl_modf(x,y) Perl_my_modfl(x,y) @@ -2763,26 +2763,26 @@ extern long double Perl_my_frexpl(long double x, int *e); #if !defined(Perl_fp_class) && defined(HAS_FPCLASSIFY) # include # if defined(FP_INFINITE) && defined(FP_NAN) -# define Perl_fp_class(x) fpclassify(x) -# define Perl_fp_class_inf(x) (Perl_fp_class(x)==FP_INFINITE) -# define Perl_fp_class_nan(x) (Perl_fp_class(x)==FP_NAN) -# define Perl_fp_class_norm(x) (Perl_fp_class(x)==FP_NORMAL) -# define Perl_fp_class_denorm(x) (Perl_fp_class(x)==FP_SUBNORMAL) -# define Perl_fp_class_zero(x) (Perl_fp_class(x)==FP_ZERO) +# define Perl_fp_class(x) fpclassify(x) +# define Perl_fp_class_inf(x) (Perl_fp_class(x)==FP_INFINITE) +# define Perl_fp_class_nan(x) (Perl_fp_class(x)==FP_NAN) +# define Perl_fp_class_norm(x) (Perl_fp_class(x)==FP_NORMAL) +# define Perl_fp_class_denorm(x) (Perl_fp_class(x)==FP_SUBNORMAL) +# define Perl_fp_class_zero(x) (Perl_fp_class(x)==FP_ZERO) # elif defined(FP_PLUS_INF) && defined(FP_QNAN) /* Some versions of HP-UX (10.20) have (only) fpclassify() but which is * actually not the C99 fpclassify, with its own set of return defines. */ -# define Perl_fp_class(x) fpclassify(x) -# define Perl_fp_class_pinf(x) (Perl_fp_class(x)==FP_PLUS_INF) -# define Perl_fp_class_ninf(x) (Perl_fp_class(x)==FP_MINUS_INF) -# define Perl_fp_class_snan(x) (Perl_fp_class(x)==FP_SNAN) -# define Perl_fp_class_qnan(x) (Perl_fp_class(x)==FP_QNAN) -# define Perl_fp_class_pnorm(x) (Perl_fp_class(x)==FP_PLUS_NORM) -# define Perl_fp_class_nnorm(x) (Perl_fp_class(x)==FP_MINUS_NORM) -# define Perl_fp_class_pdenorm(x) (Perl_fp_class(x)==FP_PLUS_DENORM) -# define Perl_fp_class_ndenorm(x) (Perl_fp_class(x)==FP_MINUS_DENORM) -# define Perl_fp_class_pzero(x) (Perl_fp_class(x)==FP_PLUS_ZERO) -# define Perl_fp_class_nzero(x) (Perl_fp_class(x)==FP_MINUS_ZERO) +# define Perl_fp_class(x) fpclassify(x) +# define Perl_fp_class_pinf(x) (Perl_fp_class(x)==FP_PLUS_INF) +# define Perl_fp_class_ninf(x) (Perl_fp_class(x)==FP_MINUS_INF) +# define Perl_fp_class_snan(x) (Perl_fp_class(x)==FP_SNAN) +# define Perl_fp_class_qnan(x) (Perl_fp_class(x)==FP_QNAN) +# define Perl_fp_class_pnorm(x) (Perl_fp_class(x)==FP_PLUS_NORM) +# define Perl_fp_class_nnorm(x) (Perl_fp_class(x)==FP_MINUS_NORM) +# define Perl_fp_class_pdenorm(x) (Perl_fp_class(x)==FP_PLUS_DENORM) +# define Perl_fp_class_ndenorm(x) (Perl_fp_class(x)==FP_MINUS_DENORM) +# define Perl_fp_class_pzero(x) (Perl_fp_class(x)==FP_PLUS_ZERO) +# define Perl_fp_class_nzero(x) (Perl_fp_class(x)==FP_MINUS_ZERO) # else # undef Perl_fp_class /* Unknown set of defines */ # endif @@ -2800,12 +2800,12 @@ extern long double Perl_my_frexpl(long double x, int *e); # define isnormal(x) Perl_fp_class_norm(x) # endif # if defined(FP_INFINITE) && defined(FP_NAN) -# define Perl_fp_class(x) fp_classify(x) -# define Perl_fp_class_inf(x) (Perl_fp_class(x)==FP_INFINITE) -# define Perl_fp_class_nan(x) (Perl_fp_class(x)==FP_NAN) -# define Perl_fp_class_norm(x) (Perl_fp_class(x)==FP_NORMAL) -# define Perl_fp_class_denorm(x) (Perl_fp_class(x)==FP_SUBNORMAL) -# define Perl_fp_class_zero(x) (Perl_fp_class(x)==FP_ZERO) +# define Perl_fp_class(x) fp_classify(x) +# define Perl_fp_class_inf(x) (Perl_fp_class(x)==FP_INFINITE) +# define Perl_fp_class_nan(x) (Perl_fp_class(x)==FP_NAN) +# define Perl_fp_class_norm(x) (Perl_fp_class(x)==FP_NORMAL) +# define Perl_fp_class_denorm(x) (Perl_fp_class(x)==FP_SUBNORMAL) +# define Perl_fp_class_zero(x) (Perl_fp_class(x)==FP_ZERO) # else # undef Perl_fp_class /* Unknown set of defines */ # endif @@ -2833,32 +2833,32 @@ extern long double Perl_my_frexpl(long double x, int *e); # include # endif # if defined(USE_LONG_DOUBLE) && defined(HAS_FPCLASSL) -# define Perl_fp_class(x) fpclassl(x) +# define Perl_fp_class(x) fpclassl(x) # else -# define Perl_fp_class(x) fpclass(x) +# define Perl_fp_class(x) fpclass(x) # endif # if defined(FP_CLASS_PINF) && defined(FP_CLASS_SNAN) -# define Perl_fp_class_snan(x) (Perl_fp_class(x)==FP_CLASS_SNAN) -# define Perl_fp_class_qnan(x) (Perl_fp_class(x)==FP_CLASS_QNAN) -# define Perl_fp_class_ninf(x) (Perl_fp_class(x)==FP_CLASS_NINF) -# define Perl_fp_class_pinf(x) (Perl_fp_class(x)==FP_CLASS_PINF) -# define Perl_fp_class_nnorm(x) (Perl_fp_class(x)==FP_CLASS_NNORM) -# define Perl_fp_class_pnorm(x) (Perl_fp_class(x)==FP_CLASS_PNORM) -# define Perl_fp_class_ndenorm(x) (Perl_fp_class(x)==FP_CLASS_NDENORM) -# define Perl_fp_class_pdenorm(x) (Perl_fp_class(x)==FP_CLASS_PDENORM) -# define Perl_fp_class_nzero(x) (Perl_fp_class(x)==FP_CLASS_NZERO) -# define Perl_fp_class_pzero(x) (Perl_fp_class(x)==FP_CLASS_PZERO) +# define Perl_fp_class_snan(x) (Perl_fp_class(x)==FP_CLASS_SNAN) +# define Perl_fp_class_qnan(x) (Perl_fp_class(x)==FP_CLASS_QNAN) +# define Perl_fp_class_ninf(x) (Perl_fp_class(x)==FP_CLASS_NINF) +# define Perl_fp_class_pinf(x) (Perl_fp_class(x)==FP_CLASS_PINF) +# define Perl_fp_class_nnorm(x) (Perl_fp_class(x)==FP_CLASS_NNORM) +# define Perl_fp_class_pnorm(x) (Perl_fp_class(x)==FP_CLASS_PNORM) +# define Perl_fp_class_ndenorm(x) (Perl_fp_class(x)==FP_CLASS_NDENORM) +# define Perl_fp_class_pdenorm(x) (Perl_fp_class(x)==FP_CLASS_PDENORM) +# define Perl_fp_class_nzero(x) (Perl_fp_class(x)==FP_CLASS_NZERO) +# define Perl_fp_class_pzero(x) (Perl_fp_class(x)==FP_CLASS_PZERO) # elif defined(FP_PINF) && defined(FP_QNAN) -# define Perl_fp_class_snan(x) (Perl_fp_class(x)==FP_SNAN) -# define Perl_fp_class_qnan(x) (Perl_fp_class(x)==FP_QNAN) -# define Perl_fp_class_ninf(x) (Perl_fp_class(x)==FP_NINF) -# define Perl_fp_class_pinf(x) (Perl_fp_class(x)==FP_PINF) -# define Perl_fp_class_nnorm(x) (Perl_fp_class(x)==FP_NNORM) -# define Perl_fp_class_pnorm(x) (Perl_fp_class(x)==FP_PNORM) -# define Perl_fp_class_ndenorm(x) (Perl_fp_class(x)==FP_NDENORM) -# define Perl_fp_class_pdenorm(x) (Perl_fp_class(x)==FP_PDENORM) -# define Perl_fp_class_nzero(x) (Perl_fp_class(x)==FP_NZERO) -# define Perl_fp_class_pzero(x) (Perl_fp_class(x)==FP_PZERO) +# define Perl_fp_class_snan(x) (Perl_fp_class(x)==FP_SNAN) +# define Perl_fp_class_qnan(x) (Perl_fp_class(x)==FP_QNAN) +# define Perl_fp_class_ninf(x) (Perl_fp_class(x)==FP_NINF) +# define Perl_fp_class_pinf(x) (Perl_fp_class(x)==FP_PINF) +# define Perl_fp_class_nnorm(x) (Perl_fp_class(x)==FP_NNORM) +# define Perl_fp_class_pnorm(x) (Perl_fp_class(x)==FP_PNORM) +# define Perl_fp_class_ndenorm(x) (Perl_fp_class(x)==FP_NDENORM) +# define Perl_fp_class_pdenorm(x) (Perl_fp_class(x)==FP_PDENORM) +# define Perl_fp_class_nzero(x) (Perl_fp_class(x)==FP_NZERO) +# define Perl_fp_class_pzero(x) (Perl_fp_class(x)==FP_PZERO) # else # undef Perl_fp_class /* Unknown set of defines */ # endif @@ -2873,28 +2873,28 @@ extern long double Perl_my_frexpl(long double x, int *e); # if defined(FP_POS_INF) && defined(FP_QNAN) # ifdef __sgi /* XXX Configure test instead */ # ifdef USE_LONG_DOUBLE -# define Perl_fp_class(x) fp_class_l(x) +# define Perl_fp_class(x) fp_class_l(x) # else -# define Perl_fp_class(x) fp_class_d(x) +# define Perl_fp_class(x) fp_class_d(x) # endif # else # if defined(USE_LONG_DOUBLE) && defined(HAS_FP_CLASSL) -# define Perl_fp_class(x) fp_classl(x) +# define Perl_fp_class(x) fp_classl(x) # else -# define Perl_fp_class(x) fp_class(x) +# define Perl_fp_class(x) fp_class(x) # endif # endif # if defined(FP_POS_INF) && defined(FP_QNAN) -# define Perl_fp_class_snan(x) (Perl_fp_class(x)==FP_SNAN) -# define Perl_fp_class_qnan(x) (Perl_fp_class(x)==FP_QNAN) -# define Perl_fp_class_ninf(x) (Perl_fp_class(x)==FP_NEG_INF) -# define Perl_fp_class_pinf(x) (Perl_fp_class(x)==FP_POS_INF) -# define Perl_fp_class_nnorm(x) (Perl_fp_class(x)==FP_NEG_NORM) -# define Perl_fp_class_pnorm(x) (Perl_fp_class(x)==FP_POS_NORM) -# define Perl_fp_class_ndenorm(x) (Perl_fp_class(x)==FP_NEG_DENORM) -# define Perl_fp_class_pdenorm(x) (Perl_fp_class(x)==FP_POS_DENORM) -# define Perl_fp_class_nzero(x) (Perl_fp_class(x)==FP_NEG_ZERO) -# define Perl_fp_class_pzero(x) (Perl_fp_class(x)==FP_POS_ZERO) +# define Perl_fp_class_snan(x) (Perl_fp_class(x)==FP_SNAN) +# define Perl_fp_class_qnan(x) (Perl_fp_class(x)==FP_QNAN) +# define Perl_fp_class_ninf(x) (Perl_fp_class(x)==FP_NEG_INF) +# define Perl_fp_class_pinf(x) (Perl_fp_class(x)==FP_POS_INF) +# define Perl_fp_class_nnorm(x) (Perl_fp_class(x)==FP_NEG_NORM) +# define Perl_fp_class_pnorm(x) (Perl_fp_class(x)==FP_POS_NORM) +# define Perl_fp_class_ndenorm(x) (Perl_fp_class(x)==FP_NEG_DENORM) +# define Perl_fp_class_pdenorm(x) (Perl_fp_class(x)==FP_POS_DENORM) +# define Perl_fp_class_nzero(x) (Perl_fp_class(x)==FP_NEG_ZERO) +# define Perl_fp_class_pzero(x) (Perl_fp_class(x)==FP_POS_ZERO) # else # undef Perl_fp_class /* Unknown set of defines */ # endif @@ -2906,21 +2906,21 @@ extern long double Perl_my_frexpl(long double x, int *e); # include # if defined(FP_PLUS_NORM) && defined(FP_PLUS_INF) # ifndef _cplusplus -# define Perl_fp_class(x) class(x) +# define Perl_fp_class(x) class(x) # else -# define Perl_fp_class(x) _class(x) +# define Perl_fp_class(x) _class(x) # endif # if defined(FP_PLUS_INF) && defined(FP_NANQ) -# define Perl_fp_class_snan(x) (Perl_fp_class(x)==FP_NANS) -# define Perl_fp_class_qnan(x) (Perl_fp_class(x)==FP_NANQ) -# define Perl_fp_class_ninf(x) (Perl_fp_class(x)==FP_MINUS_INF) -# define Perl_fp_class_pinf(x) (Perl_fp_class(x)==FP_PLUS_INF) -# define Perl_fp_class_nnorm(x) (Perl_fp_class(x)==FP_MINUS_NORM) -# define Perl_fp_class_pnorm(x) (Perl_fp_class(x)==FP_PLUS_NORM) -# define Perl_fp_class_ndenorm(x) (Perl_fp_class(x)==FP_MINUS_DENORM) -# define Perl_fp_class_pdenorm(x) (Perl_fp_class(x)==FP_PLUS_DENORM) -# define Perl_fp_class_nzero(x) (Perl_fp_class(x)==FP_MINUS_ZERO) -# define Perl_fp_class_pzero(x) (Perl_fp_class(x)==FP_PLUS_ZERO) +# define Perl_fp_class_snan(x) (Perl_fp_class(x)==FP_NANS) +# define Perl_fp_class_qnan(x) (Perl_fp_class(x)==FP_NANQ) +# define Perl_fp_class_ninf(x) (Perl_fp_class(x)==FP_MINUS_INF) +# define Perl_fp_class_pinf(x) (Perl_fp_class(x)==FP_PLUS_INF) +# define Perl_fp_class_nnorm(x) (Perl_fp_class(x)==FP_MINUS_NORM) +# define Perl_fp_class_pnorm(x) (Perl_fp_class(x)==FP_PLUS_NORM) +# define Perl_fp_class_ndenorm(x) (Perl_fp_class(x)==FP_MINUS_DENORM) +# define Perl_fp_class_pdenorm(x) (Perl_fp_class(x)==FP_PLUS_DENORM) +# define Perl_fp_class_nzero(x) (Perl_fp_class(x)==FP_MINUS_ZERO) +# define Perl_fp_class_pzero(x) (Perl_fp_class(x)==FP_PLUS_ZERO) # else # undef Perl_fp_class /* Unknown set of defines */ # endif @@ -3083,7 +3083,7 @@ This is a synonym for L>. */ -#define Atof my_atof +#define Atof my_atof /* =for apidoc_section $numeric @@ -3152,10 +3152,10 @@ the highest precision one available is used. #define PERL_LONG_MIN ((long)LONG_MIN) #ifdef UV_IS_QUAD -# define PERL_UQUAD_MAX (~(UV)0) -# define PERL_UQUAD_MIN ((UV)0) -# define PERL_QUAD_MAX ((IV) (PERL_UQUAD_MAX >> 1)) -# define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3)) +# define PERL_UQUAD_MAX (~(UV)0) +# define PERL_UQUAD_MIN ((UV)0) +# define PERL_QUAD_MAX ((IV) (PERL_UQUAD_MAX >> 1)) +# define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3)) #endif /* @@ -3292,7 +3292,7 @@ typedef struct padname PADNAME; #if defined(USE_LARGE_FILES) && !defined(NO_64_BIT_RAWIO) # if LSEEKSIZE == 8 && !defined(USE_64_BIT_RAWIO) -# define USE_64_BIT_RAWIO /* implicit */ +# define USE_64_BIT_RAWIO /* implicit */ # endif #endif @@ -3568,9 +3568,9 @@ freeing any remaining Perl interpreters. =cut */ -#define PERL_SYS_INIT(argc, argv) Perl_sys_init(argc, argv) -#define PERL_SYS_INIT3(argc, argv, env) Perl_sys_init3(argc, argv, env) -#define PERL_SYS_TERM() Perl_sys_term() +#define PERL_SYS_INIT(argc, argv) Perl_sys_init(argc, argv) +#define PERL_SYS_INIT3(argc, argv, env) Perl_sys_init3(argc, argv, env) +#define PERL_SYS_TERM() Perl_sys_term() #ifndef PERL_WRITE_MSG_TO_CONSOLE # define PERL_WRITE_MSG_TO_CONSOLE(io, msg, len) PerlIO_write(io, msg, len) @@ -3593,7 +3593,7 @@ freeing any remaining Perl interpreters. # define MAXPATHLEN (PATH_MAX+1) # endif # else -# define MAXPATHLEN 1024 /* Err on the large side. */ +# define MAXPATHLEN 1024 /* Err on the large side. */ # endif #endif @@ -3701,16 +3701,16 @@ freeing any remaining Perl interpreters. # include "os2thread.h" # elif defined(I_MACH_CTHREADS) # include -typedef cthread_t perl_os_thread; -typedef mutex_t perl_mutex; -typedef condition_t perl_cond; -typedef void * perl_key; +typedef cthread_t perl_os_thread; +typedef mutex_t perl_mutex; +typedef condition_t perl_cond; +typedef void * perl_key; # elif defined(I_PTHREAD) /* Posix threads */ # include -typedef pthread_t perl_os_thread; +typedef pthread_t perl_os_thread; typedef pthread_mutex_t PERL_TSA_CAPABILITY("mutex") perl_mutex; -typedef pthread_cond_t perl_cond; -typedef pthread_key_t perl_key; +typedef pthread_cond_t perl_cond; +typedef pthread_key_t perl_key; # endif /* Many readers; single writer */ @@ -3746,9 +3746,9 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex) # include "win32.h" #endif -#define STATUS_UNIX PL_statusvalue +#define STATUS_UNIX PL_statusvalue #ifdef VMS -# define STATUS_NATIVE PL_statusvalue_vms +# define STATUS_NATIVE PL_statusvalue_vms /* * vaxc$errno is only guaranteed to be valid if errno == EVMSERR, otherwise * its contents can not be trusted. Unfortunately, Perl seems to check @@ -3796,30 +3796,30 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex) */ # define STATUS_NATIVE_CHILD_SET(n) \ - STMT_START { \ - I32 evalue = (I32)n; \ - if (evalue == EVMSERR) { \ - PL_statusvalue_vms = vaxc$errno; \ - PL_statusvalue = evalue; \ - } else { \ - PL_statusvalue_vms = evalue; \ - if (evalue == -1) { \ - PL_statusvalue = -1; \ + STMT_START { \ + I32 evalue = (I32)n; \ + if (evalue == EVMSERR) { \ + PL_statusvalue_vms = vaxc$errno; \ + PL_statusvalue = evalue; \ + } else { \ + PL_statusvalue_vms = evalue; \ + if (evalue == -1) { \ + PL_statusvalue = -1; \ PL_statusvalue_vms = SS$_ABORT; /* Should not happen */ \ - } else \ - PL_statusvalue = Perl_vms_status_to_unix(evalue, 1); \ - set_vaxc_errno(evalue); \ - if ((PL_statusvalue_vms & C_FAC_POSIX) == C_FAC_POSIX) \ - set_errno(EVMSERR); \ - else set_errno(Perl_vms_status_to_unix(evalue, 0)); \ - PL_statusvalue = PL_statusvalue << child_offset_bits; \ - } \ + } else \ + PL_statusvalue = Perl_vms_status_to_unix(evalue, 1); \ + set_vaxc_errno(evalue); \ + if ((PL_statusvalue_vms & C_FAC_POSIX) == C_FAC_POSIX) \ + set_errno(EVMSERR); \ + else set_errno(Perl_vms_status_to_unix(evalue, 0)); \ + PL_statusvalue = PL_statusvalue << child_offset_bits; \ + } \ } STMT_END # ifdef VMSISH_STATUS -# define STATUS_CURRENT (VMSISH_STATUS ? STATUS_NATIVE : STATUS_UNIX) +# define STATUS_CURRENT (VMSISH_STATUS ? STATUS_NATIVE : STATUS_UNIX) # else -# define STATUS_CURRENT STATUS_UNIX +# define STATUS_CURRENT STATUS_UNIX # endif /* STATUS_UNIX_SET - takes a UNIX/POSIX errno value and attempts to update @@ -3828,23 +3828,23 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex) * relationship at all to errno values. * This is used when Perl is forcing errno to have a specific value. */ -# define STATUS_UNIX_SET(n) \ - STMT_START { \ - I32 evalue = (I32)n; \ - PL_statusvalue = evalue; \ - if (PL_statusvalue != -1) { \ - if (PL_statusvalue != EVMSERR) { \ - PL_statusvalue &= 0xFFFF; \ - if (MY_POSIX_EXIT) \ +# define STATUS_UNIX_SET(n) \ + STMT_START { \ + I32 evalue = (I32)n; \ + PL_statusvalue = evalue; \ + if (PL_statusvalue != -1) { \ + if (PL_statusvalue != EVMSERR) { \ + PL_statusvalue &= 0xFFFF; \ + if (MY_POSIX_EXIT) \ PL_statusvalue_vms=PL_statusvalue ? SS$_ABORT : SS$_NORMAL;\ else PL_statusvalue_vms = Perl_unix_status_to_vms(evalue); \ - } \ - else { \ - PL_statusvalue_vms = vaxc$errno; \ - } \ - } \ - else PL_statusvalue_vms = SS$_ABORT; \ - set_vaxc_errno(PL_statusvalue_vms); \ + } \ + else { \ + PL_statusvalue_vms = vaxc$errno; \ + } \ + } \ + else PL_statusvalue_vms = SS$_ABORT; \ + set_vaxc_errno(PL_statusvalue_vms); \ } STMT_END /* STATUS_UNIX_EXIT_SET - Takes a UNIX/POSIX exit code and sets @@ -3862,32 +3862,32 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex) * it will be passed through as a VMS status. */ -# define STATUS_UNIX_EXIT_SET(n) \ - STMT_START { \ - I32 evalue = (I32)n; \ - PL_statusvalue = evalue; \ +# define STATUS_UNIX_EXIT_SET(n) \ + STMT_START { \ + I32 evalue = (I32)n; \ + PL_statusvalue = evalue; \ if (MY_POSIX_EXIT) { \ - if (evalue <= 0xFF00) { \ - if (evalue > 0xFF) \ + if (evalue <= 0xFF00) { \ + if (evalue > 0xFF) \ evalue = ((U8) (evalue >> child_offset_bits)); \ - PL_statusvalue_vms = \ - (C_FAC_POSIX | (evalue << 3 ) | \ + PL_statusvalue_vms = \ + (C_FAC_POSIX | (evalue << 3 ) | \ ((evalue == 1) ? (STS$K_ERROR | STS$M_INHIB_MSG) : 1)); \ } else /* forgive them Perl, for they have sinned */ \ PL_statusvalue_vms = evalue; \ } else { \ - if (evalue == 0) \ - PL_statusvalue_vms = SS$_NORMAL; \ + if (evalue == 0) \ + PL_statusvalue_vms = SS$_NORMAL; \ else if (evalue <= 0xFF00) \ PL_statusvalue_vms = SS$_ABORT; \ else { /* forgive them Perl, for they have sinned */ \ if (evalue != EVMSERR) PL_statusvalue_vms = evalue; \ - else PL_statusvalue_vms = vaxc$errno; \ + else PL_statusvalue_vms = vaxc$errno; \ /* And obviously used a VMS status value instead of UNIX */ \ - PL_statusvalue = EVMSERR; \ + PL_statusvalue = EVMSERR; \ } \ - set_vaxc_errno(PL_statusvalue_vms); \ - } \ + set_vaxc_errno(PL_statusvalue_vms); \ + } \ } STMT_END @@ -3908,33 +3908,33 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex) * passed through. */ -# define STATUS_EXIT_SET(n) \ - STMT_START { \ - I32 evalue = (I32)n; \ - PL_statusvalue = evalue; \ - if (MY_POSIX_EXIT) \ - if (evalue > 255) PL_statusvalue_vms = evalue; else { \ +# define STATUS_EXIT_SET(n) \ + STMT_START { \ + I32 evalue = (I32)n; \ + PL_statusvalue = evalue; \ + if (MY_POSIX_EXIT) \ + if (evalue > 255) PL_statusvalue_vms = evalue; else { \ PL_statusvalue_vms = \ - (C_FAC_POSIX | (evalue << 3 ) | \ + (C_FAC_POSIX | (evalue << 3 ) | \ ((evalue == 1) ? (STS$K_ERROR | STS$M_INHIB_MSG) : 1));} \ - else \ + else \ PL_statusvalue_vms = evalue ? evalue : SS$_NORMAL; \ - set_vaxc_errno(PL_statusvalue_vms); \ + set_vaxc_errno(PL_statusvalue_vms); \ } STMT_END /* This macro forces a success status */ -# define STATUS_ALL_SUCCESS \ +# define STATUS_ALL_SUCCESS \ (PL_statusvalue = 0, PL_statusvalue_vms = SS$_NORMAL) /* This macro forces a failure status */ -# define STATUS_ALL_FAILURE (PL_statusvalue = 1, \ +# define STATUS_ALL_FAILURE (PL_statusvalue = 1, \ vaxc$errno = PL_statusvalue_vms = MY_POSIX_EXIT ? \ (C_FAC_POSIX | (1 << 3) | STS$K_ERROR | STS$M_INHIB_MSG) : SS$_ABORT) #elif defined(__amigaos4__) /* A somewhat experimental attempt to simulate posix return code values */ -# define STATUS_NATIVE PL_statusvalue_posix +# define STATUS_NATIVE PL_statusvalue_posix # define STATUS_NATIVE_CHILD_SET(n) \ STMT_START { \ PL_statusvalue_posix = (n); \ @@ -3945,21 +3945,21 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex) PL_statusvalue = n << 8; \ } \ } STMT_END -# define STATUS_UNIX_SET(n) \ - STMT_START { \ - PL_statusvalue = (n); \ - if (PL_statusvalue != -1) \ - PL_statusvalue &= 0xFFFF; \ +# define STATUS_UNIX_SET(n) \ + STMT_START { \ + PL_statusvalue = (n); \ + if (PL_statusvalue != -1) \ + PL_statusvalue &= 0xFFFF; \ } STMT_END # define STATUS_UNIX_EXIT_SET(n) STATUS_UNIX_SET(n) # define STATUS_EXIT_SET(n) STATUS_UNIX_SET(n) # define STATUS_CURRENT STATUS_UNIX # define STATUS_EXIT STATUS_UNIX -# define STATUS_ALL_SUCCESS (PL_statusvalue = 0, PL_statusvalue_posix = 0) -# define STATUS_ALL_FAILURE (PL_statusvalue = 1, PL_statusvalue_posix = 1) +# define STATUS_ALL_SUCCESS (PL_statusvalue = 0, PL_statusvalue_posix = 0) +# define STATUS_ALL_FAILURE (PL_statusvalue = 1, PL_statusvalue_posix = 1) #else -# define STATUS_NATIVE PL_statusvalue_posix +# define STATUS_NATIVE PL_statusvalue_posix # if defined(WCOREDUMP) # define STATUS_NATIVE_CHILD_SET(n) \ STMT_START { \ @@ -3997,25 +3997,25 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex) } \ } STMT_END # endif -# define STATUS_UNIX_SET(n) \ - STMT_START { \ - PL_statusvalue = (n); \ - if (PL_statusvalue != -1) \ - PL_statusvalue &= 0xFFFF; \ +# define STATUS_UNIX_SET(n) \ + STMT_START { \ + PL_statusvalue = (n); \ + if (PL_statusvalue != -1) \ + PL_statusvalue &= 0xFFFF; \ } STMT_END # define STATUS_UNIX_EXIT_SET(n) STATUS_UNIX_SET(n) # define STATUS_EXIT_SET(n) STATUS_UNIX_SET(n) # define STATUS_CURRENT STATUS_UNIX # define STATUS_EXIT STATUS_UNIX -# define STATUS_ALL_SUCCESS (PL_statusvalue = 0, PL_statusvalue_posix = 0) -# define STATUS_ALL_FAILURE (PL_statusvalue = 1, PL_statusvalue_posix = 1) +# define STATUS_ALL_SUCCESS (PL_statusvalue = 0, PL_statusvalue_posix = 0) +# define STATUS_ALL_FAILURE (PL_statusvalue = 1, PL_statusvalue_posix = 1) #endif /* flags in PL_exit_flags for nature of exit() */ -#define PERL_EXIT_EXPECTED 0x01 +#define PERL_EXIT_EXPECTED 0x01 #define PERL_EXIT_DESTRUCT_END 0x02 /* Run END in perl_destruct */ -#define PERL_EXIT_WARN 0x04 /* Warn if Perl_my_exit() or Perl_my_failure_exit() called */ -#define PERL_EXIT_ABORT 0x08 /* Call abort() if Perl_my_exit() or Perl_my_failure_exit() called */ +#define PERL_EXIT_WARN 0x04 /* Warn if Perl_my_exit() or Perl_my_failure_exit() called */ +#define PERL_EXIT_ABORT 0x08 /* Call abort() if Perl_my_exit() or Perl_my_failure_exit() called */ #ifndef PERL_CORE /* format to use for version numbers in file/directory names */ @@ -4023,12 +4023,12 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex) /* This was only ever used for the current version, and that can be done at compile time, as PERL_FS_VERSION, so should we just delete it? */ # ifndef PERL_FS_VER_FMT -# define PERL_FS_VER_FMT "%d.%d.%d" +# define PERL_FS_VER_FMT "%d.%d.%d" # endif #endif #ifndef PERL_FS_VERSION -# define PERL_FS_VERSION PERL_VERSION_STRING +# define PERL_FS_VERSION PERL_VERSION_STRING #endif /* @@ -4046,16 +4046,16 @@ out there, Solaris being the most prominent. #ifndef PERL_FLUSHALL_FOR_CHILD # if defined(USE_PERLIO) || defined(FFLUSH_NULL) -# define PERL_FLUSHALL_FOR_CHILD PerlIO_flush((PerlIO*)NULL) +# define PERL_FLUSHALL_FOR_CHILD PerlIO_flush((PerlIO*)NULL) # elif defined(FFLUSH_ALL) -# define PERL_FLUSHALL_FOR_CHILD my_fflush_all() +# define PERL_FLUSHALL_FOR_CHILD my_fflush_all() # else -# define PERL_FLUSHALL_FOR_CHILD NOOP +# define PERL_FLUSHALL_FOR_CHILD NOOP # endif #endif #ifndef PERL_WAIT_FOR_CHILDREN -# define PERL_WAIT_FOR_CHILDREN NOOP +# define PERL_WAIT_FOR_CHILDREN NOOP #endif /* the traditional thread-unsafe notion of "current interpreter". */ @@ -4067,12 +4067,12 @@ out there, Solaris being the most prominent. #endif #ifndef PERL_GET_INTERP -# define PERL_GET_INTERP (PL_curinterp) +# define PERL_GET_INTERP (PL_curinterp) #endif #if defined(MULTIPLICITY) && !defined(PERL_GET_THX) -# define PERL_GET_THX ((PerlInterpreter *)PERL_GET_CONTEXT) -# define PERL_SET_THX(t) PERL_SET_CONTEXT(t) +# define PERL_GET_THX ((PerlInterpreter *)PERL_GET_CONTEXT) +# define PERL_SET_THX(t) PERL_SET_CONTEXT(t) #endif /* @@ -4317,7 +4317,7 @@ intrinsic function, see its documents for more details. below to be rejected by the compiler. Sigh. */ #ifdef HAS_PAUSE -#define Pause pause +#define Pause pause #else #define Pause() sleep((32767<<16)+32767) #endif @@ -4325,13 +4325,13 @@ intrinsic function, see its documents for more details. #ifndef IOCPARM_LEN # ifdef IOCPARM_MASK /* on BSDish systems we're safe */ -# define IOCPARM_LEN(x) (((x) >> 16) & IOCPARM_MASK) +# define IOCPARM_LEN(x) (((x) >> 16) & IOCPARM_MASK) # elif defined(_IOC_SIZE) && defined(__GLIBC__) /* on Linux systems we're safe; except when we're not [perl #38223] */ -# define IOCPARM_LEN(x) (_IOC_SIZE(x) < 256 ? 256 : _IOC_SIZE(x)) +# define IOCPARM_LEN(x) (_IOC_SIZE(x) < 256 ? 256 : _IOC_SIZE(x)) # else /* otherwise guess at what's safe */ -# define IOCPARM_LEN(x) 256 +# define IOCPARM_LEN(x) 256 # endif #endif @@ -4356,7 +4356,7 @@ void init_os_extras(void); UNION_ANY_DEFINITION; #else union any { - void* any_ptr; + void* any_ptr; SV* any_sv; SV** any_svp; GV* any_gv; @@ -4365,14 +4365,14 @@ union any { OP* any_op; char* any_pv; char** any_pvp; - I32 any_i32; - U32 any_u32; - IV any_iv; - UV any_uv; - long any_long; - bool any_bool; - void (*any_dptr) (void*); - void (*any_dxptr) (pTHX_ void*); + I32 any_i32; + U32 any_u32; + IV any_iv; + UV any_uv; + long any_long; + bool any_bool; + void (*any_dptr) (void*); + void (*any_dxptr) (pTHX_ void*); }; #endif @@ -4511,7 +4511,7 @@ typedef struct crypt_data { /* straight from /usr/include/crypt.h */ #include "parser.h" -typedef struct magic_state MGS; /* struct magic_state defined in mg.c */ +typedef struct magic_state MGS; /* struct magic_state defined in mg.c */ #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) \ || defined(PERL_EXT_RE_BUILD) @@ -4534,18 +4534,18 @@ struct _reg_trie_data; #endif struct ptr_tbl_ent { - struct ptr_tbl_ent* next; - const void* oldval; - void* newval; + struct ptr_tbl_ent* next; + const void* oldval; + void* newval; }; 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; + 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(htonl) && !defined(HAS_HTONL) @@ -4625,13 +4625,13 @@ my_swap16(const U16 x) { # define htovl(x) vtohl(x) # define htovs(x) vtohs(x) #elif BYTEORDER == 0x4321 || BYTEORDER == 0x87654321 -# define vtohl(x) ((((x)&0xFF)<<24) \ - +(((x)>>24)&0xFF) \ - +(((x)&0x0000FF00)<<8) \ - +(((x)&0x00FF0000)>>8) ) -# define vtohs(x) ((((x)&0xFF)<<8) + (((x)>>8)&0xFF)) -# define htovl(x) vtohl(x) -# define htovs(x) vtohs(x) +# define vtohl(x) ((((x)&0xFF)<<24) \ + +(((x)>>24)&0xFF) \ + +(((x)&0x0000FF00)<<8) \ + +(((x)&0x00FF0000)>>8) ) +# define vtohs(x) ((((x)&0xFF)<<8) + (((x)>>8)&0xFF)) +# define htovl(x) vtohl(x) +# define htovs(x) vtohs(x) #else # error "Unsupported byteorder" /* If you have need for current perl on PDP-11 or similar, and can help test @@ -4732,8 +4732,8 @@ equal zero. /* Used with UV/IV arguments: */ /* XXXX: need to speed it up */ -#define CLUMP_2UV(iv) ((iv) < 0 ? 0 : (UV)(iv)) -#define CLUMP_2IV(uv) ((uv) > (UV)IV_MAX ? IV_MAX : (IV)(uv)) +#define CLUMP_2UV(iv) ((iv) < 0 ? 0 : (UV)(iv)) +#define CLUMP_2IV(uv) ((uv) > (UV)IV_MAX ? IV_MAX : (IV)(uv)) #ifndef MAXSYSFD # define MAXSYSFD 2 @@ -4749,53 +4749,53 @@ Gid_t getegid (void); #endif #ifndef Perl_debug_log -# define Perl_debug_log PerlIO_stderr() +# define Perl_debug_log PerlIO_stderr() #endif #ifndef Perl_error_log -# define Perl_error_log (PL_stderrgv \ - && isGV(PL_stderrgv) \ +# define Perl_error_log (PL_stderrgv \ + && isGV(PL_stderrgv) \ && GvIOp(PL_stderrgv) \ - && IoOFP(GvIOp(PL_stderrgv)) \ - ? IoOFP(GvIOp(PL_stderrgv)) \ + && IoOFP(GvIOp(PL_stderrgv)) \ + ? IoOFP(GvIOp(PL_stderrgv)) \ : PerlIO_stderr()) #endif -#define DEBUG_p_FLAG 0x00000001 /* 1 */ -#define DEBUG_s_FLAG 0x00000002 /* 2 */ -#define DEBUG_l_FLAG 0x00000004 /* 4 */ -#define DEBUG_t_FLAG 0x00000008 /* 8 */ -#define DEBUG_o_FLAG 0x00000010 /* 16 */ -#define DEBUG_c_FLAG 0x00000020 /* 32 */ -#define DEBUG_P_FLAG 0x00000040 /* 64 */ -#define DEBUG_m_FLAG 0x00000080 /* 128 */ -#define DEBUG_f_FLAG 0x00000100 /* 256 */ -#define DEBUG_r_FLAG 0x00000200 /* 512 */ -#define DEBUG_x_FLAG 0x00000400 /* 1024 */ -#define DEBUG_u_FLAG 0x00000800 /* 2048 */ +#define DEBUG_p_FLAG 0x00000001 /* 1 */ +#define DEBUG_s_FLAG 0x00000002 /* 2 */ +#define DEBUG_l_FLAG 0x00000004 /* 4 */ +#define DEBUG_t_FLAG 0x00000008 /* 8 */ +#define DEBUG_o_FLAG 0x00000010 /* 16 */ +#define DEBUG_c_FLAG 0x00000020 /* 32 */ +#define DEBUG_P_FLAG 0x00000040 /* 64 */ +#define DEBUG_m_FLAG 0x00000080 /* 128 */ +#define DEBUG_f_FLAG 0x00000100 /* 256 */ +#define DEBUG_r_FLAG 0x00000200 /* 512 */ +#define DEBUG_x_FLAG 0x00000400 /* 1024 */ +#define DEBUG_u_FLAG 0x00000800 /* 2048 */ /* U is reserved for Unofficial, exploratory hacking */ -#define DEBUG_U_FLAG 0x00001000 /* 4096 */ +#define DEBUG_U_FLAG 0x00001000 /* 4096 */ #define DEBUG_h_FLAG 0x00002000 /* 8192 */ -#define DEBUG_X_FLAG 0x00004000 /* 16384 */ -#define DEBUG_D_FLAG 0x00008000 /* 32768 */ -#define DEBUG_S_FLAG 0x00010000 /* 65536 */ -#define DEBUG_T_FLAG 0x00020000 /* 131072 */ -#define DEBUG_R_FLAG 0x00040000 /* 262144 */ -#define DEBUG_J_FLAG 0x00080000 /* 524288 */ -#define DEBUG_v_FLAG 0x00100000 /*1048576 */ -#define DEBUG_C_FLAG 0x00200000 /*2097152 */ -#define DEBUG_A_FLAG 0x00400000 /*4194304 */ -#define DEBUG_q_FLAG 0x00800000 /*8388608 */ -#define DEBUG_M_FLAG 0x01000000 /*16777216*/ -#define DEBUG_B_FLAG 0x02000000 /*33554432*/ -#define DEBUG_L_FLAG 0x04000000 /*67108864*/ -#define DEBUG_i_FLAG 0x08000000 /*134217728*/ -#define DEBUG_y_FLAG 0x10000000 /*268435456*/ -#define DEBUG_MASK 0x1FFFEFFF /* mask of all the standard flags */ - -#define DEBUG_DB_RECURSE_FLAG 0x40000000 -#define DEBUG_TOP_FLAG 0x80000000 /* -D was given --> PL_debug |= FLAG */ +#define DEBUG_X_FLAG 0x00004000 /* 16384 */ +#define DEBUG_D_FLAG 0x00008000 /* 32768 */ +#define DEBUG_S_FLAG 0x00010000 /* 65536 */ +#define DEBUG_T_FLAG 0x00020000 /* 131072 */ +#define DEBUG_R_FLAG 0x00040000 /* 262144 */ +#define DEBUG_J_FLAG 0x00080000 /* 524288 */ +#define DEBUG_v_FLAG 0x00100000 /*1048576 */ +#define DEBUG_C_FLAG 0x00200000 /*2097152 */ +#define DEBUG_A_FLAG 0x00400000 /*4194304 */ +#define DEBUG_q_FLAG 0x00800000 /*8388608 */ +#define DEBUG_M_FLAG 0x01000000 /*16777216*/ +#define DEBUG_B_FLAG 0x02000000 /*33554432*/ +#define DEBUG_L_FLAG 0x04000000 /*67108864*/ +#define DEBUG_i_FLAG 0x08000000 /*134217728*/ +#define DEBUG_y_FLAG 0x10000000 /*268435456*/ +#define DEBUG_MASK 0x1FFFEFFF /* mask of all the standard flags */ + +#define DEBUG_DB_RECURSE_FLAG 0x40000000 +#define DEBUG_TOP_FLAG 0x80000000 /* -D was given --> PL_debug |= FLAG */ /* Both flags have to be set */ # define DEBUG_BOTH_FLAGS_TEST_(flag1, flag2) \ @@ -4898,7 +4898,7 @@ Gid_t getegid (void); /* Temporarily turn off memory debugging in case the a * does memory allocation, either directly or indirectly. */ # define DEBUG_m(a) \ - STMT_START { \ + STMT_START { \ if (PERL_GET_INTERP) { \ dTHX; \ if (DEBUG_m_TEST) { \ @@ -5055,26 +5055,26 @@ Gid_t getegid (void); #define DEBUG_SCOPE(where) \ DEBUG_l( \ - Perl_deb(aTHX_ "%s scope %ld (savestack=%ld) at %s:%d\n", \ + Perl_deb(aTHX_ "%s scope %ld (savestack=%ld) at %s:%d\n", \ where, (long)PL_scopestack_ix, (long)PL_savestack_ix, \ __FILE__, __LINE__)); /* Keep the old croak based assert for those who want it, and as a fallback if the platform is so heretically non-ANSI that it can't assert. */ -#define Perl_assert(what) PERL_DEB2( \ - ((what) ? ((void) 0) : \ +#define Perl_assert(what) PERL_DEB2( \ + ((what) ? ((void) 0) : \ (Perl_croak_nocontext("Assertion %s failed: file \"" __FILE__ \ - "\", line %d", STRINGIFY(what), __LINE__), \ + "\", line %d", STRINGIFY(what), __LINE__), \ (void) 0)), ((void)0)) /* assert() gets defined if DEBUGGING. * If no DEBUGGING, the has not been included. */ #ifndef assert -# define assert(what) Perl_assert(what) +# define assert(what) Perl_assert(what) #endif #ifdef DEBUGGING -# define assert_(what) assert(what), +# define assert_(what) assert(what), #else # define assert_(what) #endif @@ -5182,14 +5182,14 @@ typedef Sighandler_t Sigsave_t; EXTERN_C void PerlIO_teardown(void); # ifdef USE_ITHREADS # define PERLIO_INIT MUTEX_INIT(&PL_perlio_mutex) -# define PERLIO_TERM \ - STMT_START { \ - PerlIO_teardown(); \ +# define PERLIO_TERM \ + STMT_START { \ + PerlIO_teardown(); \ MUTEX_DESTROY(&PL_perlio_mutex);\ } STMT_END # else # define PERLIO_INIT -# define PERLIO_TERM PerlIO_teardown() +# define PERLIO_TERM PerlIO_teardown() # endif #else # define PERLIO_INIT @@ -5198,16 +5198,16 @@ EXTERN_C void PerlIO_teardown(void); #ifdef MYMALLOC # ifdef MUTEX_INIT_CALLS_MALLOC -# define MALLOC_INIT \ - STMT_START { \ - PL_malloc_mutex = NULL; \ - MUTEX_INIT(&PL_malloc_mutex); \ +# define MALLOC_INIT \ + STMT_START { \ + PL_malloc_mutex = NULL; \ + MUTEX_INIT(&PL_malloc_mutex); \ } STMT_END -# define MALLOC_TERM \ - STMT_START { \ - perl_mutex tmp = PL_malloc_mutex; \ - PL_malloc_mutex = NULL; \ - MUTEX_DESTROY(&tmp); \ +# define MALLOC_TERM \ + STMT_START { \ + perl_mutex tmp = PL_malloc_mutex; \ + PL_malloc_mutex = NULL; \ + MUTEX_DESTROY(&tmp); \ } STMT_END # else # define MALLOC_INIT MUTEX_INIT(&PL_malloc_mutex) @@ -5222,7 +5222,7 @@ EXTERN_C void PerlIO_teardown(void); struct perl_memory_debug_header; struct perl_memory_debug_header { - tTHX interpreter; + tTHX interpreter; # if defined(PERL_POISON) || defined(PERL_DEBUG_READONLY_COW) MEM_SIZE size; # endif @@ -5250,22 +5250,22 @@ struct perl_memory_debug_header { %MEM_ALIGNBYTES) % MEM_ALIGNBYTES) #else -# define PERL_MEMORY_DEBUG_HEADER_SIZE 0 +# define PERL_MEMORY_DEBUG_HEADER_SIZE 0 #endif #ifdef PERL_TRACK_MEMPOOL # ifdef PERL_DEBUG_READONLY_COW -# define INIT_TRACK_MEMPOOL(header, interp) \ - STMT_START { \ - (header).interpreter = (interp); \ - (header).prev = (header).next = &(header); \ - (header).readonly = 0; \ +# define INIT_TRACK_MEMPOOL(header, interp) \ + STMT_START { \ + (header).interpreter = (interp); \ + (header).prev = (header).next = &(header); \ + (header).readonly = 0; \ } STMT_END # else -# define INIT_TRACK_MEMPOOL(header, interp) \ - STMT_START { \ - (header).interpreter = (interp); \ - (header).prev = (header).next = &(header); \ +# define INIT_TRACK_MEMPOOL(header, interp) \ + STMT_START { \ + (header).interpreter = (interp); \ + (header).prev = (header).next = &(header); \ } STMT_END # endif # else @@ -5278,26 +5278,26 @@ struct perl_memory_debug_header { #endif #ifdef MYMALLOC -# define Perl_safesysmalloc_size(where) Perl_malloced_size(where) +# define Perl_safesysmalloc_size(where) Perl_malloced_size(where) #else # if defined(HAS_MALLOC_SIZE) && !defined(PERL_DEBUG_READONLY_COW) # ifdef PERL_TRACK_MEMPOOL -# define Perl_safesysmalloc_size(where) \ +# define Perl_safesysmalloc_size(where) \ (malloc_size(((char *)(where)) - PERL_MEMORY_DEBUG_HEADER_SIZE) - PERL_MEMORY_DEBUG_HEADER_SIZE) # else -# define Perl_safesysmalloc_size(where) malloc_size(where) +# define Perl_safesysmalloc_size(where) malloc_size(where) # endif # endif # ifdef HAS_MALLOC_GOOD_SIZE # ifdef PERL_TRACK_MEMPOOL -# define Perl_malloc_good_size(how_much) \ +# define Perl_malloc_good_size(how_much) \ (malloc_good_size((how_much) + PERL_MEMORY_DEBUG_HEADER_SIZE) - PERL_MEMORY_DEBUG_HEADER_SIZE) # else -# define Perl_malloc_good_size(how_much) malloc_good_size(how_much) +# define Perl_malloc_good_size(how_much) malloc_good_size(how_much) # endif # else /* Having this as the identity operation makes some code simpler. */ -# define Perl_malloc_good_size(how_much) (how_much) +# define Perl_malloc_good_size(how_much) (how_much) # endif #endif @@ -5309,7 +5309,7 @@ typedef bool (*destroyable_proc_t) (pTHX_ SV *sv); typedef void (*despatch_signals_proc_t) (pTHX); #if defined(__DYNAMIC__) && defined(PERL_DARWIN) && defined(PERL_CORE) -# include /* for the env array */ +# include /* for the env array */ # define environ (*_NSGetEnviron()) #elif defined(USE_ENVIRON_ARRAY) && !defined(environ) /* VMS and some other platforms don't use the environ array */ @@ -5320,11 +5320,11 @@ EXTERN_C char **environ; /* environment variables supplied via exec */ #include "patchlevel.h" #undef PERL_PATCHLEVEL_H_IMPLICIT -#define PERL_VERSION_STRING STRINGIFY(PERL_REVISION) "." \ +#define PERL_VERSION_STRING STRINGIFY(PERL_REVISION) "." \ STRINGIFY(PERL_VERSION) "." \ STRINGIFY(PERL_SUBVERSION) -#define PERL_API_VERSION_STRING STRINGIFY(PERL_API_REVISION) "." \ +#define PERL_API_VERSION_STRING STRINGIFY(PERL_API_REVISION) "." \ STRINGIFY(PERL_API_VERSION) "." \ STRINGIFY(PERL_API_SUBVERSION) @@ -5416,7 +5416,7 @@ EXTCONST char PL_sh_path[] #ifdef CSH EXTCONST char PL_cshname[] INIT(CSH); -# define PL_cshlen (sizeof(CSH "") - 1) +# define PL_cshlen (sizeof(CSH "") - 1) #endif /* These are baked at compile time into any shared perl library. @@ -5474,152 +5474,152 @@ EXTCONST int PL_sig_num[]; * ebcdic_tables.h */ EXTCONST unsigned char PL_fold[] = { - 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, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255 + 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, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, + 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. + * 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, + 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 */ }; /* If these tables are accessed through ebcdic, the access will be converted to * latin1 first */ EXTCONST unsigned char PL_latin1_lc[] = { /* lowercasing */ - 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, 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, 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, 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, - 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255 + 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, 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, 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, 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, + 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255 }; /* upper and title case of latin1 characters, modified so that the three tricky * ones are mapped to 255 (which is one of the three) */ EXTCONST unsigned char PL_mod_latin1_uc[] = { - 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, '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, 255 /*micro*/, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, + 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, '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, 255 /*micro*/, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, # if UNICODE_MAJOR_VERSION > 2 \ || (UNICODE_MAJOR_VERSION == 2 && UNICODE_DOT_VERSION >= 1 \ && UNICODE_DOT_DOT_VERSION >= 8) @@ -5627,13 +5627,13 @@ EXTCONST unsigned char PL_mod_latin1_uc[] = { # else /* uc(sharp s) is 'sharp s' itself in early unicode */ 223, # endif - 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 + 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 }; # endif /* !EBCDIC, but still in DOINIT */ -#else /* ! DOINIT */ +#else /* ! DOINIT */ # ifndef EBCDIC EXTCONST unsigned char PL_fold[]; EXTCONST unsigned char PL_fold_latin1[]; @@ -5793,13 +5793,13 @@ EXTCONST char PL_bincompat_options[]; /* 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 + 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 @@ -5864,7 +5864,7 @@ END_EXTERN_C #endif #endif -#define LEX_NOTPARSING 11 /* borrowed from toke.c */ +#define LEX_NOTPARSING 11 /* borrowed from toke.c */ typedef enum { XOPERATOR, @@ -5894,42 +5894,42 @@ typedef enum { to %^H to find out which are in and which are out. This could be extended for the normal case of a plain HINT_LOCALE, so that %^H would be used for any locale form. */ -#define HINT_INTEGER 0x00000001 /* integer pragma */ -#define HINT_STRICT_REFS 0x00000002 /* strict pragma */ -#define HINT_LOCALE 0x00000004 /* locale pragma */ -#define HINT_BYTES 0x00000008 /* bytes pragma */ -#define HINT_LOCALE_PARTIAL 0x00000010 /* locale, but a subset of categories */ +#define HINT_INTEGER 0x00000001 /* integer pragma */ +#define HINT_STRICT_REFS 0x00000002 /* strict pragma */ +#define HINT_LOCALE 0x00000004 /* locale pragma */ +#define HINT_BYTES 0x00000008 /* bytes pragma */ +#define HINT_LOCALE_PARTIAL 0x00000010 /* locale, but a subset of categories */ -#define HINT_EXPLICIT_STRICT_REFS 0x00000020 /* strict.pm */ -#define HINT_EXPLICIT_STRICT_SUBS 0x00000040 /* strict.pm */ -#define HINT_EXPLICIT_STRICT_VARS 0x00000080 /* strict.pm */ +#define HINT_EXPLICIT_STRICT_REFS 0x00000020 /* strict.pm */ +#define HINT_EXPLICIT_STRICT_SUBS 0x00000040 /* strict.pm */ +#define HINT_EXPLICIT_STRICT_VARS 0x00000080 /* strict.pm */ -#define HINT_BLOCK_SCOPE 0x00000100 -#define HINT_STRICT_SUBS 0x00000200 /* strict pragma */ -#define HINT_STRICT_VARS 0x00000400 /* strict pragma */ -#define HINT_UNI_8_BIT 0x00000800 /* unicode_strings feature */ +#define HINT_BLOCK_SCOPE 0x00000100 +#define HINT_STRICT_SUBS 0x00000200 /* strict pragma */ +#define HINT_STRICT_VARS 0x00000400 /* strict pragma */ +#define HINT_UNI_8_BIT 0x00000800 /* unicode_strings feature */ /* The HINT_NEW_* constants are used by the overload pragma */ -#define HINT_NEW_INTEGER 0x00001000 -#define HINT_NEW_FLOAT 0x00002000 -#define HINT_NEW_BINARY 0x00004000 -#define HINT_NEW_STRING 0x00008000 -#define HINT_NEW_RE 0x00010000 -#define HINT_LOCALIZE_HH 0x00020000 /* %^H needs to be copied */ -#define HINT_LEXICAL_IO_IN 0x00040000 /* ${^OPEN} is set for input */ -#define HINT_LEXICAL_IO_OUT 0x00080000 /* ${^OPEN} is set for output */ +#define HINT_NEW_INTEGER 0x00001000 +#define HINT_NEW_FLOAT 0x00002000 +#define HINT_NEW_BINARY 0x00004000 +#define HINT_NEW_STRING 0x00008000 +#define HINT_NEW_RE 0x00010000 +#define HINT_LOCALIZE_HH 0x00020000 /* %^H needs to be copied */ +#define HINT_LEXICAL_IO_IN 0x00040000 /* ${^OPEN} is set for input */ +#define HINT_LEXICAL_IO_OUT 0x00080000 /* ${^OPEN} is set for output */ -#define HINT_RE_TAINT 0x00100000 /* re pragma */ -#define HINT_RE_EVAL 0x00200000 /* re pragma */ +#define HINT_RE_TAINT 0x00100000 /* re pragma */ +#define HINT_RE_EVAL 0x00200000 /* re pragma */ -#define HINT_FILETEST_ACCESS 0x00400000 /* filetest pragma */ -#define HINT_UTF8 0x00800000 /* utf8 pragma */ +#define HINT_FILETEST_ACCESS 0x00400000 /* filetest pragma */ +#define HINT_UTF8 0x00800000 /* utf8 pragma */ -#define HINT_NO_AMAGIC 0x01000000 /* overloading pragma */ +#define HINT_NO_AMAGIC 0x01000000 /* overloading pragma */ -#define HINT_RE_FLAGS 0x02000000 /* re '/xism' pragma */ +#define HINT_RE_FLAGS 0x02000000 /* re '/xism' pragma */ -#define HINT_FEATURE_MASK 0x3c000000 /* 4 bits for feature bundles */ +#define HINT_FEATURE_MASK 0x3c000000 /* 4 bits for feature bundles */ /* Note: Used for HINT_M_VMSISH_*, currently defined by vms/vmsish.h: @@ -5982,8 +5982,8 @@ struct perl_debug_pad { SV pad[3]; }; -#define PERL_DEBUG_PAD(i) &(PL_debug_pad.pad[i]) -#define PERL_DEBUG_PAD_ZERO(i) (SvPVX(PERL_DEBUG_PAD(i))[0] = 0, \ +#define PERL_DEBUG_PAD(i) &(PL_debug_pad.pad[i]) +#define PERL_DEBUG_PAD_ZERO(i) (SvPVX(PERL_DEBUG_PAD(i))[0] = 0, \ (((XPV*) SvANY(PERL_DEBUG_PAD(i)))->xpv_cur = 0), \ PERL_DEBUG_PAD(i)) @@ -5997,8 +5997,8 @@ typedef char* (*re_intuit_start_t) (pTHX_ regexp *prog, SV *sv, char *strpos, char *strend, U32 flags, re_scream_pos_data *d); -typedef SV* (*re_intuit_string_t) (pTHX_ regexp *prog); -typedef void (*regfree_t) (pTHX_ struct regexp* r); +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)(pTHX_ const char *, char const *, I32); @@ -6071,8 +6071,8 @@ struct interpreter { EXTCONST U16 PL_interp_size INIT(sizeof(struct interpreter)); -# define PERL_INTERPRETER_SIZE_UPTO_MEMBER(member) \ - STRUCT_OFFSET(struct interpreter, member) + \ +# define PERL_INTERPRETER_SIZE_UPTO_MEMBER(member) \ + STRUCT_OFFSET(struct interpreter, member) + \ sizeof(((struct interpreter*)0)->member) /* This will be useful for subsequent releases, because this has to be the @@ -6097,8 +6097,8 @@ struct tempsym; /* defined in pp_pack.c */ #undef PERL_CKDEF #undef PERL_PPDEF -#define PERL_CKDEF(s) PERL_CALLCONV OP *s (pTHX_ OP *o); -#define PERL_PPDEF(s) PERL_CALLCONV OP *s (pTHX); +#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" @@ -6287,7 +6287,7 @@ EXTCONST U8 PL_deBruijn_bitpos_tab64[]; /* if these never got defined, they need defaults */ #ifndef PERL_SET_CONTEXT -# define PERL_SET_CONTEXT(i) PERL_SET_INTERP(i) +# define PERL_SET_CONTEXT(i) PERL_SET_INTERP(i) #endif #ifdef USE_PERL_SWITCH_LOCALE_CONTEXT @@ -6309,15 +6309,15 @@ EXTCONST U8 PL_deBruijn_bitpos_tab64[]; #ifndef PERL_GET_CONTEXT -# define PERL_GET_CONTEXT PERL_GET_INTERP +# define PERL_GET_CONTEXT PERL_GET_INTERP #endif #ifndef PERL_GET_THX -# define PERL_GET_THX ((void*)NULL) +# define PERL_GET_THX ((void*)NULL) #endif #ifndef PERL_SET_THX -# define PERL_SET_THX(t) NOOP +# define PERL_SET_THX(t) NOOP #endif #ifndef EBCDIC @@ -6778,16 +6778,16 @@ struct am_table_short { typedef struct am_table AMT; typedef struct am_table_short AMTS; -#define AMGfallNEVER 1 -#define AMGfallNO 2 -#define AMGfallYES 3 +#define AMGfallNEVER 1 +#define AMGfallNO 2 +#define AMGfallYES 3 -#define AMTf_AMAGIC 1 -#define AMT_AMAGIC(amt) ((amt)->flags & AMTf_AMAGIC) -#define AMT_AMAGIC_on(amt) ((amt)->flags |= AMTf_AMAGIC) -#define AMT_AMAGIC_off(amt) ((amt)->flags &= ~AMTf_AMAGIC) +#define AMTf_AMAGIC 1 +#define AMT_AMAGIC(amt) ((amt)->flags & AMTf_AMAGIC) +#define AMT_AMAGIC_on(amt) ((amt)->flags |= AMTf_AMAGIC) +#define AMT_AMAGIC_off(amt) ((amt)->flags &= ~AMTf_AMAGIC) -#define StashHANDLER(stash,meth) gv_handler((stash),CAT2(meth,_amg)) +#define StashHANDLER(stash,meth) gv_handler((stash),CAT2(meth,_amg)) /* * some compilers like to redefine cos et alia as faster @@ -6820,40 +6820,40 @@ typedef struct am_table_short AMTS; # endif #endif /* _FASTMATH */ -#define PERLDB_ALL (PERLDBf_SUB | PERLDBf_LINE | \ - PERLDBf_NOOPT | PERLDBf_INTER | \ - PERLDBf_SUBLINE| PERLDBf_SINGLE| \ +#define PERLDB_ALL (PERLDBf_SUB | PERLDBf_LINE | \ + PERLDBf_NOOPT | PERLDBf_INTER | \ + PERLDBf_SUBLINE| PERLDBf_SINGLE| \ PERLDBf_NAMEEVAL| PERLDBf_NAMEANON | \ PERLDBf_SAVESRC) /* No _NONAME, _GOTO */ -#define PERLDBf_SUB 0x01 /* Debug sub enter/exit */ -#define PERLDBf_LINE 0x02 /* Keep line # */ -#define PERLDBf_NOOPT 0x04 /* Switch off optimizations */ -#define PERLDBf_INTER 0x08 /* Preserve more data for +#define PERLDBf_SUB 0x01 /* Debug sub enter/exit */ +#define PERLDBf_LINE 0x02 /* Keep line # */ +#define PERLDBf_NOOPT 0x04 /* Switch off optimizations */ +#define PERLDBf_INTER 0x08 /* Preserve more data for later inspections */ -#define PERLDBf_SUBLINE 0x10 /* Keep subr source lines */ -#define PERLDBf_SINGLE 0x20 /* Start with single-step on */ -#define PERLDBf_NONAME 0x40 /* For _SUB: no name of the subr */ -#define PERLDBf_GOTO 0x80 /* Report goto: call DB::goto */ -#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 subroutines */ -#define PERLDBf_SAVESRC_INVALID 0x1000 /* Save source that did not compile */ - -#define PERLDB_SUB (PL_perldb & PERLDBf_SUB) -#define PERLDB_LINE (PL_perldb & PERLDBf_LINE) -#define PERLDB_NOOPT (PL_perldb & PERLDBf_NOOPT) -#define PERLDB_INTER (PL_perldb & PERLDBf_INTER) -#define PERLDB_SUBLINE (PL_perldb & PERLDBf_SUBLINE) -#define PERLDB_SINGLE (PL_perldb & PERLDBf_SINGLE) -#define PERLDB_SUB_NN (PL_perldb & PERLDBf_NONAME) -#define PERLDB_GOTO (PL_perldb & PERLDBf_GOTO) -#define PERLDB_NAMEEVAL (PL_perldb & PERLDBf_NAMEEVAL) -#define PERLDB_NAMEANON (PL_perldb & PERLDBf_NAMEANON) -#define PERLDB_SAVESRC (PL_perldb & PERLDBf_SAVESRC) -#define PERLDB_SAVESRC_NOSUBS (PL_perldb & PERLDBf_SAVESRC_NOSUBS) -#define PERLDB_SAVESRC_INVALID (PL_perldb & PERLDBf_SAVESRC_INVALID) +#define PERLDBf_SUBLINE 0x10 /* Keep subr source lines */ +#define PERLDBf_SINGLE 0x20 /* Start with single-step on */ +#define PERLDBf_NONAME 0x40 /* For _SUB: no name of the subr */ +#define PERLDBf_GOTO 0x80 /* Report goto: call DB::goto */ +#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 subroutines */ +#define PERLDBf_SAVESRC_INVALID 0x1000 /* Save source that did not compile */ + +#define PERLDB_SUB (PL_perldb & PERLDBf_SUB) +#define PERLDB_LINE (PL_perldb & PERLDBf_LINE) +#define PERLDB_NOOPT (PL_perldb & PERLDBf_NOOPT) +#define PERLDB_INTER (PL_perldb & PERLDBf_INTER) +#define PERLDB_SUBLINE (PL_perldb & PERLDBf_SUBLINE) +#define PERLDB_SINGLE (PL_perldb & PERLDBf_SINGLE) +#define PERLDB_SUB_NN (PL_perldb & PERLDBf_NONAME) +#define PERLDB_GOTO (PL_perldb & PERLDBf_GOTO) +#define PERLDB_NAMEEVAL (PL_perldb & PERLDBf_NAMEEVAL) +#define PERLDB_NAMEANON (PL_perldb & PERLDBf_NAMEANON) +#define PERLDB_SAVESRC (PL_perldb & PERLDBf_SAVESRC) +#define PERLDB_SAVESRC_NOSUBS (PL_perldb & PERLDBf_SAVESRC_NOSUBS) +#define PERLDB_SAVESRC_INVALID (PL_perldb & PERLDBf_SAVESRC_INVALID) #define PERLDB_LINE_OR_SAVESRC (PL_perldb & (PERLDBf_LINE | PERLDBf_SAVESRC)) @@ -6881,14 +6881,14 @@ typedef struct am_table_short AMTS; /* Returns TRUE if the plain locale pragma without a parameter is in effect. * */ -# define IN_LOCALE_RUNTIME (PL_curcop \ +# define IN_LOCALE_RUNTIME (PL_curcop \ && CopHINTS_get(PL_curcop) & HINT_LOCALE) /* Returns TRUE if either form of the locale pragma is in effect */ # define IN_SOME_LOCALE_FORM_RUNTIME \ cBOOL(CopHINTS_get(PL_curcop) & (HINT_LOCALE|HINT_LOCALE_PARTIAL)) -# define IN_LOCALE_COMPILETIME cBOOL(PL_hints & HINT_LOCALE) +# define IN_LOCALE_COMPILETIME cBOOL(PL_hints & HINT_LOCALE) # define IN_SOME_LOCALE_FORM_COMPILETIME \ cBOOL(PL_hints & (HINT_LOCALE|HINT_LOCALE_PARTIAL)) @@ -7030,7 +7030,7 @@ the plain locale pragma without a parameter (S>) is in effect. */ # define LOCALE_LOCK_(cond_to_panic_if_already_locked) \ STMT_START { \ - CLANG_DIAG_IGNORE(-Wthread-safety) \ + CLANG_DIAG_IGNORE(-Wthread-safety) \ if (LIKELY(PL_locale_mutex_depth <= 0)) { \ DEBUG_Lv(PerlIO_printf(Perl_debug_log, \ "%s: %d: locking locale; depth=1\n", \ @@ -7438,7 +7438,7 @@ cannot have changed since the precalculation. } STMT_END # define SET_NUMERIC_UNDERLYING() \ - STMT_START { \ + STMT_START { \ /*assert(PL_locale_mutex_depth > 0);*/ \ if (NOT_IN_NUMERIC_UNDERLYING_) { \ Perl_set_numeric_underlying(aTHX); \ @@ -7459,7 +7459,7 @@ cannot have changed since the precalculation. /* Rarely, we want to change to the underlying locale even outside of 'use * locale'. This is principally in the POSIX:: functions */ # define STORE_LC_NUMERIC_FORCE_TO_UNDERLYING() \ - STMT_START { \ + STMT_START { \ LC_NUMERIC_LOCK(NOT_IN_NUMERIC_UNDERLYING_); \ if (NOT_IN_NUMERIC_UNDERLYING_) { \ Perl_set_numeric_underlying(aTHX); \ @@ -7511,7 +7511,7 @@ cannot have changed since the precalculation. # define SET_NUMERIC_STANDARD() # define SET_NUMERIC_UNDERLYING() -# define IS_NUMERIC_RADIX(a, b) (0) +# define IS_NUMERIC_RADIX(a, b) (0) # define DECLARATION_FOR_LC_NUMERIC_MANIPULATION dNOOP # define STORE_LC_NUMERIC_SET_STANDARD() # define STORE_LC_NUMERIC_FORCE_TO_UNDERLYING() @@ -7777,21 +7777,21 @@ C. #if !defined(Strtol) && defined(USE_64_BIT_INT) && defined(IV_IS_QUAD) && \ (QUADKIND == QUAD_IS_LONG_LONG || QUADKIND == QUAD_IS___INT64) # ifdef __hpux -# define strtoll __strtoll /* secret handshake */ +# define strtoll __strtoll /* secret handshake */ # endif # if defined(WIN64) && defined(_MSC_VER) -# define strtoll _strtoi64 /* secret handshake */ +# define strtoll _strtoi64 /* secret handshake */ # endif # if !defined(Strtol) && defined(HAS_STRTOLL) -# define Strtol strtoll +# define Strtol strtoll # endif # if !defined(Strtol) && defined(HAS_STRTOQ) -# define Strtol strtoq +# define Strtol strtoq # endif /* is there atoq() anywhere? */ #endif #if !defined(Strtol) && defined(HAS_STRTOL) -# define Strtol strtol +# define Strtol strtol #endif #ifndef Atol /* It would be more fashionable to use Strtol() to define atol() @@ -7800,38 +7800,38 @@ C. # if defined(USE_64_BIT_INT) && defined(IV_IS_QUAD) && defined(HAS_ATOLL) && \ (QUADKIND == QUAD_IS_LONG_LONG || QUADKIND == QUAD_IS___INT64) # ifdef WIN64 -# define atoll _atoi64 /* secret handshake */ +# define atoll _atoi64 /* secret handshake */ # endif -# define Atol atoll +# define Atol atoll # else -# define Atol atol +# define Atol atol # endif #endif #if !defined(Strtoul) && defined(USE_64_BIT_INT) && defined(UV_IS_QUAD) && \ (QUADKIND == QUAD_IS_LONG_LONG || QUADKIND == QUAD_IS___INT64) # ifdef __hpux -# define strtoull __strtoull /* secret handshake */ +# define strtoull __strtoull /* secret handshake */ # endif # if defined(WIN64) && defined(_MSC_VER) -# define strtoull _strtoui64 /* secret handshake */ +# define strtoull _strtoui64 /* secret handshake */ # endif # if !defined(Strtoul) && defined(HAS_STRTOULL) -# define Strtoul strtoull +# define Strtoul strtoull # endif # if !defined(Strtoul) && defined(HAS_STRTOUQ) -# define Strtoul strtouq +# define Strtoul strtouq # endif /* is there atouq() anywhere? */ #endif #if !defined(Strtoul) && defined(HAS_STRTOUL) -# define Strtoul strtoul +# define Strtoul strtoul #endif #if !defined(Strtoul) && defined(HAS_STRTOL) /* Last resort. */ -# define Strtoul(s, e, b) strchr((s), '-') ? ULONG_MAX : (unsigned long)strtol((s), (e), (b)) +# define Strtoul(s, e, b) strchr((s), '-') ? ULONG_MAX : (unsigned long)strtol((s), (e), (b)) #endif #ifndef Atoul -# define Atoul(s) Strtoul(s, NULL, 10) +# define Atoul(s) Strtoul(s, NULL, 10) #endif #define grok_bin(s,lp,fp,rp) \ @@ -7857,9 +7857,9 @@ C. */ #ifndef PERL_MICRO -# ifndef PERL_ASYNC_CHECK -# define PERL_ASYNC_CHECK() if (UNLIKELY(PL_sig_pending)) PL_signalhook(aTHX) -# endif +# ifndef PERL_ASYNC_CHECK +# define PERL_ASYNC_CHECK() if (UNLIKELY(PL_sig_pending)) PL_signalhook(aTHX) +# endif #endif #ifndef PERL_ASYNC_CHECK @@ -7879,15 +7879,15 @@ C. #ifdef HAS_SEM # include # include -# ifndef HAS_UNION_SEMUN /* Provide the union semun. */ +# ifndef HAS_UNION_SEMUN /* Provide the union semun. */ union semun { - int val; - struct semid_ds *buf; - unsigned short *array; + int val; + struct semid_ds *buf; + unsigned short *array; }; # endif # ifdef USE_SEMCTL_SEMUN -# ifdef IRIX32_SEMUN_BROKEN_BY_GCC +# ifdef IRIX32_SEMUN_BROKEN_BY_GCC union gccbug_semun { int val; struct semid_ds *buf; @@ -7895,7 +7895,7 @@ C. char __dummy[5]; }; # define semun gccbug_semun -# endif +# endif # define Semctl(id, num, cmd, semun) semctl(id, num, cmd, semun) # elif defined(USE_SEMCTL_SEMID_DS) # ifdef EXTRA_F_IN_SEMUN_BUF @@ -7953,42 +7953,42 @@ C. /* 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 \ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ - void * old_my_cxtp = PL_my_cxt_list[MY_CXT_INDEX]; \ - PL_my_cxt_list[MY_CXT_INDEX] = my_cxtp; \ + void * old_my_cxtp = PL_my_cxt_list[MY_CXT_INDEX]; \ + PL_my_cxt_list[MY_CXT_INDEX] = my_cxtp; \ Copy(old_my_cxtp, my_cxtp, 1, my_cxt_t); /* This macro must be used to access members of the my_cxt_t structure. * e.g. MY_CXT.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 /* MULTIPLICITY */ -# define START_MY_CXT static my_cxt_t my_cxt; -# define dMY_CXT dNOOP +# define START_MY_CXT static my_cxt_t my_cxt; +# 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 MY_CXT_INIT NOOP +# define MY_CXT_CLONE NOOP +# define MY_CXT my_cxt -# define pMY_CXT void +# define pMY_CXT void # define pMY_CXT_ # define _pMY_CXT # define aMY_CXT @@ -8019,10 +8019,10 @@ EXTERN_C int flock(int fd, int op); #ifndef O_RDONLY /* Assume UNIX defaults */ -# define O_RDONLY 0000 -# define O_WRONLY 0001 -# define O_RDWR 0002 -# define O_CREAT 0100 +# define O_RDONLY 0000 +# define O_WRONLY 0001 +# define O_RDWR 0002 +# define O_CREAT 0100 #endif #ifndef O_BINARY @@ -8051,20 +8051,20 @@ EXTERN_C int flock(int fd, int op); #endif #ifdef I_LIBUTIL -# include /* setproctitle() in some FreeBSDs */ +# include /* setproctitle() in some FreeBSDs */ #endif #ifndef EXEC_ARGV_CAST #define EXEC_ARGV_CAST(x) (char **)x #endif -#define IS_NUMBER_IN_UV 0x01 /* number within UV range (maybe not +#define IS_NUMBER_IN_UV 0x01 /* number within UV range (maybe not int). value returned in pointed- to UV */ #define IS_NUMBER_GREATER_THAN_UV_MAX 0x02 /* pointed to UV undefined */ -#define IS_NUMBER_NOT_INT 0x04 /* saw . or E notation or infnan */ -#define IS_NUMBER_NEG 0x08 /* leading minus sign */ -#define IS_NUMBER_INFINITY 0x10 /* this is big */ +#define IS_NUMBER_NOT_INT 0x04 /* saw . or E notation or infnan */ +#define IS_NUMBER_NEG 0x08 /* leading minus sign */ +#define IS_NUMBER_INFINITY 0x10 /* this is big */ #define IS_NUMBER_NAN 0x20 /* this is not */ #define IS_NUMBER_TRAILING 0x40 /* number has trailing trash */ @@ -8123,61 +8123,61 @@ extern void moncontrol(int); /* ISO 6429 NEL - C1 control NExt Line */ /* See https://www.unicode.org/unicode/reports/tr13/ */ -#define NEXT_LINE_CHAR NEXT_LINE_NATIVE +#define NEXT_LINE_CHAR NEXT_LINE_NATIVE #ifndef PIPESOCK_MODE # define PIPESOCK_MODE #endif #ifndef SOCKET_OPEN_MODE -# define SOCKET_OPEN_MODE PIPESOCK_MODE +# define SOCKET_OPEN_MODE PIPESOCK_MODE #endif #ifndef PIPE_OPEN_MODE -# define PIPE_OPEN_MODE PIPESOCK_MODE +# define PIPE_OPEN_MODE PIPESOCK_MODE #endif -#define PERL_MAGIC_UTF8_CACHESIZE 2 +#define PERL_MAGIC_UTF8_CACHESIZE 2 #ifdef PERL_CORE -#define PERL_UNICODE_STDIN_FLAG 0x0001 -#define PERL_UNICODE_STDOUT_FLAG 0x0002 -#define PERL_UNICODE_STDERR_FLAG 0x0004 -#define PERL_UNICODE_IN_FLAG 0x0008 -#define PERL_UNICODE_OUT_FLAG 0x0010 -#define PERL_UNICODE_ARGV_FLAG 0x0020 -#define PERL_UNICODE_LOCALE_FLAG 0x0040 -#define PERL_UNICODE_WIDESYSCALLS_FLAG 0x0080 /* for Sarathy */ -#define PERL_UNICODE_UTF8CACHEASSERT_FLAG 0x0100 - -#define PERL_UNICODE_STD_FLAG \ - (PERL_UNICODE_STDIN_FLAG | \ - PERL_UNICODE_STDOUT_FLAG | \ +#define PERL_UNICODE_STDIN_FLAG 0x0001 +#define PERL_UNICODE_STDOUT_FLAG 0x0002 +#define PERL_UNICODE_STDERR_FLAG 0x0004 +#define PERL_UNICODE_IN_FLAG 0x0008 +#define PERL_UNICODE_OUT_FLAG 0x0010 +#define PERL_UNICODE_ARGV_FLAG 0x0020 +#define PERL_UNICODE_LOCALE_FLAG 0x0040 +#define PERL_UNICODE_WIDESYSCALLS_FLAG 0x0080 /* for Sarathy */ +#define PERL_UNICODE_UTF8CACHEASSERT_FLAG 0x0100 + +#define PERL_UNICODE_STD_FLAG \ + (PERL_UNICODE_STDIN_FLAG | \ + PERL_UNICODE_STDOUT_FLAG | \ PERL_UNICODE_STDERR_FLAG) -#define PERL_UNICODE_INOUT_FLAG \ - (PERL_UNICODE_IN_FLAG | \ +#define PERL_UNICODE_INOUT_FLAG \ + (PERL_UNICODE_IN_FLAG | \ PERL_UNICODE_OUT_FLAG) -#define PERL_UNICODE_DEFAULT_FLAGS \ - (PERL_UNICODE_STD_FLAG | \ - PERL_UNICODE_INOUT_FLAG | \ +#define PERL_UNICODE_DEFAULT_FLAGS \ + (PERL_UNICODE_STD_FLAG | \ + PERL_UNICODE_INOUT_FLAG | \ PERL_UNICODE_LOCALE_FLAG) -#define PERL_UNICODE_ALL_FLAGS 0x01ff +#define PERL_UNICODE_ALL_FLAGS 0x01ff -#define PERL_UNICODE_STDIN 'I' -#define PERL_UNICODE_STDOUT 'O' -#define PERL_UNICODE_STDERR 'E' -#define PERL_UNICODE_STD 'S' -#define PERL_UNICODE_IN 'i' -#define PERL_UNICODE_OUT 'o' -#define PERL_UNICODE_INOUT 'D' -#define PERL_UNICODE_ARGV 'A' -#define PERL_UNICODE_LOCALE 'L' -#define PERL_UNICODE_WIDESYSCALLS 'W' -#define PERL_UNICODE_UTF8CACHEASSERT 'a' +#define PERL_UNICODE_STDIN 'I' +#define PERL_UNICODE_STDOUT 'O' +#define PERL_UNICODE_STDERR 'E' +#define PERL_UNICODE_STD 'S' +#define PERL_UNICODE_IN 'i' +#define PERL_UNICODE_OUT 'o' +#define PERL_UNICODE_INOUT 'D' +#define PERL_UNICODE_ARGV 'A' +#define PERL_UNICODE_LOCALE 'L' +#define PERL_UNICODE_WIDESYSCALLS 'W' +#define PERL_UNICODE_UTF8CACHEASSERT 'a' #endif @@ -8190,7 +8190,7 @@ unsafe signals. See L and L. #define do_open(g, n, l, a, rm, rp, sf) \ do_openn(g, n, l, a, rm, rp, sf, (SV **) NULL, 0) #ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION -# define do_exec(cmd) do_exec3(cmd,0,0) +# define do_exec(cmd) do_exec3(cmd,0,0) #endif #ifdef OS2 -# define do_aexec Perl_do_aexec +# define do_aexec Perl_do_aexec #else -# define do_aexec(really, mark,sp) do_aexec5(really, mark, sp, 0, 0) +# define do_aexec(really, mark,sp) do_aexec5(really, mark, sp, 0, 0) #endif diff --git a/perl_inc_macro.h b/perl_inc_macro.h index 627a63a817725..212b5f5ebe7ed 100644 --- a/perl_inc_macro.h +++ b/perl_inc_macro.h @@ -23,7 +23,7 @@ #define DEFINE_INC_MACROS 1 #ifdef APPLLIB_EXP -# define INCPUSH_APPLLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(APPLLIB_EXP), \ +# define INCPUSH_APPLLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(APPLLIB_EXP), \ INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE); #endif @@ -31,7 +31,7 @@ /* sitearch is always relative to sitelib on Windows for * DLL-based path intuition to work correctly */ # if !defined(WIN32) -# define INCPUSH_SITEARCH_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(SITEARCH_EXP), \ +# define INCPUSH_SITEARCH_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(SITEARCH_EXP), \ INCPUSH_CAN_RELOCATE); # endif #endif @@ -39,10 +39,10 @@ #ifdef SITELIB_EXP # if defined(WIN32) /* this picks up sitearch as well */ -# define INCPUSH_SITELIB_EXP s = PerlEnv_sitelib_path(PERL_FS_VERSION, &len); \ +# define INCPUSH_SITELIB_EXP s = PerlEnv_sitelib_path(PERL_FS_VERSION, &len); \ if (s) incpush_use_sep(s, len, INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE); # else -# define INCPUSH_SITELIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(SITELIB_EXP), \ +# define INCPUSH_SITELIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(SITELIB_EXP), \ INCPUSH_CAN_RELOCATE); # endif #endif @@ -51,22 +51,22 @@ /* vendorarch is always relative to vendorlib on Windows for * DLL-based path intuition to work correctly */ # if !defined(WIN32) -# define INCPUSH_PERL_VENDORARCH_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_VENDORARCH_EXP), INCPUSH_CAN_RELOCATE); +# define INCPUSH_PERL_VENDORARCH_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_VENDORARCH_EXP), INCPUSH_CAN_RELOCATE); # endif #endif #ifdef PERL_VENDORLIB_EXP # if defined(WIN32) /* this picks up vendorarch as well */ -# define INCPUSH_PERL_VENDORLIB_EXP s = PerlEnv_vendorlib_path(PERL_FS_VERSION, &len); \ +# define INCPUSH_PERL_VENDORLIB_EXP s = PerlEnv_vendorlib_path(PERL_FS_VERSION, &len); \ if (s) incpush_use_sep(s, len, INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE); # else -# define INCPUSH_PERL_VENDORLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_VENDORLIB_EXP), INCPUSH_CAN_RELOCATE); +# define INCPUSH_PERL_VENDORLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_VENDORLIB_EXP), INCPUSH_CAN_RELOCATE); # endif #endif #ifdef ARCHLIB_EXP -# define INCPUSH_ARCHLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(ARCHLIB_EXP), INCPUSH_CAN_RELOCATE); +# define INCPUSH_ARCHLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(ARCHLIB_EXP), INCPUSH_CAN_RELOCATE); #endif /* used by INCPUSH_PRIVLIB_EXP */ @@ -75,21 +75,21 @@ #endif #if defined(WIN32) -# define INCPUSH_PRIVLIB_EXP s = PerlEnv_lib_path(PERL_FS_VERSION, &len); \ +# define INCPUSH_PRIVLIB_EXP s = PerlEnv_lib_path(PERL_FS_VERSION, &len); \ if (s) incpush_use_sep(s, len, INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE); #else -# define INCPUSH_PRIVLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(PRIVLIB_EXP), INCPUSH_CAN_RELOCATE); +# define INCPUSH_PRIVLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(PRIVLIB_EXP), INCPUSH_CAN_RELOCATE); #endif #ifdef PERL_OTHERLIBDIRS -# define INCPUSH_PERL_OTHERLIBDIRS S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_OTHERLIBDIRS), \ +# define INCPUSH_PERL_OTHERLIBDIRS S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_OTHERLIBDIRS), \ INCPUSH_ADD_VERSIONED_SUB_DIRS|INCPUSH_NOT_BASEDIR|INCPUSH_CAN_RELOCATE); #endif /* submacros for INCPUSH_PERL5LIB */ -#define _INCPUSH_PERL5LIB_IF if (perl5lib && *perl5lib != '\0') +#define _INCPUSH_PERL5LIB_IF if (perl5lib && *perl5lib != '\0') #ifndef VMS # define _INCPUSH_PERL5LIB_ADD _INCPUSH_PERL5LIB_IF incpush_use_sep(perl5lib, 0, INCPUSH_ADD_OLD_VERS|INCPUSH_NOT_BASEDIR); @@ -115,25 +115,25 @@ SITELIB and VENDORLIB for older versions */ #ifdef APPLLIB_EXP -# define INCPUSH_APPLLIB_OLD_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(APPLLIB_EXP), \ +# define INCPUSH_APPLLIB_OLD_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(APPLLIB_EXP), \ INCPUSH_ADD_OLD_VERS|INCPUSH_NOT_BASEDIR|INCPUSH_CAN_RELOCATE); #endif #if defined(SITELIB_STEM) && defined(PERL_INC_VERSION_LIST) /* Search for version-specific dirs below here */ -# define INCPUSH_SITELIB_STEM S_incpush_use_sep(aTHX_ STR_WITH_LEN(SITELIB_STEM), \ +# define INCPUSH_SITELIB_STEM S_incpush_use_sep(aTHX_ STR_WITH_LEN(SITELIB_STEM), \ INCPUSH_ADD_OLD_VERS|INCPUSH_CAN_RELOCATE); #endif #if defined(PERL_VENDORLIB_STEM) && defined(PERL_INC_VERSION_LIST) /* Search for version-specific dirs below here */ -# define INCPUSH_PERL_VENDORLIB_STEM S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_VENDORLIB_STEM), \ +# define INCPUSH_PERL_VENDORLIB_STEM S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_VENDORLIB_STEM), \ INCPUSH_ADD_OLD_VERS|INCPUSH_CAN_RELOCATE); #endif #ifdef PERL_OTHERLIBDIRS -# define INCPUSH_PERL_OTHERLIBDIRS_ARCHONLY S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_OTHERLIBDIRS), \ +# define INCPUSH_PERL_OTHERLIBDIRS_ARCHONLY S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_OTHERLIBDIRS), \ INCPUSH_ADD_OLD_VERS|INCPUSH_ADD_ARCHONLY_SUB_DIRS|INCPUSH_CAN_RELOCATE); #endif diff --git a/perl_siphash.h b/perl_siphash.h index d3d71e77101de..b9b6c9e6a10a2 100644 --- a/perl_siphash.h +++ b/perl_siphash.h @@ -54,7 +54,7 @@ FNC ## _with_state_64 \ U64 v2 = U8TO64_LE(state+16); \ U64 v3 = U8TO64_LE(state+24); \ \ - for ( ; in != end; in += 8 ) \ + for (; in != end; in += 8 ) \ { \ m = U8TO64_LE( in ); \ v3 ^= m; \ diff --git a/perlio.h b/perlio.h index 96fc6f51ccbf7..9ea35e24d3eaa 100644 --- a/perlio.h +++ b/perlio.h @@ -88,7 +88,7 @@ PERL_CALLCONV AV* PerlIO_get_layers(pTHX_ PerlIO *f); PERL_CALLCONV void PerlIO_clone(pTHX_ PerlInterpreter *proto, CLONE_PARAMS *param); -#endif /* PerlIO */ +#endif /* PerlIO */ /* ----------- End of implementation choices ---------- */ @@ -119,19 +119,19 @@ PERL_CALLCONV void PerlIO_clone(pTHX_ PerlInterpreter *proto, * Case 1: Strong denial of stdio - make all stdio calls (we can think of) errors */ #include "nostdio.h" -#else /* if PERLIO_NOT_STDIO */ +#else /* if PERLIO_NOT_STDIO */ /* * PERLIO_NOT_STDIO #define'd as 0 * Case 2: Declares that both PerlIO and stdio can be used */ -#endif /* if PERLIO_NOT_STDIO */ -#else /* ifdef PERLIO_NOT_STDIO */ +#endif /* if PERLIO_NOT_STDIO */ +#else /* ifdef PERLIO_NOT_STDIO */ /* * PERLIO_NOT_STDIO not defined * Case 3: Try and fake stdio calls as PerlIO calls */ #include "fakesdio.h" -#endif /* ifndef PERLIO_NOT_STDIO */ +#endif /* ifndef PERLIO_NOT_STDIO */ /* ----------- fill in things that have not got #define'd ---------- */ @@ -165,8 +165,8 @@ PERL_CALLCONV void PerlIO_clone(pTHX_ PerlInterpreter *proto, #define SEEK_END 2 #endif -#define PERLIO_DUP_CLONE 1 -#define PERLIO_DUP_FD 2 +#define PERLIO_DUP_CLONE 1 +#define PERLIO_DUP_FD 2 /* --------------------- Now prototypes for functions --------------- */ @@ -343,7 +343,7 @@ typedef struct PerlIO_list_s PerlIO_list_t; #endif END_EXTERN_C -#endif /* PERLIO_H_ */ +#endif /* PERLIO_H_ */ /* * ex: set ts=8 sts=4 sw=4 et: diff --git a/perliol.h b/perliol.h index e247ad60dde11..5dbacc53785b8 100644 --- a/perliol.h +++ b/perliol.h @@ -53,51 +53,51 @@ struct _PerlIO_funcs { /*--------------------------------------------------------------------------------------*/ /* Kind values */ -#define PERLIO_K_RAW 0x00000001 -#define PERLIO_K_BUFFERED 0x00000002 -#define PERLIO_K_CANCRLF 0x00000004 -#define PERLIO_K_FASTGETS 0x00000008 -#define PERLIO_K_DUMMY 0x00000010 -#define PERLIO_K_UTF8 0x00008000 -#define PERLIO_K_DESTRUCT 0x00010000 -#define PERLIO_K_MULTIARG 0x00020000 +#define PERLIO_K_RAW 0x00000001 +#define PERLIO_K_BUFFERED 0x00000002 +#define PERLIO_K_CANCRLF 0x00000004 +#define PERLIO_K_FASTGETS 0x00000008 +#define PERLIO_K_DUMMY 0x00000010 +#define PERLIO_K_UTF8 0x00008000 +#define PERLIO_K_DESTRUCT 0x00010000 +#define PERLIO_K_MULTIARG 0x00020000 /*--------------------------------------------------------------------------------------*/ struct _PerlIO { - PerlIOl *next; /* Lower layer */ - PerlIO_funcs *tab; /* Functions for this layer */ - U32 flags; /* Various flags for state */ - int err; /* Saved errno value */ + PerlIOl *next; /* Lower layer */ + PerlIO_funcs *tab; /* Functions for this layer */ + U32 flags; /* Various flags for state */ + int err; /* Saved errno value */ #ifdef VMS - unsigned os_err; /* Saved vaxc$errno value */ + unsigned os_err; /* Saved vaxc$errno value */ #elif defined (OS2) unsigned long os_err; #elif defined (WIN32) - DWORD os_err; /* Saved GetLastError() value */ + DWORD os_err; /* Saved GetLastError() value */ #endif - PerlIOl *head; /* our ultimate parent pointer */ + PerlIOl *head; /* our ultimate parent pointer */ }; /*--------------------------------------------------------------------------------------*/ /* Flag values */ -#define PERLIO_F_EOF 0x00000100 -#define PERLIO_F_CANWRITE 0x00000200 -#define PERLIO_F_CANREAD 0x00000400 -#define PERLIO_F_ERROR 0x00000800 -#define PERLIO_F_TRUNCATE 0x00001000 -#define PERLIO_F_APPEND 0x00002000 -#define PERLIO_F_CRLF 0x00004000 -#define PERLIO_F_UTF8 0x00008000 -#define PERLIO_F_UNBUF 0x00010000 -#define PERLIO_F_WRBUF 0x00020000 -#define PERLIO_F_RDBUF 0x00040000 -#define PERLIO_F_LINEBUF 0x00080000 -#define PERLIO_F_TEMP 0x00100000 -#define PERLIO_F_OPEN 0x00200000 -#define PERLIO_F_FASTGETS 0x00400000 -#define PERLIO_F_TTY 0x00800000 -#define PERLIO_F_NOTREG 0x01000000 +#define PERLIO_F_EOF 0x00000100 +#define PERLIO_F_CANWRITE 0x00000200 +#define PERLIO_F_CANREAD 0x00000400 +#define PERLIO_F_ERROR 0x00000800 +#define PERLIO_F_TRUNCATE 0x00001000 +#define PERLIO_F_APPEND 0x00002000 +#define PERLIO_F_CRLF 0x00004000 +#define PERLIO_F_UTF8 0x00008000 +#define PERLIO_F_UNBUF 0x00010000 +#define PERLIO_F_WRBUF 0x00020000 +#define PERLIO_F_RDBUF 0x00040000 +#define PERLIO_F_LINEBUF 0x00080000 +#define PERLIO_F_TEMP 0x00100000 +#define PERLIO_F_OPEN 0x00200000 +#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)) @@ -131,13 +131,13 @@ PERL_CALLCONV SV *PerlIO_arg_fetch(PerlIO_list_t *av, IV n); */ typedef struct { - struct _PerlIO base; /* Base "class" info */ - STDCHAR *buf; /* Start of buffer */ - STDCHAR *end; /* End of valid part of buffer */ - STDCHAR *ptr; /* Current position in buffer */ - Off_t posn; /* Offset of buf into the file */ - Size_t bufsiz; /* Real size of buffer */ - IV oneword; /* Emergency buffer */ + struct _PerlIO base; /* Base "class" info */ + STDCHAR *buf; /* Start of buffer */ + STDCHAR *end; /* End of valid part of buffer */ + STDCHAR *ptr; /* Current position in buffer */ + Off_t posn; /* Offset of buf into the file */ + Size_t bufsiz; /* Real size of buffer */ + IV oneword; /* Emergency buffer */ } PerlIOBuf; PERL_CALLCONV int PerlIO_apply_layera(pTHX_ PerlIO *f, const char *mode, @@ -276,7 +276,7 @@ PERL_CALLCONV SSize_t PerlIOUnix_write(pTHX_ PerlIO *f, const void *vbuf, Size /* Utf8 */ PERL_CALLCONV IV PerlIOUtf8_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab); -#endif /* PERLIOL_H_ */ +#endif /* PERLIOL_H_ */ /* * ex: set ts=8 sts=4 sw=4 et: diff --git a/perlstatic.h b/perlstatic.h index a698de68bf5d9..ef0e5f17df872 100644 --- a/perlstatic.h +++ b/perlstatic.h @@ -30,4 +30,3 @@ GCC_DIAG_RESTORE_DECL; /* * ex: set ts=8 sts=4 sw=4 et: */ - diff --git a/perlvars.h b/perlvars.h index 0df71f50a72e0..6a12990bcac68 100644 --- a/perlvars.h +++ b/perlvars.h @@ -35,18 +35,18 @@ use the variable. /* global state */ #if defined(USE_ITHREADS) -PERLVAR(G, op_mutex, perl_mutex) /* Mutex for op refcounting */ +PERLVAR(G, op_mutex, perl_mutex) /* Mutex for op refcounting */ #endif -PERLVARI(G, curinterp, PerlInterpreter *, NULL) +PERLVARI(G, curinterp, PerlInterpreter *, NULL) /* currently running interpreter * (initial parent interpreter under * useithreads) */ #if defined(USE_ITHREADS) -PERLVAR(G, thr_key, perl_key) /* key to retrieve per-thread struct */ +PERLVAR(G, thr_key, perl_key) /* key to retrieve per-thread struct */ #endif /* XXX does anyone even use this? */ -PERLVARI(G, do_undump, bool, FALSE) /* -u or dump seen? */ +PERLVARI(G, do_undump, bool, FALSE) /* -u or dump seen? */ #if defined(FAKE_PERSISTENT_SIGNAL_HANDLERS)||defined(FAKE_DEFAULT_SIGNAL_HANDLERS) PERLVARI(G, sig_handlers_initted, int, 0) @@ -62,7 +62,7 @@ PERLVARA(G, sig_defaulting, SIG_SIZE, int) /* XXX signals are process-wide anyway, so we * ignore the implications of this for threading */ #ifndef HAS_SIGACTION -PERLVARI(G, sig_trapped, int, 0) +PERLVARI(G, sig_trapped, int, 0) #endif #ifndef PERL_MICRO @@ -80,7 +80,7 @@ PERLVARI(G, csighandler3p, Sighandler3_t, Perl_csighandler3) /* This is constant on most architectures, a global on OS/2 */ #ifdef OS2 -PERLVARI(G, sh_path, char *, SH_PATH) /* full path of shell */ +PERLVARI(G, sh_path, char *, SH_PATH) /* full path of shell */ #endif #ifdef USE_PERLIO @@ -91,7 +91,7 @@ PERLVAR(G, perlio_mutex, perl_mutex) /* Mutex for perlio fd refcounts */ PERLVARI(G, perlio_fd_refcnt, int *, 0) /* Pointer to array of fd refcounts. */ PERLVARI(G, perlio_fd_refcnt_size, int, 0) /* Size of the array */ -PERLVARI(G, perlio_debug_fd, int, 0) /* the fd to write perlio debug into, 0 means not set yet */ +PERLVARI(G, perlio_debug_fd, int, 0) /* the fd to write perlio debug into, 0 means not set yet */ #endif #ifdef HAS_MMAP @@ -108,7 +108,7 @@ PERLVAR(G, locale_mutex, perl_mutex) /* Mutex related to locale handling */ PERLVAR(G, C_locale_obj, locale_t) #endif -PERLVARI(G, watch_pvx, char *, NULL) +PERLVARI(G, watch_pvx, char *, NULL) /* =for apidoc AmnU|Perl_check_t *|PL_check @@ -161,7 +161,7 @@ destruction. (Use of C is discouraged since 5.14.) */ #if defined(USE_ITHREADS) -PERLVAR(G, check_mutex, perl_mutex) /* Mutex for PL_check */ +PERLVAR(G, check_mutex, perl_mutex) /* Mutex for PL_check */ #endif /* allocate a unique index to every module that calls MY_CXT_INIT */ @@ -171,12 +171,12 @@ PERLVAR(G, check_mutex, perl_mutex) /* Mutex for PL_check */ PERLVAR(G, my_ctx_mutex, perl_mutex) PERLVARI(G, veto_switch_non_tTHX_context, int, FALSE) # endif -PERLVARI(G, my_cxt_index, int, 0) +PERLVARI(G, my_cxt_index, int, 0) #endif /* this is currently set without MUTEX protection, so keep it a type which * can be set atomically (ie not a bit field) */ -PERLVARI(G, veto_cleanup, int, FALSE) /* exit without cleanup */ +PERLVARI(G, veto_cleanup, int, FALSE) /* exit without cleanup */ /* =for apidoc AmnUx|Perl_keyword_plugin_t|PL_keyword_plugin @@ -239,8 +239,8 @@ PERLVAR(G, keyword_plugin_mutex, perl_mutex) /* Mutex for PL_keyword_plugin */ #endif PERLVARI(G, keyword_plugin, Perl_keyword_plugin_t, Perl_keyword_plugin_standard) -PERLVARI(G, op_sequence, HV *, NULL) /* dump.c */ -PERLVARI(G, op_seq, UV, 0) /* dump.c */ +PERLVARI(G, op_sequence, HV *, NULL) /* dump.c */ +PERLVARI(G, op_seq, UV, 0) /* dump.c */ #ifdef USE_ITHREADS PERLVAR(G, dollarzero_mutex, perl_mutex) /* Modifying $0 */ @@ -254,10 +254,10 @@ PERLVAR(G, dollarzero_mutex, perl_mutex) /* Modifying $0 */ PERLVAR(G, sv_placeholder, SV) #if defined(MYMALLOC) && defined(USE_ITHREADS) -PERLVAR(G, malloc_mutex, perl_mutex) /* Mutex for malloc */ +PERLVAR(G, malloc_mutex, perl_mutex) /* Mutex for malloc */ #endif -PERLVARI(G, hash_seed_set, bool, FALSE) /* perl.c */ +PERLVARI(G, hash_seed_set, bool, FALSE) /* perl.c */ PERLVARA(G, hash_seed_w, PERL_HASH_SEED_WORDS, PVT__PERL_HASH_WORD_TYPE) /* perl.c and hv.h */ #if defined(PERL_HASH_STATE_BYTES) PERLVARA(G, hash_state_w, PERL_HASH_STATE_WORDS, PVT__PERL_HASH_WORD_TYPE) /* perl.c and hv.h */ @@ -276,7 +276,7 @@ PERLVAR(G, perllib_sep, char) /* Definitions of user-defined \p{} properties, as the subs that define them * are only called once */ -PERLVARI(G, user_def_props, HV *, NULL) +PERLVARI(G, user_def_props, HV *, NULL) #if defined(USE_ITHREADS) PERLVAR(G, user_def_props_aTHX, PerlInterpreter *) /* aTHX that user_def_props @@ -291,15 +291,15 @@ PERLVAR(G, user_prop_mutex, perl_mutex) /* Mutex for manipulating * In theory these variables aren't thread-safe, but the worst that can * happen is that two treads will both do an initial probe */ -PERLVARI(G, strategy_dup, int, 0) /* doio.c */ -PERLVARI(G, strategy_dup2, int, 0) /* doio.c */ -PERLVARI(G, strategy_open, int, 0) /* doio.c */ -PERLVARI(G, strategy_open3, int, 0) /* doio.c */ -PERLVARI(G, strategy_mkstemp, int, 0) /* doio.c */ -PERLVARI(G, strategy_socket, int, 0) /* doio.c */ -PERLVARI(G, strategy_accept, int, 0) /* doio.c */ -PERLVARI(G, strategy_pipe, int, 0) /* doio.c */ -PERLVARI(G, strategy_socketpair, int, 0) /* doio.c */ +PERLVARI(G, strategy_dup, int, 0) /* doio.c */ +PERLVARI(G, strategy_dup2, int, 0) /* doio.c */ +PERLVARI(G, strategy_open, int, 0) /* doio.c */ +PERLVARI(G, strategy_open3, int, 0) /* doio.c */ +PERLVARI(G, strategy_mkstemp, int, 0) /* doio.c */ +PERLVARI(G, strategy_socket, int, 0) /* doio.c */ +PERLVARI(G, strategy_accept, int, 0) /* doio.c */ +PERLVARI(G, strategy_pipe, int, 0) /* doio.c */ +PERLVARI(G, strategy_socketpair, int, 0) /* doio.c */ PERLVARI(G, my_environ, char **, NULL) PERLVARI(G, origenviron, char **, NULL) diff --git a/pp.h b/pp.h index 65d07ce4d9fc7..20908fe9d3662 100644 --- a/pp.h +++ b/pp.h @@ -88,14 +88,14 @@ value for the OP, but some use it for other purposes. PL_markstack_ptr++; \ } STMT_END -#define dSP SV **sp = PL_stack_sp -#define djSP dSP -#define dMARK SV **mark = PL_stack_base + POPMARK -#define dORIGMARK const I32 origmark = (I32)(mark - PL_stack_base) -#define ORIGMARK (PL_stack_base + origmark) +#define dSP SV **sp = PL_stack_sp +#define djSP dSP +#define dMARK SV **mark = PL_stack_base + POPMARK +#define dORIGMARK const I32 origmark = (I32)(mark - PL_stack_base) +#define ORIGMARK (PL_stack_base + origmark) -#define SPAGAIN sp = PL_stack_sp -#define MSPAGAIN STMT_START { sp = PL_stack_sp; mark = ORIGMARK; } STMT_END +#define SPAGAIN sp = PL_stack_sp +#define MSPAGAIN STMT_START { sp = PL_stack_sp; mark = ORIGMARK; } STMT_END #define GETTARGETSTACKED targ = (PL_op->op_flags & OPf_STACKED ? POPs : PAD_SV(PL_op->op_targ)) #define dTARGETSTACKED SV * GETTARGETSTACKED @@ -154,32 +154,32 @@ Pops an unsigned long off the stack. =cut */ -#define PUTBACK PL_stack_sp = sp -#define RETURN return (PUTBACK, NORMAL) -#define RETURNOP(o) return (PUTBACK, o) -#define RETURNX(x) return (x, PUTBACK, NORMAL) - -#define POPs (*sp--) -#define POPp POPpx -#define POPpx (SvPVx_nolen(POPs)) -#define POPpconstx (SvPVx_nolen_const(POPs)) -#define POPpbytex (SvPVbytex_nolen(POPs)) -#define POPn (SvNVx(POPs)) -#define POPi ((IV)SvIVx(POPs)) -#define POPu ((UV)SvUVx(POPs)) -#define POPl ((long)SvIVx(POPs)) -#define POPul ((unsigned long)SvIVx(POPs)) - -#define TOPs (*sp) -#define TOPm1s (*(sp-1)) -#define TOPp1s (*(sp+1)) -#define TOPp TOPpx -#define TOPpx (SvPV_nolen(TOPs)) -#define TOPn (SvNV(TOPs)) -#define TOPi ((IV)SvIV(TOPs)) -#define TOPu ((UV)SvUV(TOPs)) -#define TOPl ((long)SvIV(TOPs)) -#define TOPul ((unsigned long)SvUV(TOPs)) +#define PUTBACK PL_stack_sp = sp +#define RETURN return (PUTBACK, NORMAL) +#define RETURNOP(o) return (PUTBACK, o) +#define RETURNX(x) return (x, PUTBACK, NORMAL) + +#define POPs (*sp--) +#define POPp POPpx +#define POPpx (SvPVx_nolen(POPs)) +#define POPpconstx (SvPVx_nolen_const(POPs)) +#define POPpbytex (SvPVbytex_nolen(POPs)) +#define POPn (SvNVx(POPs)) +#define POPi ((IV)SvIVx(POPs)) +#define POPu ((UV)SvUVx(POPs)) +#define POPl ((long)SvIVx(POPs)) +#define POPul ((unsigned long)SvIVx(POPs)) + +#define TOPs (*sp) +#define TOPm1s (*(sp-1)) +#define TOPp1s (*(sp+1)) +#define TOPp TOPpx +#define TOPpx (SvPV_nolen(TOPs)) +#define TOPn (SvNV(TOPs)) +#define TOPi ((IV)SvIV(TOPs)) +#define TOPu ((UV)SvUV(TOPs)) +#define TOPl ((long)SvIV(TOPs)) +#define TOPul ((unsigned long)SvUV(TOPs)) /* Go to some pains in the rare event that we must extend the stack. */ @@ -215,7 +215,7 @@ and C>. =for apidoc Am|void|PUSHi|IV iv Push an integer onto the stack. The stack must have room for this element. Handles 'set' magic. Uses C, so C or C should be -called to declare it. Do not call multiple C-oriented macros to +called to declare it. Do not call multiple C-oriented macros to return lists from XSUB's - see C> instead. See also C> and C>. @@ -487,117 +487,117 @@ Does not use C. See also C>, C> and C>. sv_setnv_mg(targ, TARGn_nv); \ } STMT_END -#define PUSHs(s) (*++sp = (s)) -#define PUSHTARG STMT_START { SvSETMAGIC(TARG); PUSHs(TARG); } STMT_END -#define PUSHp(p,l) STMT_START { sv_setpvn(TARG, (p), (l)); PUSHTARG; } STMT_END +#define PUSHs(s) (*++sp = (s)) +#define PUSHTARG STMT_START { SvSETMAGIC(TARG); PUSHs(TARG); } STMT_END +#define PUSHp(p,l) STMT_START { sv_setpvn(TARG, (p), (l)); PUSHTARG; } STMT_END #define PUSHpvs(s) PUSHp("" s "", sizeof(s)-1) -#define PUSHn(n) STMT_START { TARGn(n,1); PUSHs(TARG); } STMT_END -#define PUSHi(i) STMT_START { TARGi(i,1); PUSHs(TARG); } STMT_END -#define PUSHu(u) STMT_START { TARGu(u,1); PUSHs(TARG); } STMT_END +#define PUSHn(n) STMT_START { TARGn(n,1); PUSHs(TARG); } STMT_END +#define PUSHi(i) STMT_START { TARGi(i,1); PUSHs(TARG); } STMT_END +#define PUSHu(u) STMT_START { TARGu(u,1); PUSHs(TARG); } STMT_END -#define XPUSHs(s) STMT_START { EXTEND(sp,1); *++sp = (s); } STMT_END -#define XPUSHTARG STMT_START { SvSETMAGIC(TARG); XPUSHs(TARG); } STMT_END -#define XPUSHp(p,l) STMT_START { sv_setpvn(TARG, (p), (l)); XPUSHTARG; } STMT_END +#define XPUSHs(s) STMT_START { EXTEND(sp,1); *++sp = (s); } STMT_END +#define XPUSHTARG STMT_START { SvSETMAGIC(TARG); XPUSHs(TARG); } STMT_END +#define XPUSHp(p,l) STMT_START { sv_setpvn(TARG, (p), (l)); XPUSHTARG; } STMT_END #define XPUSHpvs(s) XPUSHp("" s "", sizeof(s)-1) -#define XPUSHn(n) STMT_START { TARGn(n,1); XPUSHs(TARG); } STMT_END -#define XPUSHi(i) STMT_START { TARGi(i,1); XPUSHs(TARG); } STMT_END -#define XPUSHu(u) STMT_START { TARGu(u,1); XPUSHs(TARG); } STMT_END -#define XPUSHundef STMT_START { SvOK_off(TARG); XPUSHs(TARG); } STMT_END - -#define mPUSHs(s) PUSHs(sv_2mortal(s)) -#define PUSHmortal PUSHs(sv_newmortal()) -#define mPUSHp(p,l) PUSHs(newSVpvn_flags((p), (l), SVs_TEMP)) +#define XPUSHn(n) STMT_START { TARGn(n,1); XPUSHs(TARG); } STMT_END +#define XPUSHi(i) STMT_START { TARGi(i,1); XPUSHs(TARG); } STMT_END +#define XPUSHu(u) STMT_START { TARGu(u,1); XPUSHs(TARG); } STMT_END +#define XPUSHundef STMT_START { SvOK_off(TARG); XPUSHs(TARG); } STMT_END + +#define mPUSHs(s) PUSHs(sv_2mortal(s)) +#define PUSHmortal PUSHs(sv_newmortal()) +#define mPUSHp(p,l) PUSHs(newSVpvn_flags((p), (l), SVs_TEMP)) #define mPUSHpvs(s) mPUSHp("" s "", sizeof(s)-1) -#define mPUSHn(n) sv_setnv(PUSHmortal, (NV)(n)) -#define mPUSHi(i) sv_setiv(PUSHmortal, (IV)(i)) -#define mPUSHu(u) sv_setuv(PUSHmortal, (UV)(u)) +#define mPUSHn(n) sv_setnv(PUSHmortal, (NV)(n)) +#define mPUSHi(i) sv_setiv(PUSHmortal, (IV)(i)) +#define mPUSHu(u) sv_setuv(PUSHmortal, (UV)(u)) -#define mXPUSHs(s) XPUSHs(sv_2mortal(s)) -#define XPUSHmortal XPUSHs(sv_newmortal()) -#define mXPUSHp(p,l) STMT_START { EXTEND(sp,1); mPUSHp((p), (l)); } STMT_END +#define mXPUSHs(s) XPUSHs(sv_2mortal(s)) +#define XPUSHmortal XPUSHs(sv_newmortal()) +#define mXPUSHp(p,l) STMT_START { EXTEND(sp,1); mPUSHp((p), (l)); } STMT_END #define mXPUSHpvs(s) mXPUSHp("" s "", sizeof(s)-1) -#define mXPUSHn(n) STMT_START { EXTEND(sp,1); mPUSHn(n); } STMT_END -#define mXPUSHi(i) STMT_START { EXTEND(sp,1); mPUSHi(i); } STMT_END -#define mXPUSHu(u) STMT_START { EXTEND(sp,1); mPUSHu(u); } STMT_END - -#define SETs(s) (*sp = s) -#define SETTARG STMT_START { SvSETMAGIC(TARG); SETs(TARG); } STMT_END -#define SETp(p,l) STMT_START { sv_setpvn(TARG, (p), (l)); SETTARG; } STMT_END -#define SETn(n) STMT_START { TARGn(n,1); SETs(TARG); } STMT_END -#define SETi(i) STMT_START { TARGi(i,1); SETs(TARG); } STMT_END -#define SETu(u) STMT_START { TARGu(u,1); SETs(TARG); } STMT_END - -#define dTOPss SV *sv = TOPs -#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 -#define dPOPuv UV value = POPu - -#define dPOPXssrl(X) SV *right = POPs; SV *left = CAT2(X,s) -#define dPOPXnnrl(X) NV right = POPn; NV left = CAT2(X,n) -#define dPOPXiirl(X) IV right = POPi; IV left = CAT2(X,i) +#define mXPUSHn(n) STMT_START { EXTEND(sp,1); mPUSHn(n); } STMT_END +#define mXPUSHi(i) STMT_START { EXTEND(sp,1); mPUSHi(i); } STMT_END +#define mXPUSHu(u) STMT_START { EXTEND(sp,1); mPUSHu(u); } STMT_END + +#define SETs(s) (*sp = s) +#define SETTARG STMT_START { SvSETMAGIC(TARG); SETs(TARG); } STMT_END +#define SETp(p,l) STMT_START { sv_setpvn(TARG, (p), (l)); SETTARG; } STMT_END +#define SETn(n) STMT_START { TARGn(n,1); SETs(TARG); } STMT_END +#define SETi(i) STMT_START { TARGi(i,1); SETs(TARG); } STMT_END +#define SETu(u) STMT_START { TARGu(u,1); SETs(TARG); } STMT_END + +#define dTOPss SV *sv = TOPs +#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 +#define dPOPuv UV value = POPu + +#define dPOPXssrl(X) SV *right = POPs; SV *left = CAT2(X,s) +#define dPOPXnnrl(X) NV right = POPn; NV left = CAT2(X,n) +#define dPOPXiirl(X) IV right = POPi; IV left = CAT2(X,i) #define USE_LEFT(sv) \ (SvOK(sv) || !(PL_op->op_flags & OPf_STACKED)) #define dPOPXiirl_ul_nomg(X) \ - IV right = (sp--, SvIV_nomg(TOPp1s)); \ - SV *leftsv = CAT2(X,s); \ + 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) -#define dPOPPOPiirl dPOPXiirl(POP) +#define dPOPPOPssrl dPOPXssrl(POP) +#define dPOPPOPnnrl dPOPXnnrl(POP) +#define dPOPPOPiirl dPOPXiirl(POP) -#define dPOPTOPssrl dPOPXssrl(TOP) -#define dPOPTOPnnrl dPOPXnnrl(TOP) +#define dPOPTOPssrl dPOPXssrl(TOP) +#define dPOPTOPnnrl dPOPXnnrl(TOP) #define dPOPTOPnnrl_nomg \ NV right = SvNV_nomg(TOPs); NV left = (sp--, SvNV_nomg(TOPs)) -#define dPOPTOPiirl dPOPXiirl(TOP) +#define dPOPTOPiirl dPOPXiirl(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)) -#define RETPUSHUNDEF RETURNX(PUSHs(&PL_sv_undef)) +#define RETPUSHYES RETURNX(PUSHs(&PL_sv_yes)) +#define RETPUSHNO RETURNX(PUSHs(&PL_sv_no)) +#define RETPUSHUNDEF RETURNX(PUSHs(&PL_sv_undef)) -#define RETSETYES RETURNX(SETs(&PL_sv_yes)) -#define RETSETNO RETURNX(SETs(&PL_sv_no)) -#define RETSETUNDEF RETURNX(SETs(&PL_sv_undef)) -#define RETSETTARG STMT_START { SETTARG; RETURN; } STMT_END +#define RETSETYES RETURNX(SETs(&PL_sv_yes)) +#define RETSETNO RETURNX(SETs(&PL_sv_no)) +#define RETSETUNDEF RETURNX(SETs(&PL_sv_undef)) +#define RETSETTARG STMT_START { SETTARG; RETURN; } STMT_END -#define ARGTARG PL_op->op_targ +#define ARGTARG PL_op->op_targ -#define MAXARG (PL_op->op_private & OPpARG4_MASK) +#define MAXARG (PL_op->op_private & OPpARG4_MASK) #define SWITCHSTACK(f,t) \ - STMT_START { \ - AvFILLp(f) = sp - PL_stack_base; \ - PL_stack_base = AvARRAY(t); \ - PL_stack_max = PL_stack_base + AvMAX(t); \ - sp = PL_stack_sp = PL_stack_base + AvFILLp(t); \ - PL_curstack = t; \ + STMT_START { \ + AvFILLp(f) = sp - PL_stack_base; \ + PL_stack_base = AvARRAY(t); \ + PL_stack_max = PL_stack_base + AvMAX(t); \ + sp = PL_stack_sp = PL_stack_base + AvFILLp(t); \ + PL_curstack = t; \ } STMT_END #define EXTEND_MORTAL(n) \ - STMT_START { \ - SSize_t eMiX = PL_tmps_ix + (n); \ - if (UNLIKELY(eMiX >= PL_tmps_max)) \ - (void)Perl_tmps_grow_p(aTHX_ eMiX); \ + STMT_START { \ + SSize_t eMiX = PL_tmps_ix + (n); \ + if (UNLIKELY(eMiX >= PL_tmps_max)) \ + (void)Perl_tmps_grow_p(aTHX_ eMiX); \ } STMT_END -#define AMGf_noright 1 -#define AMGf_noleft 2 -#define AMGf_assign 4 /* op supports mutator variant, e.g. $x += 1 */ -#define AMGf_unary 8 -#define AMGf_numeric 0x10 /* for Perl_try_amagic_bin */ +#define AMGf_noright 1 +#define AMGf_noleft 2 +#define AMGf_assign 4 /* op supports mutator variant, e.g. $x += 1 */ +#define AMGf_unary 8 +#define AMGf_numeric 0x10 /* for Perl_try_amagic_bin */ -#define AMGf_want_list 0x40 -#define AMGf_numarg 0x80 +#define AMGf_want_list 0x40 +#define AMGf_numarg 0x80 /* do SvGETMAGIC on the stack args before checking for overload */ @@ -619,22 +619,22 @@ Does not use C. See also C>, C> and C>. /* No longer used in core. Use AMG_CALLunary instead */ #define AMG_CALLun(sv,meth) AMG_CALLunary(sv, CAT2(meth,_amg)) -#define tryAMAGICunTARGETlist(meth, jump) \ - STMT_START { \ - dSP; \ - SV *tmpsv; \ - SV *arg= *sp; \ +#define tryAMAGICunTARGETlist(meth, jump) \ + STMT_START { \ + dSP; \ + SV *tmpsv; \ + SV *arg= *sp; \ U8 gimme = GIMME_V; \ - if (UNLIKELY(SvAMAGIC(arg) && \ - (tmpsv = amagic_call(arg, &PL_sv_undef, meth, \ - AMGf_want_list | AMGf_noright \ + if (UNLIKELY(SvAMAGIC(arg) && \ + (tmpsv = amagic_call(arg, &PL_sv_undef, meth, \ + AMGf_want_list | AMGf_noright \ |AMGf_unary)))) \ - { \ - SPAGAIN; \ + { \ + SPAGAIN; \ if (gimme == G_VOID) { \ NOOP; \ } \ - else if (gimme == G_LIST) { \ + else if (gimme == G_LIST) { \ SSize_t i; \ SSize_t len; \ assert(SvTYPE(tmpsv) == SVt_PVAV); \ @@ -651,25 +651,25 @@ Does not use C. See also C>, C> and C>. sp--; \ SETTARG; \ } \ - PUTBACK; \ - if (jump) { \ + PUTBACK; \ + if (jump) { \ OP *jump_o = NORMAL->op_next; \ - while (jump_o->op_type == OP_NULL) \ - jump_o = jump_o->op_next; \ - assert(jump_o->op_type == OP_ENTERSUB); \ + while (jump_o->op_type == OP_NULL) \ + jump_o = jump_o->op_next; \ + assert(jump_o->op_type == OP_ENTERSUB); \ (void)POPMARK; \ - return jump_o->op_next; \ - } \ - return NORMAL; \ - } \ + return jump_o->op_next; \ + } \ + return NORMAL; \ + } \ } STMT_END /* 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; \ +#define tryAMAGICunDEREF(meth) \ + STMT_START { \ + sv = amagic_deref_call(*sp, CAT2(meth,_amg)); \ + SPAGAIN; \ } STMT_END @@ -697,9 +697,9 @@ True if this op will be the return value of an lvalue subroutine /* 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 +# define TIED_METHOD_MORTALIZE_NOT_NEEDED 0x04 +# define TIED_METHOD_ARGUMENTS_ON_STACK 0x08 +# define TIED_METHOD_SAY 0x10 /* Used in various places that need to dereference a glob or globref */ # define MAYBE_DEREF_GV_flags(sv,phlags) \ @@ -715,8 +715,8 @@ True if this op will be the return value of an lvalue subroutine # define MAYBE_DEREF_GV(sv) MAYBE_DEREF_GV_flags(sv,SV_GMAGIC) # define MAYBE_DEREF_GV_nomg(sv) MAYBE_DEREF_GV_flags(sv,0) -# define FIND_RUNCV_padid_eq 1 -# define FIND_RUNCV_level_eq 2 +# define FIND_RUNCV_padid_eq 1 +# define FIND_RUNCV_level_eq 2 #endif diff --git a/regcomp.h b/regcomp.h index 861adde8935d3..1bc8bc8f810ed 100644 --- a/regcomp.h +++ b/regcomp.h @@ -64,7 +64,7 @@ typedef struct regexp_internal { regnode *regstclass; /* Optional startclass as identified or constructed by the optimiser */ - struct reg_data *data; /* Additional miscellaneous data used by the program. + struct reg_data *data; /* Additional miscellaneous data used by the program. Used to make it easier to clone and free arbitrary data that the regops need. Often the ARG field of a regop is an index into this structure. NOTE the @@ -76,10 +76,10 @@ typedef struct regexp_internal { only valid when RXp_PAREN_NAMES(prog) is true, 0 means "no value" like any other index into the data array.*/ - regnode program[1]; /* Unwarranted chumminess with compiler. */ + regnode program[1]; /* Unwarranted chumminess with compiler. */ } regexp_internal; -#define RXi_SET(x,y) (x)->pprivate = (void*)(y) +#define RXi_SET(x,y) (x)->pprivate = (void*)(y) #define RXi_GET(x) ((regexp_internal *)((x)->pprivate)) #define RXi_GET_DECL(r,ri) regexp_internal *ri = RXi_GET(r) #define RXi_GET_DECL_NULL(r,ri) regexp_internal *ri = (r) ? RXi_GET(r) : NULL @@ -92,12 +92,12 @@ typedef struct regexp_internal { #define RXp_INTFLAGS(rx) ((rx)->intflags) #define RX_INTFLAGS(prog) RXp_INTFLAGS(ReANY(prog)) -#define PREGf_SKIP 0x00000001 -#define PREGf_IMPLICIT 0x00000002 /* Converted .* to ^.* */ -#define PREGf_NAUGHTY 0x00000004 /* how exponential is this pattern? */ -#define PREGf_VERBARG_SEEN 0x00000008 -#define PREGf_CUTGROUP_SEEN 0x00000010 -#define PREGf_USE_RE_EVAL 0x00000020 /* compiled with "use re 'eval'" */ +#define PREGf_SKIP 0x00000001 +#define PREGf_IMPLICIT 0x00000002 /* Converted .* to ^.* */ +#define PREGf_NAUGHTY 0x00000004 /* how exponential is this pattern? */ +#define PREGf_VERBARG_SEEN 0x00000008 +#define PREGf_CUTGROUP_SEEN 0x00000010 +#define PREGf_USE_RE_EVAL 0x00000020 /* compiled with "use re 'eval'" */ /* these used to be extflags, but are now intflags */ #define PREGf_NOSCAN 0x00000040 /* spare */ @@ -154,14 +154,14 @@ typedef struct regexp_internal { */ struct regnode_string { - U8 str_len; + U8 str_len; U8 type; U16 next_off; char string[1]; }; struct regnode_lstring { /* Constructed this way to keep the string aligned. */ - U8 flags; + U8 flags; U8 type; U16 next_off; U32 str_len; /* Only 18 bits allowed before would overflow 'next_off' */ @@ -169,17 +169,17 @@ struct regnode_lstring { /* Constructed this way to keep the string aligned. */ }; struct regnode_anyofhs { /* Constructed this way to keep the string aligned. */ - U8 str_len; + U8 str_len; U8 type; U16 next_off; U32 arg1; /* set by set_ANYOF_arg() */ char string[1]; }; -/* Argument bearing node - workhorse, +/* Argument bearing node - workhorse, arg1 is often for the data field */ struct regnode_1 { - U8 flags; + U8 flags; U8 type; U16 next_off; U32 arg1; @@ -201,7 +201,7 @@ struct regnode_1 { * then use inline functions to copy the data in or out. * */ struct regnode_p { - U8 flags; + U8 flags; U8 type; U16 next_off; char arg1_sv_ptr_bytes[sizeof(SV *)]; @@ -209,7 +209,7 @@ struct regnode_p { /* Similar to a regnode_1 but with an extra signed argument */ struct regnode_2L { - U8 flags; + U8 flags; U8 type; U16 next_off; U32 arg1; @@ -218,7 +218,7 @@ struct regnode_2L { /* 'Two field' -- Two 16 bit unsigned args */ struct regnode_2 { - U8 flags; + U8 flags; U8 type; U16 next_off; U16 arg1; @@ -233,13 +233,13 @@ struct regnode_2 { * The array is a bitmap capable of representing any possible continuation * byte. */ struct regnode_bbm { - U8 first_byte; + U8 first_byte; U8 type; U16 next_off; U8 bitmap[REGNODE_BBM_BITMAP_LEN]; }; -#define ANYOF_BITMAP_SIZE (NUM_ANYOF_CODE_POINTS / CHARBITS) +#define ANYOF_BITMAP_SIZE (NUM_ANYOF_CODE_POINTS / CHARBITS) /* Note that these form structs which are supersets of the next smaller one, by * appending fields. Alignment problems can occur if one of those optional @@ -254,21 +254,21 @@ struct regnode_bbm { /* also used by trie */ struct regnode_charclass { - U8 flags; + U8 flags; U8 type; U16 next_off; U32 arg1; /* set by set_ANYOF_arg() */ - char bitmap[ANYOF_BITMAP_SIZE]; /* only compile-time */ + char bitmap[ANYOF_BITMAP_SIZE]; /* only compile-time */ }; /* has runtime (locale) \d, \w, ..., [:posix:] classes */ struct regnode_charclass_posixl { - U8 flags; /* ANYOF_MATCHES_POSIXL bit must go here */ + U8 flags; /* ANYOF_MATCHES_POSIXL bit must go here */ U8 type; U16 next_off; U32 arg1; - char bitmap[ANYOF_BITMAP_SIZE]; /* both compile-time ... */ - U32 classflags; /* and run-time */ + char bitmap[ANYOF_BITMAP_SIZE]; /* both compile-time ... */ + U32 classflags; /* and run-time */ }; /* A synthetic start class (SSC); is a regnode_charclass_posixl_fold, plus an @@ -285,12 +285,12 @@ struct regnode_charclass_posixl { * never a next node. */ struct regnode_ssc { - U8 flags; /* ANYOF_MATCHES_POSIXL bit must go here */ + U8 flags; /* ANYOF_MATCHES_POSIXL bit must go here */ U8 type; U16 next_off; U32 arg1; - char bitmap[ANYOF_BITMAP_SIZE]; /* both compile-time ... */ - U32 classflags; /* ... and run-time */ + char bitmap[ANYOF_BITMAP_SIZE]; /* both compile-time ... */ + U32 classflags; /* ... and run-time */ /* Auxiliary, only used during construction; NULL afterwards: list of code * points matched */ @@ -376,15 +376,15 @@ struct regnode_ssc { #undef OPERAND #undef STRING -#define OP(p) ((p)->type) -#define FLAGS(p) ((p)->flags) /* Caution: Doesn't apply to all \ +#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 STR_LENs(p) (__ASSERT_(OP(p) != LEXACT && OP(p) != LEXACT_REQ8) \ +#define STR_LENs(p) (__ASSERT_(OP(p) != LEXACT && OP(p) != LEXACT_REQ8) \ ((struct regnode_string *)p)->str_len) -#define STRINGs(p) (__ASSERT_(OP(p) != LEXACT && OP(p) != LEXACT_REQ8) \ +#define STRINGs(p) (__ASSERT_(OP(p) != LEXACT && OP(p) != LEXACT_REQ8) \ ((struct regnode_string *)p)->string) -#define OPERANDs(p) STRINGs(p) +#define OPERANDs(p) STRINGs(p) /* Long strings. Currently limited to length 18 bits, which handles a 262000 * byte string. The limiting factor is the 16 bit 'next_off' field, which @@ -398,21 +398,21 @@ struct regnode_ssc { * node to be an ARG2L, using the second 32 bit field for the length, and not * using the flags nor next_off fields at all. One could have an llstring node * and even an lllstring type. */ -#define STR_LENl(p) (__ASSERT_(OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \ +#define STR_LENl(p) (__ASSERT_(OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \ (((struct regnode_lstring *)p)->str_len)) -#define STRINGl(p) (__ASSERT_(OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \ +#define STRINGl(p) (__ASSERT_(OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \ (((struct regnode_lstring *)p)->string)) -#define OPERANDl(p) STRINGl(p) +#define OPERANDl(p) STRINGl(p) -#define STR_LEN(p) ((OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \ +#define STR_LEN(p) ((OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \ ? STR_LENl(p) : STR_LENs(p)) -#define STRING(p) ((OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \ +#define STRING(p) ((OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \ ? STRINGl(p) : STRINGs(p)) -#define OPERAND(p) STRING(p) +#define OPERAND(p) STRING(p) /* The number of (smallest) regnode equivalents that a string of length l bytes * occupies - Used by the REGNODE_AFTER() macros and functions. */ -#define STR_SZ(l) (((l) + sizeof(regnode) - 1) / sizeof(regnode)) +#define STR_SZ(l) (((l) + sizeof(regnode) - 1) / sizeof(regnode)) #define setSTR_LEN(p,v) \ STMT_START{ \ @@ -429,17 +429,17 @@ struct regnode_ssc { #undef NODE_ALIGN #undef ARG_LOC -#define NODE_ALIGN(node) -#define ARG_LOC(p) (((struct regnode_1 *)p)->arg1) +#define NODE_ALIGN(node) +#define ARG_LOC(p) (((struct regnode_1 *)p)->arg1) #define ARGp_BYTES_LOC(p) (((struct regnode_p *)p)->arg1_sv_ptr_bytes) -#define ARG1_LOC(p) (((struct regnode_2 *)p)->arg1) -#define ARG2_LOC(p) (((struct regnode_2 *)p)->arg2) -#define ARG2L_LOC(p) (((struct regnode_2L *)p)->arg2) +#define ARG1_LOC(p) (((struct regnode_2 *)p)->arg1) +#define ARG2_LOC(p) (((struct regnode_2 *)p)->arg2) +#define ARG2L_LOC(p) (((struct regnode_2L *)p)->arg2) /* These should no longer be used directly in most cases. Please use * the REGNODE_AFTER() macros instead. */ -#define NODE_STEP_REGNODE 1 /* sizeof(regnode)/sizeof(regnode) */ -#define EXTRA_STEP_2ARGS EXTRA_SIZE(struct regnode_2) +#define NODE_STEP_REGNODE 1 /* sizeof(regnode)/sizeof(regnode) */ +#define EXTRA_STEP_2ARGS EXTRA_SIZE(struct regnode_2) /* Core macros for computing "the regnode after this one". See also * Perl_regnode_after() in reginline.h @@ -732,7 +732,7 @@ ARGp_SET_inline(struct regnode *node, SV *ptr) { /* If this is set, the result of the match should be complemented. regexec.c * is expecting this to be in the low bit. Never in an SSC */ -#define ANYOF_INVERT 0x01 +#define ANYOF_INVERT 0x01 /* For the SSC node only, which cannot be inverted, so is shared with that bit. * This is used only during regex compilation. */ @@ -796,7 +796,7 @@ ARGp_SET_inline(struct regnode *node, SV *ptr) { #define ANYOFD_NON_UTF8_MATCHES_ALL_NON_ASCII__shared 0x80 #define ANYOF_WARN_SUPER__shared 0x80 -#define ANYOF_FLAGS_ALL ((U8) ~(0x10|0x20)) +#define ANYOF_FLAGS_ALL ((U8) ~(0x10|0x20)) #define ANYOF_LOCALE_FLAGS ( ANYOFL_FOLD \ | ANYOF_MATCHES_POSIXL \ @@ -865,44 +865,44 @@ ARGp_SET_inline(struct regnode *node, SV *ptr) { # error Problem with handy.h CC_foo_ #defines #endif -#define ANYOF_HORIZWS ((ANYOF_POSIXL_MAX)+2) /* = (ANYOF_NVERTWS + 1) */ -#define ANYOF_NHORIZWS ((ANYOF_POSIXL_MAX)+3) +#define ANYOF_HORIZWS ((ANYOF_POSIXL_MAX)+2) /* = (ANYOF_NVERTWS + 1) */ +#define ANYOF_NHORIZWS ((ANYOF_POSIXL_MAX)+3) #define ANYOF_UNIPROP ((ANYOF_POSIXL_MAX)+4) /* Used to indicate a Unicode property: \p{} or \P{} */ /* Backward source code compatibility. */ -#define ANYOF_ALNUML ANYOF_ALNUM -#define ANYOF_NALNUML ANYOF_NALNUM -#define ANYOF_SPACEL ANYOF_SPACE -#define ANYOF_NSPACEL ANYOF_NSPACE +#define ANYOF_ALNUML ANYOF_ALNUM +#define ANYOF_NALNUML ANYOF_NALNUM +#define ANYOF_SPACEL ANYOF_SPACE +#define ANYOF_NSPACEL ANYOF_NSPACE #define ANYOF_ALNUM ANYOF_WORDCHAR #define ANYOF_NALNUM ANYOF_NWORDCHAR /* Utility macros for the bitmap and classes of ANYOF */ -#define BITMAP_BYTE(p, c) (( (U8*) (p)) [ ( ( (UV) (c)) >> 3) ] ) -#define BITMAP_BIT(c) (1U << ((c) & 7)) -#define BITMAP_TEST(p, c) (BITMAP_BYTE(p, c) & BITMAP_BIT((U8)(c))) +#define BITMAP_BYTE(p, c) (( (U8*) (p)) [ ( ( (UV) (c)) >> 3) ] ) +#define BITMAP_BIT(c) (1U << ((c) & 7)) +#define BITMAP_TEST(p, c) (BITMAP_BYTE(p, c) & BITMAP_BIT((U8)(c))) -#define ANYOF_FLAGS(p) ((p)->flags) +#define ANYOF_FLAGS(p) ((p)->flags) -#define ANYOF_BIT(c) BITMAP_BIT(c) +#define ANYOF_BIT(c) BITMAP_BIT(c) #define ANYOF_POSIXL_BITMAP(p) (((regnode_charclass_posixl*) (p))->classflags) -#define POSIXL_SET(field, c) ((field) |= (1U << (c))) -#define ANYOF_POSIXL_SET(p, c) POSIXL_SET(ANYOF_POSIXL_BITMAP(p), (c)) +#define POSIXL_SET(field, c) ((field) |= (1U << (c))) +#define ANYOF_POSIXL_SET(p, c) POSIXL_SET(ANYOF_POSIXL_BITMAP(p), (c)) #define POSIXL_CLEAR(field, c) ((field) &= ~ (1U <<(c))) #define ANYOF_POSIXL_CLEAR(p, c) POSIXL_CLEAR(ANYOF_POSIXL_BITMAP(p), (c)) -#define POSIXL_TEST(field, c) ((field) & (1U << (c))) -#define ANYOF_POSIXL_TEST(p, c) POSIXL_TEST(ANYOF_POSIXL_BITMAP(p), (c)) +#define POSIXL_TEST(field, c) ((field) & (1U << (c))) +#define ANYOF_POSIXL_TEST(p, c) POSIXL_TEST(ANYOF_POSIXL_BITMAP(p), (c)) -#define POSIXL_ZERO(field) STMT_START { (field) = 0; } STMT_END -#define ANYOF_POSIXL_ZERO(ret) POSIXL_ZERO(ANYOF_POSIXL_BITMAP(ret)) +#define POSIXL_ZERO(field) STMT_START { (field) = 0; } STMT_END +#define ANYOF_POSIXL_ZERO(ret) POSIXL_ZERO(ANYOF_POSIXL_BITMAP(ret)) #define ANYOF_POSIXL_SET_TO_BITMAP(p, bits) \ STMT_START { ANYOF_POSIXL_BITMAP(p) = (bits); } STMT_END @@ -930,30 +930,30 @@ ARGp_SET_inline(struct regnode *node, SV *ptr) { ((ANYOF_FLAGS(p) & ANYOF_MATCHES_POSIXL) \ && ANYOF_POSIXL_BITMAP(p) == nBIT_MASK(ANYOF_POSIXL_MAX)) -#define ANYOF_POSIXL_OR(source, dest) STMT_START { (dest)->classflags |= (source)->classflags ; } STMT_END +#define ANYOF_POSIXL_OR(source, dest) STMT_START { (dest)->classflags |= (source)->classflags; } STMT_END #define ANYOF_CLASS_OR(source, dest) ANYOF_POSIXL_OR((source), (dest)) -#define ANYOF_POSIXL_AND(source, dest) STMT_START { (dest)->classflags &= (source)->classflags ; } STMT_END +#define ANYOF_POSIXL_AND(source, dest) STMT_START { (dest)->classflags &= (source)->classflags; } STMT_END -#define ANYOF_BITMAP_ZERO(ret) Zero(((regnode_charclass*)(ret))->bitmap, ANYOF_BITMAP_SIZE, char) -#define ANYOF_BITMAP(p) ((regnode_charclass*)(p))->bitmap -#define ANYOF_BITMAP_BYTE(p, c) BITMAP_BYTE(ANYOF_BITMAP(p), c) -#define ANYOF_BITMAP_SET(p, c) (ANYOF_BITMAP_BYTE(p, c) |= ANYOF_BIT(c)) -#define ANYOF_BITMAP_CLEAR(p,c) (ANYOF_BITMAP_BYTE(p, c) &= ~ANYOF_BIT(c)) -#define ANYOF_BITMAP_TEST(p, c) cBOOL(ANYOF_BITMAP_BYTE(p, c) & ANYOF_BIT(c)) +#define ANYOF_BITMAP_ZERO(ret) Zero(((regnode_charclass*)(ret))->bitmap, ANYOF_BITMAP_SIZE, char) +#define ANYOF_BITMAP(p) ((regnode_charclass*)(p))->bitmap +#define ANYOF_BITMAP_BYTE(p, c) BITMAP_BYTE(ANYOF_BITMAP(p), c) +#define ANYOF_BITMAP_SET(p, c) (ANYOF_BITMAP_BYTE(p, c) |= ANYOF_BIT(c)) +#define ANYOF_BITMAP_CLEAR(p,c) (ANYOF_BITMAP_BYTE(p, c) &= ~ANYOF_BIT(c)) +#define ANYOF_BITMAP_TEST(p, c) cBOOL(ANYOF_BITMAP_BYTE(p, c) & ANYOF_BIT(c)) -#define ANYOF_BITMAP_SETALL(p) \ +#define ANYOF_BITMAP_SETALL(p) \ memset (ANYOF_BITMAP(p), 255, ANYOF_BITMAP_SIZE) -#define ANYOF_BITMAP_CLEARALL(p) \ +#define ANYOF_BITMAP_CLEARALL(p) \ Zero (ANYOF_BITMAP(p), ANYOF_BITMAP_SIZE) /* * Utility definitions. */ #ifndef CHARMASK -# define UCHARAT(p) ((int)*(const U8*)(p)) +# define UCHARAT(p) ((int)*(const U8*)(p)) #else -# define UCHARAT(p) ((int)*(p)&CHARMASK) +# define UCHARAT(p) ((int)*(p)&CHARMASK) #endif /* Number of regnode equivalents that 'guy' occupies beyond the size of the @@ -988,11 +988,11 @@ START_EXTERN_C #ifndef DOINIT EXTCONST regexp_engine PL_core_reg_engine; #else /* DOINIT */ -EXTCONST regexp_engine PL_core_reg_engine = { +EXTCONST regexp_engine PL_core_reg_engine = { Perl_re_compile, Perl_regexec_flags, Perl_re_intuit_start, - Perl_re_intuit_string, + Perl_re_intuit_string, Perl_regfree_internal, Perl_reg_numbered_buff_fetch, Perl_reg_numbered_buff_store, @@ -1000,9 +1000,9 @@ EXTCONST regexp_engine PL_core_reg_engine = { Perl_reg_named_buff, Perl_reg_named_buff_iter, Perl_reg_qr_package, -#if defined(USE_ITHREADS) +#if defined(USE_ITHREADS) Perl_regdupe_internal, -#endif +#endif Perl_re_op_compile }; #endif /* DOINIT */ @@ -1055,10 +1055,10 @@ struct reg_data { #define check_offset_max substrs->data[2].max_offset #define check_end_shift substrs->data[2].end_shift -#define RX_ANCHORED_SUBSTR(rx) (ReANY(rx)->anchored_substr) -#define RX_ANCHORED_UTF8(rx) (ReANY(rx)->anchored_utf8) -#define RX_FLOAT_SUBSTR(rx) (ReANY(rx)->float_substr) -#define RX_FLOAT_UTF8(rx) (ReANY(rx)->float_utf8) +#define RX_ANCHORED_SUBSTR(rx) (ReANY(rx)->anchored_substr) +#define RX_ANCHORED_UTF8(rx) (ReANY(rx)->anchored_utf8) +#define RX_FLOAT_SUBSTR(rx) (ReANY(rx)->float_substr) +#define RX_FLOAT_UTF8(rx) (ReANY(rx)->float_utf8) /* trie related stuff */ @@ -1096,12 +1096,12 @@ struct _reg_trie_state { /* info per word; indexed by wordnum */ typedef struct { - U16 prev; /* previous word in acceptance chain; eg in + 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 */ + U32 len; /* how many chars long is this word? */ + U32 accept; /* accept state for this word */ } reg_trie_wordinfo; @@ -1120,7 +1120,7 @@ struct _reg_trie_data { reg_trie_state *states; /* state data */ reg_trie_trans *trans; /* array of transition elements */ char *bitmap; /* stclass bitmap */ - U16 *jump; /* optional 1 indexed array of offsets before tail + U16 *jump; /* optional 1 indexed array of offsets before tail for the node following a given word. */ reg_trie_wordinfo *wordinfo; /* array of info per word */ U16 uniquecharcount; /* unique chars in trie (width of trans table) */ @@ -1128,7 +1128,7 @@ struct _reg_trie_data { 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 + U32 statecount; /* Build only - number of states in the states array (including the unused zero state) */ U32 wordcount; /* Build only */ #ifdef DEBUGGING @@ -1163,11 +1163,11 @@ typedef struct _reg_ac_data reg_ac_data; This is simpler than refactoring all of it as wed end up with three different sets... */ -#define TRIE_BITMAP(p) (((reg_trie_data *)(p))->bitmap) -#define TRIE_BITMAP_BYTE(p, c) BITMAP_BYTE(TRIE_BITMAP(p), c) -#define TRIE_BITMAP_SET(p, c) (TRIE_BITMAP_BYTE(p, c) |= ANYOF_BIT((U8)c)) -#define TRIE_BITMAP_CLEAR(p,c) (TRIE_BITMAP_BYTE(p, c) &= ~ANYOF_BIT((U8)c)) -#define TRIE_BITMAP_TEST(p, c) (TRIE_BITMAP_BYTE(p, c) & ANYOF_BIT((U8)c)) +#define TRIE_BITMAP(p) (((reg_trie_data *)(p))->bitmap) +#define TRIE_BITMAP_BYTE(p, c) BITMAP_BYTE(TRIE_BITMAP(p), c) +#define TRIE_BITMAP_SET(p, c) (TRIE_BITMAP_BYTE(p, c) |= ANYOF_BIT((U8)c)) +#define TRIE_BITMAP_CLEAR(p,c) (TRIE_BITMAP_BYTE(p, c) &= ~ANYOF_BIT((U8)c)) +#define TRIE_BITMAP_TEST(p, c) (TRIE_BITMAP_BYTE(p, c) & ANYOF_BIT((U8)c)) #define IS_ANYOF_TRIE(op) ((op)==TRIEC || (op)==AHOCORASICKC) #define IS_TRIE_AC(op) ((op)>=AHOCORASICK) @@ -1198,7 +1198,7 @@ The three groups are: Compile, Execute, Extra. There is room for a further group, as currently only the low three bytes are used. Compile Options: - + PARSE PEEP TRIE @@ -1360,7 +1360,7 @@ re.pm, especially to the documentation. #define RE_SV_DUMPLEN(ItEm) (SvCUR(ItEm) - (SvTAIL(ItEm)!=0)) #define RE_SV_TAIL(ItEm) (SvTAIL(ItEm) ? "$" : "") - + #else /* if not DEBUGGING */ #define DECLARE_AND_GET_RE_DEBUG_FLAGS dNOOP diff --git a/regexp.h b/regexp.h index efaa55bb962d7..1a0828ae8cab2 100644 --- a/regexp.h +++ b/regexp.h @@ -30,7 +30,7 @@ struct regnode_meta { }; struct regnode { - U8 flags; + U8 flags; U8 type; U16 next_off; }; @@ -47,13 +47,13 @@ struct regexp; struct reg_substr_datum { SSize_t min_offset; /* min pos (in chars) that substr must appear */ SSize_t max_offset; /* max pos (in chars) that substr must appear */ - SV *substr; /* non-utf8 variant */ - SV *utf8_substr; /* utf8 variant */ + SV *substr; /* non-utf8 variant */ + SV *utf8_substr; /* utf8 variant */ SSize_t end_shift; /* how many fixed chars must end the string */ }; struct reg_substr_data { U8 check_ix; /* index into data[] of check substr */ - struct reg_substr_datum data[3]; /* Actual array */ + struct reg_substr_datum data[3]; /* Actual array */ }; # ifdef PERL_ANY_COW @@ -70,7 +70,7 @@ typedef struct regexp_paren_pair { /* 'start_tmp' records a new opening position before the matching end * has been found, so that the old start and end values are still * valid, e.g. - * "abc" =~ /(.(?{print "[$1]"}))+/ + * "abc" =~ /(.(?{print "[$1]"}))+/ *outputs [][a][b] * This field is not part of the API. */ SSize_t start_tmp; @@ -174,13 +174,13 @@ typedef struct regexp { } regexp; -# define RXp_PAREN_NAMES(rx) ((rx)->paren_names) +# define RXp_PAREN_NAMES(rx) ((rx)->paren_names) /* used for high speed searches */ typedef struct re_scream_pos_data_s { - char **scream_olds; /* match pos */ - SSize_t *scream_pos; /* Internal iterator of scream. */ + char **scream_olds; /* match pos */ + SSize_t *scream_pos; /* Internal iterator of scream. */ } re_scream_pos_data; /* regexp_engine structure. This is the dispatch table for regexes. @@ -302,7 +302,7 @@ and check for NULL. # include "op_reg_common.h" -# define RXf_PMf_STD_PMMOD (RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_FOLD|RXf_PMf_EXTENDED|RXf_PMf_EXTENDED_MORE|RXf_PMf_NOCAPTURE) +# define RXf_PMf_STD_PMMOD (RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_FOLD|RXf_PMf_EXTENDED|RXf_PMf_EXTENDED_MORE|RXf_PMf_NOCAPTURE) # define CASE_STD_PMMOD_FLAGS_PARSE_SET(pmfl, x_count) \ case IGNORE_PAT_MOD: *(pmfl) |= RXf_PMf_FOLD; break; \ @@ -372,7 +372,7 @@ and check for NULL. # define INT_PAT_MODS STD_PAT_MODS KEEPCOPY_PAT_MODS # define EXT_PAT_MODS ONCE_PAT_MODS KEEPCOPY_PAT_MODS NOCAPTURE_PAT_MODS -# define QR_PAT_MODS STD_PAT_MODS EXT_PAT_MODS CHARSET_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 NONDESTRUCT_PAT_MODS @@ -425,38 +425,38 @@ and check for NULL. /* What we have seen */ # define RXf_NO_INPLACE_SUBST (1U<<(RXf_BASE_SHIFT+2)) -# define RXf_EVAL_SEEN (1U<<(RXf_BASE_SHIFT+3)) +# define RXf_EVAL_SEEN (1U<<(RXf_BASE_SHIFT+3)) /* Special */ # define RXf_UNBOUNDED_QUANTIFIER_SEEN (1U<<(RXf_BASE_SHIFT+4)) -# define RXf_CHECK_ALL (1U<<(RXf_BASE_SHIFT+5)) +# define RXf_CHECK_ALL (1U<<(RXf_BASE_SHIFT+5)) /* UTF8 related */ -# define RXf_MATCH_UTF8 (1U<<(RXf_BASE_SHIFT+6)) /* $1 etc are utf8 */ +# define RXf_MATCH_UTF8 (1U<<(RXf_BASE_SHIFT+6)) /* $1 etc are utf8 */ /* Intuit related */ -# define RXf_USE_INTUIT_NOML (1U<<(RXf_BASE_SHIFT+7)) -# define RXf_USE_INTUIT_ML (1U<<(RXf_BASE_SHIFT+8)) -# define RXf_INTUIT_TAIL (1U<<(RXf_BASE_SHIFT+9)) +# define RXf_USE_INTUIT_NOML (1U<<(RXf_BASE_SHIFT+7)) +# define RXf_USE_INTUIT_ML (1U<<(RXf_BASE_SHIFT+8)) +# define RXf_INTUIT_TAIL (1U<<(RXf_BASE_SHIFT+9)) # define RXf_USE_INTUIT (RXf_USE_INTUIT_NOML|RXf_USE_INTUIT_ML) /* Do we have some sort of anchor? */ # define RXf_IS_ANCHORED (1U<<(RXf_BASE_SHIFT+10)) /* Copy and tainted info */ -# define RXf_COPY_DONE (1U<<(RXf_BASE_SHIFT+11)) +# define RXf_COPY_DONE (1U<<(RXf_BASE_SHIFT+11)) /* post-execution: $1 et al are tainted */ -# define RXf_TAINTED_SEEN (1U<<(RXf_BASE_SHIFT+12)) +# define RXf_TAINTED_SEEN (1U<<(RXf_BASE_SHIFT+12)) /* this pattern was tainted during compilation */ -# define RXf_TAINTED (1U<<(RXf_BASE_SHIFT+13)) +# define RXf_TAINTED (1U<<(RXf_BASE_SHIFT+13)) /* Flags indicating special patterns */ # define RXf_START_ONLY (1U<<(RXf_BASE_SHIFT+14)) /* Pattern is /^/ */ # define RXf_SKIPWHITE (1U<<(RXf_BASE_SHIFT+15)) /* Pattern is for a */ /* split " " */ -# define RXf_WHITE (1U<<(RXf_BASE_SHIFT+16)) /* Pattern is /\s+/ */ -# define RXf_NULL (1U<<(RXf_BASE_SHIFT+17)) /* Pattern is // */ +# define RXf_WHITE (1U<<(RXf_BASE_SHIFT+16)) /* Pattern is /\s+/ */ +# define RXf_NULL (1U<<(RXf_BASE_SHIFT+17)) /* Pattern is // */ /* See comments at the beginning of these defines about adding bits. The * highest bit position should be used, so that if RXf_BASE_SHIFT gets @@ -619,35 +619,35 @@ and check for NULL. on second iteration */ #if defined(PERL_USE_GCC_BRACE_GROUPS) -# define ReREFCNT_inc(re) \ - ({ \ - /* This is here to generate a casting warning if incorrect. */ \ - REGEXP *const _rerefcnt_inc = (re); \ - assert(SvTYPE(_rerefcnt_inc) == SVt_REGEXP); \ - SvREFCNT_inc(_rerefcnt_inc); \ - _rerefcnt_inc; \ +# define ReREFCNT_inc(re) \ + ({ \ + /* This is here to generate a casting warning if incorrect. */ \ + REGEXP *const _rerefcnt_inc = (re); \ + assert(SvTYPE(_rerefcnt_inc) == SVt_REGEXP); \ + SvREFCNT_inc(_rerefcnt_inc); \ + _rerefcnt_inc; \ }) -# define ReREFCNT_dec(re) \ - ({ \ - /* This is here to generate a casting warning if incorrect. */ \ - REGEXP *const _rerefcnt_dec = (re); \ - SvREFCNT_dec(_rerefcnt_dec); \ +# define ReREFCNT_dec(re) \ + ({ \ + /* This is here to generate a casting warning if incorrect. */ \ + REGEXP *const _rerefcnt_dec = (re); \ + SvREFCNT_dec(_rerefcnt_dec); \ }) #else -# define ReREFCNT_dec(re) SvREFCNT_dec(re) -# define ReREFCNT_inc(re) ((REGEXP *) SvREFCNT_inc(re)) +# define ReREFCNT_dec(re) SvREFCNT_dec(re) +# define ReREFCNT_inc(re) ((REGEXP *) SvREFCNT_inc(re)) #endif -#define ReANY(re) Perl_ReANY((const REGEXP *)(re)) +#define ReANY(re) Perl_ReANY((const REGEXP *)(re)) /* FIXME for plugins. */ -#define FBMcf_TAIL_DOLLAR 1 -#define FBMcf_TAIL_DOLLARM 2 -#define FBMcf_TAIL_Z 4 -#define FBMcf_TAIL_z 8 -#define FBMcf_TAIL (FBMcf_TAIL_DOLLAR|FBMcf_TAIL_DOLLARM|FBMcf_TAIL_Z|FBMcf_TAIL_z) +#define FBMcf_TAIL_DOLLAR 1 +#define FBMcf_TAIL_DOLLARM 2 +#define FBMcf_TAIL_Z 4 +#define FBMcf_TAIL_z 8 +#define FBMcf_TAIL (FBMcf_TAIL_DOLLAR|FBMcf_TAIL_DOLLARM|FBMcf_TAIL_Z|FBMcf_TAIL_z) -#define FBMrf_MULTILINE 1 +#define FBMrf_MULTILINE 1 struct regmatch_state; struct regmatch_slab; @@ -681,7 +681,7 @@ typedef struct { regmatch_info_aux_eval *info_aux_eval; struct regmatch_state *old_regmatch_state; /* saved PL_regmatch_state */ struct regmatch_slab *old_regmatch_slab; /* saved PL_regmatch_slab */ - char *poscache; /* S-L cache of fail positions of WHILEMs */ + char *poscache; /* S-L cache of fail positions of WHILEMs */ } regmatch_info_aux; @@ -753,8 +753,8 @@ struct next_matchable_info { typedef I32 CHECKPOINT; typedef struct regmatch_state { - int resume_state; /* where to jump to on return */ - char *locinput; /* where to backtrack in string on failure */ + int resume_state; /* where to jump to on return */ + char *locinput; /* where to backtrack in string on failure */ char *loceol; U8 *sr0; /* position of start of script run, or NULL */ @@ -819,14 +819,14 @@ typedef struct regmatch_state { U32 lastcloseparen; CHECKPOINT cp; - U32 accepted; /* how many accepting states left */ - bool longfold;/* saw a fold with a 1->n char mapping */ + U32 accepted; /* how many accepting states left */ + bool longfold;/* saw a fold with a 1->n char mapping */ U16 *jump; /* positive offsets from me */ - 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 */ + 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 */ } trie; /* special types - these members are used to store state for special @@ -836,11 +836,11 @@ typedef struct regmatch_state { struct regmatch_state *prev_yes_state; struct regmatch_state *prev_curlyx; struct regmatch_state *prev_eval; - REGEXP *prev_rex; - CHECKPOINT cp; /* remember current savestack indexes */ - CHECKPOINT lastcp; + REGEXP *prev_rex; + CHECKPOINT cp; /* remember current savestack indexes */ + CHECKPOINT lastcp; U32 close_paren; /* which close bracket is our end (+1) */ - regnode *B; /* the node following us */ + regnode *B; /* the node following us */ char *prev_recurse_locinput; } eval; @@ -848,7 +848,7 @@ typedef struct regmatch_state { /* this first element must match u.yes */ struct regmatch_state *prev_yes_state; I32 wanted; - I32 logical; /* saved copy of 'logical' var */ + I32 logical; /* saved copy of 'logical' var */ U8 count; /* number of beginning positions */ char *start; char *end; @@ -874,26 +874,26 @@ 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 *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 */ + 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 */ /* these two are modified by WHILEM */ - int count; /* how many instances of A we've matched */ - char *lastloc;/* where previous A matched (0-len detect) */ + int count; /* how many instances of A we've matched */ + char *lastloc;/* where previous A matched (0-len detect) */ } curlyx; struct { /* this first element must match u.yes */ struct regmatch_state *prev_yes_state; struct regmatch_state *save_curlyx; - CHECKPOINT cp; /* remember current savestack indexes */ - CHECKPOINT lastcp; - char *save_lastloc; /* previous curlyx.lastloc */ - I32 cache_offset; - I32 cache_mask; + CHECKPOINT cp; /* remember current savestack indexes */ + CHECKPOINT lastcp; + char *save_lastloc; /* previous curlyx.lastloc */ + I32 cache_offset; + I32 cache_mask; } whilem; struct { @@ -902,11 +902,11 @@ typedef struct regmatch_state { CHECKPOINT cp; U32 lastparen; U32 lastcloseparen; - I32 alen; /* length of first-matched A string */ + I32 alen; /* length of first-matched A string */ I32 count; bool minmod; - regnode *A, *B; /* the nodes corresponding to /A*B/ */ - regnode *me; /* the curlym node */ + regnode *A, *B; /* the nodes corresponding to /A*B/ */ + regnode *me; /* the curlym node */ struct next_matchable_info Binfo; } curlym; @@ -915,11 +915,11 @@ typedef struct regmatch_state { CHECKPOINT cp; U32 lastparen; U32 lastcloseparen; - char *maxpos; /* highest possible point in string to match */ - char *oldloc; /* the previous locinput */ + char *maxpos; /* highest possible point in string to match */ + char *oldloc; /* the previous locinput */ int count; - int min, max; /* {m,n} */ - regnode *A, *B; /* the nodes corresponding to /A*B/ */ + int min, max; /* {m,n} */ + regnode *A, *B; /* the nodes corresponding to /A*B/ */ struct next_matchable_info Binfo; } curly; /* and CURLYN/PLUS/STAR */ diff --git a/sbox32_hash.h b/sbox32_hash.h index 04078ae809421..9bb1a1d1e0dbb 100644 --- a/sbox32_hash.h +++ b/sbox32_hash.h @@ -28,7 +28,7 @@ #endif #ifndef PERL_SEEN_HV_FUNC_H_ -#if !defined(U32) +#if !defined(U32) #include #define U32 uint32_t #endif @@ -1396,7 +1396,7 @@ r = w = ( w ^ ( w >> 29 ) ) ^ ( t ^ ( t >> 12 ) ); \ } STMT_END -#ifndef SBOX32_CHURN_ROUNDS +#ifndef SBOX32_CHURN_ROUNDS #define SBOX32_CHURN_ROUNDS 128 #endif @@ -1440,13 +1440,13 @@ SBOX32_STATIC_INLINE void sbox32_seed_state128 ( if (!s1) s1 = 4; if (!s2) s2 = 2; if (!s3) s3 = 1; - + for ( i = 0; i < SBOX32_CHURN_ROUNDS; i++ ) SBOX32_MIX4(s0,s1,s2,s3,"SEED STATE"); while ( state_cursor < sbox32_end ) { - U32 *row_end = state_cursor + 256; - for ( ; state_cursor < row_end; state_cursor++ ) { + U32 *row_end = state_cursor + 256; + for (; state_cursor < row_end; state_cursor++ ) { XORSHIFT128_set(*state_cursor,s0,s1,s2,s3,t1); } } diff --git a/scope.h b/scope.h index afdaf751891a3..ab97a23d6339a 100644 --- a/scope.h +++ b/scope.h @@ -12,81 +12,81 @@ /* zero args */ -#define SAVEt_ALLOC 0 -#define SAVEt_CLEARPADRANGE 1 -#define SAVEt_CLEARSV 2 -#define SAVEt_REGCONTEXT 3 +#define SAVEt_ALLOC 0 +#define SAVEt_CLEARPADRANGE 1 +#define SAVEt_CLEARSV 2 +#define SAVEt_REGCONTEXT 3 /* one arg */ -#define SAVEt_TMPSFLOOR 4 -#define SAVEt_BOOL 5 -#define SAVEt_COMPILE_WARNINGS 6 -#define SAVEt_COMPPAD 7 -#define SAVEt_FREECOPHH 8 -#define SAVEt_FREEOP 9 -#define SAVEt_FREEPV 10 -#define SAVEt_FREESV 11 -#define SAVEt_I16 12 -#define SAVEt_I32_SMALL 13 -#define SAVEt_I8 14 -#define SAVEt_INT_SMALL 15 -#define SAVEt_MORTALIZESV 16 -#define SAVEt_NSTAB 17 -#define SAVEt_OP 18 -#define SAVEt_PARSER 19 -#define SAVEt_STACK_POS 20 -#define SAVEt_READONLY_OFF 21 -#define SAVEt_FREEPADNAME 22 +#define SAVEt_TMPSFLOOR 4 +#define SAVEt_BOOL 5 +#define SAVEt_COMPILE_WARNINGS 6 +#define SAVEt_COMPPAD 7 +#define SAVEt_FREECOPHH 8 +#define SAVEt_FREEOP 9 +#define SAVEt_FREEPV 10 +#define SAVEt_FREESV 11 +#define SAVEt_I16 12 +#define SAVEt_I32_SMALL 13 +#define SAVEt_I8 14 +#define SAVEt_INT_SMALL 15 +#define SAVEt_MORTALIZESV 16 +#define SAVEt_NSTAB 17 +#define SAVEt_OP 18 +#define SAVEt_PARSER 19 +#define SAVEt_STACK_POS 20 +#define SAVEt_READONLY_OFF 21 +#define SAVEt_FREEPADNAME 22 #define SAVEt_STRLEN_SMALL 23 /* two args */ -#define SAVEt_AV 24 -#define SAVEt_DESTRUCTOR 25 -#define SAVEt_DESTRUCTOR_X 26 -#define SAVEt_GENERIC_PVREF 27 -#define SAVEt_GENERIC_SVREF 28 -#define SAVEt_GP 29 -#define SAVEt_GVSV 30 -#define SAVEt_HINTS 31 -#define SAVEt_HPTR 32 -#define SAVEt_HV 33 -#define SAVEt_I32 34 -#define SAVEt_INT 35 -#define SAVEt_ITEM 36 -#define SAVEt_IV 37 -#define SAVEt_LONG 38 -#define SAVEt_PPTR 39 -#define SAVEt_SAVESWITCHSTACK 40 -#define SAVEt_SHARED_PVREF 41 -#define SAVEt_SPTR 42 -#define SAVEt_STRLEN 43 -#define SAVEt_SV 44 -#define SAVEt_SVREF 45 -#define SAVEt_VPTR 46 -#define SAVEt_ADELETE 47 -#define SAVEt_APTR 48 +#define SAVEt_AV 24 +#define SAVEt_DESTRUCTOR 25 +#define SAVEt_DESTRUCTOR_X 26 +#define SAVEt_GENERIC_PVREF 27 +#define SAVEt_GENERIC_SVREF 28 +#define SAVEt_GP 29 +#define SAVEt_GVSV 30 +#define SAVEt_HINTS 31 +#define SAVEt_HPTR 32 +#define SAVEt_HV 33 +#define SAVEt_I32 34 +#define SAVEt_INT 35 +#define SAVEt_ITEM 36 +#define SAVEt_IV 37 +#define SAVEt_LONG 38 +#define SAVEt_PPTR 39 +#define SAVEt_SAVESWITCHSTACK 40 +#define SAVEt_SHARED_PVREF 41 +#define SAVEt_SPTR 42 +#define SAVEt_STRLEN 43 +#define SAVEt_SV 44 +#define SAVEt_SVREF 45 +#define SAVEt_VPTR 46 +#define SAVEt_ADELETE 47 +#define SAVEt_APTR 48 /* three args */ -#define SAVEt_HELEM 49 +#define SAVEt_HELEM 49 #define SAVEt_PADSV_AND_MORTALIZE 50 -#define SAVEt_SET_SVFLAGS 51 -#define SAVEt_GVSLOT 52 -#define SAVEt_AELEM 53 -#define SAVEt_DELETE 54 -#define SAVEt_HINTS_HH 55 +#define SAVEt_SET_SVFLAGS 51 +#define SAVEt_GVSLOT 52 +#define SAVEt_AELEM 53 +#define SAVEt_DELETE 54 +#define SAVEt_HINTS_HH 55 -#define SAVEf_SETMAGIC 1 -#define SAVEf_KEEPOLDELEM 2 +#define SAVEf_SETMAGIC 1 +#define SAVEf_KEEPOLDELEM 2 -#define SAVE_TIGHT_SHIFT 6 -#define SAVE_MASK 0x3F +#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) +#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) #ifndef SCOPE_SAVES_SIGNAL_MASK #define SCOPE_SAVES_SIGNAL_MASK 0 @@ -187,34 +187,34 @@ scope has the given name. C must be a literal string. #define FREETMPS if (PL_tmps_ix > PL_tmps_floor) free_tmps() #ifdef DEBUGGING -#define ENTER \ - STMT_START { \ - push_scope(); \ - DEBUG_SCOPE("ENTER") \ +#define ENTER \ + STMT_START { \ + push_scope(); \ + DEBUG_SCOPE("ENTER") \ } STMT_END -#define LEAVE \ - STMT_START { \ - DEBUG_SCOPE("LEAVE") \ - pop_scope(); \ +#define LEAVE \ + STMT_START { \ + DEBUG_SCOPE("LEAVE") \ + pop_scope(); \ } STMT_END -#define ENTER_with_name(name) \ - STMT_START { \ - push_scope(); \ - if (PL_scopestack_name) \ +#define ENTER_with_name(name) \ + STMT_START { \ + push_scope(); \ + if (PL_scopestack_name) \ PL_scopestack_name[PL_scopestack_ix-1] = ASSERT_IS_LITERAL(name);\ - DEBUG_SCOPE("ENTER \"" name "\"") \ + DEBUG_SCOPE("ENTER \"" name "\"") \ } STMT_END -#define LEAVE_with_name(name) \ - STMT_START { \ - DEBUG_SCOPE("LEAVE \"" name "\"") \ - if (PL_scopestack_name) { \ - CLANG_DIAG_IGNORE_STMT(-Wstring-compare); \ - assert(((char*)PL_scopestack_name[PL_scopestack_ix-1] \ +#define LEAVE_with_name(name) \ + STMT_START { \ + DEBUG_SCOPE("LEAVE \"" name "\"") \ + if (PL_scopestack_name) { \ + CLANG_DIAG_IGNORE_STMT(-Wstring-compare); \ + assert(((char*)PL_scopestack_name[PL_scopestack_ix-1] \ == (char*)ASSERT_IS_LITERAL(name)) \ || strEQ(PL_scopestack_name[PL_scopestack_ix-1], name)); \ - CLANG_DIAG_RESTORE_STMT; \ - } \ - pop_scope(); \ + CLANG_DIAG_RESTORE_STMT; \ + } \ + pop_scope(); \ } STMT_END #else #define ENTER push_scope() @@ -263,24 +263,24 @@ scope has the given name. C must be a literal string. save_destructor_x((DESTRUCTORFUNC_t)(f), (void*)(p)) #define SAVESTACK_POS() \ - STMT_START { \ + STMT_START { \ dSS_ADD; \ SS_ADD_INT(PL_stack_sp - PL_stack_base); \ SS_ADD_UV(SAVEt_STACK_POS); \ SS_ADD_END(2); \ } STMT_END -#define SAVEOP() save_op() +#define SAVEOP() save_op() -#define SAVEHINTS() save_hints() +#define SAVEHINTS() save_hints() #define SAVECOMPPAD() save_pushptr(MUTABLE_SV(PL_comppad), SAVEt_COMPPAD) #define SAVESWITCHSTACK(f,t) \ - STMT_START { \ + STMT_START { \ save_pushptrptr(MUTABLE_SV(f), MUTABLE_SV(t), SAVEt_SAVESWITCHSTACK); \ - SWITCHSTACK((f),(t)); \ - PL_curstackinfo->si_stack = (t); \ + SWITCHSTACK((f),(t)); \ + PL_curstackinfo->si_stack = (t); \ } STMT_END /* Need to do the cop warnings like this, rather than a "SAVEFREESHAREDPV", @@ -293,17 +293,17 @@ scope has the given name. C must be a literal string. #define SAVEPARSER(p) save_pushptr((p), SAVEt_PARSER) #ifdef USE_ITHREADS -# define SAVECOPSTASH_FREE(c) SAVEIV((c)->cop_stashoff) -# define SAVECOPFILE(c) SAVEPPTR(CopFILE(c)) -# define SAVECOPFILE_FREE(c) SAVESHAREDPV(CopFILE(c)) +# define SAVECOPSTASH_FREE(c) SAVEIV((c)->cop_stashoff) +# define SAVECOPFILE(c) SAVEPPTR(CopFILE(c)) +# define SAVECOPFILE_FREE(c) SAVESHAREDPV(CopFILE(c)) #else # /* XXX not refcounted */ -# define SAVECOPSTASH_FREE(c) SAVESPTR(CopSTASH(c)) -# define SAVECOPFILE(c) SAVESPTR(CopFILEGV(c)) -# define SAVECOPFILE_FREE(c) SAVEGENERICSV(CopFILEGV(c)) +# define SAVECOPSTASH_FREE(c) SAVESPTR(CopSTASH(c)) +# define SAVECOPFILE(c) SAVESPTR(CopFILEGV(c)) +# define SAVECOPFILE_FREE(c) SAVEGENERICSV(CopFILEGV(c)) #endif -#define SAVECOPLINE(c) SAVEI32(CopLINE(c)) +#define SAVECOPLINE(c) SAVEI32(CopLINE(c)) /* =for apidoc_section $stack @@ -338,15 +338,15 @@ casts it to a pointer of that C. #define SSNEW(size) Perl_save_alloc(aTHX_ (size), 0) #define SSNEWt(n,t) SSNEW((n)*sizeof(t)) -#define SSNEWa(size,align) Perl_save_alloc(aTHX_ (size), \ +#define SSNEWa(size,align) Perl_save_alloc(aTHX_ (size), \ (I32)(align - ((size_t)((caddr_t)&PL_savestack[PL_savestack_ix]) % align)) % align) -#define SSNEWat(n,t,align) SSNEWa((n)*sizeof(t), align) +#define SSNEWat(n,t,align) SSNEWa((n)*sizeof(t), align) #define SSPTR(off,type) ((type) ((char*)PL_savestack + off)) #define SSPTRt(off,type) ((type*) ((char*)PL_savestack + off)) -#define save_freesv(op) save_pushptr((void *)(op), SAVEt_FREESV) -#define save_mortalizesv(op) save_pushptr((void *)(op), SAVEt_MORTALIZESV) +#define save_freesv(op) save_pushptr((void *)(op), SAVEt_FREESV) +#define save_mortalizesv(op) save_pushptr((void *)(op), SAVEt_MORTALIZESV) # define save_freeop(op) \ STMT_START { \ @@ -355,7 +355,7 @@ STMT_START { \ _o->op_savefree = 1; \ save_pushptr((void *)(_o), SAVEt_FREEOP); \ } STMT_END -#define save_freepv(pv) save_pushptr((void *)(pv), SAVEt_FREEPV) +#define save_freepv(pv) save_pushptr((void *)(pv), SAVEt_FREEPV) /* =for apidoc_section $callback @@ -366,7 +366,7 @@ Implements C. =cut */ -#define save_op() save_pushptr((void *)(PL_op), SAVEt_OP) +#define save_op() save_pushptr((void *)(PL_op), SAVEt_OP) /* * ex: set ts=8 sts=4 sw=4 et: diff --git a/sv.h b/sv.h index 7523d5a0990a4..f70884ad85470 100644 --- a/sv.h +++ b/sv.h @@ -9,7 +9,7 @@ */ #ifdef sv_flags -#undef sv_flags /* Convex has this in for sigvec() */ +#undef sv_flags /* Convex has this in for sigvec() */ #endif /* @@ -130,29 +130,29 @@ Type flag for I/O objects. See L. typedef enum { - SVt_NULL, /* 0 */ + SVt_NULL, /* 0 */ /* BIND was here, before INVLIST replaced it. */ - SVt_IV, /* 1 */ - SVt_NV, /* 2 */ + SVt_IV, /* 1 */ + SVt_NV, /* 2 */ /* RV was here, before it was merged with IV. */ - SVt_PV, /* 3 */ - SVt_INVLIST, /* 4, implemented as a PV */ - SVt_PVIV, /* 5 */ - SVt_PVNV, /* 6 */ - SVt_PVMG, /* 7 */ - SVt_REGEXP, /* 8 */ + SVt_PV, /* 3 */ + SVt_INVLIST, /* 4, implemented as a PV */ + SVt_PVIV, /* 5 */ + SVt_PVNV, /* 6 */ + SVt_PVMG, /* 7 */ + SVt_REGEXP, /* 8 */ /* PVBM was here, before BIND replaced it. */ - SVt_PVGV, /* 9 */ - SVt_PVLV, /* 10 */ - SVt_PVAV, /* 11 */ - SVt_PVHV, /* 12 */ - SVt_PVCV, /* 13 */ - SVt_PVFM, /* 14 */ - SVt_PVIO, /* 15 */ + SVt_PVGV, /* 9 */ + SVt_PVLV, /* 10 */ + SVt_PVAV, /* 11 */ + SVt_PVHV, /* 12 */ + SVt_PVCV, /* 13 */ + SVt_PVFM, /* 14 */ + SVt_PVIO, /* 15 */ /* 16-31: Unused, though one should be reserved for a * freed sv, if the other 3 bits below the flags ones * get allocated */ - SVt_LAST /* keep last in enum. used to size arrays */ + SVt_LAST /* keep last in enum. used to size arrays */ } svtype; /* *** any alterations to the SV types above need to be reflected in @@ -163,14 +163,14 @@ typedef enum { * The bits that match 0xe0 are CURRENTLY UNUSED * The bits above that are for flags, like SVf_IOK */ -#define SVt_MASK 0x1f /* smallest bitmask that covers all types */ +#define SVt_MASK 0x1f /* smallest bitmask that covers all types */ #ifndef PERL_CORE /* Fast Boyer Moore tables are now stored in magic attached to PVMGs */ -# define SVt_PVBM SVt_PVMG +# define SVt_PVBM SVt_PVMG /* Anything wanting to create a reference from clean should ensure that it has a scalar of type SVt_IV now: */ -# define SVt_RV SVt_IV +# define SVt_RV SVt_IV #endif /* The array of arena roots for SV bodies is indexed by SvTYPE. SVt_NULL doesn't @@ -184,10 +184,10 @@ typedef enum { # define HVAUX_ARENA_ROOT_IX SVt_IV #endif #ifdef PERL_IN_SV_C -# define SVt_FIRST SVt_NULL /* the type of SV that new_SV() in sv.c returns */ +# define SVt_FIRST SVt_NULL /* the type of SV that new_SV() in sv.c returns */ #endif -#define PERL_ARENA_ROOTS_SIZE (SVt_LAST) +#define PERL_ARENA_ROOTS_SIZE (SVt_LAST) /* typedefs to eliminate some typing */ typedef struct he HE; @@ -197,9 +197,9 @@ typedef struct hek HEK; /* start with 2 sv-head building blocks */ #define _SV_HEAD(ptrtype) \ - ptrtype sv_any; /* pointer to body */ \ - U32 sv_refcnt; /* how many references to us */ \ - U32 sv_flags /* what we are */ + ptrtype sv_any; /* pointer to body */ \ + U32 sv_refcnt; /* how many references to us */ \ + U32 sv_flags /* what we are */ #if NVSIZE <= IVSIZE # define _NV_BODYLESS_UNION NV svu_nv; @@ -208,63 +208,63 @@ typedef struct hek HEK; #endif #define _SV_HEAD_UNION \ - union { \ - char* svu_pv; /* pointer to malloced string */ \ - IV svu_iv; \ - UV svu_uv; \ - _NV_BODYLESS_UNION \ - SV* svu_rv; /* pointer to another SV */ \ - SV** svu_array; \ - HE** svu_hash; \ - GP* svu_gp; \ - PerlIO *svu_fp; \ - } sv_u \ + union { \ + char* svu_pv; /* pointer to malloced string */ \ + IV svu_iv; \ + UV svu_uv; \ + _NV_BODYLESS_UNION \ + SV* svu_rv; /* pointer to another SV */ \ + SV** svu_array; \ + HE** svu_hash; \ + GP* svu_gp; \ + PerlIO *svu_fp; \ + } sv_u \ _SV_HEAD_DEBUG #ifdef DEBUG_LEAKING_SCALARS -#define _SV_HEAD_DEBUG ;\ - 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_line:16; /* the line 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)*/ +#define _SV_HEAD_DEBUG;\ + 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_line:16; /* the line 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)*/ #else #define _SV_HEAD_DEBUG #endif -struct STRUCT_SV { /* struct sv { */ +struct STRUCT_SV { /* struct sv { */ _SV_HEAD(void*); _SV_HEAD_UNION; }; struct gv { - _SV_HEAD(XPVGV*); /* pointer to xpvgv body */ + _SV_HEAD(XPVGV*); /* pointer to xpvgv body */ _SV_HEAD_UNION; }; struct cv { - _SV_HEAD(XPVCV*); /* pointer to xpvcv body */ + _SV_HEAD(XPVCV*); /* pointer to xpvcv body */ _SV_HEAD_UNION; }; struct av { - _SV_HEAD(XPVAV*); /* pointer to xpvav body */ + _SV_HEAD(XPVAV*); /* pointer to xpvav body */ _SV_HEAD_UNION; }; struct hv { - _SV_HEAD(XPVHV*); /* pointer to xpvhv body */ + _SV_HEAD(XPVHV*); /* pointer to xpvhv body */ _SV_HEAD_UNION; }; struct io { - _SV_HEAD(XPVIO*); /* pointer to xpvio body */ + _SV_HEAD(XPVIO*); /* pointer to xpvio body */ _SV_HEAD_UNION; }; struct p5rx { - _SV_HEAD(struct regexp*); /* pointer to regexp body */ + _SV_HEAD(struct regexp*); /* pointer to regexp body */ _SV_HEAD_UNION; }; @@ -274,7 +274,7 @@ struct invlist { }; #undef _SV_HEAD -#undef _SV_HEAD_UNION /* ensure no pollution */ +#undef _SV_HEAD_UNION /* ensure no pollution */ /* =for apidoc_section $SV @@ -339,54 +339,54 @@ perform the upgrade if necessary. See C>. =cut */ -#define SvANY(sv) (sv)->sv_any -#define SvFLAGS(sv) (sv)->sv_flags -#define SvREFCNT(sv) (sv)->sv_refcnt +#define SvANY(sv) (sv)->sv_any +#define SvFLAGS(sv) (sv)->sv_flags +#define SvREFCNT(sv) (sv)->sv_refcnt -#define SvREFCNT_inc(sv) Perl_SvREFCNT_inc(MUTABLE_SV(sv)) -#define SvREFCNT_inc_simple(sv) SvREFCNT_inc(sv) -#define SvREFCNT_inc_NN(sv) Perl_SvREFCNT_inc_NN(MUTABLE_SV(sv)) -#define SvREFCNT_inc_void(sv) Perl_SvREFCNT_inc_void(MUTABLE_SV(sv)) +#define SvREFCNT_inc(sv) Perl_SvREFCNT_inc(MUTABLE_SV(sv)) +#define SvREFCNT_inc_simple(sv) SvREFCNT_inc(sv) +#define SvREFCNT_inc_NN(sv) Perl_SvREFCNT_inc_NN(MUTABLE_SV(sv)) +#define SvREFCNT_inc_void(sv) Perl_SvREFCNT_inc_void(MUTABLE_SV(sv)) /* These guys don't need the curly blocks */ -#define SvREFCNT_inc_simple_void(sv) \ +#define SvREFCNT_inc_simple_void(sv) \ STMT_START { \ SV * sv_ = MUTABLE_SV(sv); \ if (sv_) \ SvREFCNT(sv_)++; \ } STMT_END -#define SvREFCNT_inc_simple_NN(sv) (++(SvREFCNT(sv)),MUTABLE_SV(sv)) -#define SvREFCNT_inc_void_NN(sv) (void)(++SvREFCNT(MUTABLE_SV(sv))) -#define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT(MUTABLE_SV(sv))) +#define SvREFCNT_inc_simple_NN(sv) (++(SvREFCNT(sv)),MUTABLE_SV(sv)) +#define SvREFCNT_inc_void_NN(sv) (void)(++SvREFCNT(MUTABLE_SV(sv))) +#define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT(MUTABLE_SV(sv))) -#define SvREFCNT_dec(sv) Perl_SvREFCNT_dec(aTHX_ MUTABLE_SV(sv)) -#define SvREFCNT_dec_NN(sv) Perl_SvREFCNT_dec_NN(aTHX_ MUTABLE_SV(sv)) +#define SvREFCNT_dec(sv) Perl_SvREFCNT_dec(aTHX_ MUTABLE_SV(sv)) +#define SvREFCNT_dec_NN(sv) Perl_SvREFCNT_dec_NN(aTHX_ MUTABLE_SV(sv)) -#define SVTYPEMASK 0xff -#define SvTYPE(sv) ((svtype)((sv)->sv_flags & SVTYPEMASK)) +#define SVTYPEMASK 0xff +#define SvTYPE(sv) ((svtype)((sv)->sv_flags & SVTYPEMASK)) /* Sadly there are some parts of the core that have pointers to already-freed SV heads, and rely on being able to tell that they are now free. So mark them all by using a consistent macro. */ -#define SvIS_FREED(sv) UNLIKELY(((sv)->sv_flags == SVTYPEMASK)) +#define SvIS_FREED(sv) UNLIKELY(((sv)->sv_flags == SVTYPEMASK)) /* this is defined in this peculiar way to avoid compiler warnings. * See the <20121213131428.GD1842@iabyn.com> thread in p5p */ #define SvUPGRADE(sv, mt) \ ((void)(SvTYPE(sv) >= (mt) || (sv_upgrade(sv, mt),1))) -#define SVf_IOK 0x00000100 /* has valid public integer value */ -#define SVf_NOK 0x00000200 /* has valid public numeric value */ -#define SVf_POK 0x00000400 /* has valid public pointer value */ -#define SVf_ROK 0x00000800 /* has a valid reference pointer */ - -#define SVp_IOK 0x00001000 /* has valid non-public integer value */ -#define SVp_NOK 0x00002000 /* has valid non-public numeric value */ -#define SVp_POK 0x00004000 /* has valid non-public pointer value */ -#define SVp_SCREAM 0x00008000 /* currently unused on plain scalars */ -#define SVphv_CLONEABLE SVp_SCREAM /* PVHV (stashes) clone its objects */ -#define SVpgv_GP SVp_SCREAM /* GV has a valid GP */ +#define SVf_IOK 0x00000100 /* has valid public integer value */ +#define SVf_NOK 0x00000200 /* has valid public numeric value */ +#define SVf_POK 0x00000400 /* has valid public pointer value */ +#define SVf_ROK 0x00000800 /* has a valid reference pointer */ + +#define SVp_IOK 0x00001000 /* has valid non-public integer value */ +#define SVp_NOK 0x00002000 /* has valid non-public numeric value */ +#define SVp_POK 0x00004000 /* has valid non-public pointer value */ +#define SVp_SCREAM 0x00008000 /* currently unused on plain scalars */ +#define SVphv_CLONEABLE SVp_SCREAM /* PVHV (stashes) clone its objects */ +#define SVpgv_GP SVp_SCREAM /* GV has a valid GP */ #define SVprv_PCS_IMPORTED SVp_SCREAM /* RV is a proxy for a constant subroutine in another package. Set the GvIMPORTED_CV_on() if it needs to be @@ -400,17 +400,17 @@ perform the upgrade if necessary. See C>. * sets both (SVf_READONLY|SVf_PROTECT) to indicate both to core and user * code that this SV should not be messed with. */ -#define SVf_PROTECT 0x00010000 /* very read-only */ -#define SVs_PADTMP 0x00020000 /* in use as tmp */ -#define SVs_PADSTALE 0x00040000 /* lexical has gone out of scope; +#define SVf_PROTECT 0x00010000 /* very read-only */ +#define SVs_PADTMP 0x00020000 /* in use as tmp */ +#define SVs_PADSTALE 0x00040000 /* lexical has gone out of scope; only used when !PADTMP */ -#define SVs_TEMP 0x00080000 /* mortal (implies string is stealable) */ -#define SVs_OBJECT 0x00100000 /* is "blessed" */ -#define SVs_GMG 0x00200000 /* has magical get method */ -#define SVs_SMG 0x00400000 /* has magical set method */ -#define SVs_RMG 0x00800000 /* has random magical methods */ +#define SVs_TEMP 0x00080000 /* mortal (implies string is stealable) */ +#define SVs_OBJECT 0x00100000 /* is "blessed" */ +#define SVs_GMG 0x00200000 /* has magical get method */ +#define SVs_SMG 0x00400000 /* has magical set method */ +#define SVs_RMG 0x00800000 /* has random magical methods */ -#define SVf_FAKE 0x01000000 /* 0: glob is just a copy +#define SVf_FAKE 0x01000000 /* 0: glob is just a copy 1: SV head arena wasn't malloc()ed 2: For PVCV, whether CvUNIQUE(cv) refers to an eval or once only @@ -422,26 +422,26 @@ perform the upgrade if necessary. See C>. including PVLV-as-regex. See isREGEXP(). */ -#define SVf_OOK 0x02000000 /* has valid offset value */ +#define SVf_OOK 0x02000000 /* has valid offset value */ #define SVphv_HasAUX SVf_OOK /* PVHV has an additional hv_aux struct */ -#define SVf_BREAK 0x04000000 /* refcnt is artificially low - used by +#define SVf_BREAK 0x04000000 /* refcnt is artificially low - used by SVs in final arena cleanup. Set in S_regtry on PL_reg_curpm, so that perl_destruct will skip it. Used for mark and sweep by OP_AASSIGN */ -#define SVf_READONLY 0x08000000 /* may not be modified */ +#define SVf_READONLY 0x08000000 /* may not be modified */ -#define SVf_THINKFIRST (SVf_READONLY|SVf_PROTECT|SVf_ROK|SVf_FAKE \ +#define SVf_THINKFIRST (SVf_READONLY|SVf_PROTECT|SVf_ROK|SVf_FAKE \ |SVs_RMG|SVf_IsCOW) -#define SVf_OK (SVf_IOK|SVf_NOK|SVf_POK|SVf_ROK| \ +#define SVf_OK (SVf_IOK|SVf_NOK|SVf_POK|SVf_ROK| \ SVp_IOK|SVp_NOK|SVp_POK|SVpgv_GP) -#define PRIVSHIFT 4 /* (SVp_?OK >> PRIVSHIFT) == SVf_?OK */ +#define PRIVSHIFT 4 /* (SVp_?OK >> PRIVSHIFT) == SVf_?OK */ /* SVf_AMAGIC means that the stash *may* have overload methods. It's * set each time a function is compiled into a stash, and is reset by the @@ -449,8 +449,8 @@ perform the upgrade if necessary. See C>. * no overload methods. Note that this used to be set on the object; but * is now only set on stashes. */ -#define SVf_AMAGIC 0x10000000 /* has magical overloaded methods */ -#define SVf_IsCOW 0x10000000 /* copy on write (shared hash key if +#define SVf_AMAGIC 0x10000000 /* has magical overloaded methods */ +#define SVf_IsCOW 0x10000000 /* copy on write (shared hash key if SvLEN == 0) */ /* Ensure this value does not clash with the GV_ADD* flags in gv.h, or the @@ -473,49 +473,49 @@ perform the upgrade if necessary. See C>. /* scalar SVs with SVp_POK */ #define SVppv_STATIC 0x40000000 /* PV is pointer to static const; must be set with SVf_IsCOW */ /* PVAV */ -#define SVpav_REAL 0x40000000 /* free old entries */ +#define SVpav_REAL 0x40000000 /* free old entries */ /* PVHV */ -#define SVphv_LAZYDEL 0x40000000 /* entry in xhv_eiter must be deleted */ +#define SVphv_LAZYDEL 0x40000000 /* entry in xhv_eiter must be deleted */ /* IV, PVIV, PVNV, PVMG, PVGV and (I assume) PVLV */ -#define SVf_IVisUV 0x80000000 /* use XPVUV instead of XPVIV */ +#define SVf_IVisUV 0x80000000 /* use XPVUV instead of XPVIV */ /* PVAV */ -#define SVpav_REIFY 0x80000000 /* can become real */ +#define SVpav_REIFY 0x80000000 /* can become real */ /* PVHV */ -#define SVphv_HASKFLAGS 0x80000000 /* keys have flag byte after hash */ +#define SVphv_HASKFLAGS 0x80000000 /* keys have flag byte after hash */ /* RV upwards. However, SVf_ROK and SVp_IOK are exclusive */ #define SVprv_WEAKREF 0x80000000 /* Weak reference */ /* pad name vars only */ -#define _XPV_HEAD \ - HV* xmg_stash; /* class package */ \ - union _xmgu xmg_u; \ - STRLEN xpv_cur; /* length of svu_pv as a C string */ \ - union { \ - STRLEN xpvlenu_len; /* allocated size */ \ +#define _XPV_HEAD \ + HV* xmg_stash; /* class package */ \ + union _xmgu xmg_u; \ + STRLEN xpv_cur; /* length of svu_pv as a C string */ \ + union { \ + STRLEN xpvlenu_len; /* allocated size */ \ struct regexp* xpvlenu_rx; /* regex when SV body is XPVLV */ \ } xpv_len_u -#define xpv_len xpv_len_u.xpvlenu_len +#define xpv_len xpv_len_u.xpvlenu_len union _xnvu { - NV xnv_nv; /* numeric value, if any */ + NV xnv_nv; /* numeric value, if any */ HV * xgv_stash; line_t xnv_lines; /* used internally by S_scan_subst() */ bool xnv_bm_tail; /* an SvVALID (BM) SV has an implicit "\n" */ }; union _xivu { - IV xivu_iv; /* integer value */ - UV xivu_uv; - HEK * xivu_namehek; /* xpvlv, xpvgv: GvNAME */ + IV xivu_iv; /* integer value */ + UV xivu_uv; + HEK * xivu_namehek; /* xpvlv, xpvgv: GvNAME */ bool xivu_eval_seen; /* used internally by S_scan_subst() */ }; union _xmgu { - MAGIC* xmg_magic; /* linked list of magicalness */ - STRLEN xmg_hash_index; /* used while freeing hash entries */ + MAGIC* xmg_magic; /* linked list of magicalness */ + STRLEN xmg_hash_index; /* used while freeing hash entries */ }; struct xpv { @@ -554,14 +554,14 @@ struct xpvlv { union _xivu xiv_u; union _xnvu xnv_u; union { - STRLEN xlvu_targoff; + STRLEN xlvu_targoff; SSize_t xlvu_stargoff; } xlv_targoff_u; - STRLEN xlv_targlen; - SV* xlv_targ; - char xlv_type; /* k=keys .=pos x=substr v=vec /=join/re + STRLEN xlv_targlen; + SV* xlv_targ; + char xlv_type; /* k=keys .=pos x=substr v=vec /=join/re * y=alem/helem/iter t=tie T=tied HE */ - char xlv_flags; /* 1 = negative offset 2 = negative len + char xlv_flags; /* 1 = negative offset 2 = negative len 4 = out of range (vec) */ }; @@ -570,8 +570,8 @@ struct xpvlv { struct xpvinvlist { _XPV_HEAD; IV prev_index; /* caches result of previous invlist_search() */ - STRLEN iterator; /* Stores where we are in iterating */ - bool is_offset; /* The data structure for all inversion lists + STRLEN iterator; /* Stores where we are in iterating */ + bool is_offset; /* The data structure for all inversion lists begins with an element for code point U+0000. If this bool is set, the actual list contains that 0; otherwise, the list actually begins @@ -589,31 +589,31 @@ struct xpvgv { typedef U32 cv_flags_t; -#define _XPVCV_COMMON \ - HV * xcv_stash; \ - union { \ - OP * xcv_start; \ - ANY xcv_xsubany; \ - } xcv_start_u; \ - union { \ - OP * xcv_root; \ - void (*xcv_xsub) (pTHX_ CV*); \ - } xcv_root_u; \ - union { \ - GV * xcv_gv; \ - HEK * xcv_hek; \ - } xcv_gv_u; \ - char * xcv_file; \ - union { \ - PADLIST * xcv_padlist; \ - void * xcv_hscxt; \ - } xcv_padlist_u; \ - CV * xcv_outside; \ - U32 xcv_outside_seq; /* the COP sequence (at the point of our \ - * compilation) in the lexically enclosing \ - * sub */ \ - cv_flags_t xcv_flags; \ - I32 xcv_depth /* >= 2 indicates recursive call */ +#define _XPVCV_COMMON \ + HV * xcv_stash; \ + union { \ + OP * xcv_start; \ + ANY xcv_xsubany; \ + } xcv_start_u; \ + union { \ + OP * xcv_root; \ + void (*xcv_xsub) (pTHX_ CV*); \ + } xcv_root_u; \ + union { \ + GV * xcv_gv; \ + HEK * xcv_hek; \ + } xcv_gv_u; \ + char * xcv_file; \ + union { \ + PADLIST * xcv_padlist; \ + void * xcv_hscxt; \ + } xcv_padlist_u; \ + CV * xcv_outside; \ + U32 xcv_outside_seq; /* the COP sequence (at the point of our \ + * compilation) in the lexically enclosing \ + * sub */ \ + cv_flags_t xcv_flags; \ + I32 xcv_depth /* >= 2 indicates recursive call */ /* This structure must match XPVCV in cv.h */ @@ -627,7 +627,7 @@ struct xpvio { _XPV_HEAD; union _xivu xiv_u; /* ifp and ofp are normally the same, but sockets need separate streams */ - PerlIO * xio_ofp; + 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 @@ -638,33 +638,33 @@ struct xpvio { * to hang any IO disciplines to. */ union { - DIR * xiou_dirp; /* for opendir, readdir, etc */ - void * xiou_any; /* for alignment */ + 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; + 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 -#define xio_any xio_dirpu.xiou_any +#define xio_dirp xio_dirpu.xiou_dirp +#define xio_any xio_dirpu.xiou_any -#define IOf_ARGV 1 /* this fp iterates over ARGV */ -#define IOf_START 2 /* check for null ARGV and substitute '-' */ -#define IOf_FLUSH 4 /* this fp wants a flush after write op */ -#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_ARGV 1 /* this fp iterates over ARGV */ +#define IOf_START 2 /* check for null ARGV and substitute '-' */ +#define IOf_FLUSH 4 /* this fp wants a flush after write op */ +#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) Also, when this is set, SvPVX() is valid */ /* The following macros define implementation-independent predicates on SVs. */ @@ -925,47 +925,47 @@ Set the size of the string buffer for the SV. See C>. =cut */ -#define SvNIOK(sv) (SvFLAGS(sv) & (SVf_IOK|SVf_NOK)) -#define SvNIOKp(sv) (SvFLAGS(sv) & (SVp_IOK|SVp_NOK)) -#define SvNIOK_off(sv) (SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK| \ +#define SvNIOK(sv) (SvFLAGS(sv) & (SVf_IOK|SVf_NOK)) +#define SvNIOKp(sv) (SvFLAGS(sv) & (SVp_IOK|SVp_NOK)) +#define SvNIOK_off(sv) (SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK| \ SVp_IOK|SVp_NOK|SVf_IVisUV)) -#define assert_not_ROK(sv) assert_(!SvROK(sv) || !SvRV(sv)) -#define assert_not_glob(sv) assert_(!isGV_with_GP(sv)) +#define assert_not_ROK(sv) assert_(!SvROK(sv) || !SvRV(sv)) +#define assert_not_glob(sv) assert_(!isGV_with_GP(sv)) -#define SvOK(sv) (SvFLAGS(sv) & SVf_OK) -#define SvOK_off(sv) (assert_not_ROK(sv) assert_not_glob(sv) \ - SvFLAGS(sv) &= ~(SVf_OK| \ - SVf_IVisUV|SVf_UTF8), \ +#define SvOK(sv) (SvFLAGS(sv) & SVf_OK) +#define SvOK_off(sv) (assert_not_ROK(sv) assert_not_glob(sv) \ + SvFLAGS(sv) &= ~(SVf_OK| \ + SVf_IVisUV|SVf_UTF8), \ SvOOK_off(sv)) -#define SvOK_off_exc_UV(sv) (assert_not_ROK(sv) \ - SvFLAGS(sv) &= ~(SVf_OK| \ - SVf_UTF8), \ +#define SvOK_off_exc_UV(sv) (assert_not_ROK(sv) \ + SvFLAGS(sv) &= ~(SVf_OK| \ + SVf_UTF8), \ SvOOK_off(sv)) -#define SvOKp(sv) (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK)) -#define SvIOKp(sv) (SvFLAGS(sv) & SVp_IOK) -#define SvIOKp_on(sv) (assert_not_glob(sv) \ +#define SvOKp(sv) (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK)) +#define SvIOKp(sv) (SvFLAGS(sv) & SVp_IOK) +#define SvIOKp_on(sv) (assert_not_glob(sv) \ SvFLAGS(sv) |= SVp_IOK) -#define SvNOKp(sv) (SvFLAGS(sv) & SVp_NOK) -#define SvNOKp_on(sv) (assert_not_glob(sv) SvFLAGS(sv) |= SVp_NOK) -#define SvPOKp(sv) (SvFLAGS(sv) & SVp_POK) -#define SvPOKp_on(sv) (assert_not_ROK(sv) assert_not_glob(sv) \ +#define SvNOKp(sv) (SvFLAGS(sv) & SVp_NOK) +#define SvNOKp_on(sv) (assert_not_glob(sv) SvFLAGS(sv) |= SVp_NOK) +#define SvPOKp(sv) (SvFLAGS(sv) & SVp_POK) +#define SvPOKp_on(sv) (assert_not_ROK(sv) assert_not_glob(sv) \ SvFLAGS(sv) |= SVp_POK) -#define SvIOK(sv) (SvFLAGS(sv) & SVf_IOK) -#define SvIOK_on(sv) (assert_not_glob(sv) \ +#define SvIOK(sv) (SvFLAGS(sv) & SVf_IOK) +#define SvIOK_on(sv) (assert_not_glob(sv) \ SvFLAGS(sv) |= (SVf_IOK|SVp_IOK)) -#define SvIOK_off(sv) (SvFLAGS(sv) &= ~(SVf_IOK|SVp_IOK|SVf_IVisUV)) -#define SvIOK_only(sv) (SvOK_off(sv), \ +#define SvIOK_off(sv) (SvFLAGS(sv) &= ~(SVf_IOK|SVp_IOK|SVf_IVisUV)) +#define SvIOK_only(sv) (SvOK_off(sv), \ SvFLAGS(sv) |= (SVf_IOK|SVp_IOK)) -#define SvIOK_only_UV(sv) (assert_not_glob(sv) SvOK_off_exc_UV(sv), \ +#define SvIOK_only_UV(sv) (assert_not_glob(sv) SvOK_off_exc_UV(sv), \ SvFLAGS(sv) |= (SVf_IOK|SVp_IOK)) -#define SvIOK_UV(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV)) \ +#define SvIOK_UV(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV)) \ == (SVf_IOK|SVf_IVisUV)) -#define SvUOK(sv) SvIOK_UV(sv) -#define SvIOK_notUV(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV)) \ +#define SvUOK(sv) SvIOK_UV(sv) +#define SvIOK_notUV(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV)) \ == SVf_IOK) #define SvIandPOK(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_POK)) == (SVf_IOK|SVf_POK)) @@ -982,15 +982,15 @@ Set the size of the string buffer for the SV. See C>. #define BOOL_INTERNALS_sv_isbool_false(sv) (SvIsCOW_static(sv) && \ (SvPVX_const(sv) == PL_No)) -#define SvIsUV(sv) (SvFLAGS(sv) & SVf_IVisUV) -#define SvIsUV_on(sv) (SvFLAGS(sv) |= SVf_IVisUV) -#define SvIsUV_off(sv) (SvFLAGS(sv) &= ~SVf_IVisUV) +#define SvIsUV(sv) (SvFLAGS(sv) & SVf_IVisUV) +#define SvIsUV_on(sv) (SvFLAGS(sv) |= SVf_IVisUV) +#define SvIsUV_off(sv) (SvFLAGS(sv) &= ~SVf_IVisUV) -#define SvNOK(sv) (SvFLAGS(sv) & SVf_NOK) -#define SvNOK_on(sv) (assert_not_glob(sv) \ +#define SvNOK(sv) (SvFLAGS(sv) & SVf_NOK) +#define SvNOK_on(sv) (assert_not_glob(sv) \ SvFLAGS(sv) |= (SVf_NOK|SVp_NOK)) -#define SvNOK_off(sv) (SvFLAGS(sv) &= ~(SVf_NOK|SVp_NOK)) -#define SvNOK_only(sv) (SvOK_off(sv), \ +#define SvNOK_off(sv) (SvFLAGS(sv) &= ~(SVf_NOK|SVp_NOK)) +#define SvNOK_only(sv) (SvOK_off(sv), \ SvFLAGS(sv) |= (SVf_NOK|SVp_NOK)) /* @@ -1020,24 +1020,24 @@ and leaves the UTF-8 status as it was. /* Ensure the return value of this macro does not clash with the GV_ADD* flags in gv.h: */ -#define SvUTF8(sv) (SvFLAGS(sv) & SVf_UTF8) -#define SvUTF8_on(sv) (SvFLAGS(sv) |= (SVf_UTF8)) -#define SvUTF8_off(sv) (SvFLAGS(sv) &= ~(SVf_UTF8)) +#define SvUTF8(sv) (SvFLAGS(sv) & SVf_UTF8) +#define SvUTF8_on(sv) (SvFLAGS(sv) |= (SVf_UTF8)) +#define SvUTF8_off(sv) (SvFLAGS(sv) &= ~(SVf_UTF8)) -#define SvPOK(sv) (SvFLAGS(sv) & SVf_POK) -#define SvPOK_on(sv) (assert_not_ROK(sv) assert_not_glob(sv) \ +#define SvPOK(sv) (SvFLAGS(sv) & SVf_POK) +#define SvPOK_on(sv) (assert_not_ROK(sv) assert_not_glob(sv) \ SvFLAGS(sv) |= (SVf_POK|SVp_POK)) -#define SvPOK_off(sv) (SvFLAGS(sv) &= ~(SVf_POK|SVp_POK)) -#define SvPOK_only(sv) (assert_not_ROK(sv) assert_not_glob(sv) \ - SvFLAGS(sv) &= ~(SVf_OK| \ - SVf_IVisUV|SVf_UTF8), \ +#define SvPOK_off(sv) (SvFLAGS(sv) &= ~(SVf_POK|SVp_POK)) +#define SvPOK_only(sv) (assert_not_ROK(sv) assert_not_glob(sv) \ + SvFLAGS(sv) &= ~(SVf_OK| \ + SVf_IVisUV|SVf_UTF8), \ SvFLAGS(sv) |= (SVf_POK|SVp_POK)) -#define SvPOK_only_UTF8(sv) (assert_not_ROK(sv) assert_not_glob(sv) \ - SvFLAGS(sv) &= ~(SVf_OK| \ - SVf_IVisUV), \ +#define SvPOK_only_UTF8(sv) (assert_not_ROK(sv) assert_not_glob(sv) \ + SvFLAGS(sv) &= ~(SVf_OK| \ + SVf_IVisUV), \ SvFLAGS(sv) |= (SVf_POK|SVp_POK)) -#define SvVOK(sv) (SvMAGICAL(sv) \ +#define SvVOK(sv) (SvMAGICAL(sv) \ && mg_find(sv,PERL_MAGIC_vstring)) /* =for apidoc Am|MAGIC*|SvVSTRING_mg|SV * sv @@ -1046,11 +1046,11 @@ Returns the vstring magic, or NULL if none =cut */ -#define SvVSTRING_mg(sv) (SvMAGICAL(sv) \ +#define SvVSTRING_mg(sv) (SvMAGICAL(sv) \ ? mg_find(sv,PERL_MAGIC_vstring) : NULL) -#define SvOOK(sv) (SvFLAGS(sv) & SVf_OOK) -#define SvOOK_on(sv) (SvFLAGS(sv) |= SVf_OOK) +#define SvOOK(sv) (SvFLAGS(sv) & SVf_OOK) +#define SvOOK_on(sv) (SvFLAGS(sv) |= SVf_OOK) /* @@ -1061,31 +1061,31 @@ Remove any string offset. =cut */ -#define SvOOK_off(sv) ((void)(SvOOK(sv) && (sv_backoff(sv),0))) +#define SvOOK_off(sv) ((void)(SvOOK(sv) && (sv_backoff(sv),0))) -#define SvFAKE(sv) (SvFLAGS(sv) & SVf_FAKE) -#define SvFAKE_on(sv) (SvFLAGS(sv) |= SVf_FAKE) -#define SvFAKE_off(sv) (SvFLAGS(sv) &= ~SVf_FAKE) +#define SvFAKE(sv) (SvFLAGS(sv) & SVf_FAKE) +#define SvFAKE_on(sv) (SvFLAGS(sv) |= SVf_FAKE) +#define SvFAKE_off(sv) (SvFLAGS(sv) &= ~SVf_FAKE) -#define SvROK(sv) (SvFLAGS(sv) & SVf_ROK) -#define SvROK_on(sv) (SvFLAGS(sv) |= SVf_ROK) -#define SvROK_off(sv) (SvFLAGS(sv) &= ~(SVf_ROK)) +#define SvROK(sv) (SvFLAGS(sv) & SVf_ROK) +#define SvROK_on(sv) (SvFLAGS(sv) |= SVf_ROK) +#define SvROK_off(sv) (SvFLAGS(sv) &= ~(SVf_ROK)) -#define SvMAGICAL(sv) (SvFLAGS(sv) & (SVs_GMG|SVs_SMG|SVs_RMG)) -#define SvMAGICAL_on(sv) (SvFLAGS(sv) |= (SVs_GMG|SVs_SMG|SVs_RMG)) -#define SvMAGICAL_off(sv) (SvFLAGS(sv) &= ~(SVs_GMG|SVs_SMG|SVs_RMG)) +#define SvMAGICAL(sv) (SvFLAGS(sv) & (SVs_GMG|SVs_SMG|SVs_RMG)) +#define SvMAGICAL_on(sv) (SvFLAGS(sv) |= (SVs_GMG|SVs_SMG|SVs_RMG)) +#define SvMAGICAL_off(sv) (SvFLAGS(sv) &= ~(SVs_GMG|SVs_SMG|SVs_RMG)) -#define SvGMAGICAL(sv) (SvFLAGS(sv) & SVs_GMG) -#define SvGMAGICAL_on(sv) (SvFLAGS(sv) |= SVs_GMG) -#define SvGMAGICAL_off(sv) (SvFLAGS(sv) &= ~SVs_GMG) +#define SvGMAGICAL(sv) (SvFLAGS(sv) & SVs_GMG) +#define SvGMAGICAL_on(sv) (SvFLAGS(sv) |= SVs_GMG) +#define SvGMAGICAL_off(sv) (SvFLAGS(sv) &= ~SVs_GMG) -#define SvSMAGICAL(sv) (SvFLAGS(sv) & SVs_SMG) -#define SvSMAGICAL_on(sv) (SvFLAGS(sv) |= SVs_SMG) -#define SvSMAGICAL_off(sv) (SvFLAGS(sv) &= ~SVs_SMG) +#define SvSMAGICAL(sv) (SvFLAGS(sv) & SVs_SMG) +#define SvSMAGICAL_on(sv) (SvFLAGS(sv) |= SVs_SMG) +#define SvSMAGICAL_off(sv) (SvFLAGS(sv) &= ~SVs_SMG) -#define SvRMAGICAL(sv) (SvFLAGS(sv) & SVs_RMG) -#define SvRMAGICAL_on(sv) (SvFLAGS(sv) |= SVs_RMG) -#define SvRMAGICAL_off(sv) (SvFLAGS(sv) &= ~SVs_RMG) +#define SvRMAGICAL(sv) (SvFLAGS(sv) & SVs_RMG) +#define SvRMAGICAL_on(sv) (SvFLAGS(sv) |= SVs_RMG) +#define SvRMAGICAL_off(sv) (SvFLAGS(sv) &= ~SVs_RMG) /* =for apidoc Am|bool|SvAMAGIC|SV * sv @@ -1096,33 +1096,33 @@ not. =cut */ -#define SvAMAGIC(sv) (SvROK(sv) && SvOBJECT(SvRV(sv)) && \ +#define SvAMAGIC(sv) (SvROK(sv) && SvOBJECT(SvRV(sv)) && \ HvAMAGIC(SvSTASH(SvRV(sv)))) /* To be used on the stashes themselves: */ -#define HvAMAGIC(hv) (SvFLAGS(hv) & SVf_AMAGIC) -#define HvAMAGIC_on(hv) (SvFLAGS(hv) |= SVf_AMAGIC) -#define HvAMAGIC_off(hv) (SvFLAGS(hv) &=~ SVf_AMAGIC) +#define HvAMAGIC(hv) (SvFLAGS(hv) & SVf_AMAGIC) +#define HvAMAGIC_on(hv) (SvFLAGS(hv) |= SVf_AMAGIC) +#define HvAMAGIC_off(hv) (SvFLAGS(hv) &=~ SVf_AMAGIC) /* "nog" means "doesn't have get magic" */ -#define SvPOK_nog(sv) ((SvFLAGS(sv) & (SVf_POK|SVs_GMG)) == SVf_POK) -#define SvIOK_nog(sv) ((SvFLAGS(sv) & (SVf_IOK|SVs_GMG)) == SVf_IOK) -#define SvUOK_nog(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV|SVs_GMG)) == (SVf_IOK|SVf_IVisUV)) -#define SvNOK_nog(sv) ((SvFLAGS(sv) & (SVf_NOK|SVs_GMG)) == SVf_NOK) -#define SvNIOK_nog(sv) (SvNIOK(sv) && !(SvFLAGS(sv) & SVs_GMG)) +#define SvPOK_nog(sv) ((SvFLAGS(sv) & (SVf_POK|SVs_GMG)) == SVf_POK) +#define SvIOK_nog(sv) ((SvFLAGS(sv) & (SVf_IOK|SVs_GMG)) == SVf_IOK) +#define SvUOK_nog(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV|SVs_GMG)) == (SVf_IOK|SVf_IVisUV)) +#define SvNOK_nog(sv) ((SvFLAGS(sv) & (SVf_NOK|SVs_GMG)) == SVf_NOK) +#define SvNIOK_nog(sv) (SvNIOK(sv) && !(SvFLAGS(sv) & SVs_GMG)) -#define SvPOK_nogthink(sv) ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST|SVs_GMG)) == SVf_POK) -#define SvIOK_nogthink(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_THINKFIRST|SVs_GMG)) == SVf_IOK) -#define SvUOK_nogthink(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV|SVf_THINKFIRST|SVs_GMG)) == (SVf_IOK|SVf_IVisUV)) -#define SvNOK_nogthink(sv) ((SvFLAGS(sv) & (SVf_NOK|SVf_THINKFIRST|SVs_GMG)) == SVf_NOK) -#define SvNIOK_nogthink(sv) (SvNIOK(sv) && !(SvFLAGS(sv) & (SVf_THINKFIRST|SVs_GMG))) +#define SvPOK_nogthink(sv) ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST|SVs_GMG)) == SVf_POK) +#define SvIOK_nogthink(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_THINKFIRST|SVs_GMG)) == SVf_IOK) +#define SvUOK_nogthink(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV|SVf_THINKFIRST|SVs_GMG)) == (SVf_IOK|SVf_IVisUV)) +#define SvNOK_nogthink(sv) ((SvFLAGS(sv) & (SVf_NOK|SVf_THINKFIRST|SVs_GMG)) == SVf_NOK) +#define SvNIOK_nogthink(sv) (SvNIOK(sv) && !(SvFLAGS(sv) & (SVf_THINKFIRST|SVs_GMG))) -#define SvPOK_utf8_nog(sv) ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVs_GMG)) == (SVf_POK|SVf_UTF8)) -#define SvPOK_utf8_nogthink(sv) ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVf_THINKFIRST|SVs_GMG)) == (SVf_POK|SVf_UTF8)) +#define SvPOK_utf8_nog(sv) ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVs_GMG)) == (SVf_POK|SVf_UTF8)) +#define SvPOK_utf8_nogthink(sv) ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVf_THINKFIRST|SVs_GMG)) == (SVf_POK|SVf_UTF8)) -#define SvPOK_byte_nog(sv) ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVs_GMG)) == SVf_POK) -#define SvPOK_byte_nogthink(sv) ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVf_THINKFIRST|SVs_GMG)) == SVf_POK) +#define SvPOK_byte_nog(sv) ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVs_GMG)) == SVf_POK) +#define SvPOK_byte_nogthink(sv) ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVf_THINKFIRST|SVs_GMG)) == SVf_POK) #define SvPOK_pure_nogthink(sv) \ ((SvFLAGS(sv) & (SVf_POK|SVf_IOK|SVf_NOK|SVf_ROK|SVpgv_GP|SVf_THINKFIRST|SVs_GMG)) == SVf_POK) @@ -1160,18 +1160,18 @@ the scalar's value cannot change unless written to. #define Gv_AMG(stash) \ (HvNAME(stash) && Gv_AMupdate(stash,FALSE) \ - ? 1 \ + ? 1 \ : (HvAMAGIC_off(stash), 0)) -#define SvWEAKREF(sv) ((SvFLAGS(sv) & (SVf_ROK|SVprv_WEAKREF)) \ +#define SvWEAKREF(sv) ((SvFLAGS(sv) & (SVf_ROK|SVprv_WEAKREF)) \ == (SVf_ROK|SVprv_WEAKREF)) -#define SvWEAKREF_on(sv) (SvFLAGS(sv) |= (SVf_ROK|SVprv_WEAKREF)) -#define SvWEAKREF_off(sv) (SvFLAGS(sv) &= ~(SVf_ROK|SVprv_WEAKREF)) +#define SvWEAKREF_on(sv) (SvFLAGS(sv) |= (SVf_ROK|SVprv_WEAKREF)) +#define SvWEAKREF_off(sv) (SvFLAGS(sv) &= ~(SVf_ROK|SVprv_WEAKREF)) -#define SvPCS_IMPORTED(sv) ((SvFLAGS(sv) & (SVf_ROK|SVprv_PCS_IMPORTED)) \ +#define SvPCS_IMPORTED(sv) ((SvFLAGS(sv) & (SVf_ROK|SVprv_PCS_IMPORTED)) \ == (SVf_ROK|SVprv_PCS_IMPORTED)) -#define SvPCS_IMPORTED_on(sv) (SvFLAGS(sv) |= (SVf_ROK|SVprv_PCS_IMPORTED)) -#define SvPCS_IMPORTED_off(sv) (SvFLAGS(sv) &= ~(SVf_ROK|SVprv_PCS_IMPORTED)) +#define SvPCS_IMPORTED_on(sv) (SvFLAGS(sv) |= (SVf_ROK|SVprv_PCS_IMPORTED)) +#define SvPCS_IMPORTED_off(sv) (SvFLAGS(sv) &= ~(SVf_ROK|SVprv_PCS_IMPORTED)) /* =for apidoc m|U32|SvTHINKFIRST|SV *sv @@ -1197,29 +1197,29 @@ C does nothing. =cut */ -#define SvTHINKFIRST(sv) (SvFLAGS(sv) & SVf_THINKFIRST) +#define SvTHINKFIRST(sv) (SvFLAGS(sv) & SVf_THINKFIRST) -#define SVs_PADMY 0 -#define SvPADMY(sv) !(SvFLAGS(sv) & SVs_PADTMP) +#define SVs_PADMY 0 +#define SvPADMY(sv) !(SvFLAGS(sv) & SVs_PADTMP) #ifndef PERL_CORE -# define SvPADMY_on(sv) SvPADTMP_off(sv) +# define SvPADMY_on(sv) SvPADTMP_off(sv) #endif -#define SvPADTMP(sv) (SvFLAGS(sv) & (SVs_PADTMP)) -#define SvPADSTALE(sv) (SvFLAGS(sv) & (SVs_PADSTALE)) +#define SvPADTMP(sv) (SvFLAGS(sv) & (SVs_PADTMP)) +#define SvPADSTALE(sv) (SvFLAGS(sv) & (SVs_PADSTALE)) -#define SvPADTMP_on(sv) (SvFLAGS(sv) |= SVs_PADTMP) -#define SvPADTMP_off(sv) (SvFLAGS(sv) &= ~SVs_PADTMP) -#define SvPADSTALE_on(sv) Perl_SvPADSTALE_on(MUTABLE_SV(sv)) -#define SvPADSTALE_off(sv) Perl_SvPADSTALE_off(MUTABLE_SV(sv)) +#define SvPADTMP_on(sv) (SvFLAGS(sv) |= SVs_PADTMP) +#define SvPADTMP_off(sv) (SvFLAGS(sv) &= ~SVs_PADTMP) +#define SvPADSTALE_on(sv) Perl_SvPADSTALE_on(MUTABLE_SV(sv)) +#define SvPADSTALE_off(sv) Perl_SvPADSTALE_off(MUTABLE_SV(sv)) -#define SvTEMP(sv) (SvFLAGS(sv) & SVs_TEMP) -#define SvTEMP_on(sv) (SvFLAGS(sv) |= SVs_TEMP) -#define SvTEMP_off(sv) (SvFLAGS(sv) &= ~SVs_TEMP) +#define SvTEMP(sv) (SvFLAGS(sv) & SVs_TEMP) +#define SvTEMP_on(sv) (SvFLAGS(sv) |= SVs_TEMP) +#define SvTEMP_off(sv) (SvFLAGS(sv) &= ~SVs_TEMP) -#define SvOBJECT(sv) (SvFLAGS(sv) & SVs_OBJECT) -#define SvOBJECT_on(sv) (SvFLAGS(sv) |= SVs_OBJECT) -#define SvOBJECT_off(sv) (SvFLAGS(sv) &= ~SVs_OBJECT) +#define SvOBJECT(sv) (SvFLAGS(sv) & SVs_OBJECT) +#define SvOBJECT_on(sv) (SvFLAGS(sv) |= SVs_OBJECT) +#define SvOBJECT_off(sv) (SvFLAGS(sv) &= ~SVs_OBJECT) /* =for apidoc Am|U32|SvREADONLY|SV* sv @@ -1237,30 +1237,30 @@ object type. Exposed to perl code via Internals::SvREADONLY(). =cut */ -#define SvREADONLY(sv) (SvFLAGS(sv) & (SVf_READONLY|SVf_PROTECT)) +#define SvREADONLY(sv) (SvFLAGS(sv) & (SVf_READONLY|SVf_PROTECT)) #ifdef PERL_CORE -# define SvREADONLY_on(sv) (SvFLAGS(sv) |= (SVf_READONLY|SVf_PROTECT)) -# define SvREADONLY_off(sv) (SvFLAGS(sv) &=~(SVf_READONLY|SVf_PROTECT)) +# define SvREADONLY_on(sv) (SvFLAGS(sv) |= (SVf_READONLY|SVf_PROTECT)) +# define SvREADONLY_off(sv) (SvFLAGS(sv) &=~(SVf_READONLY|SVf_PROTECT)) #else -# define SvREADONLY_on(sv) (SvFLAGS(sv) |= SVf_READONLY) -# define SvREADONLY_off(sv) (SvFLAGS(sv) &= ~SVf_READONLY) +# define SvREADONLY_on(sv) (SvFLAGS(sv) |= SVf_READONLY) +# define SvREADONLY_off(sv) (SvFLAGS(sv) &= ~SVf_READONLY) #endif #define SvSCREAM(sv) ((SvFLAGS(sv) & (SVp_SCREAM|SVp_POK)) == (SVp_SCREAM|SVp_POK)) -#define SvSCREAM_on(sv) (SvFLAGS(sv) |= SVp_SCREAM) -#define SvSCREAM_off(sv) (SvFLAGS(sv) &= ~SVp_SCREAM) +#define SvSCREAM_on(sv) (SvFLAGS(sv) |= SVp_SCREAM) +#define SvSCREAM_off(sv) (SvFLAGS(sv) &= ~SVp_SCREAM) #ifndef PERL_CORE -# define SvCOMPILED(sv) 0 +# define SvCOMPILED(sv) 0 # define SvCOMPILED_on(sv) # define SvCOMPILED_off(sv) #endif #if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS) -# define SvTAIL(sv) ({ const SV *const _svtail = (const SV *)(sv); \ - assert(SvTYPE(_svtail) != SVt_PVAV); \ - assert(SvTYPE(_svtail) != SVt_PVHV); \ +# define SvTAIL(sv) ({ const SV *const _svtail = (const SV *)(sv); \ + assert(SvTYPE(_svtail) != SVt_PVAV); \ + assert(SvTYPE(_svtail) != SVt_PVHV); \ assert(!(SvFLAGS(_svtail) & (SVf_NOK|SVp_NOK))); \ assert(SvVALID(_svtail)); \ ((XPVNV*)SvANY(_svtail))->xnv_u.xnv_bm_tail; \ @@ -1299,8 +1299,8 @@ object type. Exposed to perl code via Internals::SvREADONLY(). # define SvLEN(sv) (0 + ((XPV*) SvANY(sv))->xpv_len) # define SvEND(sv) ((sv)->sv_u.svu_pv + ((XPV*)SvANY(sv))->xpv_cur) -# define SvMAGIC(sv) (0 + *(assert_(SvTYPE(sv) >= SVt_PVMG) &((XPVMG*) SvANY(sv))->xmg_u.xmg_magic)) -# define SvSTASH(sv) (0 + *(assert_(SvTYPE(sv) >= SVt_PVMG) &((XPVMG*) SvANY(sv))->xmg_stash)) +# define SvMAGIC(sv) (0 + *(assert_(SvTYPE(sv) >= SVt_PVMG) &((XPVMG*) SvANY(sv))->xmg_u.xmg_magic)) +# define SvSTASH(sv) (0 + *(assert_(SvTYPE(sv) >= SVt_PVMG) &((XPVMG*) SvANY(sv))->xmg_stash)) #else /* Below is not PERL_DEBUG_COW */ # ifdef PERL_CORE # define SvLEN(sv) (0 + ((XPV*) SvANY(sv))->xpv_len) @@ -1311,76 +1311,76 @@ object type. Exposed to perl code via Internals::SvREADONLY(). # if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS) /* These get expanded inside other macros that already use a variable _sv */ -# define SvPVX(sv) \ - (*({ SV *const _svpvx = MUTABLE_SV(sv); \ - assert(PL_valid_types_PVX[SvTYPE(_svpvx) & SVt_MASK]); \ - assert(!isGV_with_GP(_svpvx)); \ - assert(!(SvTYPE(_svpvx) == SVt_PVIO \ - && !(IoFLAGS(_svpvx) & IOf_FAKE_DIRP))); \ - &((_svpvx)->sv_u.svu_pv); \ +# define SvPVX(sv) \ + (*({ SV *const _svpvx = MUTABLE_SV(sv); \ + assert(PL_valid_types_PVX[SvTYPE(_svpvx) & SVt_MASK]); \ + assert(!isGV_with_GP(_svpvx)); \ + assert(!(SvTYPE(_svpvx) == SVt_PVIO \ + && !(IoFLAGS(_svpvx) & IOf_FAKE_DIRP))); \ + &((_svpvx)->sv_u.svu_pv); \ })) # ifdef PERL_CORE -# define SvCUR(sv) \ - ({ const SV *const _svcur = (const SV *)(sv); \ - assert(PL_valid_types_PVX[SvTYPE(_svcur) & SVt_MASK]); \ - assert(!isGV_with_GP(_svcur)); \ - assert(!(SvTYPE(_svcur) == SVt_PVIO \ - && !(IoFLAGS(_svcur) & IOf_FAKE_DIRP))); \ - (((XPV*) MUTABLE_PTR(SvANY(_svcur)))->xpv_cur); \ +# define SvCUR(sv) \ + ({ const SV *const _svcur = (const SV *)(sv); \ + assert(PL_valid_types_PVX[SvTYPE(_svcur) & SVt_MASK]); \ + assert(!isGV_with_GP(_svcur)); \ + assert(!(SvTYPE(_svcur) == SVt_PVIO \ + && !(IoFLAGS(_svcur) & IOf_FAKE_DIRP))); \ + (((XPV*) MUTABLE_PTR(SvANY(_svcur)))->xpv_cur); \ }) # else -# define SvCUR(sv) \ - (*({ const SV *const _svcur = (const SV *)(sv); \ - assert(PL_valid_types_PVX[SvTYPE(_svcur) & SVt_MASK]); \ - assert(!isGV_with_GP(_svcur)); \ - assert(!(SvTYPE(_svcur) == SVt_PVIO \ - && !(IoFLAGS(_svcur) & IOf_FAKE_DIRP))); \ - &(((XPV*) MUTABLE_PTR(SvANY(_svcur)))->xpv_cur); \ +# define SvCUR(sv) \ + (*({ const SV *const _svcur = (const SV *)(sv); \ + assert(PL_valid_types_PVX[SvTYPE(_svcur) & SVt_MASK]); \ + assert(!isGV_with_GP(_svcur)); \ + assert(!(SvTYPE(_svcur) == SVt_PVIO \ + && !(IoFLAGS(_svcur) & IOf_FAKE_DIRP))); \ + &(((XPV*) MUTABLE_PTR(SvANY(_svcur)))->xpv_cur); \ })) # endif -# define SvIVX(sv) \ - (*({ const SV *const _svivx = (const SV *)(sv); \ - assert(PL_valid_types_IVX[SvTYPE(_svivx) & SVt_MASK]); \ - assert(!isGV_with_GP(_svivx)); \ - &(((XPVIV*) MUTABLE_PTR(SvANY(_svivx)))->xiv_iv); \ +# define SvIVX(sv) \ + (*({ const SV *const _svivx = (const SV *)(sv); \ + assert(PL_valid_types_IVX[SvTYPE(_svivx) & SVt_MASK]); \ + assert(!isGV_with_GP(_svivx)); \ + &(((XPVIV*) MUTABLE_PTR(SvANY(_svivx)))->xiv_iv); \ })) -# define SvUVX(sv) \ - (*({ const SV *const _svuvx = (const SV *)(sv); \ - assert(PL_valid_types_IVX[SvTYPE(_svuvx) & SVt_MASK]); \ - assert(!isGV_with_GP(_svuvx)); \ - &(((XPVUV*) MUTABLE_PTR(SvANY(_svuvx)))->xuv_uv); \ +# define SvUVX(sv) \ + (*({ const SV *const _svuvx = (const SV *)(sv); \ + assert(PL_valid_types_IVX[SvTYPE(_svuvx) & SVt_MASK]); \ + assert(!isGV_with_GP(_svuvx)); \ + &(((XPVUV*) MUTABLE_PTR(SvANY(_svuvx)))->xuv_uv); \ })) -# define SvNVX(sv) \ - (*({ const SV *const _svnvx = (const SV *)(sv); \ - assert(PL_valid_types_NVX[SvTYPE(_svnvx) & SVt_MASK]); \ - assert(!isGV_with_GP(_svnvx)); \ - &(((XPVNV*) MUTABLE_PTR(SvANY(_svnvx)))->xnv_u.xnv_nv); \ +# define SvNVX(sv) \ + (*({ const SV *const _svnvx = (const SV *)(sv); \ + assert(PL_valid_types_NVX[SvTYPE(_svnvx) & SVt_MASK]); \ + assert(!isGV_with_GP(_svnvx)); \ + &(((XPVNV*) MUTABLE_PTR(SvANY(_svnvx)))->xnv_u.xnv_nv); \ })) -# define SvRV(sv) \ - (*({ SV *const _svrv = MUTABLE_SV(sv); \ - assert(PL_valid_types_RV[SvTYPE(_svrv) & SVt_MASK]); \ - assert(!isGV_with_GP(_svrv)); \ - assert(!(SvTYPE(_svrv) == SVt_PVIO \ - && !(IoFLAGS(_svrv) & IOf_FAKE_DIRP))); \ - &((_svrv)->sv_u.svu_rv); \ +# define SvRV(sv) \ + (*({ SV *const _svrv = MUTABLE_SV(sv); \ + assert(PL_valid_types_RV[SvTYPE(_svrv) & SVt_MASK]); \ + assert(!isGV_with_GP(_svrv)); \ + assert(!(SvTYPE(_svrv) == SVt_PVIO \ + && !(IoFLAGS(_svrv) & IOf_FAKE_DIRP))); \ + &((_svrv)->sv_u.svu_rv); \ })) -# define SvRV_const(sv) \ - ({ const SV *const _svrv = (const SV *)(sv); \ - assert(PL_valid_types_RV[SvTYPE(_svrv) & SVt_MASK]); \ - assert(!isGV_with_GP(_svrv)); \ - assert(!(SvTYPE(_svrv) == SVt_PVIO \ - && !(IoFLAGS(_svrv) & IOf_FAKE_DIRP))); \ - (_svrv)->sv_u.svu_rv; \ +# define SvRV_const(sv) \ + ({ const SV *const _svrv = (const SV *)(sv); \ + assert(PL_valid_types_RV[SvTYPE(_svrv) & SVt_MASK]); \ + assert(!isGV_with_GP(_svrv)); \ + assert(!(SvTYPE(_svrv) == SVt_PVIO \ + && !(IoFLAGS(_svrv) & IOf_FAKE_DIRP))); \ + (_svrv)->sv_u.svu_rv; \ }) -# define SvMAGIC(sv) \ - (*({ const SV *const _svmagic = (const SV *)(sv); \ - assert(SvTYPE(_svmagic) >= SVt_PVMG); \ +# define SvMAGIC(sv) \ + (*({ const SV *const _svmagic = (const SV *)(sv); \ + assert(SvTYPE(_svmagic) >= SVt_PVMG); \ &(((XPVMG*) MUTABLE_PTR(SvANY(_svmagic)))->xmg_u.xmg_magic); \ })) -# define SvSTASH(sv) \ - (*({ const SV *const _svstash = (const SV *)(sv); \ - assert(SvTYPE(_svstash) >= SVt_PVMG); \ - &(((XPVMG*) MUTABLE_PTR(SvANY(_svstash)))->xmg_stash); \ +# define SvSTASH(sv) \ + (*({ const SV *const _svstash = (const SV *)(sv); \ + assert(SvTYPE(_svstash) >= SVt_PVMG); \ + &(((XPVMG*) MUTABLE_PTR(SvANY(_svstash)))->xmg_stash); \ })) # else /* Below is not DEBUGGING or can't use brace groups */ # define SvPVX(sv) ((sv)->sv_u.svu_pv) @@ -1390,21 +1390,21 @@ object type. Exposed to perl code via Internals::SvREADONLY(). # define SvNVX(sv) ((XPVNV*) SvANY(sv))->xnv_u.xnv_nv # define SvRV(sv) ((sv)->sv_u.svu_rv) # define SvRV_const(sv) (0 + (sv)->sv_u.svu_rv) -# define SvMAGIC(sv) ((XPVMG*) SvANY(sv))->xmg_u.xmg_magic -# define SvSTASH(sv) ((XPVMG*) SvANY(sv))->xmg_stash +# define SvMAGIC(sv) ((XPVMG*) SvANY(sv))->xmg_u.xmg_magic +# define SvSTASH(sv) ((XPVMG*) SvANY(sv))->xmg_stash # endif #endif #ifndef PERL_POISON /* Given that these two are new, there can't be any existing code using them * as LVALUEs, so prevent that from happening */ -# define SvPVX_mutable(sv) ((char *)((sv)->sv_u.svu_pv)) -# define SvPVX_const(sv) ((const char*)((sv)->sv_u.svu_pv)) +# define SvPVX_mutable(sv) ((char *)((sv)->sv_u.svu_pv)) +# define SvPVX_const(sv) ((const char*)((sv)->sv_u.svu_pv)) #else /* Except for the poison code, which uses & to scribble over the pointer after free() is called. */ -# define SvPVX_mutable(sv) ((sv)->sv_u.svu_pv) -# define SvPVX_const(sv) ((const char*)((sv)->sv_u.svu_pv)) +# define SvPVX_mutable(sv) ((sv)->sv_u.svu_pv) +# define SvPVX_const(sv) ((const char*)((sv)->sv_u.svu_pv)) #endif #define SvIVXx(sv) SvIVX(sv) @@ -1426,7 +1426,7 @@ object type. Exposed to perl code via Internals::SvREADONLY(). } STMT_END #define SvIV_please_nomg(sv) \ (!(SvFLAGS(sv) & (SVf_IOK|SVp_IOK)) && (SvFLAGS(sv) & (SVf_NOK|SVf_POK)) \ - ? (sv_2iv_flags(sv, 0), SvIOK(sv)) \ + ? (sv_2iv_flags(sv, 0), SvIOK(sv)) \ : SvIOK(sv)) #define SvIV_set(sv, val) \ @@ -1449,8 +1449,8 @@ object type. Exposed to perl code via Internals::SvREADONLY(). STMT_START { \ SV * sv_ = MUTABLE_SV(sv); \ assert(PL_valid_types_PVX[SvTYPE(sv_) & SVt_MASK]); \ - assert(!isGV_with_GP(sv_)); \ - assert(!(SvTYPE(sv_) == SVt_PVIO \ + assert(!isGV_with_GP(sv_)); \ + assert(!(SvTYPE(sv_) == SVt_PVIO \ && !(IoFLAGS(sv_) & IOf_FAKE_DIRP))); \ ((sv_)->sv_u.svu_pv = (val)); \ } STMT_END @@ -1458,17 +1458,17 @@ object type. Exposed to perl code via Internals::SvREADONLY(). #define SvUV_set(sv, val) \ STMT_START { \ SV * sv_ = MUTABLE_SV(sv); \ - assert(PL_valid_types_IV_set[SvTYPE(sv_) & SVt_MASK]); \ - assert(!isGV_with_GP(sv_)); \ + assert(PL_valid_types_IV_set[SvTYPE(sv_) & SVt_MASK]); \ + assert(!isGV_with_GP(sv_)); \ (((XPVUV*)SvANY(sv_))->xuv_uv = (val)); \ } STMT_END #define SvRV_set(sv, val) \ STMT_START { \ SV * sv_ = MUTABLE_SV(sv); \ - assert(PL_valid_types_RV[SvTYPE(sv_) & SVt_MASK]); \ - assert(!isGV_with_GP(sv_)); \ - assert(!(SvTYPE(sv_) == SVt_PVIO \ + assert(PL_valid_types_RV[SvTYPE(sv_) & SVt_MASK]); \ + assert(!isGV_with_GP(sv_)); \ + assert(!(SvTYPE(sv_) == SVt_PVIO \ && !(IoFLAGS(sv_) & IOf_FAKE_DIRP))); \ ((sv_)->sv_u.svu_rv = (val)); \ } STMT_END @@ -1480,16 +1480,16 @@ object type. Exposed to perl code via Internals::SvREADONLY(). (((XPVMG*) SvANY(sv))->xmg_stash = (val)); } STMT_END #define SvCUR_set(sv, val) \ STMT_START { \ - assert(PL_valid_types_PVX[SvTYPE(sv) & SVt_MASK]); \ - assert(!isGV_with_GP(sv)); \ - assert(!(SvTYPE(sv) == SVt_PVIO \ + assert(PL_valid_types_PVX[SvTYPE(sv) & SVt_MASK]); \ + 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(PL_valid_types_PVX[SvTYPE(sv) & SVt_MASK]); \ - assert(!isGV_with_GP(sv)); \ - assert(!(SvTYPE(sv) == SVt_PVIO \ + assert(PL_valid_types_PVX[SvTYPE(sv) & SVt_MASK]); \ + 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) \ @@ -1509,7 +1509,7 @@ why not just use C if you're not sure about the provenance? */ #define SvPV_renew(sv,n) \ STMT_START { SvLEN_set(sv, n); \ - SvPV_set((sv), (MEM_WRAP_CHECK_(n,char) \ + SvPV_set((sv), (MEM_WRAP_CHECK_(n,char) \ (char*)saferealloc((Malloc_t)SvPVX(sv), \ (MEM_SIZE)((n))))); \ } STMT_END @@ -1540,46 +1540,46 @@ only be used as part of a larger operation =cut */ -#define SvPV_free(sv) \ - STMT_START { \ - assert(SvTYPE(sv) >= SVt_PV); \ - if (SvLEN(sv)) { \ - assert(!SvROK(sv)); \ - if(UNLIKELY(SvOOK(sv))) { \ - STRLEN zok; \ - SvOOK_offset(sv, zok); \ - SvPV_set(sv, SvPVX_mutable(sv) - zok); \ - SvFLAGS(sv) &= ~SVf_OOK; \ - } \ - Safefree(SvPVX(sv)); \ - } \ +#define SvPV_free(sv) \ + STMT_START { \ + assert(SvTYPE(sv) >= SVt_PV); \ + if (SvLEN(sv)) { \ + assert(!SvROK(sv)); \ + if(UNLIKELY(SvOOK(sv))) { \ + STRLEN zok; \ + SvOOK_offset(sv, zok); \ + SvPV_set(sv, SvPVX_mutable(sv) - zok); \ + SvFLAGS(sv) &= ~SVf_OOK; \ + } \ + Safefree(SvPVX(sv)); \ + } \ } STMT_END #ifdef PERL_CORE /* Code that crops up in three places to take a scalar and ready it to hold a reference */ -# define prepare_SV_for_RV(sv) \ - STMT_START { \ - if (SvTYPE(sv) < SVt_PV && SvTYPE(sv) != SVt_IV) \ - sv_upgrade(sv, SVt_IV); \ - else if (SvTYPE(sv) >= SVt_PV) { \ - SvPV_free(sv); \ - SvLEN_set(sv, 0); \ - SvCUR_set(sv, 0); \ - } \ +# define prepare_SV_for_RV(sv) \ + STMT_START { \ + if (SvTYPE(sv) < SVt_PV && SvTYPE(sv) != SVt_IV) \ + sv_upgrade(sv, SVt_IV); \ + else if (SvTYPE(sv) >= SVt_PV) { \ + SvPV_free(sv); \ + SvLEN_set(sv, 0); \ + SvCUR_set(sv, 0); \ + } \ } STMT_END #endif #ifndef PERL_CORE -# define BmFLAGS(sv) (SvTAIL(sv) ? FBMcf_TAIL : 0) +# define BmFLAGS(sv) (SvTAIL(sv) ? FBMcf_TAIL : 0) #endif #if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS) -# define BmUSEFUL(sv) \ - (*({ SV *const _bmuseful = MUTABLE_SV(sv); \ - assert(SvTYPE(_bmuseful) >= SVt_PVIV); \ - assert(SvVALID(_bmuseful)); \ - assert(!SvIOK(_bmuseful)); \ +# define BmUSEFUL(sv) \ + (*({ SV *const _bmuseful = MUTABLE_SV(sv); \ + assert(SvTYPE(_bmuseful) >= SVt_PVIV); \ + assert(SvVALID(_bmuseful)); \ + assert(!SvIOK(_bmuseful)); \ &(((XPVIV*) SvANY(_bmuseful))->xiv_u.xivu_iv); \ })) #else @@ -1588,51 +1588,51 @@ only be used as part of a larger operation #endif #ifndef PERL_CORE -# define BmRARE(sv) 0 -# define BmPREVIOUS(sv) 0 +# define BmRARE(sv) 0 +# define BmPREVIOUS(sv) 0 #endif -#define FmLINES(sv) ((XPVIV*) SvANY(sv))->xiv_iv +#define FmLINES(sv) ((XPVIV*) SvANY(sv))->xiv_iv -#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 LvSTARGOFF(sv) ((XPVLV*) SvANY(sv))->xlv_targoff_u.xlvu_stargoff -#define LvTARGLEN(sv) ((XPVLV*) SvANY(sv))->xlv_targlen -#define LvFLAGS(sv) ((XPVLV*) SvANY(sv))->xlv_flags +#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 LvSTARGOFF(sv) ((XPVLV*) SvANY(sv))->xlv_targoff_u.xlvu_stargoff +#define LvTARGLEN(sv) ((XPVLV*) SvANY(sv))->xlv_targlen +#define LvFLAGS(sv) ((XPVLV*) SvANY(sv))->xlv_flags #define LVf_NEG_OFF 0x1 #define LVf_NEG_LEN 0x2 #define LVf_OUT_OF_RANGE 0x4 -#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 -#define IoLINES(sv) ((XPVIO*) SvANY(sv))->xiv_u.xivu_iv -#define IoPAGE(sv) ((XPVIO*) SvANY(sv))->xio_page -#define IoPAGE_LEN(sv) ((XPVIO*) SvANY(sv))->xio_page_len +#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 +#define IoLINES(sv) ((XPVIO*) SvANY(sv))->xiv_u.xivu_iv +#define IoPAGE(sv) ((XPVIO*) SvANY(sv))->xio_page +#define IoPAGE_LEN(sv) ((XPVIO*) SvANY(sv))->xio_page_len #define IoLINES_LEFT(sv)((XPVIO*) SvANY(sv))->xio_lines_left -#define IoTOP_NAME(sv) ((XPVIO*) SvANY(sv))->xio_top_name -#define IoTOP_GV(sv) ((XPVIO*) SvANY(sv))->xio_top_gv -#define IoFMT_NAME(sv) ((XPVIO*) SvANY(sv))->xio_fmt_name -#define IoFMT_GV(sv) ((XPVIO*) SvANY(sv))->xio_fmt_gv +#define IoTOP_NAME(sv) ((XPVIO*) SvANY(sv))->xio_top_name +#define IoTOP_GV(sv) ((XPVIO*) SvANY(sv))->xio_top_gv +#define IoFMT_NAME(sv) ((XPVIO*) SvANY(sv))->xio_fmt_name +#define IoFMT_GV(sv) ((XPVIO*) SvANY(sv))->xio_fmt_gv #define IoBOTTOM_NAME(sv)((XPVIO*) SvANY(sv))->xio_bottom_name -#define IoBOTTOM_GV(sv) ((XPVIO*) SvANY(sv))->xio_bottom_gv -#define IoTYPE(sv) ((XPVIO*) SvANY(sv))->xio_type -#define IoFLAGS(sv) ((XPVIO*) SvANY(sv))->xio_flags +#define IoBOTTOM_GV(sv) ((XPVIO*) SvANY(sv))->xio_bottom_gv +#define IoTYPE(sv) ((XPVIO*) SvANY(sv))->xio_type +#define IoFLAGS(sv) ((XPVIO*) SvANY(sv))->xio_flags /* IoTYPE(sv) is a single character telling the type of I/O connection. */ -#define IoTYPE_RDONLY '<' -#define IoTYPE_WRONLY '>' -#define IoTYPE_RDWR '+' -#define IoTYPE_APPEND 'a' -#define IoTYPE_PIPE '|' -#define IoTYPE_STD '-' /* stdin or stdout */ -#define IoTYPE_SOCKET 's' -#define IoTYPE_CLOSED ' ' -#define IoTYPE_IMPLICIT 'I' /* stdin or stdout or stderr */ -#define IoTYPE_NUMERIC '#' /* fdopen */ +#define IoTYPE_RDONLY '<' +#define IoTYPE_WRONLY '>' +#define IoTYPE_RDWR '+' +#define IoTYPE_APPEND 'a' +#define IoTYPE_PIPE '|' +#define IoTYPE_STD '-' /* stdin or stdout */ +#define IoTYPE_SOCKET 's' +#define IoTYPE_CLOSED ' ' +#define IoTYPE_IMPLICIT 'I' /* stdin or stdout or stderr */ +#define IoTYPE_NUMERIC '#' /* fdopen */ /* =for apidoc_section $tainting @@ -1661,21 +1661,21 @@ attention to precisely which outputs are influenced by which inputs. =cut */ -#define sv_taint(sv) sv_magic((sv), NULL, PERL_MAGIC_taint, NULL, 0) +#define sv_taint(sv) sv_magic((sv), NULL, PERL_MAGIC_taint, NULL, 0) #ifdef NO_TAINT_SUPPORT # define SvTAINTED(sv) 0 #else -# define SvTAINTED(sv) (SvMAGICAL(sv) && sv_tainted(sv)) +# define SvTAINTED(sv) (SvMAGICAL(sv) && sv_tainted(sv)) #endif #define SvTAINTED_on(sv) STMT_START{ if(UNLIKELY(TAINTING_get)){sv_taint(sv);} }STMT_END #define SvTAINTED_off(sv) STMT_START{ if(UNLIKELY(TAINTING_get)){sv_untaint(sv);} }STMT_END -#define SvTAINT(sv) \ - STMT_START { \ +#define SvTAINT(sv) \ + STMT_START { \ assert(TAINTING_get || !TAINT_get); \ - if (UNLIKELY(TAINT_get)) \ - SvTAINTED_on(sv); \ + if (UNLIKELY(TAINT_get)) \ + SvTAINTED_on(sv); \ } STMT_END /* @@ -2047,7 +2047,7 @@ Returns the hash for C created by C>. #define SvSHARED_HASH(sv) (0 + SvSHARED_HEK_FROM_PV(SvPVX_const(sv))->hek_hash) /* flag values for sv_*_flags functions */ -#define SV_UTF8_NO_ENCODING 0 /* No longer used */ +#define SV_UTF8_NO_ENCODING 0 /* No longer used */ /* =for apidoc AmnhD||SV_UTF8_NO_ENCODING @@ -2055,50 +2055,50 @@ Returns the hash for C created by C>. =cut */ -#define SV_IMMEDIATE_UNREF 1 -#define SV_GMAGIC 2 -#define SV_COW_DROP_PV 4 -#define SV_NOSTEAL 16 -#define SV_CONST_RETURN 32 -#define SV_MUTABLE_RETURN 64 -#define SV_SMAGIC 128 -#define SV_HAS_TRAILING_NUL 256 -#define SV_COW_SHARED_HASH_KEYS 512 +#define SV_IMMEDIATE_UNREF 1 +#define SV_GMAGIC 2 +#define SV_COW_DROP_PV 4 +#define SV_NOSTEAL 16 +#define SV_CONST_RETURN 32 +#define SV_MUTABLE_RETURN 64 +#define SV_SMAGIC 128 +#define SV_HAS_TRAILING_NUL 256 +#define SV_COW_SHARED_HASH_KEYS 512 /* This one is only enabled for PERL_OLD_COPY_ON_WRITE */ /* XXX This flag actually enabled for any COW. But it appears not to do anything. Can we just remove it? Or will it serve some future purpose. */ -#define SV_COW_OTHER_PVS 1024 +#define SV_COW_OTHER_PVS 1024 /* Make sv_2pv_flags return NULL if something is undefined. */ -#define SV_UNDEF_RETURNS_NULL 2048 +#define SV_UNDEF_RETURNS_NULL 2048 /* Tell sv_utf8_upgrade() to not check to see if an upgrade is really needed. * This is used when the caller has already determined it is, and avoids * redundant work */ -#define SV_FORCE_UTF8_UPGRADE 4096 +#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 -#define SV_CATBYTES 16384 -#define SV_CATUTF8 32768 +#define SV_SKIP_OVERLOAD 8192 +#define SV_CATBYTES 16384 +#define SV_CATUTF8 32768 /* 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. */ #ifdef PERL_CORE # ifndef SV_DO_COW_SVSETSV -# define SV_DO_COW_SVSETSV SV_COW_SHARED_HASH_KEYS|SV_COW_OTHER_PVS +# define SV_DO_COW_SVSETSV SV_COW_SHARED_HASH_KEYS|SV_COW_OTHER_PVS # endif #endif #ifndef SV_DO_COW_SVSETSV -# define SV_DO_COW_SVSETSV 0 +# define SV_DO_COW_SVSETSV 0 #endif -#define sv_unref(sv) sv_unref_flags(sv, 0) -#define sv_force_normal(sv) sv_force_normal_flags(sv, 0) -#define sv_usepvn(sv, p, l) sv_usepvn_flags(sv, p, l, 0) -#define sv_usepvn_mg(sv, p, l) sv_usepvn_flags(sv, p, l, SV_SMAGIC) +#define sv_unref(sv) sv_unref_flags(sv, 0) +#define sv_force_normal(sv) sv_force_normal_flags(sv, 0) +#define sv_usepvn(sv, p, l) sv_usepvn_flags(sv, p, l, 0) +#define sv_usepvn_mg(sv, p, l) sv_usepvn_flags(sv, p, l, SV_SMAGIC) /* =for apidoc Am|void|SV_CHECK_THINKFIRST_COW_DROP|SV * sv @@ -2116,19 +2116,19 @@ other encumbrances that would be problematic when changing C. sv_force_normal_flags(sv, SV_COW_DROP_PV) #ifdef PERL_COPY_ON_WRITE -# define SvCANCOW(sv) \ - (SvIsCOW(sv) \ +# define SvCANCOW(sv) \ + (SvIsCOW(sv) \ ? SvLEN(sv) ? CowREFCNT(sv) != SV_COW_REFCNT_MAX : 1 \ : (SvFLAGS(sv) & CAN_COW_MASK) == CAN_COW_FLAGS \ && SvCUR(sv)+1 < SvLEN(sv)) /* Note: To allow 256 COW "copies", a refcnt of 0 means 1. */ -# define CowREFCNT(sv) (*(U8 *)(SvPVX(sv)+SvLEN(sv)-1)) -# define SV_COW_REFCNT_MAX nBIT_UMAX(sizeof(U8) * CHARBITS) -# define CAN_COW_MASK (SVf_POK|SVf_ROK|SVp_POK|SVf_FAKE| \ +# define CowREFCNT(sv) (*(U8 *)(SvPVX(sv)+SvLEN(sv)-1)) +# define SV_COW_REFCNT_MAX nBIT_UMAX(sizeof(U8) * CHARBITS) +# define CAN_COW_MASK (SVf_POK|SVf_ROK|SVp_POK|SVf_FAKE| \ SVf_OOK|SVf_BREAK|SVf_READONLY|SVf_PROTECT) #endif -#define CAN_COW_FLAGS (SVp_POK|SVf_POK) +#define CAN_COW_FLAGS (SVp_POK|SVf_POK) /* =for apidoc Am|void|SV_CHECK_THINKFIRST|SV * sv @@ -2190,36 +2190,36 @@ immediately written again. #define sv_collxfrm(sv, nxp) sv_collxfrm_flags(sv, nxp, SV_GMAGIC) #define sv_2bool(sv) sv_2bool_flags(sv, SV_GMAGIC) #define sv_2bool_nomg(sv) sv_2bool_flags(sv, 0) -#define sv_insert(bigstr, offset, len, little, littlelen) \ - Perl_sv_insert_flags(aTHX_ (bigstr),(offset), (len), (little), \ +#define sv_insert(bigstr, offset, len, little, littlelen) \ + Perl_sv_insert_flags(aTHX_ (bigstr),(offset), (len), (little), \ (littlelen), SV_GMAGIC) #define sv_mortalcopy(sv) \ Perl_sv_mortalcopy_flags(aTHX_ sv, SV_GMAGIC|SV_DO_COW_SVSETSV) -#define sv_cathek(sv,hek) \ - STMT_START { \ - HEK * const bmxk = hek; \ - sv_catpvn_flags(sv, HEK_KEY(bmxk), HEK_LEN(bmxk), \ +#define sv_cathek(sv,hek) \ + STMT_START { \ + HEK * const bmxk = hek; \ + sv_catpvn_flags(sv, HEK_KEY(bmxk), HEK_LEN(bmxk), \ HEK_UTF8(bmxk) ? SV_CATUTF8 : SV_CATBYTES); \ } STMT_END /* Should be named SvCatPVN_utf8_upgrade? */ -#define sv_catpvn_nomg_utf8_upgrade(dsv, sstr, slen, nsv) \ - STMT_START { \ - if (!(nsv)) \ - nsv = newSVpvn_flags(sstr, slen, SVs_TEMP); \ - else \ - sv_setpvn(nsv, sstr, slen); \ - SvUTF8_off(nsv); \ - sv_utf8_upgrade(nsv); \ - sv_catsv_nomg(dsv, nsv); \ +#define sv_catpvn_nomg_utf8_upgrade(dsv, sstr, slen, nsv) \ + STMT_START { \ + if (!(nsv)) \ + nsv = newSVpvn_flags(sstr, slen, SVs_TEMP); \ + else \ + sv_setpvn(nsv, sstr, slen); \ + SvUTF8_off(nsv); \ + sv_utf8_upgrade(nsv); \ + sv_catsv_nomg(dsv, nsv); \ } STMT_END #define sv_catpvn_nomg_maybeutf8(dsv, sstr, len, is_utf8) \ sv_catpvn_flags(dsv, sstr, len, (is_utf8)?SV_CATUTF8:SV_CATBYTES) #if defined(PERL_CORE) || defined(PERL_EXT) -# define sv_or_pv_len_utf8(sv, pv, bytelen) \ - (SvGAMAGIC(sv) \ - ? utf8_length((U8 *)(pv), (U8 *)(pv)+(bytelen)) \ +# define sv_or_pv_len_utf8(sv, pv, bytelen) \ + (SvGAMAGIC(sv) \ + ? utf8_length((U8 *)(pv), (U8 *)(pv)+(bytelen)) \ : sv_len_utf8(sv)) #endif @@ -2233,7 +2233,7 @@ for the original SV is incremented. =cut */ -#define newRV_inc(sv) newRV(sv) +#define newRV_inc(sv) newRV(sv) /* the following macros update any magic values this C is associated with */ @@ -2310,17 +2310,17 @@ that already have a PV buffer allocated, but no SvTHINKFIRST. #define SvSETMAGIC(x) STMT_START { if (UNLIKELY(SvSMAGICAL(x))) mg_set(x); } STMT_END #define SvSetSV_and(dst,src,finally) \ - STMT_START { \ + STMT_START { \ SV * src_ = src; \ SV * dst_ = dst; \ if (LIKELY((dst_) != (src_))) { \ sv_setsv(dst_, src_); \ - finally; \ - } \ + finally; \ + } \ } STMT_END #define SvSetSV_nosteal_and(dst,src,finally) \ - STMT_START { \ + STMT_START { \ SV * src_ = src; \ SV * dst_ = dst; \ if (LIKELY((dst_) != (src_))) { \ @@ -2328,8 +2328,8 @@ that already have a PV buffer allocated, but no SvTHINKFIRST. SV_GMAGIC \ | SV_NOSTEAL \ | SV_DO_COW_SVSETSV); \ - finally; \ - } \ + finally; \ + } \ } STMT_END #define SvSetSV(dst,src) \ @@ -2409,16 +2409,16 @@ Returns a boolean as to whether or not C is a GV with a pointer to a GP =cut */ #define isGV_with_GP(pwadak) \ - (((SvFLAGS(pwadak) & (SVp_POK|SVpgv_GP)) == SVpgv_GP) \ + (((SvFLAGS(pwadak) & (SVp_POK|SVpgv_GP)) == SVpgv_GP) \ && (SvTYPE(pwadak) == SVt_PVGV || SvTYPE(pwadak) == SVt_PVLV)) #define isGV_with_GP_on(sv) \ - STMT_START { \ + STMT_START { \ SV * sv_ = MUTABLE_SV(sv); \ assert (SvTYPE(sv_) == SVt_PVGV || SvTYPE(sv_) == SVt_PVLV); \ - assert (!SvPOKp(sv_)); \ - assert (!SvIOKp(sv_)); \ - (SvFLAGS(sv_) |= SVpgv_GP); \ + assert (!SvPOKp(sv_)); \ + assert (!SvIOKp(sv_)); \ + (SvFLAGS(sv_) |= SVpgv_GP); \ } STMT_END #define isGV_with_GP_off(sv) \ @@ -2426,8 +2426,8 @@ Returns a boolean as to whether or not C is a GV with a pointer to a GP SV * sv_ = MUTABLE_SV(sv); \ assert (SvTYPE(sv_) == SVt_PVGV || SvTYPE(sv_) == SVt_PVLV); \ assert (!SvPOKp(sv_)); \ - assert (!SvIOKp(sv_)); \ - (SvFLAGS(sv_) &= ~SVpgv_GP); \ + assert (!SvIOKp(sv_)); \ + (SvFLAGS(sv_) &= ~SVpgv_GP); \ } STMT_END #ifdef PERL_CORE @@ -2435,7 +2435,7 @@ Returns a boolean as to whether or not C is a GV with a pointer to a GP (isGV(kadawp) || (SvROK(kadawp) && SvTYPE(SvRV(kadawp)) == SVt_PVCV)) #endif #define isREGEXP(sv) \ - (SvTYPE(sv) == SVt_REGEXP \ + (SvTYPE(sv) == SVt_REGEXP \ || (SvFLAGS(sv) & (SVTYPEMASK|SVpgv_GP|SVf_FAKE)) \ == (SVt_PVLV|SVf_FAKE)) @@ -2507,41 +2507,41 @@ Evaluates C more than once. Sets C to 0 if C is false. 10:28 <@Nicholas> metabatman 10:28 <+meta> Nicholas: crash */ -# define SvOOK_offset(sv, offset) STMT_START { \ - STATIC_ASSERT_STMT(sizeof(offset) == sizeof(STRLEN)); \ - if (SvOOK(sv)) { \ - const U8 *_crash = (U8*)SvPVX_const(sv); \ - (offset) = *--_crash; \ - if (!(offset)) { \ - _crash -= sizeof(STRLEN); \ - Copy(_crash, (U8 *)&(offset), sizeof(STRLEN), U8); \ - } \ - { \ - /* Validate the preceding buffer's sentinels to \ - verify that no-one is using it. */ \ +# define SvOOK_offset(sv, offset) STMT_START { \ + STATIC_ASSERT_STMT(sizeof(offset) == sizeof(STRLEN)); \ + if (SvOOK(sv)) { \ + const U8 *_crash = (U8*)SvPVX_const(sv); \ + (offset) = *--_crash; \ + if (!(offset)) { \ + _crash -= sizeof(STRLEN); \ + Copy(_crash, (U8 *)&(offset), sizeof(STRLEN), U8); \ + } \ + { \ + /* Validate the preceding buffer's sentinels to \ + verify that no-one is using it. */ \ const U8 *const _bonk = (U8*)SvPVX_const(sv) - (offset);\ - while (_crash > _bonk) { \ - --_crash; \ - assert (*_crash == (U8)PTR2UV(_crash)); \ - } \ - } \ - } else { \ - (offset) = 0; \ - } \ + while (_crash > _bonk) { \ + --_crash; \ + assert (*_crash == (U8)PTR2UV(_crash)); \ + } \ + } \ + } else { \ + (offset) = 0; \ + } \ } STMT_END #else /* This is the same code, but avoids using any temporary variables: */ -# define SvOOK_offset(sv, offset) STMT_START { \ - STATIC_ASSERT_STMT(sizeof(offset) == sizeof(STRLEN)); \ - if (SvOOK(sv)) { \ - (offset) = ((U8*)SvPVX_const(sv))[-1]; \ - if (!(offset)) { \ - Copy(SvPVX_const(sv) - 1 - sizeof(STRLEN), \ - (U8*)&(offset), sizeof(STRLEN), U8); \ - } \ - } else { \ - (offset) = 0; \ - } \ +# define SvOOK_offset(sv, offset) STMT_START { \ + STATIC_ASSERT_STMT(sizeof(offset) == sizeof(STRLEN)); \ + if (SvOOK(sv)) { \ + (offset) = ((U8*)SvPVX_const(sv))[-1]; \ + if (!(offset)) { \ + Copy(SvPVX_const(sv) - 1 - sizeof(STRLEN), \ + (U8*)&(offset), sizeof(STRLEN), U8); \ + } \ + } else { \ + (offset) = 0; \ + } \ } STMT_END #endif @@ -2553,7 +2553,7 @@ Create a new IO, setting the reference count to 1. =cut */ -#define newIO() MUTABLE_IO(newSV_type(SVt_PVIO)) +#define newIO() MUTABLE_IO(newSV_type(SVt_PVIO)) #if defined(PERL_CORE) || defined(PERL_EXT) diff --git a/thread.h b/thread.h index 5a2b3af6192ad..7614f96ebf894 100644 --- a/thread.h +++ b/thread.h @@ -19,17 +19,17 @@ #else # ifdef OLD_PTHREADS_API /* Here be dragons. */ # define DETACH(t) \ - STMT_START { \ - int _eC_; \ - if ((_eC_ = pthread_detach(&(t)->self))) { \ - MUTEX_UNLOCK(&(t)->mutex); \ - Perl_croak_nocontext("panic: DETACH (%d) [%s:%d]", \ - _eC_, __FILE__, __LINE__); \ - } \ + STMT_START { \ + int _eC_; \ + if ((_eC_ = pthread_detach(&(t)->self))) { \ + MUTEX_UNLOCK(&(t)->mutex); \ + Perl_croak_nocontext("panic: DETACH (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ + } \ } STMT_END -# define PERL_GET_CONTEXT Perl_get_context() -# define PERL_SET_CONTEXT(t) Perl_set_context((void*)t) +# define PERL_GET_CONTEXT Perl_get_context() +# define PERL_SET_CONTEXT(t) Perl_set_context((void*)t) # define PTHREAD_GETSPECIFIC_INT # ifdef OEMVS @@ -48,7 +48,7 @@ # if defined(__hpux) && defined(__ux_version) && __ux_version <= 1020 # define pthread_attr_init(a) pthread_attr_create(a) /* XXX pthread_setdetach_np() missing in DCE threads on HP-UX 10.20 */ -# define PTHREAD_ATTR_SETDETACHSTATE(a,s) (0) +# define PTHREAD_ATTR_SETDETACHSTATE(a,s) (0) # define PTHREAD_CREATE(t,a,s,d) pthread_create(t,a,s,d) # define pthread_key_create(k,d) pthread_keycreate(k,(pthread_destructor_t)(d)) # define pthread_mutexattr_init(a) pthread_mutexattr_create(a) @@ -98,58 +98,58 @@ /* #include is in perl.h #ifdef I_MACH_CTHREADS */ #define MUTEX_INIT(m) \ - STMT_START { \ - *m = mutex_alloc(); \ - if (*m) { \ - mutex_init(*m); \ - } else { \ - Perl_croak_nocontext("panic: MUTEX_INIT [%s:%d]", \ - __FILE__, __LINE__); \ - } \ + STMT_START { \ + *m = mutex_alloc(); \ + if (*m) { \ + mutex_init(*m); \ + } else { \ + Perl_croak_nocontext("panic: MUTEX_INIT [%s:%d]", \ + __FILE__, __LINE__); \ + } \ } STMT_END -#define MUTEX_LOCK(m) mutex_lock(*m) -#define MUTEX_UNLOCK(m) mutex_unlock(*m) +#define MUTEX_LOCK(m) mutex_lock(*m) +#define MUTEX_UNLOCK(m) mutex_unlock(*m) #define MUTEX_DESTROY(m) \ - STMT_START { \ - mutex_free(*m); \ - *m = 0; \ + STMT_START { \ + mutex_free(*m); \ + *m = 0; \ } STMT_END #define COND_INIT(c) \ - STMT_START { \ - *c = condition_alloc(); \ - if (*c) { \ - condition_init(*c); \ - } \ - else { \ - Perl_croak_nocontext("panic: COND_INIT [%s:%d]", \ - __FILE__, __LINE__); \ - } \ + STMT_START { \ + *c = condition_alloc(); \ + if (*c) { \ + condition_init(*c); \ + } \ + else { \ + Perl_croak_nocontext("panic: COND_INIT [%s:%d]", \ + __FILE__, __LINE__); \ + } \ } STMT_END -#define COND_SIGNAL(c) condition_signal(*c) -#define COND_BROADCAST(c) condition_broadcast(*c) -#define COND_WAIT(c, m) condition_wait(*c, *m) +#define COND_SIGNAL(c) condition_signal(*c) +#define COND_BROADCAST(c) condition_broadcast(*c) +#define COND_WAIT(c, m) condition_wait(*c, *m) #define COND_DESTROY(c) \ - STMT_START { \ - condition_free(*c); \ - *c = 0; \ + STMT_START { \ + condition_free(*c); \ + *c = 0; \ } STMT_END -#define THREAD_RET_TYPE any_t +#define THREAD_RET_TYPE any_t -#define DETACH(t) cthread_detach(t->self) -#define JOIN(t, avp) (*(avp) = MUTABLE_AV(cthread_join(t->self))) +#define DETACH(t) cthread_detach(t->self) +#define JOIN(t, avp) (*(avp) = MUTABLE_AV(cthread_join(t->self))) -#define PERL_SET_CONTEXT(t) cthread_set_data(cthread_self(), t) -#define PERL_GET_CONTEXT cthread_data(cthread_self()) +#define PERL_SET_CONTEXT(t) cthread_set_data(cthread_self(), t) +#define PERL_GET_CONTEXT cthread_data(cthread_self()) -#define INIT_THREADS cthread_init() -#define YIELD cthread_yield() -#define ALLOC_THREAD_KEY NOOP -#define FREE_THREAD_KEY NOOP -#define SET_THREAD_SELF(thr) (thr->self = cthread_self()) +#define INIT_THREADS cthread_init() +#define YIELD cthread_yield() +#define ALLOC_THREAD_KEY NOOP +#define FREE_THREAD_KEY NOOP +#define SET_THREAD_SELF(thr) (thr->self = cthread_self()) #endif /* I_MACH_CTHREADS */ @@ -183,8 +183,8 @@ } STMT_END # else # define MUTEX_INIT(m) \ - STMT_START { \ - int _eC_; \ + STMT_START { \ + int _eC_; \ if ((_eC_ = pthread_mutex_init((m), pthread_mutexattr_default))) \ Perl_croak_nocontext("panic: MUTEX_INIT (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ @@ -200,76 +200,76 @@ # endif # define MUTEX_LOCK(m) \ - STMT_START { \ + STMT_START { \ dSAVE_ERRNO; \ - int _eC_; \ - if ((_eC_ = perl_pthread_mutex_lock((m)))) \ + int _eC_; \ + if ((_eC_ = perl_pthread_mutex_lock((m)))) \ Perl_croak_nocontext("panic: MUTEX_LOCK (%d) [%s:%d]",\ - _eC_, __FILE__, __LINE__); \ + _eC_, __FILE__, __LINE__); \ RESTORE_ERRNO; \ } STMT_END # define MUTEX_UNLOCK(m) \ - STMT_START { \ + STMT_START { \ dSAVE_ERRNO; /* Shouldn't be necessary as panics if fails */\ - int _eC_; \ + int _eC_; \ if ((_eC_ = perl_pthread_mutex_unlock((m)))) { \ Perl_croak_nocontext( \ "panic: MUTEX_UNLOCK (%d) [%s:%d]", \ - _eC_, __FILE__, __LINE__); \ + _eC_, __FILE__, __LINE__); \ } \ RESTORE_ERRNO; \ } STMT_END # define MUTEX_DESTROY(m) \ - STMT_START { \ - int _eC_; \ + STMT_START { \ + int _eC_; \ if ((_eC_ = pthread_mutex_destroy((m)))) { \ - Perl_croak_nocontext("panic: MUTEX_DESTROY (%d) [%s:%d]", \ - _eC_, __FILE__, __LINE__); \ + Perl_croak_nocontext("panic: MUTEX_DESTROY (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } \ } STMT_END #endif /* MUTEX_INIT */ #ifndef COND_INIT # define COND_INIT(c) \ - STMT_START { \ - int _eC_; \ - if ((_eC_ = pthread_cond_init((c), pthread_condattr_default))) \ - Perl_croak_nocontext("panic: COND_INIT (%d) [%s:%d]", \ - _eC_, __FILE__, __LINE__); \ + STMT_START { \ + int _eC_; \ + if ((_eC_ = pthread_cond_init((c), pthread_condattr_default))) \ + Perl_croak_nocontext("panic: COND_INIT (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END # define COND_SIGNAL(c) \ - STMT_START { \ - int _eC_; \ - if ((_eC_ = pthread_cond_signal((c)))) \ - Perl_croak_nocontext("panic: COND_SIGNAL (%d) [%s:%d]", \ - _eC_, __FILE__, __LINE__); \ + STMT_START { \ + int _eC_; \ + if ((_eC_ = pthread_cond_signal((c)))) \ + Perl_croak_nocontext("panic: COND_SIGNAL (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END # define COND_BROADCAST(c) \ - STMT_START { \ - int _eC_; \ - if ((_eC_ = pthread_cond_broadcast((c)))) \ - Perl_croak_nocontext("panic: COND_BROADCAST (%d) [%s:%d]", \ - _eC_, __FILE__, __LINE__); \ + STMT_START { \ + int _eC_; \ + if ((_eC_ = pthread_cond_broadcast((c)))) \ + Perl_croak_nocontext("panic: COND_BROADCAST (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END # define COND_WAIT(c, m) \ - STMT_START { \ - int _eC_; \ - if ((_eC_ = pthread_cond_wait((c), (m)))) \ - Perl_croak_nocontext("panic: COND_WAIT (%d) [%s:%d]", \ - _eC_, __FILE__, __LINE__); \ + STMT_START { \ + int _eC_; \ + if ((_eC_ = pthread_cond_wait((c), (m)))) \ + Perl_croak_nocontext("panic: COND_WAIT (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END # define COND_DESTROY(c) \ - STMT_START { \ - int _eC_; \ - if ((_eC_ = pthread_cond_destroy((c)))) \ - Perl_croak_nocontext("panic: COND_DESTROY (%d) [%s:%d]", \ - _eC_, __FILE__, __LINE__); \ + STMT_START { \ + int _eC_; \ + if ((_eC_ = pthread_cond_destroy((c)))) \ + Perl_croak_nocontext("panic: COND_DESTROY (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END #endif /* COND_INIT */ @@ -345,23 +345,23 @@ /* DETACH(t) must only be called while holding t->mutex */ #ifndef DETACH # define DETACH(t) \ - STMT_START { \ - int _eC_; \ - if ((_eC_ = pthread_detach((t)->self))) { \ - MUTEX_UNLOCK(&(t)->mutex); \ - Perl_croak_nocontext("panic: DETACH (%d) [%s:%d]", \ - _eC_, __FILE__, __LINE__); \ - } \ + STMT_START { \ + int _eC_; \ + if ((_eC_ = pthread_detach((t)->self))) { \ + MUTEX_UNLOCK(&(t)->mutex); \ + Perl_croak_nocontext("panic: DETACH (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ + } \ } STMT_END #endif /* DETACH */ #ifndef JOIN # define JOIN(t, avp) \ - STMT_START { \ - int _eC_; \ - if ((_eC_ = pthread_join((t)->self, (void**)(avp)))) \ - Perl_croak_nocontext("panic: pthread_join (%d) [%s:%d]", \ - _eC_, __FILE__, __LINE__); \ + STMT_START { \ + int _eC_; \ + if ((_eC_ = pthread_join((t)->self, (void**)(avp)))) \ + Perl_croak_nocontext("panic: pthread_join (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END #endif /* JOIN */ @@ -411,7 +411,7 @@ extern PERL_THREAD_LOCAL void *PL_current_context; /* else fall back to pthreads */ # ifndef PERL_GET_CONTEXT -# define PERL_GET_CONTEXT PTHREAD_GETSPECIFIC(PL_thr_key) +# define PERL_GET_CONTEXT PTHREAD_GETSPECIFIC(PL_thr_key) # endif /* For C++ extensions built on a system where the C compiler provides thread @@ -433,37 +433,37 @@ extern PERL_THREAD_LOCAL void *PL_current_context; #ifndef ALLOC_THREAD_KEY # define ALLOC_THREAD_KEY \ - STMT_START { \ - if (pthread_key_create(&PL_thr_key, 0)) { \ + STMT_START { \ + if (pthread_key_create(&PL_thr_key, 0)) { \ PERL_UNUSED_RESULT(write(2, STR_WITH_LEN("panic: pthread_key_create failed\n"))); \ - exit(1); \ - } \ + exit(1); \ + } \ } STMT_END #endif #ifndef FREE_THREAD_KEY # define FREE_THREAD_KEY \ - STMT_START { \ - pthread_key_delete(PL_thr_key); \ + STMT_START { \ + pthread_key_delete(PL_thr_key); \ } STMT_END #endif #ifndef PTHREAD_ATFORK # ifdef HAS_PTHREAD_ATFORK -# define PTHREAD_ATFORK(prepare,parent,child) \ +# define PTHREAD_ATFORK(prepare,parent,child) \ pthread_atfork(prepare,parent,child) # else -# define PTHREAD_ATFORK(prepare,parent,child) \ +# define PTHREAD_ATFORK(prepare,parent,child) \ NOOP # endif #endif #ifndef THREAD_RET_TYPE -# define THREAD_RET_TYPE void * +# define THREAD_RET_TYPE void * #endif /* THREAD_RET */ -# define LOCK_DOLLARZERO_MUTEX MUTEX_LOCK(&PL_dollarzero_mutex) -# define UNLOCK_DOLLARZERO_MUTEX MUTEX_UNLOCK(&PL_dollarzero_mutex) +# define LOCK_DOLLARZERO_MUTEX MUTEX_LOCK(&PL_dollarzero_mutex) +# define UNLOCK_DOLLARZERO_MUTEX MUTEX_UNLOCK(&PL_dollarzero_mutex) #endif /* USE_ITHREADS */ @@ -522,11 +522,11 @@ extern PERL_THREAD_LOCAL void *PL_current_context; /* THR, SET_THR, and dTHR are there for compatibility with old versions */ #ifndef THR -# define THR PERL_GET_THX +# define THR PERL_GET_THX #endif #ifndef SET_THR -# define SET_THR(t) PERL_SET_THX(t) +# define SET_THR(t) PERL_SET_THX(t) #endif #ifndef dTHR diff --git a/unixish.h b/unixish.h index 28ebcbe953820..eee8407de8ce5 100644 --- a/unixish.h +++ b/unixish.h @@ -18,88 +18,88 @@ #ifndef PERL_MICRO /* HAS_IOCTL: - * This symbol, if defined, indicates that the ioctl() routine is - * available to set I/O characteristics + * This symbol, if defined, indicates that the ioctl() routine is + * available to set I/O characteristics */ -#define HAS_IOCTL /**/ - +#define HAS_IOCTL /**/ + /* HAS_UTIME: - * This symbol, if defined, indicates that the routine utime() is - * available to update the access and modification times of files. + * This symbol, if defined, indicates that the routine utime() is + * available to update the access and modification times of files. */ -#define HAS_UTIME /**/ +#define HAS_UTIME /**/ /* HAS_GROUP - * This symbol, if defined, indicates that the getgrnam() and - * getgrgid() routines are available to get group entries. - * The getgrent() has a separate definition, HAS_GETGRENT. + * This symbol, if defined, indicates that the getgrnam() and + * getgrgid() routines are available to get group entries. + * The getgrent() has a separate definition, HAS_GETGRENT. */ -#define HAS_GROUP /**/ +#define HAS_GROUP /**/ /* HAS_PASSWD - * This symbol, if defined, indicates that the getpwnam() and - * getpwuid() routines are available to get password entries. - * The getpwent() has a separate definition, HAS_GETPWENT. + * This symbol, if defined, indicates that the getpwnam() and + * getpwuid() routines are available to get password entries. + * The getpwent() has a separate definition, HAS_GETPWENT. */ -#define HAS_PASSWD /**/ +#define HAS_PASSWD /**/ #define HAS_KILL #define HAS_WAIT #endif /* !PERL_MICRO */ - + /* USEMYBINMODE - * This symbol, if defined, indicates that the program should - * use the routine my_binmode(FILE *fp, char iotype) to insure - * that a file is in "binary" mode -- that is, that no translation - * of bytes occurs on read or write operations. + * This symbol, if defined, indicates that the program should + * use the routine my_binmode(FILE *fp, char iotype) to insure + * that a file is in "binary" mode -- that is, that no translation + * of bytes occurs on read or write operations. */ #undef USEMYBINMODE /* Stat_t: - * This symbol holds the type used to declare buffers for information - * returned by stat(). It's usually just struct stat. It may be necessary - * to include and to get any typedef'ed - * information. + * This symbol holds the type used to declare buffers for information + * returned by stat(). It's usually just struct stat. It may be necessary + * to include and to get any typedef'ed + * information. */ #define Stat_t struct stat /* USE_STAT_RDEV: - * This symbol is defined if this system has a stat structure declaring - * st_rdev + * This symbol is defined if this system has a stat structure declaring + * st_rdev */ -#define USE_STAT_RDEV /**/ +#define USE_STAT_RDEV /**/ /* ACME_MESS: - * This symbol, if defined, indicates that error messages should be - * should be generated in a format that allows the use of the Acme - * GUI/editor's autofind feature. + * This symbol, if defined, indicates that error messages should be + * should be generated in a format that allows the use of the Acme + * GUI/editor's autofind feature. */ -#undef ACME_MESS /**/ +#undef ACME_MESS /**/ /* UNLINK_ALL_VERSIONS: - * This symbol, if defined, indicates that the program should arrange - * to remove all versions of a file if unlink() is called. This is - * probably only relevant for VMS. + * This symbol, if defined, indicates that the program should arrange + * to remove all versions of a file if unlink() is called. This is + * probably only relevant for VMS. */ -/* #define UNLINK_ALL_VERSIONS / **/ +/* #define UNLINK_ALL_VERSIONS / **/ /* VMS: - * This symbol, if defined, indicates that the program is running under - * VMS. It is currently automatically set by cpps running under VMS, - * and is included here for completeness only. + * This symbol, if defined, indicates that the program is running under + * VMS. It is currently automatically set by cpps running under VMS, + * and is included here for completeness only. */ -/* #define VMS / **/ +/* #define VMS / **/ /* ALTERNATE_SHEBANG: - * This symbol, if defined, contains a "magic" string which may be used - * as the first line of a Perl program designed to be executed directly - * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG - * begins with a character other then #, then Perl will only treat - * it as a command line if it finds the string "perl" in the first - * word; otherwise it's treated as the first line of code in the script. - * (IOW, Perl won't hand off to another interpreter via an alternate - * shebang sequence that might be legal Perl code.) + * This symbol, if defined, contains a "magic" string which may be used + * as the first line of a Perl program designed to be executed directly + * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG + * begins with a character other then #, then Perl will only treat + * it as a command line if it finds the string "perl" in the first + * word; otherwise it's treated as the first line of code in the script. + * (IOW, Perl won't hand off to another interpreter via an alternate + * shebang sequence that might be legal Perl code.) */ /* #define ALTERNATE_SHEBANG "#!" / **/ @@ -141,14 +141,14 @@ int afstat(int fd, struct stat *statb); amigaos4_init_fork_array(); \ amigaos4_init_environ_sema(); \ } STMT_END -#else +#else # define PLATFORM_SYS_TERM_ NOOP # define PLATFORM_SYS_INIT_ NOOP #endif #ifndef PERL_SYS_INIT_BODY -#define PERL_SYS_INIT_BODY(c,v) \ - MALLOC_CHECK_TAINT2(*c,*v) PERL_FPU_INIT; PERLIO_INIT; \ +#define PERL_SYS_INIT_BODY(c,v) \ + MALLOC_CHECK_TAINT2(*c,*v) PERL_FPU_INIT; PERLIO_INIT; \ MALLOC_INIT; PLATFORM_SYS_INIT_; #endif diff --git a/utf8.h b/utf8.h index e0b08ad6fb211..fff787846c7e2 100644 --- a/utf8.h +++ b/utf8.h @@ -197,7 +197,7 @@ the string is invariant. * following header file: */ # include "utfebcdic.h" -# else /* ! EBCDIC */ +# else /* ! EBCDIC */ START_EXTERN_C @@ -217,11 +217,11 @@ EXTCONST unsigned char PL_utf8skip[] = { /* 0x90 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* bogus: continuation byte */ /* 0xA0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* bogus: continuation byte */ /* 0xB0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* bogus: continuation byte */ -/* 0xC0 */ 2,2, /* overlong */ +/* 0xC0 */ 2,2, /* overlong */ /* 0xC2 */ 2,2,2,2,2,2,2,2,2,2,2,2,2,2, /* U+0080 to U+03FF */ /* 0xD0 */ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, /* U+0400 to U+07FF */ /* 0xE0 */ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, /* U+0800 to U+FFFF */ -/* 0xF0 */ 4,4,4,4,4,4,4,4,5,5,5,5,6,6, /* above BMP to 2**31 - 1 */ +/* 0xF0 */ 4,4,4,4,4,4,4,4,5,5,5,5,6,6, /* above BMP to 2**31 - 1 */ /* Perl extended (never was official UTF-8). Up to 36 bit */ /* 0xFE */ 7, /* More extended, Up to 72 bits (64-bit + reserved) */ @@ -296,21 +296,21 @@ adding no time nor space requirements to the implementation. The following table is from Unicode 3.2, plus the Perl extensions for above U+10FFFF - Code Points 1st Byte 2nd Byte 3rd 4th 5th 6th 7th 8th-13th + Code Points 1st Byte 2nd Byte 3rd 4th 5th 6th 7th 8th-13th - U+0000..U+007F 00..7F + U+0000..U+007F 00..7F U+0080..U+07FF * C2..DF 80..BF - U+0800..U+0FFF E0 * A0..BF 80..BF + U+0800..U+0FFF E0 * A0..BF 80..BF U+1000..U+CFFF E1..EC 80..BF 80..BF U+D000..U+D7FF ED 80..9F 80..BF U+D800..U+DFFF ED A0..BF 80..BF (surrogates) U+E000..U+FFFF EE..EF 80..BF 80..BF - U+10000..U+3FFFF F0 * 90..BF 80..BF 80..BF - U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF - U+100000..U+10FFFF F4 80..8F 80..BF 80..BF + U+10000..U+3FFFF F0 * 90..BF 80..BF 80..BF + U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF + U+100000..U+10FFFF F4 80..8F 80..BF 80..BF Below are above-Unicode code points - U+110000..U+13FFFF F4 90..BF 80..BF 80..BF - U+110000..U+1FFFFF F5..F7 80..BF 80..BF 80..BF + U+110000..U+13FFFF F4 90..BF 80..BF 80..BF + U+110000..U+1FFFFF F5..F7 80..BF 80..BF 80..BF U+200000..U+FFFFFF F8 * 88..BF 80..BF 80..BF 80..BF U+1000000..U+3FFFFFF F9..FB 80..BF 80..BF 80..BF 80..BF U+4000000..U+3FFFFFFF FC * 84..BF 80..BF 80..BF 80..BF 80..BF @@ -632,7 +632,7 @@ encoded as UTF-8. C is a native (ASCII or EBCDIC) code point if less than /* Is the UTF8-encoded byte 'c' the first byte of a two byte sequence? Use * UTF8_IS_NEXT_CHAR_DOWNGRADEABLE() instead if the input isn't known to * be well-formed. */ -#define UTF8_IS_DOWNGRADEABLE_START(c) (__ASSERT_(FITS_IN_8_BITS(c)) \ +#define UTF8_IS_DOWNGRADEABLE_START(c) (__ASSERT_(FITS_IN_8_BITS(c)) \ inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(c), \ UTF_MIN_START_BYTE, UTF_MIN_ABOVE_LATIN1_BYTE - 1)) @@ -673,7 +673,7 @@ uppercase/lowercase/titlecase/fold into. * =cut */ -#define UTF8_MAXBYTES_CASE \ +#define UTF8_MAXBYTES_CASE \ MAX(UTF8_MAXBYTES, UTF8_MAX_FOLD_CHAR_EXPAND * UNISKIP_BY_MSB_(20)) /* Rest of these are attributes of Unicode and perl's internals rather than the @@ -839,11 +839,11 @@ that it returns TRUE in each for the exact same set of bit patterns. It is valid on a subset of what UVCHR_IS_INVARIANT is valid on, so can just use that; and the compiler should optimize out anything extraneous given the implementation of the latter. */ -#define UTF8_IS_INVARIANT(c) UVCHR_IS_INVARIANT(ASSERT_NOT_PTR(c)) +#define UTF8_IS_INVARIANT(c) UVCHR_IS_INVARIANT(ASSERT_NOT_PTR(c)) /* Like the above, but its name implies a non-UTF8 input, which as the comments * above show, doesn't matter as to its implementation */ -#define NATIVE_BYTE_IS_INVARIANT(c) UVCHR_IS_INVARIANT(c) +#define NATIVE_BYTE_IS_INVARIANT(c) UVCHR_IS_INVARIANT(c) /* Misleadingly named: is the UTF8-encoded byte 'c' part of a variant sequence * in UTF-8? This is the inverse of UTF8_IS_INVARIANT. */ @@ -947,8 +947,8 @@ case any call to string overloading updates the internal UTF-8 encoding flag. && _is_in_locale_category(FALSE, -1))) \ && (! IN_BYTES)) -#define UNICODE_SURROGATE_FIRST 0xD800 -#define UNICODE_SURROGATE_LAST 0xDFFF +#define UNICODE_SURROGATE_FIRST 0xD800 +#define UNICODE_SURROGATE_LAST 0xDFFF /* =for apidoc Am|bool|UNICODE_IS_SURROGATE|const UV uv @@ -992,7 +992,7 @@ representation. =cut */ -#define UNICODE_REPLACEMENT 0xFFFD +#define UNICODE_REPLACEMENT 0xFFFD #define UNICODE_IS_REPLACEMENT(uv) UNLIKELY((UV) (uv) == UNICODE_REPLACEMENT) #define UTF8_IS_REPLACEMENT(s, send) \ UNLIKELY( \ @@ -1001,7 +1001,7 @@ representation. sizeof(REPLACEMENT_CHARACTER_UTF8) - 1)) /* Max legal code point according to Unicode */ -#define PERL_UNICODE_MAX 0x10FFFF +#define PERL_UNICODE_MAX 0x10FFFF /* @@ -1037,10 +1037,10 @@ this macro matches =cut - * 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 + * 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 */ #define UTF_START_BYTE_110000_ UTF_START_BYTE(PERL_UNICODE_MAX + 1, 21) #define UTF_FIRST_CONT_BYTE_110000_ \ @@ -1130,20 +1130,20 @@ point's representation. /* Largest code point we accept from external sources */ #define MAX_LEGAL_CP ((UV)IV_MAX) -#define UTF8_ALLOW_EMPTY 0x0001 /* Allow a zero length string */ +#define UTF8_ALLOW_EMPTY 0x0001 /* Allow a zero length string */ #define UTF8_GOT_EMPTY UTF8_ALLOW_EMPTY /* Allow first byte to be a continuation byte */ -#define UTF8_ALLOW_CONTINUATION 0x0002 -#define UTF8_GOT_CONTINUATION UTF8_ALLOW_CONTINUATION +#define UTF8_ALLOW_CONTINUATION 0x0002 +#define UTF8_GOT_CONTINUATION UTF8_ALLOW_CONTINUATION /* Unexpected non-continuation byte */ -#define UTF8_ALLOW_NON_CONTINUATION 0x0004 -#define UTF8_GOT_NON_CONTINUATION UTF8_ALLOW_NON_CONTINUATION +#define UTF8_ALLOW_NON_CONTINUATION 0x0004 +#define UTF8_GOT_NON_CONTINUATION UTF8_ALLOW_NON_CONTINUATION /* expecting more bytes than were available in the string */ -#define UTF8_ALLOW_SHORT 0x0008 -#define UTF8_GOT_SHORT UTF8_ALLOW_SHORT +#define UTF8_ALLOW_SHORT 0x0008 +#define UTF8_GOT_SHORT UTF8_ALLOW_SHORT /* Overlong sequence; i.e., the code point can be specified in fewer bytes. * First one will convert the overlong to the REPLACEMENT CHARACTER; second @@ -1155,9 +1155,9 @@ point's representation. #define UTF8_ALLOW_OVERFLOW 0x0080 #define UTF8_GOT_OVERFLOW UTF8_ALLOW_OVERFLOW -#define UTF8_DISALLOW_SURROGATE 0x0100 /* Unicode surrogates */ -#define UTF8_GOT_SURROGATE UTF8_DISALLOW_SURROGATE -#define UTF8_WARN_SURROGATE 0x0200 +#define UTF8_DISALLOW_SURROGATE 0x0100 /* Unicode surrogates */ +#define UTF8_GOT_SURROGATE UTF8_DISALLOW_SURROGATE +#define UTF8_WARN_SURROGATE 0x0200 /* Unicode non-character code points */ #define UTF8_DISALLOW_NONCHAR 0x0400 @@ -1165,9 +1165,9 @@ point's representation. #define UTF8_WARN_NONCHAR 0x0800 /* Super-set of Unicode: code points above the legal max */ -#define UTF8_DISALLOW_SUPER 0x1000 -#define UTF8_GOT_SUPER UTF8_DISALLOW_SUPER -#define UTF8_WARN_SUPER 0x2000 +#define UTF8_DISALLOW_SUPER 0x1000 +#define UTF8_GOT_SUPER UTF8_DISALLOW_SUPER +#define UTF8_WARN_SUPER 0x2000 /* The original UTF-8 standard did not define UTF-8 with start bytes of 0xFE or * 0xFF, though UTF-EBCDIC did. This allowed both versions to represent code @@ -1190,7 +1190,7 @@ point's representation. #define UTF8_DISALLOW_FE_FF UTF8_DISALLOW_PERL_EXTENDED #define UTF8_WARN_FE_FF UTF8_WARN_PERL_EXTENDED -#define UTF8_CHECK_ONLY 0x10000 +#define UTF8_CHECK_ONLY 0x10000 #define _UTF8_NO_CONFIDENCE_IN_CURLEN 0x20000 /* Internal core use only */ /* For backwards source compatibility. They do nothing, as the default now @@ -1225,10 +1225,10 @@ point's representation. #define UTF8_ALLOW_ANYUV 0 #define UTF8_ALLOW_DEFAULT UTF8_ALLOW_ANYUV -#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_PERL_EXTENDED 0x0008 /* Above 0x7FFF_FFFF */ +#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_PERL_EXTENDED 0x0008 /* Above 0x7FFF_FFFF */ #define UNICODE_WARN_ABOVE_31_BIT UNICODE_WARN_PERL_EXTENDED #define UNICODE_DISALLOW_SURROGATE 0x0010 #define UNICODE_DISALLOW_NONCHAR 0x0020 @@ -1256,11 +1256,11 @@ point's representation. /* 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_ALLOW_SUPER 0 +#define UNICODE_ALLOW_ANY 0 -#define UNICODE_BYTE_ORDER_MARK 0xFEFF -#define UNICODE_IS_BYTE_ORDER_MARK(uv) UNLIKELY((UV) (uv) \ +#define UNICODE_BYTE_ORDER_MARK 0xFEFF +#define UNICODE_IS_BYTE_ORDER_MARK(uv) UNLIKELY((UV) (uv) \ == UNICODE_BYTE_ORDER_MARK) #define LATIN_SMALL_LETTER_SHARP_S LATIN_SMALL_LETTER_SHARP_S_NATIVE @@ -1271,15 +1271,15 @@ point's representation. LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE_NATIVE #define LATIN_SMALL_LETTER_A_WITH_RING_ABOVE \ LATIN_SMALL_LETTER_A_WITH_RING_ABOVE_NATIVE -#define UNICODE_GREEK_CAPITAL_LETTER_SIGMA 0x03A3 -#define UNICODE_GREEK_SMALL_LETTER_FINAL_SIGMA 0x03C2 -#define UNICODE_GREEK_SMALL_LETTER_SIGMA 0x03C3 +#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 +#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_Y_WITH_DIAERESIS 0x0178 /* Also is title case */ #ifdef LATIN_CAPITAL_LETTER_SHARP_S_UTF8 -# define LATIN_CAPITAL_LETTER_SHARP_S 0x1E9E +# define LATIN_CAPITAL_LETTER_SHARP_S 0x1E9E #endif #define LATIN_CAPITAL_LETTER_I_WITH_DOT_ABOVE 0x130 #define LATIN_SMALL_LETTER_DOTLESS_I 0x131 @@ -1289,16 +1289,16 @@ point's representation. #define KELVIN_SIGN 0x212A #define ANGSTROM_SIGN 0x212B -#define UNI_DISPLAY_ISPRINT 0x0001 -#define UNI_DISPLAY_BACKSLASH 0x0002 -#define UNI_DISPLAY_BACKSPACE 0x0004 /* Allow \b when also +#define UNI_DISPLAY_ISPRINT 0x0001 +#define UNI_DISPLAY_BACKSLASH 0x0002 +#define UNI_DISPLAY_BACKSPACE 0x0004 /* Allow \b when also UNI_DISPLAY_BACKSLASH */ -#define UNI_DISPLAY_QQ (UNI_DISPLAY_ISPRINT \ +#define UNI_DISPLAY_QQ (UNI_DISPLAY_ISPRINT \ |UNI_DISPLAY_BACKSLASH \ |UNI_DISPLAY_BACKSPACE) /* Character classes could also allow \b, but not patterns in general */ -#define UNI_DISPLAY_REGEX (UNI_DISPLAY_ISPRINT|UNI_DISPLAY_BACKSLASH) +#define UNI_DISPLAY_REGEX (UNI_DISPLAY_ISPRINT|UNI_DISPLAY_BACKSLASH) /* Should be removed; maybe deprecated, but not used in CPAN */ #define SHARP_S_SKIP 2 diff --git a/utfebcdic.h b/utfebcdic.h index 9e4f96530ad1a..dbf76c61e942e 100644 --- a/utfebcdic.h +++ b/utfebcdic.h @@ -12,7 +12,7 @@ * * To summarize, the way it works is: * To convert an EBCDIC code point to UTF-EBCDIC: - * 1) convert to Unicode. No conversion is necesary for code points above + * 1) convert to Unicode. No conversion is necesary for code points above * 255, as Unicode and EBCDIC are identical in this range. For smaller * code points, the conversion is done by lookup in the PL_e2a table (with * inverse PL_a2e) in the generated file 'ebcdic_tables.h'. The 'a' @@ -20,36 +20,36 @@ * NATIVE_TO_LATIN1() and LATIN1_TO_NATIVE(), respectively to perform this * lookup. NATIVE_TO_UNI() and UNI_TO_NATIVE() are similarly used for any * input, and know to avoid the lookup for inputs above 255. - * 2) convert that to a utf8-like string called I8 ('I' stands for - * intermediate) with variant characters occupying multiple bytes. This - * step is similar to the utf8-creating step from Unicode, but the details - * are different. This transformation is called UTF8-Mod. There is a - * chart about the bit patterns in a comment later in this file. But - * essentially here are the differences: - * UTF8 I8 - * invariant byte starts with 0 starts with 0 or 100 - * continuation byte starts with 10 starts with 101 - * start byte same in both: if the code point requires N bytes, - * then the leading N bits are 1, followed by a 0. If - * all 8 bits in the first byte are 1, the code point - * will occupy 14 bytes (compared to 13 in Perl's - * extended UTF-8). This is incompatible with what - * tr16 implies should be the representation of code - * points 2**30 and above, but allows Perl to be able - * to represent all code points that fit in a 64-bit - * word in either our extended UTF-EBCDIC or UTF-8. - * 3) Use the algorithm in tr16 to convert each byte from step 2 into - * final UTF-EBCDIC. This is done by table lookup from a table - * constructed from the algorithm, reproduced in ebcdic_tables.h as - * PL_utf2e, with its inverse being PL_e2utf. They are constructed so that - * all EBCDIC invariants remain invariant, but no others do, and the first - * byte of a variant will always have its upper bit set. But note that - * the upper bit of some invariants is also 1. The table also is designed - * so that lexically comparing two UTF-EBCDIC-variant characters yields - * the Unicode code point order. (To get native code point order, one has - * to convert the latin1-range characters to their native code point - * value.) The macros NATIVE_UTF8_TO_I8() and I8_TO_NATIVE_UTF8() do the - * table lookups. + * 2) convert that to a utf8-like string called I8 ('I' stands for + * intermediate) with variant characters occupying multiple bytes. This + * step is similar to the utf8-creating step from Unicode, but the details + * are different. This transformation is called UTF8-Mod. There is a + * chart about the bit patterns in a comment later in this file. But + * essentially here are the differences: + * UTF8 I8 + * invariant byte starts with 0 starts with 0 or 100 + * continuation byte starts with 10 starts with 101 + * start byte same in both: if the code point requires N bytes, + * then the leading N bits are 1, followed by a 0. If + * all 8 bits in the first byte are 1, the code point + * will occupy 14 bytes (compared to 13 in Perl's + * extended UTF-8). This is incompatible with what + * tr16 implies should be the representation of code + * points 2**30 and above, but allows Perl to be able + * to represent all code points that fit in a 64-bit + * word in either our extended UTF-EBCDIC or UTF-8. + * 3) Use the algorithm in tr16 to convert each byte from step 2 into + * final UTF-EBCDIC. This is done by table lookup from a table + * constructed from the algorithm, reproduced in ebcdic_tables.h as + * PL_utf2e, with its inverse being PL_e2utf. They are constructed so that + * all EBCDIC invariants remain invariant, but no others do, and the first + * byte of a variant will always have its upper bit set. But note that + * the upper bit of some invariants is also 1. The table also is designed + * so that lexically comparing two UTF-EBCDIC-variant characters yields + * the Unicode code point order. (To get native code point order, one has + * to convert the latin1-range characters to their native code point + * value.) The macros NATIVE_UTF8_TO_I8() and I8_TO_NATIVE_UTF8() do the + * table lookups. * * For example, the 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 @@ -180,14 +180,14 @@ above what a 64 bit word can hold U+8000..U+D7FF F1 A0..B5 A0..BF A0..BF U+D800..U+DFFF F1 B6..B7 A0..BF A0..BF (surrogates) U+E000..U+FFFF F1 B8..BF A0..BF A0..BF - U+10000..U+3FFFF F2..F7 A0..BF A0..BF A0..BF - U+40000..U+FFFFF F8 * A8..BF A0..BF A0..BF A0..BF - U+100000..U+10FFFF F9 A0..A1 A0..BF A0..BF A0..BF + U+10000..U+3FFFF F2..F7 A0..BF A0..BF A0..BF + U+40000..U+FFFFF F8 * A8..BF A0..BF A0..BF A0..BF + U+100000..U+10FFFF F9 A0..A1 A0..BF A0..BF A0..BF Below are above-Unicode code points - U+110000..U+1FFFFF F9 A2..BF A0..BF A0..BF A0..BF - U+200000..U+3FFFFF FA..FB A0..BF A0..BF A0..BF A0..BF - U+400000..U+1FFFFFF FC * A4..BF A0..BF A0..BF A0..BF A0..BF -U+2000000..U+3FFFFFF FD A0..BF A0..BF A0..BF A0..BF A0..BF + U+110000..U+1FFFFF F9 A2..BF A0..BF A0..BF A0..BF + U+200000..U+3FFFFF FA..FB A0..BF A0..BF A0..BF A0..BF + U+400000..U+1FFFFFF FC * A4..BF A0..BF A0..BF A0..BF A0..BF +U+2000000..U+3FFFFFF FD A0..BF A0..BF A0..BF A0..BF A0..BF U+4000000..U+3FFFFFFF FE * A2..BF A0..BF A0..BF A0..BF A0..BF A0..BF U+40000000.. FF A0..BF A0..BF A0..BF A0..BF A0..BF A0..BF * A1..BF A0..BF diff --git a/util.h b/util.h index d9b61611e484c..15cd5823dc76f 100644 --- a/util.h +++ b/util.h @@ -14,21 +14,21 @@ #ifdef VMS # define PERL_FILE_IS_ABSOLUTE(f) \ - (*(f) == '/' \ - || (strchr(f,':') \ - || ((*(f) == '[' || *(f) == '<') \ + (*(f) == '/' \ + || (strchr(f,':') \ + || ((*(f) == '[' || *(f) == '<') \ && (isWORDCHAR((f)[1]) || memCHRs("$-_]>",(f)[1]))))) #elif defined(WIN32) || defined(__CYGWIN__) # define PERL_FILE_IS_ABSOLUTE(f) \ - (*(f) == '/' || *(f) == '\\' /* UNC/rooted path */ \ - || ((f)[0] && (f)[1] == ':')) /* drive name */ + (*(f) == '/' || *(f) == '\\' /* UNC/rooted path */ \ + || ((f)[0] && (f)[1] == ':')) /* drive name */ #elif defined(DOSISH) # define PERL_FILE_IS_ABSOLUTE(f) \ - (*(f) == '/' \ - || ((f)[0] && (f)[1] == ':')) /* drive name */ -#else /* NOT DOSISH */ -# define PERL_FILE_IS_ABSOLUTE(f) (*(f) == '/') + (*(f) == '/' \ + || ((f)[0] && (f)[1] == ':')) /* drive name */ +#else /* NOT DOSISH */ +# define PERL_FILE_IS_ABSOLUTE(f) (*(f) == '/') #endif /* diff --git a/vutil.h b/vutil.h index 9484e2548389d..e4e5a1f163385 100644 --- a/vutil.h +++ b/vutil.h @@ -31,21 +31,21 @@ static SV * Perl_vstringify2(pTHX_ SV *vs); static int Perl_vcmp2(pTHX_ SV *lsv, SV *rsv); static const char * Perl_prescan_version2(pTHX_ const char *s, bool strict, const char** errstr, bool *sqv, int *ssaw_decimal, int *swidth, bool *salpha); -# define SCAN_VERSION(a,b,c) Perl_scan_version2(aTHX_ a,b,c) -# define NEW_VERSION(a) Perl_new_version2(aTHX_ a) -# define UPG_VERSION(a,b) Perl_upg_version2(aTHX_ a, b) -# define VSTRINGIFY(a) Perl_vstringify2(aTHX_ a) -# define VVERIFY(a) Perl_vverify2(aTHX_ a) -# define VNUMIFY(a) Perl_vnumify2(aTHX_ a) -# define VNORMAL(a) Perl_vnormal2(aTHX_ a) -# define VCMP(a,b) Perl_vcmp2(aTHX_ a,b) -# define PRESCAN_VERSION(a,b,c,d,e,f,g) Perl_prescan_version2(aTHX_ a,b,c,d,e,f,g) +# define SCAN_VERSION(a,b,c) Perl_scan_version2(aTHX_ a,b,c) +# define NEW_VERSION(a) Perl_new_version2(aTHX_ a) +# define UPG_VERSION(a,b) Perl_upg_version2(aTHX_ a, b) +# define VSTRINGIFY(a) Perl_vstringify2(aTHX_ a) +# define VVERIFY(a) Perl_vverify2(aTHX_ a) +# define VNUMIFY(a) Perl_vnumify2(aTHX_ a) +# define VNORMAL(a) Perl_vnormal2(aTHX_ a) +# define VCMP(a,b) Perl_vcmp2(aTHX_ a,b) +# define PRESCAN_VERSION(a,b,c,d,e,f,g) Perl_prescan_version2(aTHX_ a,b,c,d,e,f,g) # undef is_LAX_VERSION # define is_LAX_VERSION(a,b) \ - (a != Perl_prescan_version2(aTHX_ a, FALSE, b, NULL, NULL, NULL, NULL)) + (a != Perl_prescan_version2(aTHX_ a, FALSE, b, NULL, NULL, NULL, NULL)) # undef is_STRICT_VERSION # define is_STRICT_VERSION(a,b) \ - (a != Perl_prescan_version2(aTHX_ a, TRUE, b, NULL, NULL, NULL, NULL)) + (a != Perl_prescan_version2(aTHX_ a, TRUE, b, NULL, NULL, NULL, NULL)) #else @@ -59,56 +59,56 @@ SV * Perl_vstringify(pTHX_ SV *vs); int Perl_vcmp(pTHX_ SV *lsv, SV *rsv); const char * Perl_prescan_version(pTHX_ const char *s, bool strict, const char** errstr, bool *sqv, int *ssaw_decimal, int *swidth, bool *salpha); -# define SCAN_VERSION(a,b,c) Perl_scan_version(aTHX_ a,b,c) -# define NEW_VERSION(a) Perl_new_version(aTHX_ a) -# define UPG_VERSION(a,b) Perl_upg_version(aTHX_ a, b) -# define VSTRINGIFY(a) Perl_vstringify(aTHX_ a) -# define VVERIFY(a) Perl_vverify(aTHX_ a) -# define VNUMIFY(a) Perl_vnumify(aTHX_ a) -# define VNORMAL(a) Perl_vnormal(aTHX_ a) -# define VCMP(a,b) Perl_vcmp(aTHX_ a,b) +# define SCAN_VERSION(a,b,c) Perl_scan_version(aTHX_ a,b,c) +# define NEW_VERSION(a) Perl_new_version(aTHX_ a) +# define UPG_VERSION(a,b) Perl_upg_version(aTHX_ a, b) +# define VSTRINGIFY(a) Perl_vstringify(aTHX_ a) +# define VVERIFY(a) Perl_vverify(aTHX_ a) +# define VNUMIFY(a) Perl_vnumify(aTHX_ a) +# define VNORMAL(a) Perl_vnormal(aTHX_ a) +# define VCMP(a,b) Perl_vcmp(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 PRESCAN_VERSION(a,b,c,d,e,f,g) Perl_prescan_version(aTHX_ a,b,c,d,e,f,g) # ifndef is_LAX_VERSION # define is_LAX_VERSION(a,b) \ - (a != Perl_prescan_version(aTHX_ a, FALSE, b, NULL, NULL, NULL, NULL)) + (a != Perl_prescan_version(aTHX_ a, FALSE, b, NULL, NULL, NULL, NULL)) # endif # ifndef is_STRICT_VERSION # define is_STRICT_VERSION(a,b) \ - (a != Perl_prescan_version(aTHX_ a, TRUE, b, NULL, NULL, NULL, NULL)) + (a != Perl_prescan_version(aTHX_ a, TRUE, b, NULL, NULL, NULL, NULL)) # endif #endif #if PERL_VERSION_LT(5,11,4) # define BADVERSION(a,b,c) \ - if (b) { \ - *b = c; \ - } \ - return a; + if (b) { \ + *b = c; \ + } \ + return a; -# define PERL_ARGS_ASSERT_PRESCAN_VERSION \ - assert(s); assert(sqv); assert(ssaw_decimal);\ - assert(swidth); assert(salpha); +# define PERL_ARGS_ASSERT_PRESCAN_VERSION \ + assert(s); assert(sqv); assert(ssaw_decimal);\ + assert(swidth); assert(salpha); -# define PERL_ARGS_ASSERT_SCAN_VERSION \ - assert(s); assert(rv) -# define PERL_ARGS_ASSERT_NEW_VERSION \ - assert(ver) -# define PERL_ARGS_ASSERT_UPG_VERSION \ - assert(ver) -# define PERL_ARGS_ASSERT_VVERIFY \ - assert(vs) -# define PERL_ARGS_ASSERT_VNUMIFY \ - assert(vs) -# define PERL_ARGS_ASSERT_VNORMAL \ - assert(vs) -# define PERL_ARGS_ASSERT_VSTRINGIFY \ - assert(vs) -# define PERL_ARGS_ASSERT_VCMP \ - assert(lhv); assert(rhv) +# define PERL_ARGS_ASSERT_SCAN_VERSION \ + assert(s); assert(rv) +# define PERL_ARGS_ASSERT_NEW_VERSION \ + assert(ver) +# define PERL_ARGS_ASSERT_UPG_VERSION \ + assert(ver) +# define PERL_ARGS_ASSERT_VVERIFY \ + assert(vs) +# define PERL_ARGS_ASSERT_VNUMIFY \ + assert(vs) +# define PERL_ARGS_ASSERT_VNORMAL \ + assert(vs) +# define PERL_ARGS_ASSERT_VSTRINGIFY \ + assert(vs) +# define PERL_ARGS_ASSERT_VCMP \ + assert(lhv); assert(rhv) # define PERL_ARGS_ASSERT_CK_WARNER \ - assert(pat) + assert(pat) #endif /* ex: set ro: */