X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl.h;h=cc451b60fbc4fafb824e1a04b514bab4dc383081;hb=494244503fd690687b35aca99f4243ed5667eb4f;hp=ace2aac382122c77ebcbd7aa70464c5f7f6dda03;hpb=19848b3fa09ce050a4be1811af91c3670de2759e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/perl.h b/perl.h index ace2aac..cc451b6 100644 --- a/perl.h +++ b/perl.h @@ -1,11 +1,12 @@ /* perl.h * - * Copyright (c) 1987-2001, Larry Wall + * Copyright (c) 1987-2002, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ + #ifndef H_PERL #define H_PERL 1 @@ -41,6 +42,15 @@ /* See L for detailed notes on * PERL_IMPLICIT_CONTEXT and PERL_IMPLICIT_SYS */ +#ifdef PERL_IMPLICIT_SYS +/* PERL_IMPLICIT_SYS implies PerlMemShared != PerlMem + so use slab allocator to avoid lots of MUTEX overhead + */ +# ifndef PL_OP_SLAB_ALLOC +# define PL_OP_SLAB_ALLOC +# endif +#endif + #ifdef USE_ITHREADS # if !defined(MULTIPLICITY) # define MULTIPLICITY @@ -254,7 +264,7 @@ register struct op *Perl_op asm(stringify(OP_IN_REGISTER)); #if defined(HASVOLATILE) || defined(STANDARD_C) # ifdef __cplusplus -# define VOL // to temporarily suppress warnings +# define VOL /* to temporarily suppress warnings */ # else # define VOL volatile # endif @@ -320,7 +330,7 @@ register struct op *Perl_op asm(stringify(OP_IN_REGISTER)); /* Use the reentrant APIs like localtime_r and getpwent_r */ /* Win32 has naturally threadsafe libraries, no need to use any _r variants. */ -#if defined(USE_ITHREADS) && !defined(USE_REENTRANT_API) && !defined(WIN32) +#if defined(USE_ITHREADS) && !defined(USE_REENTRANT_API) && !defined(WIN32) && !defined(__APPLE__) # define USE_REENTRANT_API #endif @@ -755,6 +765,12 @@ int sockatmark(int); # endif #endif +#ifndef HAS_SOCKETPAIR +# ifdef HAS_SOCKET +# define socketpair Perl_my_socketpair +# endif +#endif + #if INTSIZE == 2 # define htoni htons # define ntohi ntohs @@ -1783,7 +1799,11 @@ typedef struct clone_params CLONE_PARAMS; #endif #if defined(__VOS__) -# include "vosish.h" +# ifdef __GNUC__ +# include "./vos/vosish.h" +# else +# include "vos/vosish.h" +# endif # define ISHISH "vos" #endif @@ -1800,6 +1820,11 @@ typedef struct clone_params CLONE_PARAMS; # define ISHISH "macos classic" #endif +#if defined(__BEOS__) +# include "beos/beosish.h" +# define ISHISH "beos" +#endif + #ifndef ISHISH # include "unixish.h" # define ISHISH "unix" @@ -1809,13 +1834,6 @@ typedef struct clone_params CLONE_PARAMS; # define USE_ENVIRON_ARRAY #endif -#ifdef JPL - /* E.g. JPL needs to operate on a copy of the real environment. - * JDK 1.2 and 1.3 seem to get upset if the original environment - * is diddled with. */ -# define NEED_ENVIRON_DUP_FOR_MODIFY -#endif - /* * initialise to avoid floating-point exceptions from overflow, etc */ @@ -2132,7 +2150,6 @@ typedef I32 (*filter_t) (pTHX_ int, SV *, int); #include "scope.h" #include "warnings.h" #include "utf8.h" -#include "sharedsv.h" /* Current curly descriptor */ typedef struct curcur CURCUR; @@ -2497,7 +2514,9 @@ Gid_t getegid (void); #define PERL_MAGIC_nkeys 'k' /* scalar(keys()) lvalue */ #define PERL_MAGIC_dbfile 'L' /* Debugger %_ might have been included somehow */ +#ifdef DEBUGGING +#define assert(what) DEB( { \ + if (!(what)) { \ + Perl_croak(aTHX_ "Assertion " STRINGIFY(what) " failed: file \"%s\", line %d", \ + __FILE__, __LINE__); \ + PerlProc_exit(1); \ + }}) +#else #define assert(what) DEB( { \ if (!(what)) { \ Perl_croak(aTHX_ "Assertion failed: file \"%s\", line %d", \ @@ -2528,6 +2556,7 @@ Gid_t getegid (void); PerlProc_exit(1); \ }}) #endif +#endif struct ufuncs { I32 (*uf_val)(pTHX_ IV, SV*); @@ -2745,6 +2774,7 @@ typedef Sighandler_t Sigsave_t; typedef int (CPERLscope(*runops_proc_t)) (pTHX); +typedef void (CPERLscope(*share_proc_t)) (pTHX_ SV *sv); typedef OP* (CPERLscope(*PPADDR_t)[]) (pTHX); /* _ (for $_) must be first in the following list (DEFSV requires it) */ @@ -3308,7 +3338,7 @@ START_EXTERN_C #ifdef DOINIT -EXT MGVTBL PL_vtbl_sv = {MEMBER_TO_FPTR(Perl_magic_get), +EXT MGVTBL PL_vtbl_sv = {MEMBER_TO_FPTR(Perl_magic_get), MEMBER_TO_FPTR(Perl_magic_set), MEMBER_TO_FPTR(Perl_magic_len), 0, 0}; @@ -3327,10 +3357,12 @@ EXT MGVTBL PL_vtbl_sigelem = {MEMBER_TO_FPTR(Perl_magic_getsig), 0, MEMBER_TO_FPTR(Perl_magic_clearsig), 0}; #endif -EXT MGVTBL PL_vtbl_pack = {0, 0, MEMBER_TO_FPTR(Perl_magic_sizepack), MEMBER_TO_FPTR(Perl_magic_wipepack), +EXT MGVTBL PL_vtbl_pack = {0, 0, + MEMBER_TO_FPTR(Perl_magic_sizepack), + MEMBER_TO_FPTR(Perl_magic_wipepack), 0}; EXT MGVTBL PL_vtbl_packelem = {MEMBER_TO_FPTR(Perl_magic_getpack), - MEMBER_TO_FPTR(Perl_magic_setpack), + MEMBER_TO_FPTR(Perl_magic_setpack), 0, MEMBER_TO_FPTR(Perl_magic_clearpack), 0}; EXT MGVTBL PL_vtbl_dbline = {0, MEMBER_TO_FPTR(Perl_magic_setdbline), @@ -3351,12 +3383,14 @@ EXT MGVTBL PL_vtbl_mglob = {0, MEMBER_TO_FPTR(Perl_magic_setmglob), EXT MGVTBL PL_vtbl_nkeys = {MEMBER_TO_FPTR(Perl_magic_getnkeys), MEMBER_TO_FPTR(Perl_magic_setnkeys), 0, 0, 0}; -EXT MGVTBL PL_vtbl_taint = {MEMBER_TO_FPTR(Perl_magic_gettaint),MEMBER_TO_FPTR(Perl_magic_settaint), +EXT MGVTBL PL_vtbl_taint = {MEMBER_TO_FPTR(Perl_magic_gettaint), + MEMBER_TO_FPTR(Perl_magic_settaint), 0, 0, 0}; -EXT MGVTBL PL_vtbl_substr = {MEMBER_TO_FPTR(Perl_magic_getsubstr), MEMBER_TO_FPTR(Perl_magic_setsubstr), +EXT MGVTBL PL_vtbl_substr = {MEMBER_TO_FPTR(Perl_magic_getsubstr), + MEMBER_TO_FPTR(Perl_magic_setsubstr), 0, 0, 0}; EXT MGVTBL PL_vtbl_vec = {MEMBER_TO_FPTR(Perl_magic_getvec), - MEMBER_TO_FPTR(Perl_magic_setvec), + MEMBER_TO_FPTR(Perl_magic_setvec), 0, 0, 0}; EXT MGVTBL PL_vtbl_pos = {MEMBER_TO_FPTR(Perl_magic_getpos), MEMBER_TO_FPTR(Perl_magic_setpos), @@ -3369,9 +3403,11 @@ EXT MGVTBL PL_vtbl_uvar = {MEMBER_TO_FPTR(Perl_magic_getuvar), MEMBER_TO_FPTR(Perl_magic_setuvar), 0, 0, 0}; #ifdef USE_5005THREADS -EXT MGVTBL PL_vtbl_mutex = {0, 0, 0, 0, MEMBER_TO_FPTR(Perl_magic_mutexfree)}; +EXT MGVTBL PL_vtbl_mutex = {0, 0, 0, 0, + MEMBER_TO_FPTR(Perl_magic_mutexfree)}; #endif /* USE_5005THREADS */ -EXT MGVTBL PL_vtbl_defelem = {MEMBER_TO_FPTR(Perl_magic_getdefelem),MEMBER_TO_FPTR(Perl_magic_setdefelem), +EXT MGVTBL PL_vtbl_defelem = {MEMBER_TO_FPTR(Perl_magic_getdefelem), + MEMBER_TO_FPTR(Perl_magic_setdefelem), 0, 0, 0}; EXT MGVTBL PL_vtbl_regexp = {0,0,0,0, MEMBER_TO_FPTR(Perl_magic_freeregexp)}; @@ -3939,12 +3975,17 @@ int flock(int fd, int op); #if O_TEXT != O_BINARY /* If you have different O_TEXT and O_BINARY and you are a CLRF shop, * that is, you are somehow DOSish. */ -# if !defined(__BEOS__) -# define PERLIO_CLRF 1 -# else +# if defined(__BEOS__) || defined(__VOS__) + /* BeOS has O_TEXT != O_BINARY but O_TEXT and O_BINARY have no effect; + * BeOS is always UNIXoid (LF), not DOSish (CRLF). */ + /* VOS has O_TEXT != O_BINARY, and they have effect, + * but VOS always uses LF, never CRLF. */ /* If you have O_TEXT different from your O_BINARY but you still are * not a CRLF shop. */ -# undef PERLIO_CLRF +# undef PERLIO_USING_CRLF +# else + /* If you really are DOSish. */ +# define PERLIO_USING_CRLF 1 # endif #endif @@ -4092,7 +4133,7 @@ extern void moncontrol(int); HAS_STRUCT_CMSGHDR HAS_NL_LANGINFO - + HAS_DIRFD so that Configure picks them up. */