From: Gurusamy Sarathy Date: Thu, 8 Jul 1999 18:47:35 +0000 (+0000) Subject: more PERL_OBJECT cleanups (changes still untested on Unix!) X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=51371543ca1a75ed152020ad0846b5b8cf11c32f;p=p5sagit%2Fp5-mst-13.2.git more PERL_OBJECT cleanups (changes still untested on Unix!) p4raw-id: //depot/perl@3660 --- diff --git a/MANIFEST b/MANIFEST index 6ad0a6c..1888c0d 100644 --- a/MANIFEST +++ b/MANIFEST @@ -930,6 +930,8 @@ os2/perl2cmd.pl Corrects installed binaries under OS/2 patchlevel.h The current patch level of perl perl.c main() perl.h Global declarations +perlapi.c Perl API functions +perlapi.h Perl API function declarations perl_exp.SH Creates list of exported symbols for AIX perlio.c C code for PerlIO abstraction perlio.h compatibility stub diff --git a/XSUB.h b/XSUB.h index 70e7d84..c43b7f9 100644 --- a/XSUB.h +++ b/XSUB.h @@ -23,7 +23,7 @@ #define dXSFUNCTION(ret) XSINTERFACE_CVT(ret,XSFUNCTION) #define XSINTERFACE_FUNC(ret,cv,f) ((XSINTERFACE_CVT(ret,cv))(f)) #define XSINTERFACE_FUNC_SET(cv,f) \ - CvXSUBANY(cv).any_dptr = (void (*) (pTHX_ void*))(f) + CvXSUBANY(cv).any_dptr = (void (*) (pTHXo_ void*))(f) #define XSRETURN(off) \ STMT_START { \ @@ -77,38 +77,7 @@ # define XS_VERSION_BOOTCHECK #endif -#ifdef PERL_CAPI -# define VTBL_sv get_vtbl(want_vtbl_sv) -# define VTBL_env get_vtbl(want_vtbl_env) -# define VTBL_envelem get_vtbl(want_vtbl_envelem) -# define VTBL_sig get_vtbl(want_vtbl_sig) -# define VTBL_sigelem get_vtbl(want_vtbl_sigelem) -# define VTBL_pack get_vtbl(want_vtbl_pack) -# define VTBL_packelem get_vtbl(want_vtbl_packelem) -# define VTBL_dbline get_vtbl(want_vtbl_dbline) -# define VTBL_isa get_vtbl(want_vtbl_isa) -# define VTBL_isaelem get_vtbl(want_vtbl_isaelem) -# define VTBL_arylen get_vtbl(want_vtbl_arylen) -# define VTBL_glob get_vtbl(want_vtbl_glob) -# define VTBL_mglob get_vtbl(want_vtbl_mglob) -# define VTBL_nkeys get_vtbl(want_vtbl_nkeys) -# define VTBL_taint get_vtbl(want_vtbl_taint) -# define VTBL_substr get_vtbl(want_vtbl_substr) -# define VTBL_vec get_vtbl(want_vtbl_vec) -# define VTBL_pos get_vtbl(want_vtbl_pos) -# define VTBL_bm get_vtbl(want_vtbl_bm) -# define VTBL_fm get_vtbl(want_vtbl_fm) -# define VTBL_uvar get_vtbl(want_vtbl_uvar) -# define VTBL_defelem get_vtbl(want_vtbl_defelem) -# define VTBL_regexp get_vtbl(want_vtbl_regexp) -# define VTBL_regdata get_vtbl(want_vtbl_regdata) -# define VTBL_regdatum get_vtbl(want_vtbl_regdatum) -# ifdef USE_LOCALE_COLLATE -# define VTBL_collxfrm get_vtbl(want_vtbl_collxfrm) -# endif -# define VTBL_amagic get_vtbl(want_vtbl_amagic) -# define VTBL_amagicelem get_vtbl(want_vtbl_amagicelem) -#else +#if 1 /* for compatibility */ # define VTBL_sv &PL_vtbl_sv # define VTBL_env &PL_vtbl_env # define VTBL_envelem &PL_vtbl_envelem @@ -142,6 +111,8 @@ #endif #ifdef PERL_OBJECT + +# include "perlapi.h" # include "objXSUB.h" # undef aTHXo @@ -151,27 +122,7 @@ # undef _aTHXo # define _aTHXo ,aTHXo -# undef SAVEDESTRUCTOR -# define SAVEDESTRUCTOR(f,p) \ - pPerl->Perl_save_destructor((FUNC_NAME_TO_PTR(f)),(p)) - # ifdef WIN32 -# ifndef WIN32IO_IS_STDIO -# undef errno -# define errno ErrorNo() -# endif -# undef NtCrypt -# define NtCrypt pPerl->NtCrypt -# undef NtGetLib -# define NtGetLib pPerl->NtGetLib -# undef NtGetArchLib -# define NtGetArchLib pPerl->NtGetArchLib -# undef NtGetSiteLib -# define NtGetSiteLib pPerl->NtGetSiteLib -# undef NtGetBin -# define NtGetBin pPerl->NtGetBin -# undef NtGetDebugScriptStr -# define NtGetDebugScriptStr pPerl->NtGetDebugScriptStr # undef fprintf # define fprintf pPerl->fprintf # endif /* WIN32 */ @@ -327,13 +278,9 @@ # define shutdown PerlSock_shutdown # define socket PerlSock_socket # define socketpair PerlSock_socketpair - # ifdef WIN32 # include "XSlock.h" -# endif /* WIN32 */ +# endif # endif /* NO_XSLOCKS */ -#else -# ifdef PERL_CAPI -# include "perlCAPI.h" -# endif + #endif /* PERL_OBJECT */ diff --git a/emacs/ptags b/emacs/ptags index a048192..7570220 100755 --- a/emacs/ptags +++ b/emacs/ptags @@ -61,7 +61,7 @@ etags -o TAGS.tmp -a \ etags -o TAGS.tmp -a "$@" $topfiles # Now add these PL_: -perl -w014pe 'if (s/^( .* PERLVAR I? # 1: TAG group +perl -w014pe 'if (s/^( .* PERLVAR A?I? # 1: TAG group \s* \( \s* [GIT] # .* # \x7F # End of description diff --git a/embed.h b/embed.h index 1dade3e..22ef66d 100644 --- a/embed.h +++ b/embed.h @@ -668,16 +668,8 @@ #if defined(PERL_GLOBAL_STRUCT) #define GetVars Perl_GetVars #endif -#define yydestruct Perl_yydestruct #define runops_standard Perl_runops_standard #define runops_debug Perl_runops_debug -#if defined(WIN32) -#if defined(PERL_OBJECT) -#define ErrorNo Perl_ErrorNo -#else -#define ErrorNo Perl_ErrorNo -#endif -#endif #define sv_catpvf_mg Perl_sv_catpvf_mg #define sv_catpv_mg Perl_sv_catpv_mg #define sv_catpvn_mg Perl_sv_catpvn_mg @@ -743,8 +735,6 @@ #define save_magic S_save_magic #define magic_methpack S_magic_methpack #define magic_methcall S_magic_methcall -#define unwind_handler_stack S_unwind_handler_stack -#define restore_magic S_restore_magic #endif #if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) #define list_assignment S_list_assignment @@ -821,19 +811,9 @@ #define doeval S_doeval #define doopen_pmc S_doopen_pmc #define qsortsv S_qsortsv -#define sortcv S_sortcv -#define sv_ncmp S_sv_ncmp -#define sv_i_ncmp S_sv_i_ncmp -#define amagic_ncmp S_amagic_ncmp -#define amagic_i_ncmp S_amagic_i_ncmp -#define amagic_cmp S_amagic_cmp -#define amagic_cmp_locale S_amagic_cmp_locale #endif #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) #define get_db_sub S_get_db_sub -# if defined(USE_THREADS) -#define unset_cvowner S_unset_cvowner -# endif #endif #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) #define doform S_doform @@ -866,7 +846,6 @@ #define re_croak2 S_re_croak2 #define regpposixcc S_regpposixcc #define checkposixcc S_checkposixcc -#define clear_re S_clear_re #endif #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) #define regmatch S_regmatch @@ -879,7 +858,6 @@ #define regcppop S_regcppop #define regcp_set_to S_regcp_set_to #define cache_re S_cache_re -#define restore_pos S_restore_pos #define reghop S_reghop #define reghopmaybe S_reghopmaybe #endif @@ -906,10 +884,6 @@ #define del_xpv S_del_xpv #define del_xrv S_del_xrv #define sv_unglob S_sv_unglob -#define do_report_used S_do_report_used -#define do_clean_objs S_do_clean_objs -#define do_clean_named_objs S_do_clean_named_objs -#define do_clean_all S_do_clean_all #define not_a_number S_not_a_number #define visit S_visit # if defined(PURIFY) @@ -960,9 +934,6 @@ #define incl_perldb S_incl_perldb #define utf16_textfilter S_utf16_textfilter #define utf16rev_textfilter S_utf16rev_textfilter -#define restore_rsfp S_restore_rsfp -#define restore_expect S_restore_expect -#define restore_lex_expect S_restore_lex_expect # if defined(CRIPPLED_CC) #define uni S_uni # endif @@ -2001,16 +1972,8 @@ #if defined(PERL_GLOBAL_STRUCT) #define GetVars() Perl_GetVars(aTHX) #endif -#define yydestruct(a) Perl_yydestruct(aTHX_ a) #define runops_standard() Perl_runops_standard(aTHX) #define runops_debug() Perl_runops_debug(aTHX) -#if defined(WIN32) -#if defined(PERL_OBJECT) -#define ErrorNo() Perl_ErrorNo(aTHX) -#else -#define ErrorNo() Perl_ErrorNo(aTHX) -#endif -#endif #define sv_catpv_mg(a,b) Perl_sv_catpv_mg(aTHX_ a,b) #define sv_catpvn_mg(a,b,c) Perl_sv_catpvn_mg(aTHX_ a,b,c) #define sv_catsv_mg(a,b) Perl_sv_catsv_mg(aTHX_ a,b) @@ -2072,8 +2035,6 @@ #define save_magic(a,b) S_save_magic(aTHX_ a,b) #define magic_methpack(a,b,c) S_magic_methpack(aTHX_ a,b,c) #define magic_methcall(a,b,c,d,e,f) S_magic_methcall(aTHX_ a,b,c,d,e,f) -#define unwind_handler_stack(a) S_unwind_handler_stack(aTHX_ a) -#define restore_magic(a) S_restore_magic(aTHX_ a) #endif #if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) #define list_assignment(a) S_list_assignment(aTHX_ a) @@ -2150,19 +2111,9 @@ #define doeval(a,b) S_doeval(aTHX_ a,b) #define doopen_pmc(a,b) S_doopen_pmc(aTHX_ a,b) #define qsortsv(a,b,c) S_qsortsv(aTHX_ a,b,c) -#define sortcv(a,b) S_sortcv(aTHX_ a,b) -#define sv_ncmp(a,b) S_sv_ncmp(aTHX_ a,b) -#define sv_i_ncmp(a,b) S_sv_i_ncmp(aTHX_ a,b) -#define amagic_ncmp(a,b) S_amagic_ncmp(aTHX_ a,b) -#define amagic_i_ncmp(a,b) S_amagic_i_ncmp(aTHX_ a,b) -#define amagic_cmp(a,b) S_amagic_cmp(aTHX_ a,b) -#define amagic_cmp_locale(a,b) S_amagic_cmp_locale(aTHX_ a,b) #endif #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) #define get_db_sub(a,b) S_get_db_sub(aTHX_ a,b) -# if defined(USE_THREADS) -#define unset_cvowner(a) S_unset_cvowner(aTHX_ a) -# endif #endif #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) #define doform(a,b,c) S_doform(aTHX_ a,b,c) @@ -2194,7 +2145,6 @@ #define add_data(a,b) S_add_data(aTHX_ a,b) #define regpposixcc(a) S_regpposixcc(aTHX_ a) #define checkposixcc() S_checkposixcc(aTHX) -#define clear_re(a) S_clear_re(aTHX_ a) #endif #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) #define regmatch(a) S_regmatch(aTHX_ a) @@ -2207,7 +2157,6 @@ #define regcppop() S_regcppop(aTHX) #define regcp_set_to(a) S_regcp_set_to(aTHX_ a) #define cache_re(a) S_cache_re(aTHX_ a) -#define restore_pos(a) S_restore_pos(aTHX_ a) #define reghop(a,b) S_reghop(aTHX_ a,b) #define reghopmaybe(a,b) S_reghopmaybe(aTHX_ a,b) #endif @@ -2234,10 +2183,6 @@ #define del_xpv(a) S_del_xpv(aTHX_ a) #define del_xrv(a) S_del_xrv(aTHX_ a) #define sv_unglob(a) S_sv_unglob(aTHX_ a) -#define do_report_used(a) S_do_report_used(aTHX_ a) -#define do_clean_objs(a) S_do_clean_objs(aTHX_ a) -#define do_clean_named_objs(a) S_do_clean_named_objs(aTHX_ a) -#define do_clean_all(a) S_do_clean_all(aTHX_ a) #define not_a_number(a) S_not_a_number(aTHX_ a) #define visit(a) S_visit(aTHX_ a) # if defined(PURIFY) @@ -2288,9 +2233,6 @@ #define incl_perldb() S_incl_perldb(aTHX) #define utf16_textfilter(a,b,c) S_utf16_textfilter(aTHX_ a,b,c) #define utf16rev_textfilter(a,b,c) S_utf16rev_textfilter(aTHX_ a,b,c) -#define restore_rsfp(a) S_restore_rsfp(aTHX_ a) -#define restore_expect(a) S_restore_expect(aTHX_ a) -#define restore_lex_expect(a) S_restore_lex_expect(aTHX_ a) # if defined(CRIPPLED_CC) #define uni(a,b) S_uni(aTHX_ a,b) # endif @@ -3961,21 +3903,10 @@ #define Perl_GetVars CPerlObj::Perl_GetVars #define GetVars Perl_GetVars #endif -#define Perl_yydestruct CPerlObj::Perl_yydestruct -#define yydestruct Perl_yydestruct #define Perl_runops_standard CPerlObj::Perl_runops_standard #define runops_standard Perl_runops_standard #define Perl_runops_debug CPerlObj::Perl_runops_debug #define runops_debug Perl_runops_debug -#if defined(WIN32) -#if defined(PERL_OBJECT) -#define Perl_ErrorNo CPerlObj::Perl_ErrorNo -#define ErrorNo Perl_ErrorNo -#else -#define Perl_ErrorNo CPerlObj::Perl_ErrorNo -#define ErrorNo Perl_ErrorNo -#endif -#endif #define Perl_sv_catpvf_mg CPerlObj::Perl_sv_catpvf_mg #define sv_catpvf_mg Perl_sv_catpvf_mg #define Perl_sv_catpv_mg CPerlObj::Perl_sv_catpv_mg @@ -4095,10 +4026,6 @@ #define magic_methpack S_magic_methpack #define S_magic_methcall CPerlObj::S_magic_methcall #define magic_methcall S_magic_methcall -#define S_unwind_handler_stack CPerlObj::S_unwind_handler_stack -#define unwind_handler_stack S_unwind_handler_stack -#define S_restore_magic CPerlObj::S_restore_magic -#define restore_magic S_restore_magic #endif #if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) #define S_list_assignment CPerlObj::S_list_assignment @@ -4237,28 +4164,10 @@ #define doopen_pmc S_doopen_pmc #define S_qsortsv CPerlObj::S_qsortsv #define qsortsv S_qsortsv -#define S_sortcv CPerlObj::S_sortcv -#define sortcv S_sortcv -#define S_sv_ncmp CPerlObj::S_sv_ncmp -#define sv_ncmp S_sv_ncmp -#define S_sv_i_ncmp CPerlObj::S_sv_i_ncmp -#define sv_i_ncmp S_sv_i_ncmp -#define S_amagic_ncmp CPerlObj::S_amagic_ncmp -#define amagic_ncmp S_amagic_ncmp -#define S_amagic_i_ncmp CPerlObj::S_amagic_i_ncmp -#define amagic_i_ncmp S_amagic_i_ncmp -#define S_amagic_cmp CPerlObj::S_amagic_cmp -#define amagic_cmp S_amagic_cmp -#define S_amagic_cmp_locale CPerlObj::S_amagic_cmp_locale -#define amagic_cmp_locale S_amagic_cmp_locale #endif #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) #define S_get_db_sub CPerlObj::S_get_db_sub #define get_db_sub S_get_db_sub -# if defined(USE_THREADS) -#define S_unset_cvowner CPerlObj::S_unset_cvowner -#define unset_cvowner S_unset_cvowner -# endif #endif #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) #define S_doform CPerlObj::S_doform @@ -4317,8 +4226,6 @@ #define regpposixcc S_regpposixcc #define S_checkposixcc CPerlObj::S_checkposixcc #define checkposixcc S_checkposixcc -#define S_clear_re CPerlObj::S_clear_re -#define clear_re S_clear_re #endif #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) #define S_regmatch CPerlObj::S_regmatch @@ -4341,8 +4248,6 @@ #define regcp_set_to S_regcp_set_to #define S_cache_re CPerlObj::S_cache_re #define cache_re S_cache_re -#define S_restore_pos CPerlObj::S_restore_pos -#define restore_pos S_restore_pos #define S_reghop CPerlObj::S_reghop #define reghop S_reghop #define S_reghopmaybe CPerlObj::S_reghopmaybe @@ -4389,14 +4294,6 @@ #define del_xrv S_del_xrv #define S_sv_unglob CPerlObj::S_sv_unglob #define sv_unglob S_sv_unglob -#define S_do_report_used CPerlObj::S_do_report_used -#define do_report_used S_do_report_used -#define S_do_clean_objs CPerlObj::S_do_clean_objs -#define do_clean_objs S_do_clean_objs -#define S_do_clean_named_objs CPerlObj::S_do_clean_named_objs -#define do_clean_named_objs S_do_clean_named_objs -#define S_do_clean_all CPerlObj::S_do_clean_all -#define do_clean_all S_do_clean_all #define S_not_a_number CPerlObj::S_not_a_number #define not_a_number S_not_a_number #define S_visit CPerlObj::S_visit @@ -4490,12 +4387,6 @@ #define utf16_textfilter S_utf16_textfilter #define S_utf16rev_textfilter CPerlObj::S_utf16rev_textfilter #define utf16rev_textfilter S_utf16rev_textfilter -#define S_restore_rsfp CPerlObj::S_restore_rsfp -#define restore_rsfp S_restore_rsfp -#define S_restore_expect CPerlObj::S_restore_expect -#define restore_expect S_restore_expect -#define S_restore_lex_expect CPerlObj::S_restore_lex_expect -#define restore_lex_expect S_restore_lex_expect # if defined(CRIPPLED_CC) #define S_uni CPerlObj::S_uni #define uni S_uni diff --git a/embed.pl b/embed.pl index 25ff092..bdca208 100755 --- a/embed.pl +++ b/embed.pl @@ -218,12 +218,12 @@ sub readvars(\%$$@) { or die "embed.pl: Can't open $file: $!\n"; while () { s/[ \t]*#.*//; # Delete comments. - if (/PERLVARI?C?\($pre(\w+)/) { + if (/PERLVARA?I?C?\($pre(\w+)/) { my $sym = $1; $sym = $pre . $sym if $keep_pre; warn "duplicate symbol $sym while processing $file\n" if exists $$syms{$sym}; - $$syms{$sym} = 1; + $$syms{$sym} = $pre || 1; } } close(FILE); @@ -235,12 +235,10 @@ my %thread; readvars %intrp, 'intrpvar.h','I'; readvars %thread, 'thrdvar.h','T'; readvars %globvar, 'perlvars.h','G'; -readvars %objvar, 'intrpvar.h','pi', 1; -foreach my $sym (sort keys %thread) - { +foreach my $sym (sort keys %thread) { warn "$sym in intrpvar.h as well as thrdvar.h\n" if exists $intrp{$sym}; - } +} sub undefine ($) { my ($sym) = @_; @@ -253,9 +251,9 @@ sub hide ($$) { "#define $from" . "\t" x ($t < 3 ? 3 - $t : 1) . "$to\n"; } -sub objxsub_var ($) { - my ($sym) = @_; - undefine("PL_$sym") . hide("PL_$sym", "pPerl->PL_$sym"); +sub objxsub_var ($$) { + my ($pfx, $sym) = @_; + undefine("PL_$sym") . hide("PL_$sym", "(*Perl_${pfx}${sym}_ptr(pPerl))"); } sub embedvar ($) { @@ -672,12 +670,16 @@ print OBX <<'EOT'; EOT -foreach my $sym (sort(keys(%intrp), - keys(%thread), - keys(%globvar), - keys(%objvar))) -{ - print OBX objxsub_var($sym); +foreach my $sym (sort keys %intrp) { + print OBX objxsub_var('I',$sym); +} + +foreach my $sym (sort keys %thread) { + print OBX objxsub_var('T',$sym); +} + +foreach my $sym (sort keys %globvar) { + print OBX objxsub_var('G',$sym); } print OBX <<'EOT'; @@ -720,6 +722,160 @@ EOT close(OBX); +unlink 'perlapi.h'; +unlink 'perlapi.c'; +open(CAPI, '> perlapi.c') or die "Can't create perlapi.c: $!\n"; +open(CAPIH, '> perlapi.h') or die "Can't create perlapi.h: $!\n"; + +print CAPIH <<'EOT'; +/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!! + This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h, + perlvars.h and thrdvar.h. Any changes made here will be lost! +*/ + +#if defined(PERL_OBJECT) + +/* declare accessor functions for Perl variables */ + +START_EXTERN_C + +#undef PERLVAR +#undef PERLVARA +#undef PERLVARI +#undef PERLVARIC +#define PERLVAR(v,t) EXTERN_C t* Perl_##v##_ptr(void *p); +#define PERLVARA(v,n,t) typedef t PL_##v##_t[n]; \ + EXTERN_C PL_##v##_t* Perl_##v##_ptr(void *p); +#define PERLVARI(v,t,i) PERLVAR(v,t) +#define PERLVARIC(v,t,i) PERLVAR(v,t) + +#include "thrdvar.h" +#include "intrpvar.h" +#include "perlvars.h" + +#undef PERLVAR +#undef PERLVARA +#undef PERLVARI +#undef PERLVARIC + +END_EXTERN_C + +#endif /* PERL_OBJECT */ + +EOT + + +print CAPI <<'EOT'; +/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!! + This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h, + perlvars.h and thrdvar.h. Any changes made here will be lost! +*/ + +#include "EXTERN.h" +#include "perl.h" +#include "perlapi.h" + +#if defined(PERL_OBJECT) + +/* accessor functions for Perl variables (provides binary compatibility) */ +START_EXTERN_C + +#undef PERLVAR +#undef PERLVARA +#undef PERLVARI +#undef PERLVARIC +#define PERLVAR(v,t) t* Perl_##v##_ptr(void *p) \ + { return &(((CPerlObj*)p)->PL_##v); } +#define PERLVARA(v,n,t) PL_##v##_t* Perl_##v##_ptr(void *p) \ + { return &(((CPerlObj*)p)->PL_##v); } +#define PERLVARI(v,t,i) PERLVAR(v,t) +#define PERLVARIC(v,t,i) PERLVAR(v,t) + +#include "thrdvar.h" +#include "intrpvar.h" +#include "perlvars.h" + +#undef PERLVAR +#undef PERLVARA +#undef PERLVARI +#undef PERLVARIC + +EOT + +sub emit_func { + my ($retval,$func,@args) = @_; + my @aargs = @args; + for my $a (@aargs) { $a =~ s/^.*\b(\w+)$/$1/ } + unshift @args, 'void *pPerl'; + local $" = ', '; + my $return = ($retval =~ /^\s*(void|Free_t|Signal_t)\s*$/ ? '' : 'return '); + return <$func(@aargs); +} +EOT + +} + +# XXXX temporary hack +for my $sym (qw( + perl_construct + perl_destruct + perl_free + perl_run + perl_parse + )) +{ + $skipapi_funcs{$sym}++; +} + +walk_table { + my $ret = ""; + if (@_ == 1) { + my $arg = shift; + $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifdef|else|endif)\b/; + } + else { + my ($flags,$retval,$func,@args) = @_; + return $ret if exists $skipapi_funcs{$func}; + unless (@args and $args[$#args] =~ /\.\.\./) { + unless ($flags =~ /s/) { + $ret .= "\n"; + if ($flags =~ /p/) { + $ret .= undefine("Perl_$func"); + $ret .= emit_func($retval,"Perl_$func",@args); + } + else { + $ret .= undefine($func); + $ret .= emit_func($retval,$func,@args); + } + } + } + } + $ret; +} \*CAPI; + +for $sym (sort keys %ppsym) { + $sym =~ s/^Perl_//; + print CAPI "\n"; + print CAPI undefine("Perl_$sym"); + if ($sym =~ /^ck_/) { + print CAPI emit_func('OP *',"Perl_$sym",'OP *o'); + } + else { # pp_foo + print CAPI emit_func('OP *',"Perl_$sym"); + } +} + +print CAPI <<'EOT'; + +END_EXTERN_C + +#endif /* PERL_OBJECT */ +EOT + __END__ # Lines are of the form: @@ -1448,17 +1604,8 @@ pn |void |safexfree |Malloc_t where #if defined(PERL_GLOBAL_STRUCT) p |struct perl_vars *|GetVars #endif -p |void |yydestruct |void *ptr p |int |runops_standard p |int |runops_debug - -#if defined(WIN32) -#if defined(PERL_OBJECT) -p |int& |ErrorNo -#else -p |int* |ErrorNo -#endif -#endif p |void |sv_catpvf_mg |SV *sv|const char* pat|... p |void |sv_catpv_mg |SV *sv|const char *ptr p |void |sv_catpvn_mg |SV *sv|const char *ptr|STRLEN len @@ -1534,8 +1681,6 @@ s |void |save_magic |I32 mgs_ix|SV *sv s |int |magic_methpack |SV *sv|MAGIC *mg|char *meth s |int |magic_methcall |SV *sv|MAGIC *mg|char *meth|I32 f \ |int n|SV *val -s |void |unwind_handler_stack |void *p -s |void |restore_magic |void *p #endif #if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) @@ -1617,20 +1762,10 @@ s |void |save_lines |AV *array|SV *sv s |OP* |doeval |int gimme|OP** startop s |PerlIO *|doopen_pmc |const char *name|const char *mode s |void |qsortsv |SV ** array|size_t num_elts|SVCOMPARE_t f -s |I32 |sortcv |SV *a|SV *b -s |I32 |sv_ncmp |SV *a|SV *b -s |I32 |sv_i_ncmp |SV *a|SV *b -s |I32 |amagic_ncmp |SV *a|SV *b -s |I32 |amagic_i_ncmp |SV *a|SV *b -s |I32 |amagic_cmp |SV *str1|SV *str2 -s |I32 |amagic_cmp_locale|SV *str1|SV *str2 #endif #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) s |CV* |get_db_sub |SV **svp|CV *cv -# if defined(USE_THREADS) -s |void |unset_cvowner |void *cvarg -# endif #endif #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) @@ -1667,7 +1802,6 @@ s |I32 |add_data |I32 n|char *s rs |void|re_croak2 |const char* pat1|const char* pat2|... s |I32 |regpposixcc |I32 value s |void |checkposixcc -s |void |clear_re |void *r #endif #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) @@ -1681,7 +1815,6 @@ s |CHECKPOINT|regcppush |I32 parenfloor s |char*|regcppop s |char*|regcp_set_to |I32 ss s |void |cache_re |regexp *prog -s |void |restore_pos |void *arg s |U8* |reghop |U8 *pos|I32 off s |U8* |reghopmaybe |U8 *pos|I32 off #endif @@ -1711,10 +1844,6 @@ s |void |del_xnv |XPVNV* p s |void |del_xpv |XPV* p s |void |del_xrv |XRV* p s |void |sv_unglob |SV* sv -s |void |do_report_used |SV *sv -s |void |do_clean_objs |SV *sv -s |void |do_clean_named_objs|SV *sv -s |void |do_clean_all |SV *sv s |void |not_a_number |SV *sv s |void |visit |SVFUNC_t f # if defined(PURIFY) @@ -1770,9 +1899,6 @@ s |void |depcom s |char* |incl_perldb s |I32 |utf16_textfilter|int idx|SV *sv|int maxlen s |I32 |utf16rev_textfilter|int idx|SV *sv|int maxlen -s |void |restore_rsfp |void *f -s |void |restore_expect |void *e -s |void |restore_lex_expect |void *e # if defined(CRIPPLED_CC) s |int |uni |I32 f|char *s # endif diff --git a/embedvar.h b/embedvar.h index 74e7ca5..6933cec 100644 --- a/embedvar.h +++ b/embedvar.h @@ -286,6 +286,13 @@ #define PL_DBsingle (PL_curinterp->IDBsingle) #define PL_DBsub (PL_curinterp->IDBsub) #define PL_DBtrace (PL_curinterp->IDBtrace) +#define PL_Dir (PL_curinterp->IDir) +#define PL_Env (PL_curinterp->IEnv) +#define PL_LIO (PL_curinterp->ILIO) +#define PL_Mem (PL_curinterp->IMem) +#define PL_Proc (PL_curinterp->IProc) +#define PL_Sock (PL_curinterp->ISock) +#define PL_StdIO (PL_curinterp->IStdIO) #define PL_amagic_generation (PL_curinterp->Iamagic_generation) #define PL_ampergv (PL_curinterp->Iampergv) #define PL_an (PL_curinterp->Ian) @@ -549,6 +556,13 @@ #define PL_IDBsingle PL_DBsingle #define PL_IDBsub PL_DBsub #define PL_IDBtrace PL_DBtrace +#define PL_IDir PL_Dir +#define PL_IEnv PL_Env +#define PL_ILIO PL_LIO +#define PL_IMem PL_Mem +#define PL_IProc PL_Proc +#define PL_ISock PL_Sock +#define PL_IStdIO PL_StdIO #define PL_Iamagic_generation PL_amagic_generation #define PL_Iampergv PL_ampergv #define PL_Ian PL_an diff --git a/ext/Opcode/Opcode.xs b/ext/Opcode/Opcode.xs index 100e6f8..c7d5f3e 100644 --- a/ext/Opcode/Opcode.xs +++ b/ext/Opcode/Opcode.xs @@ -209,7 +209,7 @@ opmask_addlocal(pTHX_ SV *opset, char *op_mask_buf) /* Localise PL_op_mask then * is disallowed by Borland */ if (opcode_debug >= 2) - SAVEDESTRUCTOR((void(CPERLscope(*))(void*))warn,"PL_op_mask restored"); + SAVEDESTRUCTOR((void(*)(void*))Perl_warn,"PL_op_mask restored"); #endif PL_op_mask = &op_mask_buf[0]; if (orig_op_mask) diff --git a/global.sym b/global.sym index c5597d1..36e2e75 100644 --- a/global.sym +++ b/global.sym @@ -613,11 +613,8 @@ Perl_safexcalloc Perl_safexrealloc Perl_safexfree Perl_GetVars -Perl_yydestruct Perl_runops_standard Perl_runops_debug -Perl_ErrorNo -Perl_ErrorNo Perl_sv_catpvf_mg Perl_sv_catpv_mg Perl_sv_catpvn_mg diff --git a/globals.c b/globals.c index 8ba15b3..216139d 100644 --- a/globals.c +++ b/globals.c @@ -6,6 +6,8 @@ #undef PERLVAR #define PERLVAR(x, y) +#undef PERLVARA +#define PERLVARA(x, n, y) #undef PERLVARI #define PERLVARI(x, y, z) PL_##x = z; #undef PERLVARIC @@ -21,13 +23,13 @@ CPerlObj::CPerlObj(IPerlMem* ipM, IPerlEnv* ipE, IPerlStdIO* ipStd, #include "intrpvar.h" #include "perlvars.h" - PL_piMem = ipM; - PL_piENV = ipE; - PL_piStdIO = ipStd; - PL_piLIO = ipLIO; - PL_piDir = ipD; - PL_piSock = ipS; - PL_piProc = ipP; + PL_Mem = ipM; + PL_Env = ipE; + PL_StdIO = ipStd; + PL_LIO = ipLIO; + PL_Dir = ipD; + PL_Sock = ipS; + PL_Proc = ipP; } void* @@ -39,12 +41,6 @@ CPerlObj::operator new(size_t nSize, IPerlMem *pvtbl) return NULL; } -int& -Perl_ErrorNo(void) -{ - return errno; -} - void CPerlObj::Init(void) { diff --git a/intrpvar.h b/intrpvar.h index e2d1d5f..6bff0dd 100644 --- a/intrpvar.h +++ b/intrpvar.h @@ -26,7 +26,7 @@ PERLVAR(Iwarnhook, SV *) PERLVAR(Iparsehook, SV *) PERLVAR(Icddir, char *) /* switches */ PERLVAR(Iminus_c, bool) -PERLVAR(Ipatchlevel[10],char) +PERLVARA(Ipatchlevel,10,char) PERLVAR(Ilocalpatches, char **) PERLVARI(Isplitstr, char *, " ") PERLVAR(Ipreprocess, bool) @@ -228,7 +228,7 @@ PERLVAR(Inice_chunk_size, U32) /* how nice the chunk of memory is */ PERLVARI(Irunops, runops_proc_t, FUNC_NAME_TO_PTR(RUNOPS_DEFAULT)) -PERLVAR(Itokenbuf[256], char) +PERLVARA(Itokenbuf,256, char) PERLVAR(Isv_undef, SV) PERLVAR(Isv_no, SV) @@ -257,8 +257,8 @@ PERLVAR(Ilex_brackstack,char *) /* what kind of brackets to pop */ PERLVAR(Ilex_casestack, char *) /* what kind of case mods in effect */ /* What we know when we're in LEX_KNOWNEXT state. */ -PERLVAR(Inextval[5], YYSTYPE) /* value of next token, if any */ -PERLVAR(Inexttype[5], I32) /* type of next token */ +PERLVARA(Inextval,5, YYSTYPE) /* value of next token, if any */ +PERLVARA(Inexttype,5, I32) /* type of next token */ PERLVAR(Inexttoke, I32) PERLVAR(Ilinestr, SV *) @@ -340,7 +340,7 @@ PERLVAR(Iutf8_totitle, SV *) PERLVAR(Iutf8_tolower, SV *) PERLVAR(Ilast_swash_hv, HV *) PERLVAR(Ilast_swash_klen, U32) -PERLVAR(Ilast_swash_key[10], U8) +PERLVARA(Ilast_swash_key,10, U8) PERLVAR(Ilast_swash_tmps, U8 *) PERLVAR(Ilast_swash_slen, STRLEN) @@ -356,7 +356,7 @@ PERLVAR(Iglob_index, int) PERLVAR(Iefloatbuf, char*) PERLVAR(Iefloatsize, STRLEN) PERLVAR(Isrand_called, bool) -PERLVAR(Iuudmap[256], char) +PERLVARA(Iuudmap,256, char) PERLVAR(Ibitcount, char *) PERLVAR(Ifilter_debug, int) @@ -383,11 +383,11 @@ PERLVAR(Icred_mutex, perl_mutex) /* altered credentials in effect */ #endif /* USE_THREADS */ #ifdef PERL_OBJECT -PERLVARI(piMem, IPerlMem*, NULL) -PERLVARI(piENV, IPerlEnv*, NULL) -PERLVARI(piStdIO, IPerlStdIO*, NULL) -PERLVARI(piLIO, IPerlLIO*, NULL) -PERLVARI(piDir, IPerlDir*, NULL) -PERLVARI(piSock, IPerlSock*, NULL) -PERLVARI(piProc, IPerlProc*, NULL) +PERLVARI(IMem, IPerlMem*, NULL) +PERLVARI(IEnv, IPerlEnv*, NULL) +PERLVARI(IStdIO, IPerlStdIO*, NULL) +PERLVARI(ILIO, IPerlLIO*, NULL) +PERLVARI(IDir, IPerlDir*, NULL) +PERLVARI(ISock, IPerlSock*, NULL) +PERLVARI(IProc, IPerlProc*, NULL) #endif diff --git a/iperlsys.h b/iperlsys.h index 2adb321..8d05812 100644 --- a/iperlsys.h +++ b/iperlsys.h @@ -203,82 +203,82 @@ struct IPerlStdIOInfo #endif #define PerlIO_stdin() \ - (*PL_piStdIO->pStdin)(PL_piStdIO) + (*PL_StdIO->pStdin)(PL_StdIO) #define PerlIO_stdout() \ - (*PL_piStdIO->pStdout)(PL_piStdIO) + (*PL_StdIO->pStdout)(PL_StdIO) #define PerlIO_stderr() \ - (*PL_piStdIO->pStderr)(PL_piStdIO) + (*PL_StdIO->pStderr)(PL_StdIO) #define PerlIO_open(x,y) \ - (*PL_piStdIO->pOpen)(PL_piStdIO, (x),(y)) + (*PL_StdIO->pOpen)(PL_StdIO, (x),(y)) #define PerlIO_close(f) \ - (*PL_piStdIO->pClose)(PL_piStdIO, (f)) + (*PL_StdIO->pClose)(PL_StdIO, (f)) #define PerlIO_eof(f) \ - (*PL_piStdIO->pEof)(PL_piStdIO, (f)) + (*PL_StdIO->pEof)(PL_StdIO, (f)) #define PerlIO_error(f) \ - (*PL_piStdIO->pError)(PL_piStdIO, (f)) + (*PL_StdIO->pError)(PL_StdIO, (f)) #define PerlIO_clearerr(f) \ - (*PL_piStdIO->pClearerr)(PL_piStdIO, (f)) + (*PL_StdIO->pClearerr)(PL_StdIO, (f)) #define PerlIO_getc(f) \ - (*PL_piStdIO->pGetc)(PL_piStdIO, (f)) + (*PL_StdIO->pGetc)(PL_StdIO, (f)) #define PerlIO_get_base(f) \ - (*PL_piStdIO->pGetBase)(PL_piStdIO, (f)) + (*PL_StdIO->pGetBase)(PL_StdIO, (f)) #define PerlIO_get_bufsiz(f) \ - (*PL_piStdIO->pGetBufsiz)(PL_piStdIO, (f)) + (*PL_StdIO->pGetBufsiz)(PL_StdIO, (f)) #define PerlIO_get_cnt(f) \ - (*PL_piStdIO->pGetCnt)(PL_piStdIO, (f)) + (*PL_StdIO->pGetCnt)(PL_StdIO, (f)) #define PerlIO_get_ptr(f) \ - (*PL_piStdIO->pGetPtr)(PL_piStdIO, (f)) + (*PL_StdIO->pGetPtr)(PL_StdIO, (f)) #define PerlIO_putc(f,c) \ - (*PL_piStdIO->pPutc)(PL_piStdIO, (f),(c)) + (*PL_StdIO->pPutc)(PL_StdIO, (f),(c)) #define PerlIO_puts(f,s) \ - (*PL_piStdIO->pPuts)(PL_piStdIO, (f),(s)) + (*PL_StdIO->pPuts)(PL_StdIO, (f),(s)) #define PerlIO_flush(f) \ - (*PL_piStdIO->pFlush)(PL_piStdIO, (f)) + (*PL_StdIO->pFlush)(PL_StdIO, (f)) #define PerlIO_gets(s, n, fp) \ - (*PL_piStdIO->pGets)(PL_piStdIO, (fp), s, n) + (*PL_StdIO->pGets)(PL_StdIO, (fp), s, n) #define PerlIO_ungetc(f,c) \ - (*PL_piStdIO->pUngetc)(PL_piStdIO, (f),(c)) + (*PL_StdIO->pUngetc)(PL_StdIO, (f),(c)) #define PerlIO_fileno(f) \ - (*PL_piStdIO->pFileno)(PL_piStdIO, (f)) + (*PL_StdIO->pFileno)(PL_StdIO, (f)) #define PerlIO_fdopen(f, s) \ - (*PL_piStdIO->pFdopen)(PL_piStdIO, (f),(s)) + (*PL_StdIO->pFdopen)(PL_StdIO, (f),(s)) #define PerlIO_reopen(p, m, f) \ - (*PL_piStdIO->pReopen)(PL_piStdIO, (p), (m), (f)) + (*PL_StdIO->pReopen)(PL_StdIO, (p), (m), (f)) #define PerlIO_read(f,buf,count) \ - (SSize_t)(*PL_piStdIO->pRead)(PL_piStdIO, (f), (buf), (count)) + (SSize_t)(*PL_StdIO->pRead)(PL_StdIO, (f), (buf), (count)) #define PerlIO_write(f,buf,count) \ - (*PL_piStdIO->pWrite)(PL_piStdIO, (f), (buf), (count)) + (*PL_StdIO->pWrite)(PL_StdIO, (f), (buf), (count)) #define PerlIO_setbuf(f,b) \ - (*PL_piStdIO->pSetBuf)(PL_piStdIO, (f), (b)) + (*PL_StdIO->pSetBuf)(PL_StdIO, (f), (b)) #define PerlIO_setvbuf(f,b,t,s) \ - (*PL_piStdIO->pSetVBuf)(PL_piStdIO, (f),(b),(t),(s)) + (*PL_StdIO->pSetVBuf)(PL_StdIO, (f),(b),(t),(s)) #define PerlIO_set_cnt(f,c) \ - (*PL_piStdIO->pSetCnt)(PL_piStdIO, (f), (c)) + (*PL_StdIO->pSetCnt)(PL_StdIO, (f), (c)) #define PerlIO_set_ptrcnt(f,p,c) \ - (*PL_piStdIO->pSetPtrCnt)(PL_piStdIO, (f), (p), (c)) + (*PL_StdIO->pSetPtrCnt)(PL_StdIO, (f), (p), (c)) #define PerlIO_setlinebuf(f) \ - (*PL_piStdIO->pSetlinebuf)(PL_piStdIO, (f)) + (*PL_StdIO->pSetlinebuf)(PL_StdIO, (f)) #define PerlIO_printf fprintf -#define PerlIO_stdoutf *PL_piStdIO->pPrintf +#define PerlIO_stdoutf *PL_StdIO->pPrintf #define PerlIO_vprintf(f,fmt,a) \ - (*PL_piStdIO->pVprintf)(PL_piStdIO, (f),(fmt),a) + (*PL_StdIO->pVprintf)(PL_StdIO, (f),(fmt),a) #define PerlIO_tell(f) \ - (*PL_piStdIO->pTell)(PL_piStdIO, (f)) + (*PL_StdIO->pTell)(PL_StdIO, (f)) #define PerlIO_seek(f,o,w) \ - (*PL_piStdIO->pSeek)(PL_piStdIO, (f),(o),(w)) + (*PL_StdIO->pSeek)(PL_StdIO, (f),(o),(w)) #define PerlIO_getpos(f,p) \ - (*PL_piStdIO->pGetpos)(PL_piStdIO, (f),(p)) + (*PL_StdIO->pGetpos)(PL_StdIO, (f),(p)) #define PerlIO_setpos(f,p) \ - (*PL_piStdIO->pSetpos)(PL_piStdIO, (f),(p)) + (*PL_StdIO->pSetpos)(PL_StdIO, (f),(p)) #define PerlIO_rewind(f) \ - (*PL_piStdIO->pRewind)(PL_piStdIO, (f)) + (*PL_StdIO->pRewind)(PL_StdIO, (f)) #define PerlIO_tmpfile() \ - (*PL_piStdIO->pTmpfile)(PL_piStdIO) + (*PL_StdIO->pTmpfile)(PL_StdIO) #define PerlIO_init() \ - (*PL_piStdIO->pInit)(PL_piStdIO) + (*PL_StdIO->pInit)(PL_StdIO) #undef init_os_extras #define init_os_extras(x) \ - (*PL_piStdIO->pInitOSExtras)(PL_piStdIO) + (*PL_StdIO->pInitOSExtras)(PL_StdIO) #else /* PERL_OBJECT */ @@ -500,23 +500,23 @@ struct IPerlDirInfo }; #define PerlDir_mkdir(name, mode) \ - (*PL_piDir->pMakedir)(PL_piDir, (name), (mode)) + (*PL_Dir->pMakedir)(PL_Dir, (name), (mode)) #define PerlDir_chdir(name) \ - (*PL_piDir->pChdir)(PL_piDir, (name)) + (*PL_Dir->pChdir)(PL_Dir, (name)) #define PerlDir_rmdir(name) \ - (*PL_piDir->pRmdir)(PL_piDir, (name)) + (*PL_Dir->pRmdir)(PL_Dir, (name)) #define PerlDir_close(dir) \ - (*PL_piDir->pClose)(PL_piDir, (dir)) + (*PL_Dir->pClose)(PL_Dir, (dir)) #define PerlDir_open(name) \ - (*PL_piDir->pOpen)(PL_piDir, (name)) + (*PL_Dir->pOpen)(PL_Dir, (name)) #define PerlDir_read(dir) \ - (*PL_piDir->pRead)(PL_piDir, (dir)) + (*PL_Dir->pRead)(PL_Dir, (dir)) #define PerlDir_rewind(dir) \ - (*PL_piDir->pRewind)(PL_piDir, (dir)) + (*PL_Dir->pRewind)(PL_Dir, (dir)) #define PerlDir_seek(dir, loc) \ - (*PL_piDir->pSeek)(PL_piDir, (dir), (loc)) + (*PL_Dir->pSeek)(PL_Dir, (dir), (loc)) #define PerlDir_tell(dir) \ - (*PL_piDir->pTell)(PL_piDir, (dir)) + (*PL_Dir->pTell)(PL_Dir, (dir)) #else /* PERL_OBJECT */ @@ -586,20 +586,20 @@ struct IPerlEnvInfo }; #define PerlEnv_putenv(str) \ - (*PL_piENV->pPutenv)(PL_piENV,(str)) + (*PL_Env->pPutenv)(PL_Env,(str)) #define PerlEnv_getenv(str) \ - (*PL_piENV->pGetenv)(PL_piENV,(str)) + (*PL_Env->pGetenv)(PL_Env,(str)) #define PerlEnv_getenv_len(str,l) \ - (*PL_piENV->pGetenv_len)(PL_piENV,(str), (l)) + (*PL_Env->pGetenv_len)(PL_Env,(str), (l)) #define PerlEnv_Clear() \ - (*PL_piENV->pClearenv)(PL_piENV) + (*PL_Env->pClearenv)(PL_Env) #define PerlEnv_Clear() \ - (*PL_piENV->pClearenv)(PL_piENV) + (*PL_Env->pClearenv)(PL_Env) #ifdef HAS_ENVGETENV # define PerlEnv_ENVgetenv(str) \ - (*PL_piENV->pENVGetenv)(PL_piENV,(str)) + (*PL_Env->pENVGetenv)(PL_Env,(str)) # define PerlEnv_ENVgetenv_len(str,l) \ - (*PL_piENV->pENVGetenv_len)(PL_piENV,(str), (l)) + (*PL_Env->pENVGetenv_len)(PL_Env,(str), (l)) #else # define PerlEnv_ENVgetenv(str) \ PerlEnv_getenv((str)) @@ -607,14 +607,14 @@ struct IPerlEnvInfo PerlEnv_getenv_len((str),(l)) #endif #define PerlEnv_uname(name) \ - (*PL_piENV->pEnvUname)(PL_piENV,(name)) + (*PL_Env->pEnvUname)(PL_Env,(name)) #ifdef WIN32 #define PerlEnv_os_id() \ - (*PL_piENV->pEnvOsID)(PL_piENV) + (*PL_Env->pEnvOsID)(PL_Env) #define PerlEnv_lib_path(str) \ - (*PL_piENV->pLibPath)(PL_piENV,(str)) + (*PL_Env->pLibPath)(PL_Env,(str)) #define PerlEnv_sitelib_path(str) \ - (*PL_piENV->pSiteLibPath)(PL_piENV,(str)) + (*PL_Env->pSiteLibPath)(PL_Env,(str)) #endif #else /* PERL_OBJECT */ @@ -713,55 +713,55 @@ struct IPerlLIOInfo }; #define PerlLIO_access(file, mode) \ - (*PL_piLIO->pAccess)(PL_piLIO, (file), (mode)) + (*PL_LIO->pAccess)(PL_LIO, (file), (mode)) #define PerlLIO_chmod(file, mode) \ - (*PL_piLIO->pChmod)(PL_piLIO, (file), (mode)) + (*PL_LIO->pChmod)(PL_LIO, (file), (mode)) #define PerlLIO_chown(file, owner, group) \ - (*PL_piLIO->pChown)(PL_piLIO, (file), (owner), (group)) + (*PL_LIO->pChown)(PL_LIO, (file), (owner), (group)) #define PerlLIO_chsize(fd, size) \ - (*PL_piLIO->pChsize)(PL_piLIO, (fd), (size)) + (*PL_LIO->pChsize)(PL_LIO, (fd), (size)) #define PerlLIO_close(fd) \ - (*PL_piLIO->pClose)(PL_piLIO, (fd)) + (*PL_LIO->pClose)(PL_LIO, (fd)) #define PerlLIO_dup(fd) \ - (*PL_piLIO->pDup)(PL_piLIO, (fd)) + (*PL_LIO->pDup)(PL_LIO, (fd)) #define PerlLIO_dup2(fd1, fd2) \ - (*PL_piLIO->pDup2)(PL_piLIO, (fd1), (fd2)) + (*PL_LIO->pDup2)(PL_LIO, (fd1), (fd2)) #define PerlLIO_flock(fd, op) \ - (*PL_piLIO->pFlock)(PL_piLIO, (fd), (op)) + (*PL_LIO->pFlock)(PL_LIO, (fd), (op)) #define PerlLIO_fstat(fd, buf) \ - (*PL_piLIO->pFileStat)(PL_piLIO, (fd), (buf)) + (*PL_LIO->pFileStat)(PL_LIO, (fd), (buf)) #define PerlLIO_ioctl(fd, u, buf) \ - (*PL_piLIO->pIOCtl)(PL_piLIO, (fd), (u), (buf)) + (*PL_LIO->pIOCtl)(PL_LIO, (fd), (u), (buf)) #define PerlLIO_isatty(fd) \ - (*PL_piLIO->pIsatty)(PL_piLIO, (fd)) + (*PL_LIO->pIsatty)(PL_LIO, (fd)) #define PerlLIO_lseek(fd, offset, mode) \ - (*PL_piLIO->pLseek)(PL_piLIO, (fd), (offset), (mode)) + (*PL_LIO->pLseek)(PL_LIO, (fd), (offset), (mode)) #define PerlLIO_lstat(name, buf) \ - (*PL_piLIO->pLstat)(PL_piLIO, (name), (buf)) + (*PL_LIO->pLstat)(PL_LIO, (name), (buf)) #define PerlLIO_mktemp(file) \ - (*PL_piLIO->pMktemp)(PL_piLIO, (file)) + (*PL_LIO->pMktemp)(PL_LIO, (file)) #define PerlLIO_open(file, flag) \ - (*PL_piLIO->pOpen)(PL_piLIO, (file), (flag)) + (*PL_LIO->pOpen)(PL_LIO, (file), (flag)) #define PerlLIO_open3(file, flag, perm) \ - (*PL_piLIO->pOpen3)(PL_piLIO, (file), (flag), (perm)) + (*PL_LIO->pOpen3)(PL_LIO, (file), (flag), (perm)) #define PerlLIO_read(fd, buf, count) \ - (*PL_piLIO->pRead)(PL_piLIO, (fd), (buf), (count)) + (*PL_LIO->pRead)(PL_LIO, (fd), (buf), (count)) #define PerlLIO_rename(oname, newname) \ - (*PL_piLIO->pRename)(PL_piLIO, (oname), (newname)) + (*PL_LIO->pRename)(PL_LIO, (oname), (newname)) #define PerlLIO_setmode(fd, mode) \ - (*PL_piLIO->pSetmode)(PL_piLIO, (fd), (mode)) + (*PL_LIO->pSetmode)(PL_LIO, (fd), (mode)) #define PerlLIO_stat(name, buf) \ - (*PL_piLIO->pNameStat)(PL_piLIO, (name), (buf)) + (*PL_LIO->pNameStat)(PL_LIO, (name), (buf)) #define PerlLIO_tmpnam(str) \ - (*PL_piLIO->pTmpnam)(PL_piLIO, (str)) + (*PL_LIO->pTmpnam)(PL_LIO, (str)) #define PerlLIO_umask(mode) \ - (*PL_piLIO->pUmask)(PL_piLIO, (mode)) + (*PL_LIO->pUmask)(PL_LIO, (mode)) #define PerlLIO_unlink(file) \ - (*PL_piLIO->pUnlink)(PL_piLIO, (file)) + (*PL_LIO->pUnlink)(PL_LIO, (file)) #define PerlLIO_utime(file, time) \ - (*PL_piLIO->pUtime)(PL_piLIO, (file), (time)) + (*PL_LIO->pUtime)(PL_LIO, (file), (time)) #define PerlLIO_write(fd, buf, count) \ - (*PL_piLIO->pWrite)(PL_piLIO, (fd), (buf), (count)) + (*PL_LIO->pWrite)(PL_LIO, (fd), (buf), (count)) #else /* PERL_OBJECT */ @@ -824,11 +824,11 @@ struct IPerlMemInfo }; #define PerlMem_malloc(size) \ - (*PL_piMem->pMalloc)(PL_piMem, (size)) + (*PL_Mem->pMalloc)(PL_Mem, (size)) #define PerlMem_realloc(buf, size) \ - (*PL_piMem->pRealloc)(PL_piMem, (buf), (size)) + (*PL_Mem->pRealloc)(PL_Mem, (buf), (size)) #define PerlMem_free(buf) \ - (*PL_piMem->pFree)(PL_piMem, (buf)) + (*PL_Mem->pFree)(PL_Mem, (buf)) #else /* PERL_OBJECT */ @@ -941,71 +941,71 @@ struct IPerlProcInfo }; #define PerlProc_abort() \ - (*PL_piProc->pAbort)(PL_piProc) + (*PL_Proc->pAbort)(PL_Proc) #define PerlProc_crypt(c,s) \ - (*PL_piProc->pCrypt)(PL_piProc, (c), (s)) + (*PL_Proc->pCrypt)(PL_Proc, (c), (s)) #define PerlProc_exit(s) \ - (*PL_piProc->pExit)(PL_piProc, (s)) + (*PL_Proc->pExit)(PL_Proc, (s)) #define PerlProc__exit(s) \ - (*PL_piProc->p_Exit)(PL_piProc, (s)) + (*PL_Proc->p_Exit)(PL_Proc, (s)) #define PerlProc_execl(c, w, x, y, z) \ - (*PL_piProc->pExecl)(PL_piProc, (c), (w), (x), (y), (z)) + (*PL_Proc->pExecl)(PL_Proc, (c), (w), (x), (y), (z)) #define PerlProc_execv(c, a) \ - (*PL_piProc->pExecv)(PL_piProc, (c), (a)) + (*PL_Proc->pExecv)(PL_Proc, (c), (a)) #define PerlProc_execvp(c, a) \ - (*PL_piProc->pExecvp)(PL_piProc, (c), (a)) + (*PL_Proc->pExecvp)(PL_Proc, (c), (a)) #define PerlProc_getuid() \ - (*PL_piProc->pGetuid)(PL_piProc) + (*PL_Proc->pGetuid)(PL_Proc) #define PerlProc_geteuid() \ - (*PL_piProc->pGeteuid)(PL_piProc) + (*PL_Proc->pGeteuid)(PL_Proc) #define PerlProc_getgid() \ - (*PL_piProc->pGetgid)(PL_piProc) + (*PL_Proc->pGetgid)(PL_Proc) #define PerlProc_getegid() \ - (*PL_piProc->pGetegid)(PL_piProc) + (*PL_Proc->pGetegid)(PL_Proc) #define PerlProc_getlogin() \ - (*PL_piProc->pGetlogin)(PL_piProc) + (*PL_Proc->pGetlogin)(PL_Proc) #define PerlProc_kill(i, a) \ - (*PL_piProc->pKill)(PL_piProc, (i), (a)) + (*PL_Proc->pKill)(PL_Proc, (i), (a)) #define PerlProc_killpg(i, a) \ - (*PL_piProc->pKillpg)(PL_piProc, (i), (a)) + (*PL_Proc->pKillpg)(PL_Proc, (i), (a)) #define PerlProc_pause() \ - (*PL_piProc->pPauseProc)(PL_piProc) + (*PL_Proc->pPauseProc)(PL_Proc) #define PerlProc_popen(c, m) \ - (*PL_piProc->pPopen)(PL_piProc, (c), (m)) + (*PL_Proc->pPopen)(PL_Proc, (c), (m)) #define PerlProc_pclose(f) \ - (*PL_piProc->pPclose)(PL_piProc, (f)) + (*PL_Proc->pPclose)(PL_Proc, (f)) #define PerlProc_pipe(fd) \ - (*PL_piProc->pPipe)(PL_piProc, (fd)) + (*PL_Proc->pPipe)(PL_Proc, (fd)) #define PerlProc_setuid(u) \ - (*PL_piProc->pSetuid)(PL_piProc, (u)) + (*PL_Proc->pSetuid)(PL_Proc, (u)) #define PerlProc_setgid(g) \ - (*PL_piProc->pSetgid)(PL_piProc, (g)) + (*PL_Proc->pSetgid)(PL_Proc, (g)) #define PerlProc_sleep(t) \ - (*PL_piProc->pSleep)(PL_piProc, (t)) + (*PL_Proc->pSleep)(PL_Proc, (t)) #define PerlProc_times(t) \ - (*PL_piProc->pTimes)(PL_piProc, (t)) + (*PL_Proc->pTimes)(PL_Proc, (t)) #define PerlProc_wait(t) \ - (*PL_piProc->pWait)(PL_piProc, (t)) + (*PL_Proc->pWait)(PL_Proc, (t)) #define PerlProc_waitpid(p,s,f) \ - (*PL_piProc->pWaitpid)(PL_piProc, (p), (s), (f)) + (*PL_Proc->pWaitpid)(PL_Proc, (p), (s), (f)) #define PerlProc_signal(n, h) \ - (*PL_piProc->pSignal)(PL_piProc, (n), (h)) + (*PL_Proc->pSignal)(PL_Proc, (n), (h)) #define PerlProc_setjmp(b, n) Sigsetjmp((b), (n)) #define PerlProc_longjmp(b, n) Siglongjmp((b), (n)) #ifdef WIN32 #define PerlProc_DynaLoad(f) \ - (*PL_piProc->pDynaLoader)(PL_piProc, (f)) + (*PL_Proc->pDynaLoader)(PL_Proc, (f)) #define PerlProc_GetOSError(s,e) \ - (*PL_piProc->pGetOSError)(PL_piProc, (s), (e)) + (*PL_Proc->pGetOSError)(PL_Proc, (s), (e)) #define PerlProc_Cmd(s) \ - (*PL_piProc->pDoCmd)(PL_piProc, (s)) + (*PL_Proc->pDoCmd)(PL_Proc, (s)) #define do_spawn(s) \ - (*PL_piProc->pSpawn)(PL_piProc, (s)) + (*PL_Proc->pSpawn)(PL_Proc, (s)) #define do_spawnvp(m, c, a) \ - (*PL_piProc->pSpawnvp)(PL_piProc, (m), (c), (a)) + (*PL_Proc->pSpawnvp)(PL_Proc, (m), (c), (a)) #define PerlProc_aspawn(m,c,a) \ - (*PL_piProc->pASpawn)(PL_piProc, (m), (c), (a)) + (*PL_Proc->pASpawn)(PL_Proc, (m), (c), (a)) #endif #else /* PERL_OBJECT */ @@ -1041,7 +1041,7 @@ struct IPerlProcInfo #ifdef WIN32 #define PerlProc_DynaLoad(f) \ - win32_dynaload(aTHX_ const char*filename) + win32_dynaload(aTHX_ (f)) #define PerlProc_GetOSError(s,e) \ win32_str_os_error(aTHX_ (s), (e)) #endif @@ -1174,95 +1174,95 @@ struct IPerlSockInfo }; #define PerlSock_htonl(x) \ - (*PL_piSock->pHtonl)(PL_piSock, x) + (*PL_Sock->pHtonl)(PL_Sock, x) #define PerlSock_htons(x) \ - (*PL_piSock->pHtons)(PL_piSock, x) + (*PL_Sock->pHtons)(PL_Sock, x) #define PerlSock_ntohl(x) \ - (*PL_piSock->pNtohl)(PL_piSock, x) + (*PL_Sock->pNtohl)(PL_Sock, x) #define PerlSock_ntohs(x) \ - (*PL_piSock->pNtohs)(PL_piSock, x) + (*PL_Sock->pNtohs)(PL_Sock, x) #define PerlSock_accept(s, a, l) \ - (*PL_piSock->pAccept)(PL_piSock, s, a, l) + (*PL_Sock->pAccept)(PL_Sock, s, a, l) #define PerlSock_bind(s, n, l) \ - (*PL_piSock->pBind)(PL_piSock, s, n, l) + (*PL_Sock->pBind)(PL_Sock, s, n, l) #define PerlSock_connect(s, n, l) \ - (*PL_piSock->pConnect)(PL_piSock, s, n, l) + (*PL_Sock->pConnect)(PL_Sock, s, n, l) #define PerlSock_endhostent() \ - (*PL_piSock->pEndhostent)(PL_piSock) + (*PL_Sock->pEndhostent)(PL_Sock) #define PerlSock_endnetent() \ - (*PL_piSock->pEndnetent)(PL_piSock) + (*PL_Sock->pEndnetent)(PL_Sock) #define PerlSock_endprotoent() \ - (*PL_piSock->pEndprotoent)(PL_piSock) + (*PL_Sock->pEndprotoent)(PL_Sock) #define PerlSock_endservent() \ - (*PL_piSock->pEndservent)(PL_piSock) + (*PL_Sock->pEndservent)(PL_Sock) #define PerlSock_gethostbyaddr(a, l, t) \ - (*PL_piSock->pGethostbyaddr)(PL_piSock, a, l, t) + (*PL_Sock->pGethostbyaddr)(PL_Sock, a, l, t) #define PerlSock_gethostbyname(n) \ - (*PL_piSock->pGethostbyname)(PL_piSock, n) + (*PL_Sock->pGethostbyname)(PL_Sock, n) #define PerlSock_gethostent() \ - (*PL_piSock->pGethostent)(PL_piSock) + (*PL_Sock->pGethostent)(PL_Sock) #define PerlSock_gethostname(n, l) \ - (*PL_piSock->pGethostname)(PL_piSock, n, l) + (*PL_Sock->pGethostname)(PL_Sock, n, l) #define PerlSock_getnetbyaddr(n, t) \ - (*PL_piSock->pGetnetbyaddr)(PL_piSock, n, t) + (*PL_Sock->pGetnetbyaddr)(PL_Sock, n, t) #define PerlSock_getnetbyname(c) \ - (*PL_piSock->pGetnetbyname)(PL_piSock, c) + (*PL_Sock->pGetnetbyname)(PL_Sock, c) #define PerlSock_getnetent() \ - (*PL_piSock->pGetnetent)(PL_piSock) + (*PL_Sock->pGetnetent)(PL_Sock) #define PerlSock_getpeername(s, n, l) \ - (*PL_piSock->pGetpeername)(PL_piSock, s, n, l) + (*PL_Sock->pGetpeername)(PL_Sock, s, n, l) #define PerlSock_getprotobyname(n) \ - (*PL_piSock->pGetprotobyname)(PL_piSock, n) + (*PL_Sock->pGetprotobyname)(PL_Sock, n) #define PerlSock_getprotobynumber(n) \ - (*PL_piSock->pGetprotobynumber)(PL_piSock, n) + (*PL_Sock->pGetprotobynumber)(PL_Sock, n) #define PerlSock_getprotoent() \ - (*PL_piSock->pGetprotoent)(PL_piSock) + (*PL_Sock->pGetprotoent)(PL_Sock) #define PerlSock_getservbyname(n, p) \ - (*PL_piSock->pGetservbyname)(PL_piSock, n, p) + (*PL_Sock->pGetservbyname)(PL_Sock, n, p) #define PerlSock_getservbyport(port, p) \ - (*PL_piSock->pGetservbyport)(PL_piSock, port, p) + (*PL_Sock->pGetservbyport)(PL_Sock, port, p) #define PerlSock_getservent() \ - (*PL_piSock->pGetservent)(PL_piSock) + (*PL_Sock->pGetservent)(PL_Sock) #define PerlSock_getsockname(s, n, l) \ - (*PL_piSock->pGetsockname)(PL_piSock, s, n, l) + (*PL_Sock->pGetsockname)(PL_Sock, s, n, l) #define PerlSock_getsockopt(s,l,n,v,i) \ - (*PL_piSock->pGetsockopt)(PL_piSock, s, l, n, v, i) + (*PL_Sock->pGetsockopt)(PL_Sock, s, l, n, v, i) #define PerlSock_inet_addr(c) \ - (*PL_piSock->pInetAddr)(PL_piSock, c) + (*PL_Sock->pInetAddr)(PL_Sock, c) #define PerlSock_inet_ntoa(i) \ - (*PL_piSock->pInetNtoa)(PL_piSock, i) + (*PL_Sock->pInetNtoa)(PL_Sock, i) #define PerlSock_listen(s, b) \ - (*PL_piSock->pListen)(PL_piSock, s, b) + (*PL_Sock->pListen)(PL_Sock, s, b) #define PerlSock_recv(s, b, l, f) \ - (*PL_piSock->pRecv)(PL_piSock, s, b, l, f) + (*PL_Sock->pRecv)(PL_Sock, s, b, l, f) #define PerlSock_recvfrom(s,b,l,f,from,fromlen) \ - (*PL_piSock->pRecvfrom)(PL_piSock, s, b, l, f, from, fromlen) + (*PL_Sock->pRecvfrom)(PL_Sock, s, b, l, f, from, fromlen) #define PerlSock_select(n, r, w, e, t) \ - (*PL_piSock->pSelect)(PL_piSock, n, (char*)r, (char*)w, (char*)e, t) + (*PL_Sock->pSelect)(PL_Sock, n, (char*)r, (char*)w, (char*)e, t) #define PerlSock_send(s, b, l, f) \ - (*PL_piSock->pSend)(PL_piSock, s, b, l, f) + (*PL_Sock->pSend)(PL_Sock, s, b, l, f) #define PerlSock_sendto(s, b, l, f, t, tlen) \ - (*PL_piSock->pSendto)(PL_piSock, s, b, l, f, t, tlen) + (*PL_Sock->pSendto)(PL_Sock, s, b, l, f, t, tlen) #define PerlSock_sethostent(f) \ - (*PL_piSock->pSethostent)(PL_piSock, f) + (*PL_Sock->pSethostent)(PL_Sock, f) #define PerlSock_setnetent(f) \ - (*PL_piSock->pSetnetent)(PL_piSock, f) + (*PL_Sock->pSetnetent)(PL_Sock, f) #define PerlSock_setprotoent(f) \ - (*PL_piSock->pSetprotoent)(PL_piSock, f) + (*PL_Sock->pSetprotoent)(PL_Sock, f) #define PerlSock_setservent(f) \ - (*PL_piSock->pSetservent)(PL_piSock, f) + (*PL_Sock->pSetservent)(PL_Sock, f) #define PerlSock_setsockopt(s, l, n, v, len) \ - (*PL_piSock->pSetsockopt)(PL_piSock, s, l, n, v, len) + (*PL_Sock->pSetsockopt)(PL_Sock, s, l, n, v, len) #define PerlSock_shutdown(s, h) \ - (*PL_piSock->pShutdown)(PL_piSock, s, h) + (*PL_Sock->pShutdown)(PL_Sock, s, h) #define PerlSock_socket(a, t, p) \ - (*PL_piSock->pSocket)(PL_piSock, a, t, p) + (*PL_Sock->pSocket)(PL_Sock, a, t, p) #define PerlSock_socketpair(a, t, p, f) \ - (*PL_piSock->pSocketpair)(PL_piSock, a, t, p, f) + (*PL_Sock->pSocketpair)(PL_Sock, a, t, p, f) #ifdef WIN32 #define PerlSock_closesocket(s) \ - (*PL_piSock->pClosesocket)(PL_piSock, s) + (*PL_Sock->pClosesocket)(PL_Sock, s) #endif #else /* PERL_OBJECT */ diff --git a/mg.c b/mg.c index cc40a29..2b6459f 100644 --- a/mg.c +++ b/mg.c @@ -33,6 +33,9 @@ # define VTBL *vtbl #endif +static void restore_magic(pTHXo_ void *p); +static void unwind_handler_stack(pTHXo_ void *p); + /* * Use the "DESTRUCTOR" scope cleanup to reinstate magic. */ @@ -51,7 +54,7 @@ S_save_magic(pTHX_ I32 mgs_ix, SV *sv) MGS* mgs; assert(SvMAGICAL(sv)); - SAVEDESTRUCTOR(S_restore_magic, (void*)mgs_ix); + SAVEDESTRUCTOR(restore_magic, (void*)mgs_ix); mgs = SSPTR(mgs_ix, MGS*); mgs->mgs_sv = sv; @@ -63,48 +66,6 @@ S_save_magic(pTHX_ I32 mgs_ix, SV *sv) SvFLAGS(sv) |= (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT; } -STATIC void -S_restore_magic(pTHX_ void *p) -{ - dTHR; - MGS* mgs = SSPTR((I32)p, MGS*); - SV* sv = mgs->mgs_sv; - - if (!sv) - return; - - if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) - { - if (mgs->mgs_flags) - SvFLAGS(sv) |= mgs->mgs_flags; - else - mg_magical(sv); - if (SvGMAGICAL(sv)) - SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK|SVf_POK); - } - - mgs->mgs_sv = NULL; /* mark the MGS structure as restored */ - - /* If we're still on top of the stack, pop us off. (That condition - * will be satisfied if restore_magic was called explicitly, but *not* - * if it's being called via leave_scope.) - * The reason for doing this is that otherwise, things like sv_2cv() - * may leave alloc gunk on the savestack, and some code - * (e.g. sighandler) doesn't expect that... - */ - if (PL_savestack_ix == mgs->mgs_ss_ix) - { - I32 popval = SSPOPINT; - assert(popval == SAVEt_DESTRUCTOR); - PL_savestack_ix -= 2; - popval = SSPOPINT; - assert(popval == SAVEt_ALLOC); - popval = SSPOPINT; - PL_savestack_ix -= popval; - } - -} - void Perl_mg_magical(pTHX_ SV *sv) { @@ -153,7 +114,7 @@ Perl_mg_get(pTHX_ SV *sv) mgp = &SvMAGIC(sv); /* Re-establish pointer after sv_upgrade */ } - restore_magic((void*)mgs_ix); + restore_magic(aTHXo_ (void*)mgs_ix); return 0; } @@ -179,7 +140,7 @@ Perl_mg_set(pTHX_ SV *sv) (VTBL->svt_set)(aTHX_ sv, mg); } - restore_magic((void*)mgs_ix); + restore_magic(aTHXo_ (void*)mgs_ix); return 0; } @@ -199,7 +160,7 @@ Perl_mg_length(pTHX_ SV *sv) save_magic(mgs_ix, sv); /* omit MGf_GSKIP -- not changed here */ len = (VTBL->svt_len)(aTHX_ sv, mg); - restore_magic((void*)mgs_ix); + restore_magic(aTHXo_ (void*)mgs_ix); return len; } } @@ -223,7 +184,7 @@ Perl_mg_size(pTHX_ SV *sv) save_magic(mgs_ix, sv); /* omit MGf_GSKIP -- not changed here */ len = (VTBL->svt_len)(aTHX_ sv, mg); - restore_magic((void*)mgs_ix); + restore_magic(aTHXo_ (void*)mgs_ix); return len; } } @@ -258,7 +219,7 @@ Perl_mg_clear(pTHX_ SV *sv) (VTBL->svt_clear)(aTHX_ sv, mg); } - restore_magic((void*)mgs_ix); + restore_magic(aTHXo_ (void*)mgs_ix); return 0; } @@ -2061,19 +2022,6 @@ Perl_whichsig(pTHX_ char *sig) static SV* sig_sv; -STATIC void -S_unwind_handler_stack(pTHX_ void *p) -{ - dTHR; - U32 flags = *(U32*)p; - - if (flags & 1) - PL_savestack_ix -= 5; /* Unprotect save in progress. */ - /* cxstack_ix-- Not needed, die already unwound it. */ - if (flags & 64) - SvREFCNT_dec(sig_sv); -} - Signal_t Perl_sighandler(int sig) { @@ -2106,7 +2054,7 @@ Perl_sighandler(int sig) if (flags & 1) { PL_savestack_ix += 5; /* Protect save in progress. */ o_save_i = PL_savestack_ix; - SAVEDESTRUCTOR(S_unwind_handler_stack, (void*)&flags); + SAVEDESTRUCTOR(unwind_handler_stack, (void*)&flags); } if (flags & 4) PL_markstack_ptr++; /* Protect mark. */ @@ -2167,3 +2115,62 @@ cleanup: } +#ifdef PERL_OBJECT +#define NO_XSLOCKS +#include "XSUB.h" +#endif + +static void +restore_magic(pTHXo_ void *p) +{ + dTHR; + MGS* mgs = SSPTR((I32)p, MGS*); + SV* sv = mgs->mgs_sv; + + if (!sv) + return; + + if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) + { + if (mgs->mgs_flags) + SvFLAGS(sv) |= mgs->mgs_flags; + else + mg_magical(sv); + if (SvGMAGICAL(sv)) + SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK|SVf_POK); + } + + mgs->mgs_sv = NULL; /* mark the MGS structure as restored */ + + /* If we're still on top of the stack, pop us off. (That condition + * will be satisfied if restore_magic was called explicitly, but *not* + * if it's being called via leave_scope.) + * The reason for doing this is that otherwise, things like sv_2cv() + * may leave alloc gunk on the savestack, and some code + * (e.g. sighandler) doesn't expect that... + */ + if (PL_savestack_ix == mgs->mgs_ss_ix) + { + I32 popval = SSPOPINT; + assert(popval == SAVEt_DESTRUCTOR); + PL_savestack_ix -= 2; + popval = SSPOPINT; + assert(popval == SAVEt_ALLOC); + popval = SSPOPINT; + PL_savestack_ix -= popval; + } + +} + +static void +unwind_handler_stack(pTHXo_ void *p) +{ + dTHR; + U32 flags = *(U32*)p; + + if (flags & 1) + PL_savestack_ix -= 5; /* Unprotect save in progress. */ + /* cxstack_ix-- Not needed, die already unwound it. */ + if (flags & 64) + SvREFCNT_dec(sig_sv); +} diff --git a/miniperlmain.c b/miniperlmain.c index 11635dd..f7b24f4 100644 --- a/miniperlmain.c +++ b/miniperlmain.c @@ -28,10 +28,12 @@ main(int argc, char **argv, char **env) #ifdef PERL_GLOBAL_STRUCT #define PERLVAR(var,type) /**/ +#define PERLVARA(var,type) /**/ #define PERLVARI(var,type,init) PL_Vars.var = init; #define PERLVARIC(var,type,init) PL_Vars.var = init; #include "perlvars.h" #undef PERLVAR +#undef PERLVARA #undef PERLVARI #undef PERLVARIC #endif diff --git a/objXSUB.h b/objXSUB.h index 6f201dc..e741aa4 100644 --- a/objXSUB.h +++ b/objXSUB.h @@ -9,801 +9,801 @@ /* Variables */ #undef PL_Argv -#define PL_Argv pPerl->PL_Argv +#define PL_Argv (*Perl_IArgv_ptr(pPerl)) #undef PL_Cmd -#define PL_Cmd pPerl->PL_Cmd +#define PL_Cmd (*Perl_ICmd_ptr(pPerl)) #undef PL_DBcv -#define PL_DBcv pPerl->PL_DBcv +#define PL_DBcv (*Perl_IDBcv_ptr(pPerl)) #undef PL_DBgv -#define PL_DBgv pPerl->PL_DBgv +#define PL_DBgv (*Perl_IDBgv_ptr(pPerl)) #undef PL_DBline -#define PL_DBline pPerl->PL_DBline +#define PL_DBline (*Perl_IDBline_ptr(pPerl)) #undef PL_DBsignal -#define PL_DBsignal pPerl->PL_DBsignal +#define PL_DBsignal (*Perl_IDBsignal_ptr(pPerl)) #undef PL_DBsingle -#define PL_DBsingle pPerl->PL_DBsingle +#define PL_DBsingle (*Perl_IDBsingle_ptr(pPerl)) #undef PL_DBsub -#define PL_DBsub pPerl->PL_DBsub +#define PL_DBsub (*Perl_IDBsub_ptr(pPerl)) #undef PL_DBtrace -#define PL_DBtrace pPerl->PL_DBtrace -#undef PL_No -#define PL_No pPerl->PL_No -#undef PL_Sv -#define PL_Sv pPerl->PL_Sv -#undef PL_Xpv -#define PL_Xpv pPerl->PL_Xpv -#undef PL_Yes -#define PL_Yes pPerl->PL_Yes +#define PL_DBtrace (*Perl_IDBtrace_ptr(pPerl)) +#undef PL_Dir +#define PL_Dir (*Perl_IDir_ptr(pPerl)) +#undef PL_Env +#define PL_Env (*Perl_IEnv_ptr(pPerl)) +#undef PL_LIO +#define PL_LIO (*Perl_ILIO_ptr(pPerl)) +#undef PL_Mem +#define PL_Mem (*Perl_IMem_ptr(pPerl)) +#undef PL_Proc +#define PL_Proc (*Perl_IProc_ptr(pPerl)) +#undef PL_Sock +#define PL_Sock (*Perl_ISock_ptr(pPerl)) +#undef PL_StdIO +#define PL_StdIO (*Perl_IStdIO_ptr(pPerl)) #undef PL_amagic_generation -#define PL_amagic_generation pPerl->PL_amagic_generation +#define PL_amagic_generation (*Perl_Iamagic_generation_ptr(pPerl)) #undef PL_ampergv -#define PL_ampergv pPerl->PL_ampergv +#define PL_ampergv (*Perl_Iampergv_ptr(pPerl)) #undef PL_an -#define PL_an pPerl->PL_an +#define PL_an (*Perl_Ian_ptr(pPerl)) #undef PL_archpat_auto -#define PL_archpat_auto pPerl->PL_archpat_auto +#define PL_archpat_auto (*Perl_Iarchpat_auto_ptr(pPerl)) #undef PL_argvgv -#define PL_argvgv pPerl->PL_argvgv +#define PL_argvgv (*Perl_Iargvgv_ptr(pPerl)) #undef PL_argvoutgv -#define PL_argvoutgv pPerl->PL_argvoutgv -#undef PL_av_fetch_sv -#define PL_av_fetch_sv pPerl->PL_av_fetch_sv +#define PL_argvoutgv (*Perl_Iargvoutgv_ptr(pPerl)) #undef PL_basetime -#define PL_basetime pPerl->PL_basetime +#define PL_basetime (*Perl_Ibasetime_ptr(pPerl)) #undef PL_beginav -#define PL_beginav pPerl->PL_beginav +#define PL_beginav (*Perl_Ibeginav_ptr(pPerl)) #undef PL_bitcount -#define PL_bitcount pPerl->PL_bitcount -#undef PL_bodytarget -#define PL_bodytarget pPerl->PL_bodytarget -#undef PL_bostr -#define PL_bostr pPerl->PL_bostr +#define PL_bitcount (*Perl_Ibitcount_ptr(pPerl)) #undef PL_bufend -#define PL_bufend pPerl->PL_bufend +#define PL_bufend (*Perl_Ibufend_ptr(pPerl)) #undef PL_bufptr -#define PL_bufptr pPerl->PL_bufptr +#define PL_bufptr (*Perl_Ibufptr_ptr(pPerl)) #undef PL_cddir -#define PL_cddir pPerl->PL_cddir -#undef PL_chopset -#define PL_chopset pPerl->PL_chopset +#define PL_cddir (*Perl_Icddir_ptr(pPerl)) #undef PL_collation_ix -#define PL_collation_ix pPerl->PL_collation_ix +#define PL_collation_ix (*Perl_Icollation_ix_ptr(pPerl)) #undef PL_collation_name -#define PL_collation_name pPerl->PL_collation_name +#define PL_collation_name (*Perl_Icollation_name_ptr(pPerl)) #undef PL_collation_standard -#define PL_collation_standard pPerl->PL_collation_standard +#define PL_collation_standard (*Perl_Icollation_standard_ptr(pPerl)) #undef PL_collxfrm_base -#define PL_collxfrm_base pPerl->PL_collxfrm_base +#define PL_collxfrm_base (*Perl_Icollxfrm_base_ptr(pPerl)) #undef PL_collxfrm_mult -#define PL_collxfrm_mult pPerl->PL_collxfrm_mult -#undef PL_colors -#define PL_colors pPerl->PL_colors -#undef PL_colorset -#define PL_colorset pPerl->PL_colorset +#define PL_collxfrm_mult (*Perl_Icollxfrm_mult_ptr(pPerl)) #undef PL_compcv -#define PL_compcv pPerl->PL_compcv +#define PL_compcv (*Perl_Icompcv_ptr(pPerl)) #undef PL_compiling -#define PL_compiling pPerl->PL_compiling +#define PL_compiling (*Perl_Icompiling_ptr(pPerl)) #undef PL_comppad -#define PL_comppad pPerl->PL_comppad +#define PL_comppad (*Perl_Icomppad_ptr(pPerl)) #undef PL_comppad_name -#define PL_comppad_name pPerl->PL_comppad_name +#define PL_comppad_name (*Perl_Icomppad_name_ptr(pPerl)) #undef PL_comppad_name_fill -#define PL_comppad_name_fill pPerl->PL_comppad_name_fill +#define PL_comppad_name_fill (*Perl_Icomppad_name_fill_ptr(pPerl)) #undef PL_comppad_name_floor -#define PL_comppad_name_floor pPerl->PL_comppad_name_floor +#define PL_comppad_name_floor (*Perl_Icomppad_name_floor_ptr(pPerl)) #undef PL_cop_seqmax -#define PL_cop_seqmax pPerl->PL_cop_seqmax +#define PL_cop_seqmax (*Perl_Icop_seqmax_ptr(pPerl)) #undef PL_copline -#define PL_copline pPerl->PL_copline +#define PL_copline (*Perl_Icopline_ptr(pPerl)) #undef PL_cred_mutex -#define PL_cred_mutex pPerl->PL_cred_mutex +#define PL_cred_mutex (*Perl_Icred_mutex_ptr(pPerl)) #undef PL_cryptseen -#define PL_cryptseen pPerl->PL_cryptseen +#define PL_cryptseen (*Perl_Icryptseen_ptr(pPerl)) #undef PL_cshlen -#define PL_cshlen pPerl->PL_cshlen +#define PL_cshlen (*Perl_Icshlen_ptr(pPerl)) #undef PL_cshname -#define PL_cshname pPerl->PL_cshname -#undef PL_curcop -#define PL_curcop pPerl->PL_curcop +#define PL_cshname (*Perl_Icshname_ptr(pPerl)) #undef PL_curcopdb -#define PL_curcopdb pPerl->PL_curcopdb -#undef PL_curinterp -#define PL_curinterp pPerl->PL_curinterp -#undef PL_curpad -#define PL_curpad pPerl->PL_curpad -#undef PL_curpm -#define PL_curpm pPerl->PL_curpm -#undef PL_curstack -#define PL_curstack pPerl->PL_curstack -#undef PL_curstackinfo -#define PL_curstackinfo pPerl->PL_curstackinfo -#undef PL_curstash -#define PL_curstash pPerl->PL_curstash +#define PL_curcopdb (*Perl_Icurcopdb_ptr(pPerl)) #undef PL_curstname -#define PL_curstname pPerl->PL_curstname +#define PL_curstname (*Perl_Icurstname_ptr(pPerl)) #undef PL_curthr -#define PL_curthr pPerl->PL_curthr +#define PL_curthr (*Perl_Icurthr_ptr(pPerl)) #undef PL_dbargs -#define PL_dbargs pPerl->PL_dbargs +#define PL_dbargs (*Perl_Idbargs_ptr(pPerl)) #undef PL_debdelim -#define PL_debdelim pPerl->PL_debdelim +#define PL_debdelim (*Perl_Idebdelim_ptr(pPerl)) #undef PL_debname -#define PL_debname pPerl->PL_debname +#define PL_debname (*Perl_Idebname_ptr(pPerl)) #undef PL_debstash -#define PL_debstash pPerl->PL_debstash +#define PL_debstash (*Perl_Idebstash_ptr(pPerl)) #undef PL_debug -#define PL_debug pPerl->PL_debug +#define PL_debug (*Perl_Idebug_ptr(pPerl)) #undef PL_defgv -#define PL_defgv pPerl->PL_defgv -#undef PL_defoutgv -#define PL_defoutgv pPerl->PL_defoutgv -#undef PL_defstash -#define PL_defstash pPerl->PL_defstash -#undef PL_delaymagic -#define PL_delaymagic pPerl->PL_delaymagic +#define PL_defgv (*Perl_Idefgv_ptr(pPerl)) #undef PL_diehook -#define PL_diehook pPerl->PL_diehook -#undef PL_dirty -#define PL_dirty pPerl->PL_dirty +#define PL_diehook (*Perl_Idiehook_ptr(pPerl)) #undef PL_dlevel -#define PL_dlevel pPerl->PL_dlevel +#define PL_dlevel (*Perl_Idlevel_ptr(pPerl)) #undef PL_dlmax -#define PL_dlmax pPerl->PL_dlmax -#undef PL_do_undump -#define PL_do_undump pPerl->PL_do_undump +#define PL_dlmax (*Perl_Idlmax_ptr(pPerl)) #undef PL_doextract -#define PL_doextract pPerl->PL_doextract +#define PL_doextract (*Perl_Idoextract_ptr(pPerl)) #undef PL_doswitches -#define PL_doswitches pPerl->PL_doswitches +#define PL_doswitches (*Perl_Idoswitches_ptr(pPerl)) #undef PL_dowarn -#define PL_dowarn pPerl->PL_dowarn -#undef PL_dumpindent -#define PL_dumpindent pPerl->PL_dumpindent +#define PL_dowarn (*Perl_Idowarn_ptr(pPerl)) #undef PL_e_script -#define PL_e_script pPerl->PL_e_script +#define PL_e_script (*Perl_Ie_script_ptr(pPerl)) #undef PL_efloatbuf -#define PL_efloatbuf pPerl->PL_efloatbuf +#define PL_efloatbuf (*Perl_Iefloatbuf_ptr(pPerl)) #undef PL_efloatsize -#define PL_efloatsize pPerl->PL_efloatsize +#define PL_efloatsize (*Perl_Iefloatsize_ptr(pPerl)) #undef PL_egid -#define PL_egid pPerl->PL_egid +#define PL_egid (*Perl_Iegid_ptr(pPerl)) #undef PL_endav -#define PL_endav pPerl->PL_endav +#define PL_endav (*Perl_Iendav_ptr(pPerl)) #undef PL_envgv -#define PL_envgv pPerl->PL_envgv +#define PL_envgv (*Perl_Ienvgv_ptr(pPerl)) #undef PL_errgv -#define PL_errgv pPerl->PL_errgv +#define PL_errgv (*Perl_Ierrgv_ptr(pPerl)) #undef PL_error_count -#define PL_error_count pPerl->PL_error_count +#define PL_error_count (*Perl_Ierror_count_ptr(pPerl)) #undef PL_euid -#define PL_euid pPerl->PL_euid +#define PL_euid (*Perl_Ieuid_ptr(pPerl)) #undef PL_eval_cond -#define PL_eval_cond pPerl->PL_eval_cond +#define PL_eval_cond (*Perl_Ieval_cond_ptr(pPerl)) #undef PL_eval_mutex -#define PL_eval_mutex pPerl->PL_eval_mutex +#define PL_eval_mutex (*Perl_Ieval_mutex_ptr(pPerl)) #undef PL_eval_owner -#define PL_eval_owner pPerl->PL_eval_owner +#define PL_eval_owner (*Perl_Ieval_owner_ptr(pPerl)) #undef PL_eval_root -#define PL_eval_root pPerl->PL_eval_root +#define PL_eval_root (*Perl_Ieval_root_ptr(pPerl)) #undef PL_eval_start -#define PL_eval_start pPerl->PL_eval_start +#define PL_eval_start (*Perl_Ieval_start_ptr(pPerl)) #undef PL_evalseq -#define PL_evalseq pPerl->PL_evalseq +#define PL_evalseq (*Perl_Ievalseq_ptr(pPerl)) #undef PL_exitlist -#define PL_exitlist pPerl->PL_exitlist +#define PL_exitlist (*Perl_Iexitlist_ptr(pPerl)) #undef PL_exitlistlen -#define PL_exitlistlen pPerl->PL_exitlistlen +#define PL_exitlistlen (*Perl_Iexitlistlen_ptr(pPerl)) #undef PL_expect -#define PL_expect pPerl->PL_expect -#undef PL_extralen -#define PL_extralen pPerl->PL_extralen +#define PL_expect (*Perl_Iexpect_ptr(pPerl)) #undef PL_fdpid -#define PL_fdpid pPerl->PL_fdpid +#define PL_fdpid (*Perl_Ifdpid_ptr(pPerl)) #undef PL_filemode -#define PL_filemode pPerl->PL_filemode +#define PL_filemode (*Perl_Ifilemode_ptr(pPerl)) #undef PL_filter_debug -#define PL_filter_debug pPerl->PL_filter_debug -#undef PL_firstgv -#define PL_firstgv pPerl->PL_firstgv +#define PL_filter_debug (*Perl_Ifilter_debug_ptr(pPerl)) #undef PL_forkprocess -#define PL_forkprocess pPerl->PL_forkprocess +#define PL_forkprocess (*Perl_Iforkprocess_ptr(pPerl)) #undef PL_formfeed -#define PL_formfeed pPerl->PL_formfeed -#undef PL_formtarget -#define PL_formtarget pPerl->PL_formtarget +#define PL_formfeed (*Perl_Iformfeed_ptr(pPerl)) #undef PL_generation -#define PL_generation pPerl->PL_generation +#define PL_generation (*Perl_Igeneration_ptr(pPerl)) #undef PL_gensym -#define PL_gensym pPerl->PL_gensym +#define PL_gensym (*Perl_Igensym_ptr(pPerl)) #undef PL_gid -#define PL_gid pPerl->PL_gid +#define PL_gid (*Perl_Igid_ptr(pPerl)) #undef PL_glob_index -#define PL_glob_index pPerl->PL_glob_index +#define PL_glob_index (*Perl_Iglob_index_ptr(pPerl)) #undef PL_globalstash -#define PL_globalstash pPerl->PL_globalstash +#define PL_globalstash (*Perl_Iglobalstash_ptr(pPerl)) #undef PL_he_root -#define PL_he_root pPerl->PL_he_root -#undef PL_hexdigit -#define PL_hexdigit pPerl->PL_hexdigit +#define PL_he_root (*Perl_Ihe_root_ptr(pPerl)) #undef PL_hintgv -#define PL_hintgv pPerl->PL_hintgv +#define PL_hintgv (*Perl_Ihintgv_ptr(pPerl)) #undef PL_hints -#define PL_hints pPerl->PL_hints -#undef PL_hv_fetch_ent_mh -#define PL_hv_fetch_ent_mh pPerl->PL_hv_fetch_ent_mh -#undef PL_hv_fetch_sv -#define PL_hv_fetch_sv pPerl->PL_hv_fetch_sv +#define PL_hints (*Perl_Ihints_ptr(pPerl)) #undef PL_in_clean_all -#define PL_in_clean_all pPerl->PL_in_clean_all +#define PL_in_clean_all (*Perl_Iin_clean_all_ptr(pPerl)) #undef PL_in_clean_objs -#define PL_in_clean_objs pPerl->PL_in_clean_objs -#undef PL_in_eval -#define PL_in_eval pPerl->PL_in_eval +#define PL_in_clean_objs (*Perl_Iin_clean_objs_ptr(pPerl)) #undef PL_in_my -#define PL_in_my pPerl->PL_in_my +#define PL_in_my (*Perl_Iin_my_ptr(pPerl)) #undef PL_in_my_stash -#define PL_in_my_stash pPerl->PL_in_my_stash +#define PL_in_my_stash (*Perl_Iin_my_stash_ptr(pPerl)) #undef PL_incgv -#define PL_incgv pPerl->PL_incgv +#define PL_incgv (*Perl_Iincgv_ptr(pPerl)) #undef PL_initav -#define PL_initav pPerl->PL_initav +#define PL_initav (*Perl_Iinitav_ptr(pPerl)) #undef PL_inplace -#define PL_inplace pPerl->PL_inplace -#undef PL_last_in_gv -#define PL_last_in_gv pPerl->PL_last_in_gv +#define PL_inplace (*Perl_Iinplace_ptr(pPerl)) #undef PL_last_lop -#define PL_last_lop pPerl->PL_last_lop +#define PL_last_lop (*Perl_Ilast_lop_ptr(pPerl)) #undef PL_last_lop_op -#define PL_last_lop_op pPerl->PL_last_lop_op +#define PL_last_lop_op (*Perl_Ilast_lop_op_ptr(pPerl)) #undef PL_last_swash_hv -#define PL_last_swash_hv pPerl->PL_last_swash_hv +#define PL_last_swash_hv (*Perl_Ilast_swash_hv_ptr(pPerl)) #undef PL_last_swash_key -#define PL_last_swash_key pPerl->PL_last_swash_key +#define PL_last_swash_key (*Perl_Ilast_swash_key_ptr(pPerl)) #undef PL_last_swash_klen -#define PL_last_swash_klen pPerl->PL_last_swash_klen +#define PL_last_swash_klen (*Perl_Ilast_swash_klen_ptr(pPerl)) #undef PL_last_swash_slen -#define PL_last_swash_slen pPerl->PL_last_swash_slen +#define PL_last_swash_slen (*Perl_Ilast_swash_slen_ptr(pPerl)) #undef PL_last_swash_tmps -#define PL_last_swash_tmps pPerl->PL_last_swash_tmps +#define PL_last_swash_tmps (*Perl_Ilast_swash_tmps_ptr(pPerl)) #undef PL_last_uni -#define PL_last_uni pPerl->PL_last_uni +#define PL_last_uni (*Perl_Ilast_uni_ptr(pPerl)) #undef PL_lastfd -#define PL_lastfd pPerl->PL_lastfd -#undef PL_lastgotoprobe -#define PL_lastgotoprobe pPerl->PL_lastgotoprobe -#undef PL_lastscream -#define PL_lastscream pPerl->PL_lastscream +#define PL_lastfd (*Perl_Ilastfd_ptr(pPerl)) #undef PL_lastsize -#define PL_lastsize pPerl->PL_lastsize +#define PL_lastsize (*Perl_Ilastsize_ptr(pPerl)) #undef PL_lastspbase -#define PL_lastspbase pPerl->PL_lastspbase +#define PL_lastspbase (*Perl_Ilastspbase_ptr(pPerl)) #undef PL_laststatval -#define PL_laststatval pPerl->PL_laststatval +#define PL_laststatval (*Perl_Ilaststatval_ptr(pPerl)) #undef PL_laststype -#define PL_laststype pPerl->PL_laststype +#define PL_laststype (*Perl_Ilaststype_ptr(pPerl)) #undef PL_leftgv -#define PL_leftgv pPerl->PL_leftgv +#define PL_leftgv (*Perl_Ileftgv_ptr(pPerl)) #undef PL_lex_brackets -#define PL_lex_brackets pPerl->PL_lex_brackets +#define PL_lex_brackets (*Perl_Ilex_brackets_ptr(pPerl)) #undef PL_lex_brackstack -#define PL_lex_brackstack pPerl->PL_lex_brackstack +#define PL_lex_brackstack (*Perl_Ilex_brackstack_ptr(pPerl)) #undef PL_lex_casemods -#define PL_lex_casemods pPerl->PL_lex_casemods +#define PL_lex_casemods (*Perl_Ilex_casemods_ptr(pPerl)) #undef PL_lex_casestack -#define PL_lex_casestack pPerl->PL_lex_casestack +#define PL_lex_casestack (*Perl_Ilex_casestack_ptr(pPerl)) #undef PL_lex_defer -#define PL_lex_defer pPerl->PL_lex_defer +#define PL_lex_defer (*Perl_Ilex_defer_ptr(pPerl)) #undef PL_lex_dojoin -#define PL_lex_dojoin pPerl->PL_lex_dojoin +#define PL_lex_dojoin (*Perl_Ilex_dojoin_ptr(pPerl)) #undef PL_lex_expect -#define PL_lex_expect pPerl->PL_lex_expect +#define PL_lex_expect (*Perl_Ilex_expect_ptr(pPerl)) #undef PL_lex_fakebrack -#define PL_lex_fakebrack pPerl->PL_lex_fakebrack +#define PL_lex_fakebrack (*Perl_Ilex_fakebrack_ptr(pPerl)) #undef PL_lex_formbrack -#define PL_lex_formbrack pPerl->PL_lex_formbrack +#define PL_lex_formbrack (*Perl_Ilex_formbrack_ptr(pPerl)) #undef PL_lex_inpat -#define PL_lex_inpat pPerl->PL_lex_inpat +#define PL_lex_inpat (*Perl_Ilex_inpat_ptr(pPerl)) #undef PL_lex_inwhat -#define PL_lex_inwhat pPerl->PL_lex_inwhat +#define PL_lex_inwhat (*Perl_Ilex_inwhat_ptr(pPerl)) #undef PL_lex_op -#define PL_lex_op pPerl->PL_lex_op +#define PL_lex_op (*Perl_Ilex_op_ptr(pPerl)) #undef PL_lex_repl -#define PL_lex_repl pPerl->PL_lex_repl +#define PL_lex_repl (*Perl_Ilex_repl_ptr(pPerl)) #undef PL_lex_starts -#define PL_lex_starts pPerl->PL_lex_starts +#define PL_lex_starts (*Perl_Ilex_starts_ptr(pPerl)) #undef PL_lex_state -#define PL_lex_state pPerl->PL_lex_state +#define PL_lex_state (*Perl_Ilex_state_ptr(pPerl)) #undef PL_lex_stuff -#define PL_lex_stuff pPerl->PL_lex_stuff +#define PL_lex_stuff (*Perl_Ilex_stuff_ptr(pPerl)) #undef PL_lineary -#define PL_lineary pPerl->PL_lineary +#define PL_lineary (*Perl_Ilineary_ptr(pPerl)) #undef PL_linestart -#define PL_linestart pPerl->PL_linestart +#define PL_linestart (*Perl_Ilinestart_ptr(pPerl)) #undef PL_linestr -#define PL_linestr pPerl->PL_linestr -#undef PL_localizing -#define PL_localizing pPerl->PL_localizing +#define PL_linestr (*Perl_Ilinestr_ptr(pPerl)) #undef PL_localpatches -#define PL_localpatches pPerl->PL_localpatches +#define PL_localpatches (*Perl_Ilocalpatches_ptr(pPerl)) #undef PL_main_cv -#define PL_main_cv pPerl->PL_main_cv +#define PL_main_cv (*Perl_Imain_cv_ptr(pPerl)) #undef PL_main_root -#define PL_main_root pPerl->PL_main_root +#define PL_main_root (*Perl_Imain_root_ptr(pPerl)) #undef PL_main_start -#define PL_main_start pPerl->PL_main_start -#undef PL_mainstack -#define PL_mainstack pPerl->PL_mainstack +#define PL_main_start (*Perl_Imain_start_ptr(pPerl)) #undef PL_malloc_mutex -#define PL_malloc_mutex pPerl->PL_malloc_mutex -#undef PL_markstack -#define PL_markstack pPerl->PL_markstack -#undef PL_markstack_max -#define PL_markstack_max pPerl->PL_markstack_max -#undef PL_markstack_ptr -#define PL_markstack_ptr pPerl->PL_markstack_ptr +#define PL_malloc_mutex (*Perl_Imalloc_mutex_ptr(pPerl)) #undef PL_max_intro_pending -#define PL_max_intro_pending pPerl->PL_max_intro_pending +#define PL_max_intro_pending (*Perl_Imax_intro_pending_ptr(pPerl)) #undef PL_maxo -#define PL_maxo pPerl->PL_maxo -#undef PL_maxscream -#define PL_maxscream pPerl->PL_maxscream +#define PL_maxo (*Perl_Imaxo_ptr(pPerl)) #undef PL_maxsysfd -#define PL_maxsysfd pPerl->PL_maxsysfd +#define PL_maxsysfd (*Perl_Imaxsysfd_ptr(pPerl)) #undef PL_mess_sv -#define PL_mess_sv pPerl->PL_mess_sv +#define PL_mess_sv (*Perl_Imess_sv_ptr(pPerl)) #undef PL_min_intro_pending -#define PL_min_intro_pending pPerl->PL_min_intro_pending +#define PL_min_intro_pending (*Perl_Imin_intro_pending_ptr(pPerl)) #undef PL_minus_F -#define PL_minus_F pPerl->PL_minus_F +#define PL_minus_F (*Perl_Iminus_F_ptr(pPerl)) #undef PL_minus_a -#define PL_minus_a pPerl->PL_minus_a +#define PL_minus_a (*Perl_Iminus_a_ptr(pPerl)) #undef PL_minus_c -#define PL_minus_c pPerl->PL_minus_c +#define PL_minus_c (*Perl_Iminus_c_ptr(pPerl)) #undef PL_minus_l -#define PL_minus_l pPerl->PL_minus_l +#define PL_minus_l (*Perl_Iminus_l_ptr(pPerl)) #undef PL_minus_n -#define PL_minus_n pPerl->PL_minus_n +#define PL_minus_n (*Perl_Iminus_n_ptr(pPerl)) #undef PL_minus_p -#define PL_minus_p pPerl->PL_minus_p -#undef PL_modcount -#define PL_modcount pPerl->PL_modcount +#define PL_minus_p (*Perl_Iminus_p_ptr(pPerl)) #undef PL_modglobal -#define PL_modglobal pPerl->PL_modglobal +#define PL_modglobal (*Perl_Imodglobal_ptr(pPerl)) #undef PL_multi_close -#define PL_multi_close pPerl->PL_multi_close +#define PL_multi_close (*Perl_Imulti_close_ptr(pPerl)) #undef PL_multi_end -#define PL_multi_end pPerl->PL_multi_end +#define PL_multi_end (*Perl_Imulti_end_ptr(pPerl)) #undef PL_multi_open -#define PL_multi_open pPerl->PL_multi_open +#define PL_multi_open (*Perl_Imulti_open_ptr(pPerl)) #undef PL_multi_start -#define PL_multi_start pPerl->PL_multi_start +#define PL_multi_start (*Perl_Imulti_start_ptr(pPerl)) #undef PL_multiline -#define PL_multiline pPerl->PL_multiline +#define PL_multiline (*Perl_Imultiline_ptr(pPerl)) #undef PL_mystrk -#define PL_mystrk pPerl->PL_mystrk -#undef PL_na -#define PL_na pPerl->PL_na +#define PL_mystrk (*Perl_Imystrk_ptr(pPerl)) #undef PL_nexttoke -#define PL_nexttoke pPerl->PL_nexttoke +#define PL_nexttoke (*Perl_Inexttoke_ptr(pPerl)) #undef PL_nexttype -#define PL_nexttype pPerl->PL_nexttype +#define PL_nexttype (*Perl_Inexttype_ptr(pPerl)) #undef PL_nextval -#define PL_nextval pPerl->PL_nextval +#define PL_nextval (*Perl_Inextval_ptr(pPerl)) #undef PL_nice_chunk -#define PL_nice_chunk pPerl->PL_nice_chunk +#define PL_nice_chunk (*Perl_Inice_chunk_ptr(pPerl)) #undef PL_nice_chunk_size -#define PL_nice_chunk_size pPerl->PL_nice_chunk_size +#define PL_nice_chunk_size (*Perl_Inice_chunk_size_ptr(pPerl)) #undef PL_nomemok -#define PL_nomemok pPerl->PL_nomemok -#undef PL_nrs -#define PL_nrs pPerl->PL_nrs +#define PL_nomemok (*Perl_Inomemok_ptr(pPerl)) #undef PL_nthreads -#define PL_nthreads pPerl->PL_nthreads +#define PL_nthreads (*Perl_Inthreads_ptr(pPerl)) #undef PL_nthreads_cond -#define PL_nthreads_cond pPerl->PL_nthreads_cond +#define PL_nthreads_cond (*Perl_Inthreads_cond_ptr(pPerl)) #undef PL_numeric_local -#define PL_numeric_local pPerl->PL_numeric_local +#define PL_numeric_local (*Perl_Inumeric_local_ptr(pPerl)) #undef PL_numeric_name -#define PL_numeric_name pPerl->PL_numeric_name +#define PL_numeric_name (*Perl_Inumeric_name_ptr(pPerl)) #undef PL_numeric_radix -#define PL_numeric_radix pPerl->PL_numeric_radix +#define PL_numeric_radix (*Perl_Inumeric_radix_ptr(pPerl)) #undef PL_numeric_standard -#define PL_numeric_standard pPerl->PL_numeric_standard +#define PL_numeric_standard (*Perl_Inumeric_standard_ptr(pPerl)) #undef PL_ofmt -#define PL_ofmt pPerl->PL_ofmt -#undef PL_ofs -#define PL_ofs pPerl->PL_ofs -#undef PL_ofslen -#define PL_ofslen pPerl->PL_ofslen +#define PL_ofmt (*Perl_Iofmt_ptr(pPerl)) #undef PL_oldbufptr -#define PL_oldbufptr pPerl->PL_oldbufptr +#define PL_oldbufptr (*Perl_Ioldbufptr_ptr(pPerl)) #undef PL_oldlastpm -#define PL_oldlastpm pPerl->PL_oldlastpm +#define PL_oldlastpm (*Perl_Ioldlastpm_ptr(pPerl)) #undef PL_oldname -#define PL_oldname pPerl->PL_oldname +#define PL_oldname (*Perl_Ioldname_ptr(pPerl)) #undef PL_oldoldbufptr -#define PL_oldoldbufptr pPerl->PL_oldoldbufptr -#undef PL_op -#define PL_op pPerl->PL_op +#define PL_oldoldbufptr (*Perl_Ioldoldbufptr_ptr(pPerl)) #undef PL_op_mask -#define PL_op_mask pPerl->PL_op_mask +#define PL_op_mask (*Perl_Iop_mask_ptr(pPerl)) #undef PL_op_seqmax -#define PL_op_seqmax pPerl->PL_op_seqmax -#undef PL_opsave -#define PL_opsave pPerl->PL_opsave +#define PL_op_seqmax (*Perl_Iop_seqmax_ptr(pPerl)) #undef PL_origalen -#define PL_origalen pPerl->PL_origalen +#define PL_origalen (*Perl_Iorigalen_ptr(pPerl)) #undef PL_origargc -#define PL_origargc pPerl->PL_origargc +#define PL_origargc (*Perl_Iorigargc_ptr(pPerl)) #undef PL_origargv -#define PL_origargv pPerl->PL_origargv +#define PL_origargv (*Perl_Iorigargv_ptr(pPerl)) #undef PL_origenviron -#define PL_origenviron pPerl->PL_origenviron +#define PL_origenviron (*Perl_Iorigenviron_ptr(pPerl)) #undef PL_origfilename -#define PL_origfilename pPerl->PL_origfilename +#define PL_origfilename (*Perl_Iorigfilename_ptr(pPerl)) #undef PL_ors -#define PL_ors pPerl->PL_ors +#define PL_ors (*Perl_Iors_ptr(pPerl)) #undef PL_orslen -#define PL_orslen pPerl->PL_orslen +#define PL_orslen (*Perl_Iorslen_ptr(pPerl)) #undef PL_osname -#define PL_osname pPerl->PL_osname +#define PL_osname (*Perl_Iosname_ptr(pPerl)) #undef PL_pad_reset_pending -#define PL_pad_reset_pending pPerl->PL_pad_reset_pending +#define PL_pad_reset_pending (*Perl_Ipad_reset_pending_ptr(pPerl)) #undef PL_padix -#define PL_padix pPerl->PL_padix +#define PL_padix (*Perl_Ipadix_ptr(pPerl)) #undef PL_padix_floor -#define PL_padix_floor pPerl->PL_padix_floor +#define PL_padix_floor (*Perl_Ipadix_floor_ptr(pPerl)) #undef PL_parsehook -#define PL_parsehook pPerl->PL_parsehook +#define PL_parsehook (*Perl_Iparsehook_ptr(pPerl)) #undef PL_patchlevel -#define PL_patchlevel pPerl->PL_patchlevel -#undef PL_patleave -#define PL_patleave pPerl->PL_patleave +#define PL_patchlevel (*Perl_Ipatchlevel_ptr(pPerl)) #undef PL_pending_ident -#define PL_pending_ident pPerl->PL_pending_ident +#define PL_pending_ident (*Perl_Ipending_ident_ptr(pPerl)) #undef PL_perl_destruct_level -#define PL_perl_destruct_level pPerl->PL_perl_destruct_level +#define PL_perl_destruct_level (*Perl_Iperl_destruct_level_ptr(pPerl)) #undef PL_perldb -#define PL_perldb pPerl->PL_perldb -#undef PL_piDir -#define PL_piDir pPerl->PL_piDir -#undef PL_piENV -#define PL_piENV pPerl->PL_piENV -#undef PL_piLIO -#define PL_piLIO pPerl->PL_piLIO -#undef PL_piMem -#define PL_piMem pPerl->PL_piMem -#undef PL_piProc -#define PL_piProc pPerl->PL_piProc -#undef PL_piSock -#define PL_piSock pPerl->PL_piSock -#undef PL_piStdIO -#define PL_piStdIO pPerl->PL_piStdIO +#define PL_perldb (*Perl_Iperldb_ptr(pPerl)) #undef PL_pidstatus -#define PL_pidstatus pPerl->PL_pidstatus +#define PL_pidstatus (*Perl_Ipidstatus_ptr(pPerl)) #undef PL_preambleav -#define PL_preambleav pPerl->PL_preambleav +#define PL_preambleav (*Perl_Ipreambleav_ptr(pPerl)) #undef PL_preambled -#define PL_preambled pPerl->PL_preambled +#define PL_preambled (*Perl_Ipreambled_ptr(pPerl)) #undef PL_preprocess -#define PL_preprocess pPerl->PL_preprocess +#define PL_preprocess (*Perl_Ipreprocess_ptr(pPerl)) #undef PL_profiledata -#define PL_profiledata pPerl->PL_profiledata +#define PL_profiledata (*Perl_Iprofiledata_ptr(pPerl)) +#undef PL_replgv +#define PL_replgv (*Perl_Ireplgv_ptr(pPerl)) +#undef PL_rightgv +#define PL_rightgv (*Perl_Irightgv_ptr(pPerl)) +#undef PL_rsfp +#define PL_rsfp (*Perl_Irsfp_ptr(pPerl)) +#undef PL_rsfp_filters +#define PL_rsfp_filters (*Perl_Irsfp_filters_ptr(pPerl)) +#undef PL_runops +#define PL_runops (*Perl_Irunops_ptr(pPerl)) +#undef PL_sawampersand +#define PL_sawampersand (*Perl_Isawampersand_ptr(pPerl)) +#undef PL_sawstudy +#define PL_sawstudy (*Perl_Isawstudy_ptr(pPerl)) +#undef PL_sawvec +#define PL_sawvec (*Perl_Isawvec_ptr(pPerl)) +#undef PL_sh_path +#define PL_sh_path (*Perl_Ish_path_ptr(pPerl)) +#undef PL_siggv +#define PL_siggv (*Perl_Isiggv_ptr(pPerl)) +#undef PL_sighandlerp +#define PL_sighandlerp (*Perl_Isighandlerp_ptr(pPerl)) +#undef PL_splitstr +#define PL_splitstr (*Perl_Isplitstr_ptr(pPerl)) +#undef PL_srand_called +#define PL_srand_called (*Perl_Isrand_called_ptr(pPerl)) +#undef PL_statusvalue +#define PL_statusvalue (*Perl_Istatusvalue_ptr(pPerl)) +#undef PL_statusvalue_vms +#define PL_statusvalue_vms (*Perl_Istatusvalue_vms_ptr(pPerl)) +#undef PL_stdingv +#define PL_stdingv (*Perl_Istdingv_ptr(pPerl)) +#undef PL_strchop +#define PL_strchop (*Perl_Istrchop_ptr(pPerl)) +#undef PL_strtab +#define PL_strtab (*Perl_Istrtab_ptr(pPerl)) +#undef PL_strtab_mutex +#define PL_strtab_mutex (*Perl_Istrtab_mutex_ptr(pPerl)) +#undef PL_sub_generation +#define PL_sub_generation (*Perl_Isub_generation_ptr(pPerl)) +#undef PL_sublex_info +#define PL_sublex_info (*Perl_Isublex_info_ptr(pPerl)) +#undef PL_subline +#define PL_subline (*Perl_Isubline_ptr(pPerl)) +#undef PL_subname +#define PL_subname (*Perl_Isubname_ptr(pPerl)) +#undef PL_sv_arenaroot +#define PL_sv_arenaroot (*Perl_Isv_arenaroot_ptr(pPerl)) +#undef PL_sv_count +#define PL_sv_count (*Perl_Isv_count_ptr(pPerl)) +#undef PL_sv_mutex +#define PL_sv_mutex (*Perl_Isv_mutex_ptr(pPerl)) +#undef PL_sv_no +#define PL_sv_no (*Perl_Isv_no_ptr(pPerl)) +#undef PL_sv_objcount +#define PL_sv_objcount (*Perl_Isv_objcount_ptr(pPerl)) +#undef PL_sv_root +#define PL_sv_root (*Perl_Isv_root_ptr(pPerl)) +#undef PL_sv_undef +#define PL_sv_undef (*Perl_Isv_undef_ptr(pPerl)) +#undef PL_sv_yes +#define PL_sv_yes (*Perl_Isv_yes_ptr(pPerl)) +#undef PL_svref_mutex +#define PL_svref_mutex (*Perl_Isvref_mutex_ptr(pPerl)) +#undef PL_sys_intern +#define PL_sys_intern (*Perl_Isys_intern_ptr(pPerl)) +#undef PL_tainting +#define PL_tainting (*Perl_Itainting_ptr(pPerl)) +#undef PL_thisexpr +#define PL_thisexpr (*Perl_Ithisexpr_ptr(pPerl)) +#undef PL_thr_key +#define PL_thr_key (*Perl_Ithr_key_ptr(pPerl)) +#undef PL_threadnum +#define PL_threadnum (*Perl_Ithreadnum_ptr(pPerl)) +#undef PL_threads_mutex +#define PL_threads_mutex (*Perl_Ithreads_mutex_ptr(pPerl)) +#undef PL_threadsv_names +#define PL_threadsv_names (*Perl_Ithreadsv_names_ptr(pPerl)) +#undef PL_thrsv +#define PL_thrsv (*Perl_Ithrsv_ptr(pPerl)) +#undef PL_tokenbuf +#define PL_tokenbuf (*Perl_Itokenbuf_ptr(pPerl)) +#undef PL_uid +#define PL_uid (*Perl_Iuid_ptr(pPerl)) +#undef PL_unsafe +#define PL_unsafe (*Perl_Iunsafe_ptr(pPerl)) +#undef PL_utf8_alnum +#define PL_utf8_alnum (*Perl_Iutf8_alnum_ptr(pPerl)) +#undef PL_utf8_alnumc +#define PL_utf8_alnumc (*Perl_Iutf8_alnumc_ptr(pPerl)) +#undef PL_utf8_alpha +#define PL_utf8_alpha (*Perl_Iutf8_alpha_ptr(pPerl)) +#undef PL_utf8_ascii +#define PL_utf8_ascii (*Perl_Iutf8_ascii_ptr(pPerl)) +#undef PL_utf8_cntrl +#define PL_utf8_cntrl (*Perl_Iutf8_cntrl_ptr(pPerl)) +#undef PL_utf8_digit +#define PL_utf8_digit (*Perl_Iutf8_digit_ptr(pPerl)) +#undef PL_utf8_graph +#define PL_utf8_graph (*Perl_Iutf8_graph_ptr(pPerl)) +#undef PL_utf8_lower +#define PL_utf8_lower (*Perl_Iutf8_lower_ptr(pPerl)) +#undef PL_utf8_mark +#define PL_utf8_mark (*Perl_Iutf8_mark_ptr(pPerl)) +#undef PL_utf8_print +#define PL_utf8_print (*Perl_Iutf8_print_ptr(pPerl)) +#undef PL_utf8_punct +#define PL_utf8_punct (*Perl_Iutf8_punct_ptr(pPerl)) +#undef PL_utf8_space +#define PL_utf8_space (*Perl_Iutf8_space_ptr(pPerl)) +#undef PL_utf8_tolower +#define PL_utf8_tolower (*Perl_Iutf8_tolower_ptr(pPerl)) +#undef PL_utf8_totitle +#define PL_utf8_totitle (*Perl_Iutf8_totitle_ptr(pPerl)) +#undef PL_utf8_toupper +#define PL_utf8_toupper (*Perl_Iutf8_toupper_ptr(pPerl)) +#undef PL_utf8_upper +#define PL_utf8_upper (*Perl_Iutf8_upper_ptr(pPerl)) +#undef PL_utf8_xdigit +#define PL_utf8_xdigit (*Perl_Iutf8_xdigit_ptr(pPerl)) +#undef PL_uudmap +#define PL_uudmap (*Perl_Iuudmap_ptr(pPerl)) +#undef PL_warnhook +#define PL_warnhook (*Perl_Iwarnhook_ptr(pPerl)) +#undef PL_xiv_arenaroot +#define PL_xiv_arenaroot (*Perl_Ixiv_arenaroot_ptr(pPerl)) +#undef PL_xiv_root +#define PL_xiv_root (*Perl_Ixiv_root_ptr(pPerl)) +#undef PL_xnv_root +#define PL_xnv_root (*Perl_Ixnv_root_ptr(pPerl)) +#undef PL_xpv_root +#define PL_xpv_root (*Perl_Ixpv_root_ptr(pPerl)) +#undef PL_xrv_root +#define PL_xrv_root (*Perl_Ixrv_root_ptr(pPerl)) +#undef PL_yychar +#define PL_yychar (*Perl_Iyychar_ptr(pPerl)) +#undef PL_yydebug +#define PL_yydebug (*Perl_Iyydebug_ptr(pPerl)) +#undef PL_yyerrflag +#define PL_yyerrflag (*Perl_Iyyerrflag_ptr(pPerl)) +#undef PL_yylval +#define PL_yylval (*Perl_Iyylval_ptr(pPerl)) +#undef PL_yynerrs +#define PL_yynerrs (*Perl_Iyynerrs_ptr(pPerl)) +#undef PL_yyval +#define PL_yyval (*Perl_Iyyval_ptr(pPerl)) +#undef PL_Sv +#define PL_Sv (*Perl_TSv_ptr(pPerl)) +#undef PL_Xpv +#define PL_Xpv (*Perl_TXpv_ptr(pPerl)) +#undef PL_av_fetch_sv +#define PL_av_fetch_sv (*Perl_Tav_fetch_sv_ptr(pPerl)) +#undef PL_bodytarget +#define PL_bodytarget (*Perl_Tbodytarget_ptr(pPerl)) +#undef PL_bostr +#define PL_bostr (*Perl_Tbostr_ptr(pPerl)) +#undef PL_chopset +#define PL_chopset (*Perl_Tchopset_ptr(pPerl)) +#undef PL_colors +#define PL_colors (*Perl_Tcolors_ptr(pPerl)) +#undef PL_colorset +#define PL_colorset (*Perl_Tcolorset_ptr(pPerl)) +#undef PL_curcop +#define PL_curcop (*Perl_Tcurcop_ptr(pPerl)) +#undef PL_curpad +#define PL_curpad (*Perl_Tcurpad_ptr(pPerl)) +#undef PL_curpm +#define PL_curpm (*Perl_Tcurpm_ptr(pPerl)) +#undef PL_curstack +#define PL_curstack (*Perl_Tcurstack_ptr(pPerl)) +#undef PL_curstackinfo +#define PL_curstackinfo (*Perl_Tcurstackinfo_ptr(pPerl)) +#undef PL_curstash +#define PL_curstash (*Perl_Tcurstash_ptr(pPerl)) +#undef PL_defoutgv +#define PL_defoutgv (*Perl_Tdefoutgv_ptr(pPerl)) +#undef PL_defstash +#define PL_defstash (*Perl_Tdefstash_ptr(pPerl)) +#undef PL_delaymagic +#define PL_delaymagic (*Perl_Tdelaymagic_ptr(pPerl)) +#undef PL_dirty +#define PL_dirty (*Perl_Tdirty_ptr(pPerl)) +#undef PL_dumpindent +#define PL_dumpindent (*Perl_Tdumpindent_ptr(pPerl)) +#undef PL_extralen +#define PL_extralen (*Perl_Textralen_ptr(pPerl)) +#undef PL_firstgv +#define PL_firstgv (*Perl_Tfirstgv_ptr(pPerl)) +#undef PL_formtarget +#define PL_formtarget (*Perl_Tformtarget_ptr(pPerl)) +#undef PL_hv_fetch_ent_mh +#define PL_hv_fetch_ent_mh (*Perl_Thv_fetch_ent_mh_ptr(pPerl)) +#undef PL_hv_fetch_sv +#define PL_hv_fetch_sv (*Perl_Thv_fetch_sv_ptr(pPerl)) +#undef PL_in_eval +#define PL_in_eval (*Perl_Tin_eval_ptr(pPerl)) +#undef PL_last_in_gv +#define PL_last_in_gv (*Perl_Tlast_in_gv_ptr(pPerl)) +#undef PL_lastgotoprobe +#define PL_lastgotoprobe (*Perl_Tlastgotoprobe_ptr(pPerl)) +#undef PL_lastscream +#define PL_lastscream (*Perl_Tlastscream_ptr(pPerl)) +#undef PL_localizing +#define PL_localizing (*Perl_Tlocalizing_ptr(pPerl)) +#undef PL_mainstack +#define PL_mainstack (*Perl_Tmainstack_ptr(pPerl)) +#undef PL_markstack +#define PL_markstack (*Perl_Tmarkstack_ptr(pPerl)) +#undef PL_markstack_max +#define PL_markstack_max (*Perl_Tmarkstack_max_ptr(pPerl)) +#undef PL_markstack_ptr +#define PL_markstack_ptr (*Perl_Tmarkstack_ptr_ptr(pPerl)) +#undef PL_maxscream +#define PL_maxscream (*Perl_Tmaxscream_ptr(pPerl)) +#undef PL_modcount +#define PL_modcount (*Perl_Tmodcount_ptr(pPerl)) +#undef PL_na +#define PL_na (*Perl_Tna_ptr(pPerl)) +#undef PL_nrs +#define PL_nrs (*Perl_Tnrs_ptr(pPerl)) +#undef PL_ofs +#define PL_ofs (*Perl_Tofs_ptr(pPerl)) +#undef PL_ofslen +#define PL_ofslen (*Perl_Tofslen_ptr(pPerl)) +#undef PL_op +#define PL_op (*Perl_Top_ptr(pPerl)) +#undef PL_opsave +#define PL_opsave (*Perl_Topsave_ptr(pPerl)) #undef PL_protect -#define PL_protect pPerl->PL_protect +#define PL_protect (*Perl_Tprotect_ptr(pPerl)) #undef PL_reg_call_cc -#define PL_reg_call_cc pPerl->PL_reg_call_cc +#define PL_reg_call_cc (*Perl_Treg_call_cc_ptr(pPerl)) #undef PL_reg_curpm -#define PL_reg_curpm pPerl->PL_reg_curpm +#define PL_reg_curpm (*Perl_Treg_curpm_ptr(pPerl)) #undef PL_reg_eval_set -#define PL_reg_eval_set pPerl->PL_reg_eval_set +#define PL_reg_eval_set (*Perl_Treg_eval_set_ptr(pPerl)) #undef PL_reg_flags -#define PL_reg_flags pPerl->PL_reg_flags +#define PL_reg_flags (*Perl_Treg_flags_ptr(pPerl)) #undef PL_reg_ganch -#define PL_reg_ganch pPerl->PL_reg_ganch +#define PL_reg_ganch (*Perl_Treg_ganch_ptr(pPerl)) #undef PL_reg_magic -#define PL_reg_magic pPerl->PL_reg_magic +#define PL_reg_magic (*Perl_Treg_magic_ptr(pPerl)) #undef PL_reg_oldcurpm -#define PL_reg_oldcurpm pPerl->PL_reg_oldcurpm +#define PL_reg_oldcurpm (*Perl_Treg_oldcurpm_ptr(pPerl)) #undef PL_reg_oldpos -#define PL_reg_oldpos pPerl->PL_reg_oldpos +#define PL_reg_oldpos (*Perl_Treg_oldpos_ptr(pPerl)) #undef PL_reg_oldsaved -#define PL_reg_oldsaved pPerl->PL_reg_oldsaved +#define PL_reg_oldsaved (*Perl_Treg_oldsaved_ptr(pPerl)) #undef PL_reg_oldsavedlen -#define PL_reg_oldsavedlen pPerl->PL_reg_oldsavedlen +#define PL_reg_oldsavedlen (*Perl_Treg_oldsavedlen_ptr(pPerl)) #undef PL_reg_re -#define PL_reg_re pPerl->PL_reg_re +#define PL_reg_re (*Perl_Treg_re_ptr(pPerl)) #undef PL_reg_start_tmp -#define PL_reg_start_tmp pPerl->PL_reg_start_tmp +#define PL_reg_start_tmp (*Perl_Treg_start_tmp_ptr(pPerl)) #undef PL_reg_start_tmpl -#define PL_reg_start_tmpl pPerl->PL_reg_start_tmpl +#define PL_reg_start_tmpl (*Perl_Treg_start_tmpl_ptr(pPerl)) #undef PL_reg_starttry -#define PL_reg_starttry pPerl->PL_reg_starttry +#define PL_reg_starttry (*Perl_Treg_starttry_ptr(pPerl)) #undef PL_reg_sv -#define PL_reg_sv pPerl->PL_reg_sv +#define PL_reg_sv (*Perl_Treg_sv_ptr(pPerl)) #undef PL_regbol -#define PL_regbol pPerl->PL_regbol +#define PL_regbol (*Perl_Tregbol_ptr(pPerl)) #undef PL_regcc -#define PL_regcc pPerl->PL_regcc +#define PL_regcc (*Perl_Tregcc_ptr(pPerl)) #undef PL_regcode -#define PL_regcode pPerl->PL_regcode +#define PL_regcode (*Perl_Tregcode_ptr(pPerl)) #undef PL_regcomp_parse -#define PL_regcomp_parse pPerl->PL_regcomp_parse +#define PL_regcomp_parse (*Perl_Tregcomp_parse_ptr(pPerl)) #undef PL_regcomp_rx -#define PL_regcomp_rx pPerl->PL_regcomp_rx +#define PL_regcomp_rx (*Perl_Tregcomp_rx_ptr(pPerl)) #undef PL_regcompp -#define PL_regcompp pPerl->PL_regcompp +#define PL_regcompp (*Perl_Tregcompp_ptr(pPerl)) #undef PL_regdata -#define PL_regdata pPerl->PL_regdata +#define PL_regdata (*Perl_Tregdata_ptr(pPerl)) #undef PL_regdummy -#define PL_regdummy pPerl->PL_regdummy +#define PL_regdummy (*Perl_Tregdummy_ptr(pPerl)) #undef PL_regendp -#define PL_regendp pPerl->PL_regendp +#define PL_regendp (*Perl_Tregendp_ptr(pPerl)) #undef PL_regeol -#define PL_regeol pPerl->PL_regeol +#define PL_regeol (*Perl_Tregeol_ptr(pPerl)) #undef PL_regexecp -#define PL_regexecp pPerl->PL_regexecp +#define PL_regexecp (*Perl_Tregexecp_ptr(pPerl)) #undef PL_regflags -#define PL_regflags pPerl->PL_regflags +#define PL_regflags (*Perl_Tregflags_ptr(pPerl)) #undef PL_regfree -#define PL_regfree pPerl->PL_regfree +#define PL_regfree (*Perl_Tregfree_ptr(pPerl)) #undef PL_regindent -#define PL_regindent pPerl->PL_regindent +#define PL_regindent (*Perl_Tregindent_ptr(pPerl)) #undef PL_reginput -#define PL_reginput pPerl->PL_reginput +#define PL_reginput (*Perl_Treginput_ptr(pPerl)) #undef PL_regint_start -#define PL_regint_start pPerl->PL_regint_start +#define PL_regint_start (*Perl_Tregint_start_ptr(pPerl)) #undef PL_regint_string -#define PL_regint_string pPerl->PL_regint_string +#define PL_regint_string (*Perl_Tregint_string_ptr(pPerl)) #undef PL_reginterp_cnt -#define PL_reginterp_cnt pPerl->PL_reginterp_cnt +#define PL_reginterp_cnt (*Perl_Treginterp_cnt_ptr(pPerl)) #undef PL_reglastparen -#define PL_reglastparen pPerl->PL_reglastparen +#define PL_reglastparen (*Perl_Treglastparen_ptr(pPerl)) #undef PL_regnarrate -#define PL_regnarrate pPerl->PL_regnarrate +#define PL_regnarrate (*Perl_Tregnarrate_ptr(pPerl)) #undef PL_regnaughty -#define PL_regnaughty pPerl->PL_regnaughty +#define PL_regnaughty (*Perl_Tregnaughty_ptr(pPerl)) #undef PL_regnpar -#define PL_regnpar pPerl->PL_regnpar +#define PL_regnpar (*Perl_Tregnpar_ptr(pPerl)) #undef PL_regprecomp -#define PL_regprecomp pPerl->PL_regprecomp +#define PL_regprecomp (*Perl_Tregprecomp_ptr(pPerl)) #undef PL_regprev -#define PL_regprev pPerl->PL_regprev +#define PL_regprev (*Perl_Tregprev_ptr(pPerl)) #undef PL_regprogram -#define PL_regprogram pPerl->PL_regprogram +#define PL_regprogram (*Perl_Tregprogram_ptr(pPerl)) #undef PL_regsawback -#define PL_regsawback pPerl->PL_regsawback +#define PL_regsawback (*Perl_Tregsawback_ptr(pPerl)) #undef PL_regseen -#define PL_regseen pPerl->PL_regseen +#define PL_regseen (*Perl_Tregseen_ptr(pPerl)) #undef PL_regsize -#define PL_regsize pPerl->PL_regsize +#define PL_regsize (*Perl_Tregsize_ptr(pPerl)) #undef PL_regstartp -#define PL_regstartp pPerl->PL_regstartp +#define PL_regstartp (*Perl_Tregstartp_ptr(pPerl)) #undef PL_regtill -#define PL_regtill pPerl->PL_regtill +#define PL_regtill (*Perl_Tregtill_ptr(pPerl)) #undef PL_regxend -#define PL_regxend pPerl->PL_regxend -#undef PL_replgv -#define PL_replgv pPerl->PL_replgv +#define PL_regxend (*Perl_Tregxend_ptr(pPerl)) #undef PL_restartop -#define PL_restartop pPerl->PL_restartop +#define PL_restartop (*Perl_Trestartop_ptr(pPerl)) #undef PL_retstack -#define PL_retstack pPerl->PL_retstack +#define PL_retstack (*Perl_Tretstack_ptr(pPerl)) #undef PL_retstack_ix -#define PL_retstack_ix pPerl->PL_retstack_ix +#define PL_retstack_ix (*Perl_Tretstack_ix_ptr(pPerl)) #undef PL_retstack_max -#define PL_retstack_max pPerl->PL_retstack_max -#undef PL_rightgv -#define PL_rightgv pPerl->PL_rightgv +#define PL_retstack_max (*Perl_Tretstack_max_ptr(pPerl)) #undef PL_rs -#define PL_rs pPerl->PL_rs -#undef PL_rsfp -#define PL_rsfp pPerl->PL_rsfp -#undef PL_rsfp_filters -#define PL_rsfp_filters pPerl->PL_rsfp_filters -#undef PL_runops -#define PL_runops pPerl->PL_runops +#define PL_rs (*Perl_Trs_ptr(pPerl)) #undef PL_savestack -#define PL_savestack pPerl->PL_savestack +#define PL_savestack (*Perl_Tsavestack_ptr(pPerl)) #undef PL_savestack_ix -#define PL_savestack_ix pPerl->PL_savestack_ix +#define PL_savestack_ix (*Perl_Tsavestack_ix_ptr(pPerl)) #undef PL_savestack_max -#define PL_savestack_max pPerl->PL_savestack_max -#undef PL_sawampersand -#define PL_sawampersand pPerl->PL_sawampersand -#undef PL_sawstudy -#define PL_sawstudy pPerl->PL_sawstudy -#undef PL_sawvec -#define PL_sawvec pPerl->PL_sawvec +#define PL_savestack_max (*Perl_Tsavestack_max_ptr(pPerl)) #undef PL_scopestack -#define PL_scopestack pPerl->PL_scopestack +#define PL_scopestack (*Perl_Tscopestack_ptr(pPerl)) #undef PL_scopestack_ix -#define PL_scopestack_ix pPerl->PL_scopestack_ix +#define PL_scopestack_ix (*Perl_Tscopestack_ix_ptr(pPerl)) #undef PL_scopestack_max -#define PL_scopestack_max pPerl->PL_scopestack_max +#define PL_scopestack_max (*Perl_Tscopestack_max_ptr(pPerl)) #undef PL_screamfirst -#define PL_screamfirst pPerl->PL_screamfirst +#define PL_screamfirst (*Perl_Tscreamfirst_ptr(pPerl)) #undef PL_screamnext -#define PL_screamnext pPerl->PL_screamnext +#define PL_screamnext (*Perl_Tscreamnext_ptr(pPerl)) #undef PL_secondgv -#define PL_secondgv pPerl->PL_secondgv +#define PL_secondgv (*Perl_Tsecondgv_ptr(pPerl)) #undef PL_seen_evals -#define PL_seen_evals pPerl->PL_seen_evals +#define PL_seen_evals (*Perl_Tseen_evals_ptr(pPerl)) #undef PL_seen_zerolen -#define PL_seen_zerolen pPerl->PL_seen_zerolen -#undef PL_sh_path -#define PL_sh_path pPerl->PL_sh_path -#undef PL_siggv -#define PL_siggv pPerl->PL_siggv -#undef PL_sighandlerp -#define PL_sighandlerp pPerl->PL_sighandlerp +#define PL_seen_zerolen (*Perl_Tseen_zerolen_ptr(pPerl)) #undef PL_sortcop -#define PL_sortcop pPerl->PL_sortcop +#define PL_sortcop (*Perl_Tsortcop_ptr(pPerl)) #undef PL_sortcxix -#define PL_sortcxix pPerl->PL_sortcxix +#define PL_sortcxix (*Perl_Tsortcxix_ptr(pPerl)) #undef PL_sortstash -#define PL_sortstash pPerl->PL_sortstash -#undef PL_splitstr -#define PL_splitstr pPerl->PL_splitstr -#undef PL_srand_called -#define PL_srand_called pPerl->PL_srand_called +#define PL_sortstash (*Perl_Tsortstash_ptr(pPerl)) #undef PL_stack_base -#define PL_stack_base pPerl->PL_stack_base +#define PL_stack_base (*Perl_Tstack_base_ptr(pPerl)) #undef PL_stack_max -#define PL_stack_max pPerl->PL_stack_max +#define PL_stack_max (*Perl_Tstack_max_ptr(pPerl)) #undef PL_stack_sp -#define PL_stack_sp pPerl->PL_stack_sp +#define PL_stack_sp (*Perl_Tstack_sp_ptr(pPerl)) #undef PL_start_env -#define PL_start_env pPerl->PL_start_env +#define PL_start_env (*Perl_Tstart_env_ptr(pPerl)) #undef PL_statbuf -#define PL_statbuf pPerl->PL_statbuf +#define PL_statbuf (*Perl_Tstatbuf_ptr(pPerl)) #undef PL_statcache -#define PL_statcache pPerl->PL_statcache +#define PL_statcache (*Perl_Tstatcache_ptr(pPerl)) #undef PL_statgv -#define PL_statgv pPerl->PL_statgv +#define PL_statgv (*Perl_Tstatgv_ptr(pPerl)) #undef PL_statname -#define PL_statname pPerl->PL_statname -#undef PL_statusvalue -#define PL_statusvalue pPerl->PL_statusvalue -#undef PL_statusvalue_vms -#define PL_statusvalue_vms pPerl->PL_statusvalue_vms -#undef PL_stdingv -#define PL_stdingv pPerl->PL_stdingv -#undef PL_strchop -#define PL_strchop pPerl->PL_strchop -#undef PL_strtab -#define PL_strtab pPerl->PL_strtab -#undef PL_strtab_mutex -#define PL_strtab_mutex pPerl->PL_strtab_mutex -#undef PL_sub_generation -#define PL_sub_generation pPerl->PL_sub_generation -#undef PL_sublex_info -#define PL_sublex_info pPerl->PL_sublex_info -#undef PL_subline -#define PL_subline pPerl->PL_subline -#undef PL_subname -#define PL_subname pPerl->PL_subname -#undef PL_sv_arenaroot -#define PL_sv_arenaroot pPerl->PL_sv_arenaroot -#undef PL_sv_count -#define PL_sv_count pPerl->PL_sv_count -#undef PL_sv_mutex -#define PL_sv_mutex pPerl->PL_sv_mutex -#undef PL_sv_no -#define PL_sv_no pPerl->PL_sv_no -#undef PL_sv_objcount -#define PL_sv_objcount pPerl->PL_sv_objcount -#undef PL_sv_root -#define PL_sv_root pPerl->PL_sv_root -#undef PL_sv_undef -#define PL_sv_undef pPerl->PL_sv_undef -#undef PL_sv_yes -#define PL_sv_yes pPerl->PL_sv_yes -#undef PL_svref_mutex -#define PL_svref_mutex pPerl->PL_svref_mutex -#undef PL_sys_intern -#define PL_sys_intern pPerl->PL_sys_intern +#define PL_statname (*Perl_Tstatname_ptr(pPerl)) #undef PL_tainted -#define PL_tainted pPerl->PL_tainted -#undef PL_tainting -#define PL_tainting pPerl->PL_tainting -#undef PL_thisexpr -#define PL_thisexpr pPerl->PL_thisexpr -#undef PL_thr_key -#define PL_thr_key pPerl->PL_thr_key -#undef PL_threadnum -#define PL_threadnum pPerl->PL_threadnum -#undef PL_threads_mutex -#define PL_threads_mutex pPerl->PL_threads_mutex -#undef PL_threadsv_names -#define PL_threadsv_names pPerl->PL_threadsv_names -#undef PL_thrsv -#define PL_thrsv pPerl->PL_thrsv +#define PL_tainted (*Perl_Ttainted_ptr(pPerl)) #undef PL_timesbuf -#define PL_timesbuf pPerl->PL_timesbuf +#define PL_timesbuf (*Perl_Ttimesbuf_ptr(pPerl)) #undef PL_tmps_floor -#define PL_tmps_floor pPerl->PL_tmps_floor +#define PL_tmps_floor (*Perl_Ttmps_floor_ptr(pPerl)) #undef PL_tmps_ix -#define PL_tmps_ix pPerl->PL_tmps_ix +#define PL_tmps_ix (*Perl_Ttmps_ix_ptr(pPerl)) #undef PL_tmps_max -#define PL_tmps_max pPerl->PL_tmps_max +#define PL_tmps_max (*Perl_Ttmps_max_ptr(pPerl)) #undef PL_tmps_stack -#define PL_tmps_stack pPerl->PL_tmps_stack -#undef PL_tokenbuf -#define PL_tokenbuf pPerl->PL_tokenbuf +#define PL_tmps_stack (*Perl_Ttmps_stack_ptr(pPerl)) #undef PL_top_env -#define PL_top_env pPerl->PL_top_env +#define PL_top_env (*Perl_Ttop_env_ptr(pPerl)) #undef PL_toptarget -#define PL_toptarget pPerl->PL_toptarget -#undef PL_uid -#define PL_uid pPerl->PL_uid -#undef PL_unsafe -#define PL_unsafe pPerl->PL_unsafe -#undef PL_utf8_alnum -#define PL_utf8_alnum pPerl->PL_utf8_alnum -#undef PL_utf8_alnumc -#define PL_utf8_alnumc pPerl->PL_utf8_alnumc -#undef PL_utf8_alpha -#define PL_utf8_alpha pPerl->PL_utf8_alpha -#undef PL_utf8_ascii -#define PL_utf8_ascii pPerl->PL_utf8_ascii -#undef PL_utf8_cntrl -#define PL_utf8_cntrl pPerl->PL_utf8_cntrl -#undef PL_utf8_digit -#define PL_utf8_digit pPerl->PL_utf8_digit -#undef PL_utf8_graph -#define PL_utf8_graph pPerl->PL_utf8_graph -#undef PL_utf8_lower -#define PL_utf8_lower pPerl->PL_utf8_lower -#undef PL_utf8_mark -#define PL_utf8_mark pPerl->PL_utf8_mark -#undef PL_utf8_print -#define PL_utf8_print pPerl->PL_utf8_print -#undef PL_utf8_punct -#define PL_utf8_punct pPerl->PL_utf8_punct -#undef PL_utf8_space -#define PL_utf8_space pPerl->PL_utf8_space -#undef PL_utf8_tolower -#define PL_utf8_tolower pPerl->PL_utf8_tolower -#undef PL_utf8_totitle -#define PL_utf8_totitle pPerl->PL_utf8_totitle -#undef PL_utf8_toupper -#define PL_utf8_toupper pPerl->PL_utf8_toupper -#undef PL_utf8_upper -#define PL_utf8_upper pPerl->PL_utf8_upper -#undef PL_utf8_xdigit -#define PL_utf8_xdigit pPerl->PL_utf8_xdigit -#undef PL_uudmap -#define PL_uudmap pPerl->PL_uudmap -#undef PL_warnhook -#define PL_warnhook pPerl->PL_warnhook +#define PL_toptarget (*Perl_Ttoptarget_ptr(pPerl)) #undef PL_watchaddr -#define PL_watchaddr pPerl->PL_watchaddr +#define PL_watchaddr (*Perl_Twatchaddr_ptr(pPerl)) #undef PL_watchok -#define PL_watchok pPerl->PL_watchok -#undef PL_xiv_arenaroot -#define PL_xiv_arenaroot pPerl->PL_xiv_arenaroot -#undef PL_xiv_root -#define PL_xiv_root pPerl->PL_xiv_root -#undef PL_xnv_root -#define PL_xnv_root pPerl->PL_xnv_root -#undef PL_xpv_root -#define PL_xpv_root pPerl->PL_xpv_root -#undef PL_xrv_root -#define PL_xrv_root pPerl->PL_xrv_root -#undef PL_yychar -#define PL_yychar pPerl->PL_yychar -#undef PL_yydebug -#define PL_yydebug pPerl->PL_yydebug -#undef PL_yyerrflag -#define PL_yyerrflag pPerl->PL_yyerrflag -#undef PL_yylval -#define PL_yylval pPerl->PL_yylval -#undef PL_yynerrs -#define PL_yynerrs pPerl->PL_yynerrs -#undef PL_yyval -#define PL_yyval pPerl->PL_yyval +#define PL_watchok (*Perl_Twatchok_ptr(pPerl)) +#undef PL_No +#define PL_No (*Perl_GNo_ptr(pPerl)) +#undef PL_Yes +#define PL_Yes (*Perl_GYes_ptr(pPerl)) +#undef PL_curinterp +#define PL_curinterp (*Perl_Gcurinterp_ptr(pPerl)) +#undef PL_do_undump +#define PL_do_undump (*Perl_Gdo_undump_ptr(pPerl)) +#undef PL_hexdigit +#define PL_hexdigit (*Perl_Ghexdigit_ptr(pPerl)) +#undef PL_patleave +#define PL_patleave (*Perl_Gpatleave_ptr(pPerl)) /* Functions */ @@ -3283,10 +3283,6 @@ #undef GetVars #define GetVars Perl_GetVars #endif -#undef Perl_yydestruct -#define Perl_yydestruct pPerl->Perl_yydestruct -#undef yydestruct -#define yydestruct Perl_yydestruct #undef Perl_runops_standard #define Perl_runops_standard pPerl->Perl_runops_standard #undef runops_standard @@ -3295,19 +3291,6 @@ #define Perl_runops_debug pPerl->Perl_runops_debug #undef runops_debug #define runops_debug Perl_runops_debug -#if defined(WIN32) -#if defined(PERL_OBJECT) -#undef Perl_ErrorNo -#define Perl_ErrorNo pPerl->Perl_ErrorNo -#undef ErrorNo -#define ErrorNo Perl_ErrorNo -#else -#undef Perl_ErrorNo -#define Perl_ErrorNo pPerl->Perl_ErrorNo -#undef ErrorNo -#define ErrorNo Perl_ErrorNo -#endif -#endif #undef Perl_sv_catpvf_mg #define Perl_sv_catpvf_mg pPerl->Perl_sv_catpvf_mg #undef sv_catpvf_mg @@ -3463,8 +3446,6 @@ #if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) #endif #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) -# if defined(USE_THREADS) -# endif #endif #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) # if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) diff --git a/perl.c b/perl.c index ee6d20b..b654404 100644 --- a/perl.c +++ b/perl.c @@ -1902,6 +1902,7 @@ S_init_interp(pTHX) #else # ifdef MULTIPLICITY # define PERLVAR(var,type) +# define PERLVARA(var,n,type) # if defined(PERL_IMPLICIT_CONTEXT) # define PERLVARI(var,type,init) my_perl->var = init; # define PERLVARIC(var,type,init) my_perl->var = init; @@ -1914,10 +1915,12 @@ S_init_interp(pTHX) # include "thrdvar.h" # endif # undef PERLVAR +# undef PERLVARA # undef PERLVARI # undef PERLVARIC # else # define PERLVAR(var,type) +# define PERLVARA(var,n,type) # define PERLVARI(var,type,init) PL_##var = init; # define PERLVARIC(var,type,init) PL_##var = init; # include "intrpvar.h" @@ -1925,6 +1928,7 @@ S_init_interp(pTHX) # include "thrdvar.h" # endif # undef PERLVAR +# undef PERLVARA # undef PERLVARI # undef PERLVARIC # endif @@ -3119,9 +3123,8 @@ S_my_exit_jump(pTHX) #ifdef PERL_OBJECT #define NO_XSLOCKS -#endif /* PERL_OBJECT */ - #include "XSUB.h" +#endif static I32 read_e_script(pTHXo_ int idx, SV *buf_sv, int maxlen) diff --git a/perl.h b/perl.h index 22aa413..68c4940 100644 --- a/perl.h +++ b/perl.h @@ -448,6 +448,19 @@ register struct op *Perl_op asm(stringify(OP_IN_REGISTER)); #define MEM_SIZE Size_t +#if defined(STANDARD_C) && defined(I_STDDEF) +# include +# define STRUCT_OFFSET(s,m) offsetof(s,m) +#else +# define STRUCT_OFFSET(s,m) (Size_t)(&(((s *)0)->m)) +#endif + +#if defined(I_STRING) || defined(__cplusplus) +# include +#else +# include +#endif + /* This comes after so we don't try to change the standard * library prototypes; we'll use our own in proto.h instead. */ @@ -478,19 +491,6 @@ Free_t Perl_mfree (Malloc_t where); # define safefree safesysfree #endif /* MYMALLOC */ -#if defined(STANDARD_C) && defined(I_STDDEF) -# include -# define STRUCT_OFFSET(s,m) offsetof(s,m) -#else -# define STRUCT_OFFSET(s,m) (Size_t)(&(((s *)0)->m)) -#endif - -#if defined(I_STRING) || defined(__cplusplus) -# include -#else -# include -#endif - #if !defined(HAS_STRCHR) && defined(HAS_INDEX) && !defined(strchr) #define strchr index #define strrchr rindex @@ -1609,7 +1609,7 @@ union any { I32 any_i32; IV any_iv; long any_long; - void (CPERLscope(*any_dptr)) (pTHX_ void*); + void (*any_dptr) (pTHXo_ void*); }; #endif @@ -2394,9 +2394,20 @@ typedef char* (CPERLscope(*re_intuit_start_t)) (pTHX_ regexp *prog, SV *sv, typedef SV* (CPERLscope(*re_intuit_string_t)) (pTHX_ regexp *prog); typedef void (CPERLscope(*regfree_t)) (pTHX_ struct regexp* r); +#ifdef USE_PURE_BISON +int Perl_yylex(pTHX_ YYSTYPE *lvalp, int *lcharp); +#endif + +typedef void (*DESTRUCTORFUNC_t) (pTHXo_ void*); +typedef void (*SVFUNC_t) (pTHXo_ SV*); +typedef I32 (*SVCOMPARE_t) (pTHXo_ SV*, SV*); +typedef void (*XSINIT_t) (pTHXo); +typedef void (*ATEXIT_t) (pTHXo_ void*); +typedef void (*XSUBADDR_t) (pTHXo_ CV *); /* Set up PERLVAR macros for populating structs */ #define PERLVAR(var,type) type var; +#define PERLVARA(var,n,type) type var[n]; #define PERLVARI(var,type,init) type var; #define PERLVARIC(var,type,init) type var; @@ -2478,6 +2489,7 @@ typedef void *Thread; /* Done with PERLVAR macros for now ... */ #undef PERLVAR +#undef PERLVARA #undef PERLVARI #undef PERLVARIC @@ -2504,17 +2516,6 @@ typedef void *Thread; # endif #endif -#ifdef USE_PURE_BISON -int Perl_yylex(pTHX_ YYSTYPE *lvalp, int *lcharp); -#endif - -typedef void (CPERLscope(*DESTRUCTORFUNC_t)) (pTHX_ void*); -typedef void (CPERLscope(*SVFUNC_t)) (pTHX_ SV*); -typedef I32 (CPERLscope(*SVCOMPARE_t)) (pTHX_ SV*, SV*); -typedef void (*XSINIT_t) (pTHXo); -typedef void (*ATEXIT_t) (pTHXo_ void*); -typedef void (*XSUBADDR_t) (pTHXo_ CV *); - #ifdef PERL_OBJECT #define PERL_DECL_PROT #define perl_alloc Perl_alloc @@ -2557,6 +2558,7 @@ VIRTUAL int CPerlObj::do_aspawn (void *vreally, void **vmark, void **vsp); */ #define PERLVAR(var,type) EXT type PL_##var; +#define PERLVARA(var,n,type) EXT type PL_##var[n]; #define PERLVARI(var,type,init) EXT type PL_##var INIT(init); #define PERLVARIC(var,type,init) EXTCONST type PL_##var INIT(init); @@ -2587,7 +2589,7 @@ END_EXTERN_C * be defined to maintain binary compatibility with PERL_OBJECT * for 5.005 */ -PERLVAR(object_compatibility[30], char) +PERLVARA(object_compatibility,30, char) }; # include "embed.h" @@ -2607,6 +2609,7 @@ PERLVAR(object_compatibility[30], char) #endif /* PERL_OBJECT */ #undef PERLVAR +#undef PERLVARA #undef PERLVARI #undef PERLVARIC diff --git a/perlapi.c b/perlapi.c new file mode 100755 index 0000000..855ed22 --- /dev/null +++ b/perlapi.c @@ -0,0 +1,7082 @@ +/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!! + This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h, + perlvars.h and thrdvar.h. Any changes made here will be lost! +*/ + +#include "EXTERN.h" +#include "perl.h" +#include "perlapi.h" + +#if defined(PERL_OBJECT) + +/* accessor functions for Perl variables (provides binary compatibility) */ +START_EXTERN_C + +#undef PERLVAR +#undef PERLVARA +#undef PERLVARI +#undef PERLVARIC +#define PERLVAR(v,t) t* Perl_##v##_ptr(void *p) \ + { return &(((CPerlObj*)p)->PL_##v); } +#define PERLVARA(v,n,t) PL_##v##_t* Perl_##v##_ptr(void *p) \ + { return &(((CPerlObj*)p)->PL_##v); } +#define PERLVARI(v,t,i) PERLVAR(v,t) +#define PERLVARIC(v,t,i) PERLVAR(v,t) + +#include "thrdvar.h" +#include "intrpvar.h" +#include "perlvars.h" + +#undef PERLVAR +#undef PERLVARA +#undef PERLVARI +#undef PERLVARIC + +#if defined(PERL_OBJECT) +#endif + +#undef Perl_amagic_call +SV* +Perl_amagic_call(void *pPerl, SV* left, SV* right, int method, int dir) +{ + return ((CPerlObj*)pPerl)->Perl_amagic_call(left, right, method, dir); +} + +#undef Perl_Gv_AMupdate +bool +Perl_Gv_AMupdate(void *pPerl, HV* stash) +{ + return ((CPerlObj*)pPerl)->Perl_Gv_AMupdate(stash); +} + +#undef Perl_append_elem +OP* +Perl_append_elem(void *pPerl, I32 optype, OP* head, OP* tail) +{ + return ((CPerlObj*)pPerl)->Perl_append_elem(optype, head, tail); +} + +#undef Perl_append_list +OP* +Perl_append_list(void *pPerl, I32 optype, LISTOP* first, LISTOP* last) +{ + return ((CPerlObj*)pPerl)->Perl_append_list(optype, first, last); +} + +#undef Perl_apply +I32 +Perl_apply(void *pPerl, I32 type, SV** mark, SV** sp) +{ + return ((CPerlObj*)pPerl)->Perl_apply(type, mark, sp); +} + +#undef Perl_assertref +void +Perl_assertref(void *pPerl, OP* o) +{ + ((CPerlObj*)pPerl)->Perl_assertref(o); +} + +#undef Perl_avhv_exists_ent +bool +Perl_avhv_exists_ent(void *pPerl, AV *ar, SV* keysv, U32 hash) +{ + return ((CPerlObj*)pPerl)->Perl_avhv_exists_ent(ar, keysv, hash); +} + +#undef Perl_avhv_fetch_ent +SV** +Perl_avhv_fetch_ent(void *pPerl, AV *ar, SV* keysv, I32 lval, U32 hash) +{ + return ((CPerlObj*)pPerl)->Perl_avhv_fetch_ent(ar, keysv, lval, hash); +} + +#undef Perl_avhv_iternext +HE* +Perl_avhv_iternext(void *pPerl, AV *ar) +{ + return ((CPerlObj*)pPerl)->Perl_avhv_iternext(ar); +} + +#undef Perl_avhv_iterval +SV* +Perl_avhv_iterval(void *pPerl, AV *ar, HE* entry) +{ + return ((CPerlObj*)pPerl)->Perl_avhv_iterval(ar, entry); +} + +#undef Perl_avhv_keys +HV* +Perl_avhv_keys(void *pPerl, AV *ar) +{ + return ((CPerlObj*)pPerl)->Perl_avhv_keys(ar); +} + +#undef Perl_av_clear +void +Perl_av_clear(void *pPerl, AV* ar) +{ + ((CPerlObj*)pPerl)->Perl_av_clear(ar); +} + +#undef Perl_av_extend +void +Perl_av_extend(void *pPerl, AV* ar, I32 key) +{ + ((CPerlObj*)pPerl)->Perl_av_extend(ar, key); +} + +#undef Perl_av_fake +AV* +Perl_av_fake(void *pPerl, I32 size, SV** svp) +{ + return ((CPerlObj*)pPerl)->Perl_av_fake(size, svp); +} + +#undef Perl_av_fetch +SV** +Perl_av_fetch(void *pPerl, AV* ar, I32 key, I32 lval) +{ + return ((CPerlObj*)pPerl)->Perl_av_fetch(ar, key, lval); +} + +#undef Perl_av_fill +void +Perl_av_fill(void *pPerl, AV* ar, I32 fill) +{ + ((CPerlObj*)pPerl)->Perl_av_fill(ar, fill); +} + +#undef Perl_av_len +I32 +Perl_av_len(void *pPerl, AV* ar) +{ + return ((CPerlObj*)pPerl)->Perl_av_len(ar); +} + +#undef Perl_av_make +AV* +Perl_av_make(void *pPerl, I32 size, SV** svp) +{ + return ((CPerlObj*)pPerl)->Perl_av_make(size, svp); +} + +#undef Perl_av_pop +SV* +Perl_av_pop(void *pPerl, AV* ar) +{ + return ((CPerlObj*)pPerl)->Perl_av_pop(ar); +} + +#undef Perl_av_push +void +Perl_av_push(void *pPerl, AV* ar, SV* val) +{ + ((CPerlObj*)pPerl)->Perl_av_push(ar, val); +} + +#undef Perl_av_reify +void +Perl_av_reify(void *pPerl, AV* ar) +{ + ((CPerlObj*)pPerl)->Perl_av_reify(ar); +} + +#undef Perl_av_shift +SV* +Perl_av_shift(void *pPerl, AV* ar) +{ + return ((CPerlObj*)pPerl)->Perl_av_shift(ar); +} + +#undef Perl_av_store +SV** +Perl_av_store(void *pPerl, AV* ar, I32 key, SV* val) +{ + return ((CPerlObj*)pPerl)->Perl_av_store(ar, key, val); +} + +#undef Perl_av_undef +void +Perl_av_undef(void *pPerl, AV* ar) +{ + ((CPerlObj*)pPerl)->Perl_av_undef(ar); +} + +#undef Perl_av_unshift +void +Perl_av_unshift(void *pPerl, AV* ar, I32 num) +{ + ((CPerlObj*)pPerl)->Perl_av_unshift(ar, num); +} + +#undef Perl_bind_match +OP* +Perl_bind_match(void *pPerl, I32 type, OP* left, OP* pat) +{ + return ((CPerlObj*)pPerl)->Perl_bind_match(type, left, pat); +} + +#undef Perl_block_end +OP* +Perl_block_end(void *pPerl, I32 floor, OP* seq) +{ + return ((CPerlObj*)pPerl)->Perl_block_end(floor, seq); +} + +#undef Perl_block_gimme +I32 +Perl_block_gimme(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_block_gimme(); +} + +#undef Perl_block_start +int +Perl_block_start(void *pPerl, int full) +{ + return ((CPerlObj*)pPerl)->Perl_block_start(full); +} + +#undef Perl_boot_core_UNIVERSAL +void +Perl_boot_core_UNIVERSAL(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_boot_core_UNIVERSAL(); +} + +#undef Perl_call_list +void +Perl_call_list(void *pPerl, I32 oldscope, AV* av_list) +{ + ((CPerlObj*)pPerl)->Perl_call_list(oldscope, av_list); +} + +#undef Perl_cando +I32 +Perl_cando(void *pPerl, I32 bit, I32 effective, Stat_t* statbufp) +{ + return ((CPerlObj*)pPerl)->Perl_cando(bit, effective, statbufp); +} + +#undef Perl_cast_ulong +U32 +Perl_cast_ulong(void *pPerl, NV f) +{ + return ((CPerlObj*)pPerl)->Perl_cast_ulong(f); +} + +#undef Perl_cast_i32 +I32 +Perl_cast_i32(void *pPerl, NV f) +{ + return ((CPerlObj*)pPerl)->Perl_cast_i32(f); +} + +#undef Perl_cast_iv +IV +Perl_cast_iv(void *pPerl, NV f) +{ + return ((CPerlObj*)pPerl)->Perl_cast_iv(f); +} + +#undef Perl_cast_uv +UV +Perl_cast_uv(void *pPerl, NV f) +{ + return ((CPerlObj*)pPerl)->Perl_cast_uv(f); +} +#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) + +#undef Perl_my_chsize +I32 +Perl_my_chsize(void *pPerl, int fd, Off_t length) +{ + return ((CPerlObj*)pPerl)->Perl_my_chsize(fd, length); +} +#endif +#if defined(USE_THREADS) + +#undef Perl_condpair_magic +MAGIC* +Perl_condpair_magic(void *pPerl, SV *sv) +{ + return ((CPerlObj*)pPerl)->Perl_condpair_magic(sv); +} +#endif + +#undef Perl_convert +OP* +Perl_convert(void *pPerl, I32 optype, I32 flags, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_convert(optype, flags, o); +} +#if defined(PERL_IMPLICIT_CONTEXT) +#endif + +#undef Perl_cv_ckproto +void +Perl_cv_ckproto(void *pPerl, CV* cv, GV* gv, char* p) +{ + ((CPerlObj*)pPerl)->Perl_cv_ckproto(cv, gv, p); +} + +#undef Perl_cv_clone +CV* +Perl_cv_clone(void *pPerl, CV* proto) +{ + return ((CPerlObj*)pPerl)->Perl_cv_clone(proto); +} + +#undef Perl_cv_const_sv +SV* +Perl_cv_const_sv(void *pPerl, CV* cv) +{ + return ((CPerlObj*)pPerl)->Perl_cv_const_sv(cv); +} + +#undef Perl_op_const_sv +SV* +Perl_op_const_sv(void *pPerl, OP* o, CV* cv) +{ + return ((CPerlObj*)pPerl)->Perl_op_const_sv(o, cv); +} + +#undef Perl_cv_undef +void +Perl_cv_undef(void *pPerl, CV* cv) +{ + ((CPerlObj*)pPerl)->Perl_cv_undef(cv); +} + +#undef Perl_cx_dump +void +Perl_cx_dump(void *pPerl, PERL_CONTEXT* cs) +{ + ((CPerlObj*)pPerl)->Perl_cx_dump(cs); +} + +#undef Perl_filter_add +SV* +Perl_filter_add(void *pPerl, filter_t funcp, SV* datasv) +{ + return ((CPerlObj*)pPerl)->Perl_filter_add(funcp, datasv); +} + +#undef Perl_filter_del +void +Perl_filter_del(void *pPerl, filter_t funcp) +{ + ((CPerlObj*)pPerl)->Perl_filter_del(funcp); +} + +#undef Perl_filter_read +I32 +Perl_filter_read(void *pPerl, int idx, SV* buffer, int maxlen) +{ + return ((CPerlObj*)pPerl)->Perl_filter_read(idx, buffer, maxlen); +} + +#undef Perl_get_op_descs +char** +Perl_get_op_descs(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_get_op_descs(); +} + +#undef Perl_get_op_names +char** +Perl_get_op_names(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_get_op_names(); +} + +#undef Perl_get_no_modify +char* +Perl_get_no_modify(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_get_no_modify(); +} + +#undef Perl_get_opargs +U32* +Perl_get_opargs(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_get_opargs(); +} + +#undef Perl_get_ppaddr +PPADDR_t* +Perl_get_ppaddr(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_get_ppaddr(); +} + +#undef Perl_cxinc +I32 +Perl_cxinc(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_cxinc(); +} + +#undef Perl_deb_growlevel +void +Perl_deb_growlevel(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_deb_growlevel(); +} + +#undef Perl_debprofdump +void +Perl_debprofdump(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_debprofdump(); +} + +#undef Perl_debop +I32 +Perl_debop(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_debop(o); +} + +#undef Perl_debstack +I32 +Perl_debstack(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_debstack(); +} + +#undef Perl_debstackptrs +I32 +Perl_debstackptrs(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_debstackptrs(); +} + +#undef Perl_delimcpy +char* +Perl_delimcpy(void *pPerl, char* to, char* toend, char* from, char* fromend, int delim, I32* retlen) +{ + return ((CPerlObj*)pPerl)->Perl_delimcpy(to, toend, from, fromend, delim, retlen); +} + +#undef Perl_deprecate +void +Perl_deprecate(void *pPerl, char* s) +{ + ((CPerlObj*)pPerl)->Perl_deprecate(s); +} + +#undef Perl_die_where +OP* +Perl_die_where(void *pPerl, char* message, STRLEN msglen) +{ + return ((CPerlObj*)pPerl)->Perl_die_where(message, msglen); +} + +#undef Perl_dounwind +void +Perl_dounwind(void *pPerl, I32 cxix) +{ + ((CPerlObj*)pPerl)->Perl_dounwind(cxix); +} + +#undef Perl_do_aexec +bool +Perl_do_aexec(void *pPerl, SV* really, SV** mark, SV** sp) +{ + return ((CPerlObj*)pPerl)->Perl_do_aexec(really, mark, sp); +} + +#undef Perl_do_binmode +int +Perl_do_binmode(void *pPerl, PerlIO *fp, int iotype, int flag) +{ + return ((CPerlObj*)pPerl)->Perl_do_binmode(fp, iotype, flag); +} + +#undef Perl_do_chop +void +Perl_do_chop(void *pPerl, SV* asv, SV* sv) +{ + ((CPerlObj*)pPerl)->Perl_do_chop(asv, sv); +} + +#undef Perl_do_close +bool +Perl_do_close(void *pPerl, GV* gv, bool not_implicit) +{ + return ((CPerlObj*)pPerl)->Perl_do_close(gv, not_implicit); +} + +#undef Perl_do_eof +bool +Perl_do_eof(void *pPerl, GV* gv) +{ + return ((CPerlObj*)pPerl)->Perl_do_eof(gv); +} + +#undef Perl_do_exec +bool +Perl_do_exec(void *pPerl, char* cmd) +{ + return ((CPerlObj*)pPerl)->Perl_do_exec(cmd); +} +#if !defined(WIN32) + +#undef Perl_do_exec3 +bool +Perl_do_exec3(void *pPerl, char* cmd, int fd, int flag) +{ + return ((CPerlObj*)pPerl)->Perl_do_exec3(cmd, fd, flag); +} +#endif + +#undef Perl_do_execfree +void +Perl_do_execfree(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_do_execfree(); +} +#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) + +#undef Perl_do_ipcctl +I32 +Perl_do_ipcctl(void *pPerl, I32 optype, SV** mark, SV** sp) +{ + return ((CPerlObj*)pPerl)->Perl_do_ipcctl(optype, mark, sp); +} + +#undef Perl_do_ipcget +I32 +Perl_do_ipcget(void *pPerl, I32 optype, SV** mark, SV** sp) +{ + return ((CPerlObj*)pPerl)->Perl_do_ipcget(optype, mark, sp); +} + +#undef Perl_do_msgrcv +I32 +Perl_do_msgrcv(void *pPerl, SV** mark, SV** sp) +{ + return ((CPerlObj*)pPerl)->Perl_do_msgrcv(mark, sp); +} + +#undef Perl_do_msgsnd +I32 +Perl_do_msgsnd(void *pPerl, SV** mark, SV** sp) +{ + return ((CPerlObj*)pPerl)->Perl_do_msgsnd(mark, sp); +} + +#undef Perl_do_semop +I32 +Perl_do_semop(void *pPerl, SV** mark, SV** sp) +{ + return ((CPerlObj*)pPerl)->Perl_do_semop(mark, sp); +} + +#undef Perl_do_shmio +I32 +Perl_do_shmio(void *pPerl, I32 optype, SV** mark, SV** sp) +{ + return ((CPerlObj*)pPerl)->Perl_do_shmio(optype, mark, sp); +} +#endif + +#undef Perl_do_join +void +Perl_do_join(void *pPerl, SV* sv, SV* del, SV** mark, SV** sp) +{ + ((CPerlObj*)pPerl)->Perl_do_join(sv, del, mark, sp); +} + +#undef Perl_do_kv +OP* +Perl_do_kv(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_do_kv(); +} + +#undef Perl_do_open +bool +Perl_do_open(void *pPerl, GV* gv, char* name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO* supplied_fp) +{ + return ((CPerlObj*)pPerl)->Perl_do_open(gv, name, len, as_raw, rawmode, rawperm, supplied_fp); +} + +#undef Perl_do_pipe +void +Perl_do_pipe(void *pPerl, SV* sv, GV* rgv, GV* wgv) +{ + ((CPerlObj*)pPerl)->Perl_do_pipe(sv, rgv, wgv); +} + +#undef Perl_do_print +bool +Perl_do_print(void *pPerl, SV* sv, PerlIO* fp) +{ + return ((CPerlObj*)pPerl)->Perl_do_print(sv, fp); +} + +#undef Perl_do_readline +OP* +Perl_do_readline(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_do_readline(); +} + +#undef Perl_do_chomp +I32 +Perl_do_chomp(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_do_chomp(sv); +} + +#undef Perl_do_seek +bool +Perl_do_seek(void *pPerl, GV* gv, Off_t pos, int whence) +{ + return ((CPerlObj*)pPerl)->Perl_do_seek(gv, pos, whence); +} + +#undef Perl_do_sprintf +void +Perl_do_sprintf(void *pPerl, SV* sv, I32 len, SV** sarg) +{ + ((CPerlObj*)pPerl)->Perl_do_sprintf(sv, len, sarg); +} + +#undef Perl_do_sysseek +Off_t +Perl_do_sysseek(void *pPerl, GV* gv, Off_t pos, int whence) +{ + return ((CPerlObj*)pPerl)->Perl_do_sysseek(gv, pos, whence); +} + +#undef Perl_do_tell +Off_t +Perl_do_tell(void *pPerl, GV* gv) +{ + return ((CPerlObj*)pPerl)->Perl_do_tell(gv); +} + +#undef Perl_do_trans +I32 +Perl_do_trans(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_do_trans(sv); +} + +#undef Perl_do_vecset +void +Perl_do_vecset(void *pPerl, SV* sv) +{ + ((CPerlObj*)pPerl)->Perl_do_vecset(sv); +} + +#undef Perl_do_vop +void +Perl_do_vop(void *pPerl, I32 optype, SV* sv, SV* left, SV* right) +{ + ((CPerlObj*)pPerl)->Perl_do_vop(optype, sv, left, right); +} + +#undef Perl_dofile +OP* +Perl_dofile(void *pPerl, OP* term) +{ + return ((CPerlObj*)pPerl)->Perl_dofile(term); +} + +#undef Perl_dowantarray +I32 +Perl_dowantarray(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_dowantarray(); +} + +#undef Perl_dump_all +void +Perl_dump_all(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_dump_all(); +} + +#undef Perl_dump_eval +void +Perl_dump_eval(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_dump_eval(); +} +#if defined(DUMP_FDS) + +#undef Perl_dump_fds +void +Perl_dump_fds(void *pPerl, char* s) +{ + ((CPerlObj*)pPerl)->Perl_dump_fds(s); +} +#endif + +#undef Perl_dump_form +void +Perl_dump_form(void *pPerl, GV* gv) +{ + ((CPerlObj*)pPerl)->Perl_dump_form(gv); +} + +#undef Perl_gv_dump +void +Perl_gv_dump(void *pPerl, GV* gv) +{ + ((CPerlObj*)pPerl)->Perl_gv_dump(gv); +} + +#undef Perl_op_dump +void +Perl_op_dump(void *pPerl, OP* arg) +{ + ((CPerlObj*)pPerl)->Perl_op_dump(arg); +} + +#undef Perl_pmop_dump +void +Perl_pmop_dump(void *pPerl, PMOP* pm) +{ + ((CPerlObj*)pPerl)->Perl_pmop_dump(pm); +} + +#undef Perl_dump_packsubs +void +Perl_dump_packsubs(void *pPerl, HV* stash) +{ + ((CPerlObj*)pPerl)->Perl_dump_packsubs(stash); +} + +#undef Perl_dump_sub +void +Perl_dump_sub(void *pPerl, GV* gv) +{ + ((CPerlObj*)pPerl)->Perl_dump_sub(gv); +} + +#undef Perl_fbm_compile +void +Perl_fbm_compile(void *pPerl, SV* sv, U32 flags) +{ + ((CPerlObj*)pPerl)->Perl_fbm_compile(sv, flags); +} + +#undef Perl_fbm_instr +char* +Perl_fbm_instr(void *pPerl, unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags) +{ + return ((CPerlObj*)pPerl)->Perl_fbm_instr(big, bigend, littlesv, flags); +} + +#undef Perl_find_script +char* +Perl_find_script(void *pPerl, char *scriptname, bool dosearch, char **search_ext, I32 flags) +{ + return ((CPerlObj*)pPerl)->Perl_find_script(scriptname, dosearch, search_ext, flags); +} +#if defined(USE_THREADS) + +#undef Perl_find_threadsv +PADOFFSET +Perl_find_threadsv(void *pPerl, const char *name) +{ + return ((CPerlObj*)pPerl)->Perl_find_threadsv(name); +} +#endif + +#undef Perl_force_list +OP* +Perl_force_list(void *pPerl, OP* arg) +{ + return ((CPerlObj*)pPerl)->Perl_force_list(arg); +} + +#undef Perl_fold_constants +OP* +Perl_fold_constants(void *pPerl, OP* arg) +{ + return ((CPerlObj*)pPerl)->Perl_fold_constants(arg); +} + +#undef Perl_free_tmps +void +Perl_free_tmps(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_free_tmps(); +} + +#undef Perl_gen_constant_list +OP* +Perl_gen_constant_list(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_gen_constant_list(o); +} +#if !defined(HAS_GETENV_LEN) + +#undef Perl_getenv_len +char* +Perl_getenv_len(void *pPerl, char* key, unsigned long *len) +{ + return ((CPerlObj*)pPerl)->Perl_getenv_len(key, len); +} +#endif + +#undef Perl_gp_free +void +Perl_gp_free(void *pPerl, GV* gv) +{ + ((CPerlObj*)pPerl)->Perl_gp_free(gv); +} + +#undef Perl_gp_ref +GP* +Perl_gp_ref(void *pPerl, GP* gp) +{ + return ((CPerlObj*)pPerl)->Perl_gp_ref(gp); +} + +#undef Perl_gv_AVadd +GV* +Perl_gv_AVadd(void *pPerl, GV* gv) +{ + return ((CPerlObj*)pPerl)->Perl_gv_AVadd(gv); +} + +#undef Perl_gv_HVadd +GV* +Perl_gv_HVadd(void *pPerl, GV* gv) +{ + return ((CPerlObj*)pPerl)->Perl_gv_HVadd(gv); +} + +#undef Perl_gv_IOadd +GV* +Perl_gv_IOadd(void *pPerl, GV* gv) +{ + return ((CPerlObj*)pPerl)->Perl_gv_IOadd(gv); +} + +#undef Perl_gv_autoload4 +GV* +Perl_gv_autoload4(void *pPerl, HV* stash, const char* name, STRLEN len, I32 method) +{ + return ((CPerlObj*)pPerl)->Perl_gv_autoload4(stash, name, len, method); +} + +#undef Perl_gv_check +void +Perl_gv_check(void *pPerl, HV* stash) +{ + ((CPerlObj*)pPerl)->Perl_gv_check(stash); +} + +#undef Perl_gv_efullname +void +Perl_gv_efullname(void *pPerl, SV* sv, GV* gv) +{ + ((CPerlObj*)pPerl)->Perl_gv_efullname(sv, gv); +} + +#undef Perl_gv_efullname3 +void +Perl_gv_efullname3(void *pPerl, SV* sv, GV* gv, const char* prefix) +{ + ((CPerlObj*)pPerl)->Perl_gv_efullname3(sv, gv, prefix); +} + +#undef Perl_gv_fetchfile +GV* +Perl_gv_fetchfile(void *pPerl, const char* name) +{ + return ((CPerlObj*)pPerl)->Perl_gv_fetchfile(name); +} + +#undef Perl_gv_fetchmeth +GV* +Perl_gv_fetchmeth(void *pPerl, HV* stash, const char* name, STRLEN len, I32 level) +{ + return ((CPerlObj*)pPerl)->Perl_gv_fetchmeth(stash, name, len, level); +} + +#undef Perl_gv_fetchmethod +GV* +Perl_gv_fetchmethod(void *pPerl, HV* stash, const char* name) +{ + return ((CPerlObj*)pPerl)->Perl_gv_fetchmethod(stash, name); +} + +#undef Perl_gv_fetchmethod_autoload +GV* +Perl_gv_fetchmethod_autoload(void *pPerl, HV* stash, const char* name, I32 autoload) +{ + return ((CPerlObj*)pPerl)->Perl_gv_fetchmethod_autoload(stash, name, autoload); +} + +#undef Perl_gv_fetchpv +GV* +Perl_gv_fetchpv(void *pPerl, const char* name, I32 add, I32 sv_type) +{ + return ((CPerlObj*)pPerl)->Perl_gv_fetchpv(name, add, sv_type); +} + +#undef Perl_gv_fullname +void +Perl_gv_fullname(void *pPerl, SV* sv, GV* gv) +{ + ((CPerlObj*)pPerl)->Perl_gv_fullname(sv, gv); +} + +#undef Perl_gv_fullname3 +void +Perl_gv_fullname3(void *pPerl, SV* sv, GV* gv, const char* prefix) +{ + ((CPerlObj*)pPerl)->Perl_gv_fullname3(sv, gv, prefix); +} + +#undef Perl_gv_init +void +Perl_gv_init(void *pPerl, GV* gv, HV* stash, const char* name, STRLEN len, int multi) +{ + ((CPerlObj*)pPerl)->Perl_gv_init(gv, stash, name, len, multi); +} + +#undef Perl_gv_stashpv +HV* +Perl_gv_stashpv(void *pPerl, const char* name, I32 create) +{ + return ((CPerlObj*)pPerl)->Perl_gv_stashpv(name, create); +} + +#undef Perl_gv_stashpvn +HV* +Perl_gv_stashpvn(void *pPerl, const char* name, U32 namelen, I32 create) +{ + return ((CPerlObj*)pPerl)->Perl_gv_stashpvn(name, namelen, create); +} + +#undef Perl_gv_stashsv +HV* +Perl_gv_stashsv(void *pPerl, SV* sv, I32 create) +{ + return ((CPerlObj*)pPerl)->Perl_gv_stashsv(sv, create); +} + +#undef Perl_hv_clear +void +Perl_hv_clear(void *pPerl, HV* tb) +{ + ((CPerlObj*)pPerl)->Perl_hv_clear(tb); +} + +#undef Perl_hv_delayfree_ent +void +Perl_hv_delayfree_ent(void *pPerl, HV* hv, HE* entry) +{ + ((CPerlObj*)pPerl)->Perl_hv_delayfree_ent(hv, entry); +} + +#undef Perl_hv_delete +SV* +Perl_hv_delete(void *pPerl, HV* tb, const char* key, U32 klen, I32 flags) +{ + return ((CPerlObj*)pPerl)->Perl_hv_delete(tb, key, klen, flags); +} + +#undef Perl_hv_delete_ent +SV* +Perl_hv_delete_ent(void *pPerl, HV* tb, SV* key, I32 flags, U32 hash) +{ + return ((CPerlObj*)pPerl)->Perl_hv_delete_ent(tb, key, flags, hash); +} + +#undef Perl_hv_exists +bool +Perl_hv_exists(void *pPerl, HV* tb, const char* key, U32 klen) +{ + return ((CPerlObj*)pPerl)->Perl_hv_exists(tb, key, klen); +} + +#undef Perl_hv_exists_ent +bool +Perl_hv_exists_ent(void *pPerl, HV* tb, SV* key, U32 hash) +{ + return ((CPerlObj*)pPerl)->Perl_hv_exists_ent(tb, key, hash); +} + +#undef Perl_hv_fetch +SV** +Perl_hv_fetch(void *pPerl, HV* tb, const char* key, U32 klen, I32 lval) +{ + return ((CPerlObj*)pPerl)->Perl_hv_fetch(tb, key, klen, lval); +} + +#undef Perl_hv_fetch_ent +HE* +Perl_hv_fetch_ent(void *pPerl, HV* tb, SV* key, I32 lval, U32 hash) +{ + return ((CPerlObj*)pPerl)->Perl_hv_fetch_ent(tb, key, lval, hash); +} + +#undef Perl_hv_free_ent +void +Perl_hv_free_ent(void *pPerl, HV* hv, HE* entry) +{ + ((CPerlObj*)pPerl)->Perl_hv_free_ent(hv, entry); +} + +#undef Perl_hv_iterinit +I32 +Perl_hv_iterinit(void *pPerl, HV* tb) +{ + return ((CPerlObj*)pPerl)->Perl_hv_iterinit(tb); +} + +#undef Perl_hv_iterkey +char* +Perl_hv_iterkey(void *pPerl, HE* entry, I32* retlen) +{ + return ((CPerlObj*)pPerl)->Perl_hv_iterkey(entry, retlen); +} + +#undef Perl_hv_iterkeysv +SV* +Perl_hv_iterkeysv(void *pPerl, HE* entry) +{ + return ((CPerlObj*)pPerl)->Perl_hv_iterkeysv(entry); +} + +#undef Perl_hv_iternext +HE* +Perl_hv_iternext(void *pPerl, HV* tb) +{ + return ((CPerlObj*)pPerl)->Perl_hv_iternext(tb); +} + +#undef Perl_hv_iternextsv +SV* +Perl_hv_iternextsv(void *pPerl, HV* hv, char** key, I32* retlen) +{ + return ((CPerlObj*)pPerl)->Perl_hv_iternextsv(hv, key, retlen); +} + +#undef Perl_hv_iterval +SV* +Perl_hv_iterval(void *pPerl, HV* tb, HE* entry) +{ + return ((CPerlObj*)pPerl)->Perl_hv_iterval(tb, entry); +} + +#undef Perl_hv_ksplit +void +Perl_hv_ksplit(void *pPerl, HV* hv, IV newmax) +{ + ((CPerlObj*)pPerl)->Perl_hv_ksplit(hv, newmax); +} + +#undef Perl_hv_magic +void +Perl_hv_magic(void *pPerl, HV* hv, GV* gv, int how) +{ + ((CPerlObj*)pPerl)->Perl_hv_magic(hv, gv, how); +} + +#undef Perl_hv_store +SV** +Perl_hv_store(void *pPerl, HV* tb, const char* key, U32 klen, SV* val, U32 hash) +{ + return ((CPerlObj*)pPerl)->Perl_hv_store(tb, key, klen, val, hash); +} + +#undef Perl_hv_store_ent +HE* +Perl_hv_store_ent(void *pPerl, HV* tb, SV* key, SV* val, U32 hash) +{ + return ((CPerlObj*)pPerl)->Perl_hv_store_ent(tb, key, val, hash); +} + +#undef Perl_hv_undef +void +Perl_hv_undef(void *pPerl, HV* tb) +{ + ((CPerlObj*)pPerl)->Perl_hv_undef(tb); +} + +#undef Perl_ibcmp +I32 +Perl_ibcmp(void *pPerl, const char* a, const char* b, I32 len) +{ + return ((CPerlObj*)pPerl)->Perl_ibcmp(a, b, len); +} + +#undef Perl_ibcmp_locale +I32 +Perl_ibcmp_locale(void *pPerl, const char* a, const char* b, I32 len) +{ + return ((CPerlObj*)pPerl)->Perl_ibcmp_locale(a, b, len); +} + +#undef Perl_ingroup +I32 +Perl_ingroup(void *pPerl, I32 testgid, I32 effective) +{ + return ((CPerlObj*)pPerl)->Perl_ingroup(testgid, effective); +} + +#undef Perl_init_stacks +void +Perl_init_stacks(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_init_stacks(); +} + +#undef Perl_intro_my +U32 +Perl_intro_my(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_intro_my(); +} + +#undef Perl_instr +char* +Perl_instr(void *pPerl, const char* big, const char* little) +{ + return ((CPerlObj*)pPerl)->Perl_instr(big, little); +} + +#undef Perl_io_close +bool +Perl_io_close(void *pPerl, IO* io) +{ + return ((CPerlObj*)pPerl)->Perl_io_close(io); +} + +#undef Perl_invert +OP* +Perl_invert(void *pPerl, OP* cmd) +{ + return ((CPerlObj*)pPerl)->Perl_invert(cmd); +} + +#undef Perl_is_uni_alnum +bool +Perl_is_uni_alnum(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_alnum(c); +} + +#undef Perl_is_uni_alnumc +bool +Perl_is_uni_alnumc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_alnumc(c); +} + +#undef Perl_is_uni_idfirst +bool +Perl_is_uni_idfirst(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_idfirst(c); +} + +#undef Perl_is_uni_alpha +bool +Perl_is_uni_alpha(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_alpha(c); +} + +#undef Perl_is_uni_ascii +bool +Perl_is_uni_ascii(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_ascii(c); +} + +#undef Perl_is_uni_space +bool +Perl_is_uni_space(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_space(c); +} + +#undef Perl_is_uni_cntrl +bool +Perl_is_uni_cntrl(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_cntrl(c); +} + +#undef Perl_is_uni_graph +bool +Perl_is_uni_graph(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_graph(c); +} + +#undef Perl_is_uni_digit +bool +Perl_is_uni_digit(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_digit(c); +} + +#undef Perl_is_uni_upper +bool +Perl_is_uni_upper(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_upper(c); +} + +#undef Perl_is_uni_lower +bool +Perl_is_uni_lower(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_lower(c); +} + +#undef Perl_is_uni_print +bool +Perl_is_uni_print(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_print(c); +} + +#undef Perl_is_uni_punct +bool +Perl_is_uni_punct(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_punct(c); +} + +#undef Perl_is_uni_xdigit +bool +Perl_is_uni_xdigit(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_xdigit(c); +} + +#undef Perl_to_uni_upper +U32 +Perl_to_uni_upper(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_to_uni_upper(c); +} + +#undef Perl_to_uni_title +U32 +Perl_to_uni_title(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_to_uni_title(c); +} + +#undef Perl_to_uni_lower +U32 +Perl_to_uni_lower(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_to_uni_lower(c); +} + +#undef Perl_is_uni_alnum_lc +bool +Perl_is_uni_alnum_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_alnum_lc(c); +} + +#undef Perl_is_uni_alnumc_lc +bool +Perl_is_uni_alnumc_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_alnumc_lc(c); +} + +#undef Perl_is_uni_idfirst_lc +bool +Perl_is_uni_idfirst_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_idfirst_lc(c); +} + +#undef Perl_is_uni_alpha_lc +bool +Perl_is_uni_alpha_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_alpha_lc(c); +} + +#undef Perl_is_uni_ascii_lc +bool +Perl_is_uni_ascii_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_ascii_lc(c); +} + +#undef Perl_is_uni_space_lc +bool +Perl_is_uni_space_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_space_lc(c); +} + +#undef Perl_is_uni_cntrl_lc +bool +Perl_is_uni_cntrl_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_cntrl_lc(c); +} + +#undef Perl_is_uni_graph_lc +bool +Perl_is_uni_graph_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_graph_lc(c); +} + +#undef Perl_is_uni_digit_lc +bool +Perl_is_uni_digit_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_digit_lc(c); +} + +#undef Perl_is_uni_upper_lc +bool +Perl_is_uni_upper_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_upper_lc(c); +} + +#undef Perl_is_uni_lower_lc +bool +Perl_is_uni_lower_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_lower_lc(c); +} + +#undef Perl_is_uni_print_lc +bool +Perl_is_uni_print_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_print_lc(c); +} + +#undef Perl_is_uni_punct_lc +bool +Perl_is_uni_punct_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_punct_lc(c); +} + +#undef Perl_is_uni_xdigit_lc +bool +Perl_is_uni_xdigit_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_is_uni_xdigit_lc(c); +} + +#undef Perl_to_uni_upper_lc +U32 +Perl_to_uni_upper_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_to_uni_upper_lc(c); +} + +#undef Perl_to_uni_title_lc +U32 +Perl_to_uni_title_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_to_uni_title_lc(c); +} + +#undef Perl_to_uni_lower_lc +U32 +Perl_to_uni_lower_lc(void *pPerl, U32 c) +{ + return ((CPerlObj*)pPerl)->Perl_to_uni_lower_lc(c); +} + +#undef Perl_is_utf8_alnum +bool +Perl_is_utf8_alnum(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_is_utf8_alnum(p); +} + +#undef Perl_is_utf8_alnumc +bool +Perl_is_utf8_alnumc(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_is_utf8_alnumc(p); +} + +#undef Perl_is_utf8_idfirst +bool +Perl_is_utf8_idfirst(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_is_utf8_idfirst(p); +} + +#undef Perl_is_utf8_alpha +bool +Perl_is_utf8_alpha(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_is_utf8_alpha(p); +} + +#undef Perl_is_utf8_ascii +bool +Perl_is_utf8_ascii(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_is_utf8_ascii(p); +} + +#undef Perl_is_utf8_space +bool +Perl_is_utf8_space(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_is_utf8_space(p); +} + +#undef Perl_is_utf8_cntrl +bool +Perl_is_utf8_cntrl(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_is_utf8_cntrl(p); +} + +#undef Perl_is_utf8_digit +bool +Perl_is_utf8_digit(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_is_utf8_digit(p); +} + +#undef Perl_is_utf8_graph +bool +Perl_is_utf8_graph(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_is_utf8_graph(p); +} + +#undef Perl_is_utf8_upper +bool +Perl_is_utf8_upper(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_is_utf8_upper(p); +} + +#undef Perl_is_utf8_lower +bool +Perl_is_utf8_lower(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_is_utf8_lower(p); +} + +#undef Perl_is_utf8_print +bool +Perl_is_utf8_print(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_is_utf8_print(p); +} + +#undef Perl_is_utf8_punct +bool +Perl_is_utf8_punct(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_is_utf8_punct(p); +} + +#undef Perl_is_utf8_xdigit +bool +Perl_is_utf8_xdigit(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_is_utf8_xdigit(p); +} + +#undef Perl_is_utf8_mark +bool +Perl_is_utf8_mark(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_is_utf8_mark(p); +} + +#undef Perl_jmaybe +OP* +Perl_jmaybe(void *pPerl, OP* arg) +{ + return ((CPerlObj*)pPerl)->Perl_jmaybe(arg); +} + +#undef Perl_keyword +I32 +Perl_keyword(void *pPerl, char* d, I32 len) +{ + return ((CPerlObj*)pPerl)->Perl_keyword(d, len); +} + +#undef Perl_leave_scope +void +Perl_leave_scope(void *pPerl, I32 base) +{ + ((CPerlObj*)pPerl)->Perl_leave_scope(base); +} + +#undef Perl_lex_end +void +Perl_lex_end(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_lex_end(); +} + +#undef Perl_lex_start +void +Perl_lex_start(void *pPerl, SV* line) +{ + ((CPerlObj*)pPerl)->Perl_lex_start(line); +} + +#undef Perl_linklist +OP* +Perl_linklist(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_linklist(o); +} + +#undef Perl_list +OP* +Perl_list(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_list(o); +} + +#undef Perl_listkids +OP* +Perl_listkids(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_listkids(o); +} + +#undef Perl_localize +OP* +Perl_localize(void *pPerl, OP* arg, I32 lexical) +{ + return ((CPerlObj*)pPerl)->Perl_localize(arg, lexical); +} + +#undef Perl_looks_like_number +I32 +Perl_looks_like_number(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_looks_like_number(sv); +} + +#undef Perl_magic_clearenv +int +Perl_magic_clearenv(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_clearenv(sv, mg); +} + +#undef Perl_magic_clear_all_env +int +Perl_magic_clear_all_env(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_clear_all_env(sv, mg); +} + +#undef Perl_magic_clearpack +int +Perl_magic_clearpack(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_clearpack(sv, mg); +} + +#undef Perl_magic_clearsig +int +Perl_magic_clearsig(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_clearsig(sv, mg); +} + +#undef Perl_magic_existspack +int +Perl_magic_existspack(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_existspack(sv, mg); +} + +#undef Perl_magic_freeregexp +int +Perl_magic_freeregexp(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_freeregexp(sv, mg); +} + +#undef Perl_magic_get +int +Perl_magic_get(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_get(sv, mg); +} + +#undef Perl_magic_getarylen +int +Perl_magic_getarylen(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_getarylen(sv, mg); +} + +#undef Perl_magic_getdefelem +int +Perl_magic_getdefelem(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_getdefelem(sv, mg); +} + +#undef Perl_magic_getglob +int +Perl_magic_getglob(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_getglob(sv, mg); +} + +#undef Perl_magic_getnkeys +int +Perl_magic_getnkeys(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_getnkeys(sv, mg); +} + +#undef Perl_magic_getpack +int +Perl_magic_getpack(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_getpack(sv, mg); +} + +#undef Perl_magic_getpos +int +Perl_magic_getpos(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_getpos(sv, mg); +} + +#undef Perl_magic_getsig +int +Perl_magic_getsig(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_getsig(sv, mg); +} + +#undef Perl_magic_getsubstr +int +Perl_magic_getsubstr(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_getsubstr(sv, mg); +} + +#undef Perl_magic_gettaint +int +Perl_magic_gettaint(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_gettaint(sv, mg); +} + +#undef Perl_magic_getuvar +int +Perl_magic_getuvar(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_getuvar(sv, mg); +} + +#undef Perl_magic_getvec +int +Perl_magic_getvec(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_getvec(sv, mg); +} + +#undef Perl_magic_len +U32 +Perl_magic_len(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_len(sv, mg); +} +#if defined(USE_THREADS) + +#undef Perl_magic_mutexfree +int +Perl_magic_mutexfree(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_mutexfree(sv, mg); +} +#endif + +#undef Perl_magic_nextpack +int +Perl_magic_nextpack(void *pPerl, SV* sv, MAGIC* mg, SV* key) +{ + return ((CPerlObj*)pPerl)->Perl_magic_nextpack(sv, mg, key); +} + +#undef Perl_magic_regdata_cnt +U32 +Perl_magic_regdata_cnt(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_regdata_cnt(sv, mg); +} + +#undef Perl_magic_regdatum_get +int +Perl_magic_regdatum_get(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_regdatum_get(sv, mg); +} + +#undef Perl_magic_set +int +Perl_magic_set(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_set(sv, mg); +} + +#undef Perl_magic_setamagic +int +Perl_magic_setamagic(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setamagic(sv, mg); +} + +#undef Perl_magic_setarylen +int +Perl_magic_setarylen(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setarylen(sv, mg); +} + +#undef Perl_magic_setbm +int +Perl_magic_setbm(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setbm(sv, mg); +} + +#undef Perl_magic_setdbline +int +Perl_magic_setdbline(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setdbline(sv, mg); +} +#if defined(USE_LOCALE_COLLATE) + +#undef Perl_magic_setcollxfrm +int +Perl_magic_setcollxfrm(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setcollxfrm(sv, mg); +} +#endif + +#undef Perl_magic_setdefelem +int +Perl_magic_setdefelem(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setdefelem(sv, mg); +} + +#undef Perl_magic_setenv +int +Perl_magic_setenv(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setenv(sv, mg); +} + +#undef Perl_magic_setfm +int +Perl_magic_setfm(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setfm(sv, mg); +} + +#undef Perl_magic_setisa +int +Perl_magic_setisa(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setisa(sv, mg); +} + +#undef Perl_magic_setglob +int +Perl_magic_setglob(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setglob(sv, mg); +} + +#undef Perl_magic_setmglob +int +Perl_magic_setmglob(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setmglob(sv, mg); +} + +#undef Perl_magic_setnkeys +int +Perl_magic_setnkeys(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setnkeys(sv, mg); +} + +#undef Perl_magic_setpack +int +Perl_magic_setpack(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setpack(sv, mg); +} + +#undef Perl_magic_setpos +int +Perl_magic_setpos(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setpos(sv, mg); +} + +#undef Perl_magic_setsig +int +Perl_magic_setsig(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setsig(sv, mg); +} + +#undef Perl_magic_setsubstr +int +Perl_magic_setsubstr(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setsubstr(sv, mg); +} + +#undef Perl_magic_settaint +int +Perl_magic_settaint(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_settaint(sv, mg); +} + +#undef Perl_magic_setuvar +int +Perl_magic_setuvar(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setuvar(sv, mg); +} + +#undef Perl_magic_setvec +int +Perl_magic_setvec(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_setvec(sv, mg); +} + +#undef Perl_magic_set_all_env +int +Perl_magic_set_all_env(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_set_all_env(sv, mg); +} + +#undef Perl_magic_sizepack +U32 +Perl_magic_sizepack(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_sizepack(sv, mg); +} + +#undef Perl_magic_wipepack +int +Perl_magic_wipepack(void *pPerl, SV* sv, MAGIC* mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_wipepack(sv, mg); +} + +#undef Perl_magicname +void +Perl_magicname(void *pPerl, char* sym, char* name, I32 namlen) +{ + ((CPerlObj*)pPerl)->Perl_magicname(sym, name, namlen); +} +#if defined(MYMALLOC) + +#undef Perl_malloced_size +MEM_SIZE +Perl_malloced_size(void *pPerl, void *p) +{ + return ((CPerlObj*)pPerl)->Perl_malloced_size(p); +} +#endif + +#undef Perl_markstack_grow +void +Perl_markstack_grow(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_markstack_grow(); +} +#if defined(USE_LOCALE_COLLATE) + +#undef Perl_mem_collxfrm +char* +Perl_mem_collxfrm(void *pPerl, const char* s, STRLEN len, STRLEN* xlen) +{ + return ((CPerlObj*)pPerl)->Perl_mem_collxfrm(s, len, xlen); +} +#endif + +#undef Perl_mess +SV* +Perl_mess(void *pPerl, const char* pat, va_list* args) +{ + return ((CPerlObj*)pPerl)->Perl_mess(pat, args); +} + +#undef Perl_mg_clear +int +Perl_mg_clear(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_mg_clear(sv); +} + +#undef Perl_mg_copy +int +Perl_mg_copy(void *pPerl, SV* sv, SV* nsv, const char* key, I32 klen) +{ + return ((CPerlObj*)pPerl)->Perl_mg_copy(sv, nsv, key, klen); +} + +#undef Perl_mg_find +MAGIC* +Perl_mg_find(void *pPerl, SV* sv, int type) +{ + return ((CPerlObj*)pPerl)->Perl_mg_find(sv, type); +} + +#undef Perl_mg_free +int +Perl_mg_free(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_mg_free(sv); +} + +#undef Perl_mg_get +int +Perl_mg_get(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_mg_get(sv); +} + +#undef Perl_mg_length +U32 +Perl_mg_length(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_mg_length(sv); +} + +#undef Perl_mg_magical +void +Perl_mg_magical(void *pPerl, SV* sv) +{ + ((CPerlObj*)pPerl)->Perl_mg_magical(sv); +} + +#undef Perl_mg_set +int +Perl_mg_set(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_mg_set(sv); +} + +#undef Perl_mg_size +I32 +Perl_mg_size(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_mg_size(sv); +} + +#undef Perl_mod +OP* +Perl_mod(void *pPerl, OP* o, I32 type) +{ + return ((CPerlObj*)pPerl)->Perl_mod(o, type); +} + +#undef Perl_moreswitches +char* +Perl_moreswitches(void *pPerl, char* s) +{ + return ((CPerlObj*)pPerl)->Perl_moreswitches(s); +} + +#undef Perl_my +OP* +Perl_my(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_my(o); +} + +#undef Perl_my_atof +NV +Perl_my_atof(void *pPerl, const char *s) +{ + return ((CPerlObj*)pPerl)->Perl_my_atof(s); +} +#if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY) + +#undef Perl_my_bcopy +char* +Perl_my_bcopy(void *pPerl, const char* from, char* to, I32 len) +{ + return ((CPerlObj*)pPerl)->Perl_my_bcopy(from, to, len); +} +#endif +#if !defined(HAS_BZERO) && !defined(HAS_MEMSET) + +#undef Perl_my_bzero +char* +Perl_my_bzero(void *pPerl, char* loc, I32 len) +{ + return ((CPerlObj*)pPerl)->Perl_my_bzero(loc, len); +} +#endif + +#undef Perl_my_exit +void +Perl_my_exit(void *pPerl, U32 status) +{ + ((CPerlObj*)pPerl)->Perl_my_exit(status); +} + +#undef Perl_my_failure_exit +void +Perl_my_failure_exit(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_my_failure_exit(); +} + +#undef Perl_my_fflush_all +I32 +Perl_my_fflush_all(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_my_fflush_all(); +} + +#undef Perl_my_lstat +I32 +Perl_my_lstat(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_my_lstat(); +} +#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) + +#undef Perl_my_memcmp +I32 +Perl_my_memcmp(void *pPerl, const char* s1, const char* s2, I32 len) +{ + return ((CPerlObj*)pPerl)->Perl_my_memcmp(s1, s2, len); +} +#endif +#if !defined(HAS_MEMSET) + +#undef Perl_my_memset +void* +Perl_my_memset(void *pPerl, char* loc, I32 ch, I32 len) +{ + return ((CPerlObj*)pPerl)->Perl_my_memset(loc, ch, len); +} +#endif +#if !defined(PERL_OBJECT) + +#undef Perl_my_pclose +I32 +Perl_my_pclose(void *pPerl, PerlIO* ptr) +{ + return ((CPerlObj*)pPerl)->Perl_my_pclose(ptr); +} + +#undef Perl_my_popen +PerlIO* +Perl_my_popen(void *pPerl, char* cmd, char* mode) +{ + return ((CPerlObj*)pPerl)->Perl_my_popen(cmd, mode); +} +#endif + +#undef Perl_my_setenv +void +Perl_my_setenv(void *pPerl, char* nam, char* val) +{ + ((CPerlObj*)pPerl)->Perl_my_setenv(nam, val); +} + +#undef Perl_my_stat +I32 +Perl_my_stat(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_my_stat(); +} +#if defined(MYSWAP) + +#undef Perl_my_swap +short +Perl_my_swap(void *pPerl, short s) +{ + return ((CPerlObj*)pPerl)->Perl_my_swap(s); +} + +#undef Perl_my_htonl +long +Perl_my_htonl(void *pPerl, long l) +{ + return ((CPerlObj*)pPerl)->Perl_my_htonl(l); +} + +#undef Perl_my_ntohl +long +Perl_my_ntohl(void *pPerl, long l) +{ + return ((CPerlObj*)pPerl)->Perl_my_ntohl(l); +} +#endif + +#undef Perl_my_unexec +void +Perl_my_unexec(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_my_unexec(); +} + +#undef Perl_newANONLIST +OP* +Perl_newANONLIST(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_newANONLIST(o); +} + +#undef Perl_newANONHASH +OP* +Perl_newANONHASH(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_newANONHASH(o); +} + +#undef Perl_newANONSUB +OP* +Perl_newANONSUB(void *pPerl, I32 floor, OP* proto, OP* block) +{ + return ((CPerlObj*)pPerl)->Perl_newANONSUB(floor, proto, block); +} + +#undef Perl_newASSIGNOP +OP* +Perl_newASSIGNOP(void *pPerl, I32 flags, OP* left, I32 optype, OP* right) +{ + return ((CPerlObj*)pPerl)->Perl_newASSIGNOP(flags, left, optype, right); +} + +#undef Perl_newCONDOP +OP* +Perl_newCONDOP(void *pPerl, I32 flags, OP* expr, OP* trueop, OP* falseop) +{ + return ((CPerlObj*)pPerl)->Perl_newCONDOP(flags, expr, trueop, falseop); +} + +#undef Perl_newCONSTSUB +void +Perl_newCONSTSUB(void *pPerl, HV* stash, char* name, SV* sv) +{ + ((CPerlObj*)pPerl)->Perl_newCONSTSUB(stash, name, sv); +} + +#undef Perl_newFORM +void +Perl_newFORM(void *pPerl, I32 floor, OP* o, OP* block) +{ + ((CPerlObj*)pPerl)->Perl_newFORM(floor, o, block); +} + +#undef Perl_newFOROP +OP* +Perl_newFOROP(void *pPerl, I32 flags, char* label, line_t forline, OP* sclr, OP* expr, OP*block, OP*cont) +{ + return ((CPerlObj*)pPerl)->Perl_newFOROP(flags, label, forline, sclr, expr, block, cont); +} + +#undef Perl_newLOGOP +OP* +Perl_newLOGOP(void *pPerl, I32 optype, I32 flags, OP* left, OP* right) +{ + return ((CPerlObj*)pPerl)->Perl_newLOGOP(optype, flags, left, right); +} + +#undef Perl_newLOOPEX +OP* +Perl_newLOOPEX(void *pPerl, I32 type, OP* label) +{ + return ((CPerlObj*)pPerl)->Perl_newLOOPEX(type, label); +} + +#undef Perl_newLOOPOP +OP* +Perl_newLOOPOP(void *pPerl, I32 flags, I32 debuggable, OP* expr, OP* block) +{ + return ((CPerlObj*)pPerl)->Perl_newLOOPOP(flags, debuggable, expr, block); +} + +#undef Perl_newNULLLIST +OP* +Perl_newNULLLIST(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_newNULLLIST(); +} + +#undef Perl_newOP +OP* +Perl_newOP(void *pPerl, I32 optype, I32 flags) +{ + return ((CPerlObj*)pPerl)->Perl_newOP(optype, flags); +} + +#undef Perl_newPROG +void +Perl_newPROG(void *pPerl, OP* o) +{ + ((CPerlObj*)pPerl)->Perl_newPROG(o); +} + +#undef Perl_newRANGE +OP* +Perl_newRANGE(void *pPerl, I32 flags, OP* left, OP* right) +{ + return ((CPerlObj*)pPerl)->Perl_newRANGE(flags, left, right); +} + +#undef Perl_newSLICEOP +OP* +Perl_newSLICEOP(void *pPerl, I32 flags, OP* subscript, OP* listop) +{ + return ((CPerlObj*)pPerl)->Perl_newSLICEOP(flags, subscript, listop); +} + +#undef Perl_newSTATEOP +OP* +Perl_newSTATEOP(void *pPerl, I32 flags, char* label, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_newSTATEOP(flags, label, o); +} + +#undef Perl_newSUB +CV* +Perl_newSUB(void *pPerl, I32 floor, OP* o, OP* proto, OP* block) +{ + return ((CPerlObj*)pPerl)->Perl_newSUB(floor, o, proto, block); +} + +#undef Perl_newXS +CV* +Perl_newXS(void *pPerl, char* name, XSUBADDR_t f, char* filename) +{ + return ((CPerlObj*)pPerl)->Perl_newXS(name, f, filename); +} + +#undef Perl_newAV +AV* +Perl_newAV(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_newAV(); +} + +#undef Perl_newAVREF +OP* +Perl_newAVREF(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_newAVREF(o); +} + +#undef Perl_newBINOP +OP* +Perl_newBINOP(void *pPerl, I32 type, I32 flags, OP* first, OP* last) +{ + return ((CPerlObj*)pPerl)->Perl_newBINOP(type, flags, first, last); +} + +#undef Perl_newCVREF +OP* +Perl_newCVREF(void *pPerl, I32 flags, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_newCVREF(flags, o); +} + +#undef Perl_newGVOP +OP* +Perl_newGVOP(void *pPerl, I32 type, I32 flags, GV* gv) +{ + return ((CPerlObj*)pPerl)->Perl_newGVOP(type, flags, gv); +} + +#undef Perl_newGVgen +GV* +Perl_newGVgen(void *pPerl, char* pack) +{ + return ((CPerlObj*)pPerl)->Perl_newGVgen(pack); +} + +#undef Perl_newGVREF +OP* +Perl_newGVREF(void *pPerl, I32 type, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_newGVREF(type, o); +} + +#undef Perl_newHVREF +OP* +Perl_newHVREF(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_newHVREF(o); +} + +#undef Perl_newHV +HV* +Perl_newHV(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_newHV(); +} + +#undef Perl_newHVhv +HV* +Perl_newHVhv(void *pPerl, HV* hv) +{ + return ((CPerlObj*)pPerl)->Perl_newHVhv(hv); +} + +#undef Perl_newIO +IO* +Perl_newIO(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_newIO(); +} + +#undef Perl_newLISTOP +OP* +Perl_newLISTOP(void *pPerl, I32 type, I32 flags, OP* first, OP* last) +{ + return ((CPerlObj*)pPerl)->Perl_newLISTOP(type, flags, first, last); +} + +#undef Perl_newPMOP +OP* +Perl_newPMOP(void *pPerl, I32 type, I32 flags) +{ + return ((CPerlObj*)pPerl)->Perl_newPMOP(type, flags); +} + +#undef Perl_newPVOP +OP* +Perl_newPVOP(void *pPerl, I32 type, I32 flags, char* pv) +{ + return ((CPerlObj*)pPerl)->Perl_newPVOP(type, flags, pv); +} + +#undef Perl_newRV +SV* +Perl_newRV(void *pPerl, SV* pref) +{ + return ((CPerlObj*)pPerl)->Perl_newRV(pref); +} + +#undef Perl_newRV_noinc +SV* +Perl_newRV_noinc(void *pPerl, SV *sv) +{ + return ((CPerlObj*)pPerl)->Perl_newRV_noinc(sv); +} + +#undef Perl_newSV +SV* +Perl_newSV(void *pPerl, STRLEN len) +{ + return ((CPerlObj*)pPerl)->Perl_newSV(len); +} + +#undef Perl_newSVREF +OP* +Perl_newSVREF(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_newSVREF(o); +} + +#undef Perl_newSVOP +OP* +Perl_newSVOP(void *pPerl, I32 type, I32 flags, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_newSVOP(type, flags, sv); +} + +#undef Perl_newSViv +SV* +Perl_newSViv(void *pPerl, IV i) +{ + return ((CPerlObj*)pPerl)->Perl_newSViv(i); +} + +#undef Perl_newSVnv +SV* +Perl_newSVnv(void *pPerl, NV n) +{ + return ((CPerlObj*)pPerl)->Perl_newSVnv(n); +} + +#undef Perl_newSVpv +SV* +Perl_newSVpv(void *pPerl, const char* s, STRLEN len) +{ + return ((CPerlObj*)pPerl)->Perl_newSVpv(s, len); +} + +#undef Perl_newSVpvn +SV* +Perl_newSVpvn(void *pPerl, const char* s, STRLEN len) +{ + return ((CPerlObj*)pPerl)->Perl_newSVpvn(s, len); +} + +#undef Perl_newSVrv +SV* +Perl_newSVrv(void *pPerl, SV* rv, const char* classname) +{ + return ((CPerlObj*)pPerl)->Perl_newSVrv(rv, classname); +} + +#undef Perl_newSVsv +SV* +Perl_newSVsv(void *pPerl, SV* old) +{ + return ((CPerlObj*)pPerl)->Perl_newSVsv(old); +} + +#undef Perl_newUNOP +OP* +Perl_newUNOP(void *pPerl, I32 type, I32 flags, OP* first) +{ + return ((CPerlObj*)pPerl)->Perl_newUNOP(type, flags, first); +} + +#undef Perl_newWHILEOP +OP* +Perl_newWHILEOP(void *pPerl, I32 flags, I32 debuggable, LOOP* loop, I32 whileline, OP* expr, OP* block, OP* cont) +{ + return ((CPerlObj*)pPerl)->Perl_newWHILEOP(flags, debuggable, loop, whileline, expr, block, cont); +} +#if defined(USE_THREADS) + +#undef Perl_new_struct_thread +struct perl_thread* +Perl_new_struct_thread(void *pPerl, struct perl_thread *t) +{ + return ((CPerlObj*)pPerl)->Perl_new_struct_thread(t); +} +#endif + +#undef Perl_new_stackinfo +PERL_SI* +Perl_new_stackinfo(void *pPerl, I32 stitems, I32 cxitems) +{ + return ((CPerlObj*)pPerl)->Perl_new_stackinfo(stitems, cxitems); +} + +#undef Perl_nextargv +PerlIO* +Perl_nextargv(void *pPerl, GV* gv) +{ + return ((CPerlObj*)pPerl)->Perl_nextargv(gv); +} + +#undef Perl_ninstr +char* +Perl_ninstr(void *pPerl, const char* big, const char* bigend, const char* little, const char* lend) +{ + return ((CPerlObj*)pPerl)->Perl_ninstr(big, bigend, little, lend); +} + +#undef Perl_oopsCV +OP* +Perl_oopsCV(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_oopsCV(o); +} + +#undef Perl_op_free +void +Perl_op_free(void *pPerl, OP* arg) +{ + ((CPerlObj*)pPerl)->Perl_op_free(arg); +} + +#undef Perl_package +void +Perl_package(void *pPerl, OP* o) +{ + ((CPerlObj*)pPerl)->Perl_package(o); +} + +#undef Perl_pad_alloc +PADOFFSET +Perl_pad_alloc(void *pPerl, I32 optype, U32 tmptype) +{ + return ((CPerlObj*)pPerl)->Perl_pad_alloc(optype, tmptype); +} + +#undef Perl_pad_allocmy +PADOFFSET +Perl_pad_allocmy(void *pPerl, char* name) +{ + return ((CPerlObj*)pPerl)->Perl_pad_allocmy(name); +} + +#undef Perl_pad_findmy +PADOFFSET +Perl_pad_findmy(void *pPerl, char* name) +{ + return ((CPerlObj*)pPerl)->Perl_pad_findmy(name); +} + +#undef Perl_oopsAV +OP* +Perl_oopsAV(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_oopsAV(o); +} + +#undef Perl_oopsHV +OP* +Perl_oopsHV(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_oopsHV(o); +} + +#undef Perl_pad_leavemy +void +Perl_pad_leavemy(void *pPerl, I32 fill) +{ + ((CPerlObj*)pPerl)->Perl_pad_leavemy(fill); +} + +#undef Perl_pad_sv +SV* +Perl_pad_sv(void *pPerl, PADOFFSET po) +{ + return ((CPerlObj*)pPerl)->Perl_pad_sv(po); +} + +#undef Perl_pad_free +void +Perl_pad_free(void *pPerl, PADOFFSET po) +{ + ((CPerlObj*)pPerl)->Perl_pad_free(po); +} + +#undef Perl_pad_reset +void +Perl_pad_reset(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_pad_reset(); +} + +#undef Perl_pad_swipe +void +Perl_pad_swipe(void *pPerl, PADOFFSET po) +{ + ((CPerlObj*)pPerl)->Perl_pad_swipe(po); +} + +#undef Perl_peep +void +Perl_peep(void *pPerl, OP* o) +{ + ((CPerlObj*)pPerl)->Perl_peep(o); +} +#if defined(PERL_OBJECT) +#else + +#undef perl_alloc +PerlInterpreter* +perl_alloc(void *pPerl) +{ + return ((CPerlObj*)pPerl)->perl_alloc(); +} +#endif + +#undef Perl_call_atexit +void +Perl_call_atexit(void *pPerl, ATEXIT_t fn, void *ptr) +{ + ((CPerlObj*)pPerl)->Perl_call_atexit(fn, ptr); +} + +#undef Perl_call_argv +I32 +Perl_call_argv(void *pPerl, const char* sub_name, I32 flags, char** argv) +{ + return ((CPerlObj*)pPerl)->Perl_call_argv(sub_name, flags, argv); +} + +#undef Perl_call_method +I32 +Perl_call_method(void *pPerl, const char* methname, I32 flags) +{ + return ((CPerlObj*)pPerl)->Perl_call_method(methname, flags); +} + +#undef Perl_call_pv +I32 +Perl_call_pv(void *pPerl, const char* sub_name, I32 flags) +{ + return ((CPerlObj*)pPerl)->Perl_call_pv(sub_name, flags); +} + +#undef Perl_call_sv +I32 +Perl_call_sv(void *pPerl, SV* sv, I32 flags) +{ + return ((CPerlObj*)pPerl)->Perl_call_sv(sv, flags); +} + +#undef Perl_eval_pv +SV* +Perl_eval_pv(void *pPerl, const char* p, I32 croak_on_error) +{ + return ((CPerlObj*)pPerl)->Perl_eval_pv(p, croak_on_error); +} + +#undef Perl_eval_sv +I32 +Perl_eval_sv(void *pPerl, SV* sv, I32 flags) +{ + return ((CPerlObj*)pPerl)->Perl_eval_sv(sv, flags); +} + +#undef Perl_get_sv +SV* +Perl_get_sv(void *pPerl, const char* name, I32 create) +{ + return ((CPerlObj*)pPerl)->Perl_get_sv(name, create); +} + +#undef Perl_get_av +AV* +Perl_get_av(void *pPerl, const char* name, I32 create) +{ + return ((CPerlObj*)pPerl)->Perl_get_av(name, create); +} + +#undef Perl_get_hv +HV* +Perl_get_hv(void *pPerl, const char* name, I32 create) +{ + return ((CPerlObj*)pPerl)->Perl_get_hv(name, create); +} + +#undef Perl_get_cv +CV* +Perl_get_cv(void *pPerl, const char* name, I32 create) +{ + return ((CPerlObj*)pPerl)->Perl_get_cv(name, create); +} + +#undef Perl_init_i18nl10n +int +Perl_init_i18nl10n(void *pPerl, int printwarn) +{ + return ((CPerlObj*)pPerl)->Perl_init_i18nl10n(printwarn); +} + +#undef Perl_init_i18nl14n +int +Perl_init_i18nl14n(void *pPerl, int printwarn) +{ + return ((CPerlObj*)pPerl)->Perl_init_i18nl14n(printwarn); +} + +#undef Perl_new_collate +void +Perl_new_collate(void *pPerl, const char* newcoll) +{ + ((CPerlObj*)pPerl)->Perl_new_collate(newcoll); +} + +#undef Perl_new_ctype +void +Perl_new_ctype(void *pPerl, const char* newctype) +{ + ((CPerlObj*)pPerl)->Perl_new_ctype(newctype); +} + +#undef Perl_new_numeric +void +Perl_new_numeric(void *pPerl, const char* newcoll) +{ + ((CPerlObj*)pPerl)->Perl_new_numeric(newcoll); +} + +#undef Perl_set_numeric_local +void +Perl_set_numeric_local(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_set_numeric_local(); +} + +#undef Perl_set_numeric_radix +void +Perl_set_numeric_radix(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_set_numeric_radix(); +} + +#undef Perl_set_numeric_standard +void +Perl_set_numeric_standard(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_set_numeric_standard(); +} + +#undef Perl_require_pv +void +Perl_require_pv(void *pPerl, const char* pv) +{ + ((CPerlObj*)pPerl)->Perl_require_pv(pv); +} + +#undef Perl_pidgone +void +Perl_pidgone(void *pPerl, int pid, int status) +{ + ((CPerlObj*)pPerl)->Perl_pidgone(pid, status); +} + +#undef Perl_pmflag +void +Perl_pmflag(void *pPerl, U16* pmfl, int ch) +{ + ((CPerlObj*)pPerl)->Perl_pmflag(pmfl, ch); +} + +#undef Perl_pmruntime +OP* +Perl_pmruntime(void *pPerl, OP* pm, OP* expr, OP* repl) +{ + return ((CPerlObj*)pPerl)->Perl_pmruntime(pm, expr, repl); +} + +#undef Perl_pmtrans +OP* +Perl_pmtrans(void *pPerl, OP* o, OP* expr, OP* repl) +{ + return ((CPerlObj*)pPerl)->Perl_pmtrans(o, expr, repl); +} + +#undef Perl_pop_return +OP* +Perl_pop_return(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pop_return(); +} + +#undef Perl_pop_scope +void +Perl_pop_scope(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_pop_scope(); +} + +#undef Perl_prepend_elem +OP* +Perl_prepend_elem(void *pPerl, I32 optype, OP* head, OP* tail) +{ + return ((CPerlObj*)pPerl)->Perl_prepend_elem(optype, head, tail); +} + +#undef Perl_push_return +void +Perl_push_return(void *pPerl, OP* o) +{ + ((CPerlObj*)pPerl)->Perl_push_return(o); +} + +#undef Perl_push_scope +void +Perl_push_scope(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_push_scope(); +} + +#undef Perl_ref +OP* +Perl_ref(void *pPerl, OP* o, I32 type) +{ + return ((CPerlObj*)pPerl)->Perl_ref(o, type); +} + +#undef Perl_refkids +OP* +Perl_refkids(void *pPerl, OP* o, I32 type) +{ + return ((CPerlObj*)pPerl)->Perl_refkids(o, type); +} + +#undef Perl_regdump +void +Perl_regdump(void *pPerl, regexp* r) +{ + ((CPerlObj*)pPerl)->Perl_regdump(r); +} + +#undef Perl_pregexec +I32 +Perl_pregexec(void *pPerl, regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, U32 nosave) +{ + return ((CPerlObj*)pPerl)->Perl_pregexec(prog, stringarg, strend, strbeg, minend, screamer, nosave); +} + +#undef Perl_pregfree +void +Perl_pregfree(void *pPerl, struct regexp* r) +{ + ((CPerlObj*)pPerl)->Perl_pregfree(r); +} + +#undef Perl_pregcomp +regexp* +Perl_pregcomp(void *pPerl, char* exp, char* xend, PMOP* pm) +{ + return ((CPerlObj*)pPerl)->Perl_pregcomp(exp, xend, pm); +} + +#undef Perl_re_intuit_start +char* +Perl_re_intuit_start(void *pPerl, regexp* prog, SV* sv, char* strpos, char* strend, U32 flags, struct re_scream_pos_data_s *data) +{ + return ((CPerlObj*)pPerl)->Perl_re_intuit_start(prog, sv, strpos, strend, flags, data); +} + +#undef Perl_re_intuit_string +SV* +Perl_re_intuit_string(void *pPerl, regexp* prog) +{ + return ((CPerlObj*)pPerl)->Perl_re_intuit_string(prog); +} + +#undef Perl_regexec_flags +I32 +Perl_regexec_flags(void *pPerl, regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags) +{ + return ((CPerlObj*)pPerl)->Perl_regexec_flags(prog, stringarg, strend, strbeg, minend, screamer, data, flags); +} + +#undef Perl_regnext +regnode* +Perl_regnext(void *pPerl, regnode* p) +{ + return ((CPerlObj*)pPerl)->Perl_regnext(p); +} + +#undef Perl_regprop +void +Perl_regprop(void *pPerl, SV* sv, regnode* o) +{ + ((CPerlObj*)pPerl)->Perl_regprop(sv, o); +} + +#undef Perl_repeatcpy +void +Perl_repeatcpy(void *pPerl, char* to, const char* from, I32 len, I32 count) +{ + ((CPerlObj*)pPerl)->Perl_repeatcpy(to, from, len, count); +} + +#undef Perl_rninstr +char* +Perl_rninstr(void *pPerl, const char* big, const char* bigend, const char* little, const char* lend) +{ + return ((CPerlObj*)pPerl)->Perl_rninstr(big, bigend, little, lend); +} + +#undef Perl_rsignal +Sighandler_t +Perl_rsignal(void *pPerl, int i, Sighandler_t t) +{ + return ((CPerlObj*)pPerl)->Perl_rsignal(i, t); +} + +#undef Perl_rsignal_restore +int +Perl_rsignal_restore(void *pPerl, int i, Sigsave_t* t) +{ + return ((CPerlObj*)pPerl)->Perl_rsignal_restore(i, t); +} + +#undef Perl_rsignal_save +int +Perl_rsignal_save(void *pPerl, int i, Sighandler_t t1, Sigsave_t* t2) +{ + return ((CPerlObj*)pPerl)->Perl_rsignal_save(i, t1, t2); +} + +#undef Perl_rsignal_state +Sighandler_t +Perl_rsignal_state(void *pPerl, int i) +{ + return ((CPerlObj*)pPerl)->Perl_rsignal_state(i); +} + +#undef Perl_rxres_free +void +Perl_rxres_free(void *pPerl, void** rsp) +{ + ((CPerlObj*)pPerl)->Perl_rxres_free(rsp); +} + +#undef Perl_rxres_restore +void +Perl_rxres_restore(void *pPerl, void** rsp, REGEXP* prx) +{ + ((CPerlObj*)pPerl)->Perl_rxres_restore(rsp, prx); +} + +#undef Perl_rxres_save +void +Perl_rxres_save(void *pPerl, void** rsp, REGEXP* prx) +{ + ((CPerlObj*)pPerl)->Perl_rxres_save(rsp, prx); +} +#if !defined(HAS_RENAME) + +#undef Perl_same_dirent +I32 +Perl_same_dirent(void *pPerl, char* a, char* b) +{ + return ((CPerlObj*)pPerl)->Perl_same_dirent(a, b); +} +#endif + +#undef Perl_savepv +char* +Perl_savepv(void *pPerl, const char* sv) +{ + return ((CPerlObj*)pPerl)->Perl_savepv(sv); +} + +#undef Perl_savepvn +char* +Perl_savepvn(void *pPerl, const char* sv, I32 len) +{ + return ((CPerlObj*)pPerl)->Perl_savepvn(sv, len); +} + +#undef Perl_savestack_grow +void +Perl_savestack_grow(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_savestack_grow(); +} + +#undef Perl_save_aelem +void +Perl_save_aelem(void *pPerl, AV* av, I32 idx, SV **sptr) +{ + ((CPerlObj*)pPerl)->Perl_save_aelem(av, idx, sptr); +} + +#undef Perl_save_alloc +I32 +Perl_save_alloc(void *pPerl, I32 size, I32 pad) +{ + return ((CPerlObj*)pPerl)->Perl_save_alloc(size, pad); +} + +#undef Perl_save_aptr +void +Perl_save_aptr(void *pPerl, AV** aptr) +{ + ((CPerlObj*)pPerl)->Perl_save_aptr(aptr); +} + +#undef Perl_save_ary +AV* +Perl_save_ary(void *pPerl, GV* gv) +{ + return ((CPerlObj*)pPerl)->Perl_save_ary(gv); +} + +#undef Perl_save_clearsv +void +Perl_save_clearsv(void *pPerl, SV** svp) +{ + ((CPerlObj*)pPerl)->Perl_save_clearsv(svp); +} + +#undef Perl_save_delete +void +Perl_save_delete(void *pPerl, HV* hv, char* key, I32 klen) +{ + ((CPerlObj*)pPerl)->Perl_save_delete(hv, key, klen); +} + +#undef Perl_save_destructor +void +Perl_save_destructor(void *pPerl, DESTRUCTORFUNC_t f, void* p) +{ + ((CPerlObj*)pPerl)->Perl_save_destructor(f, p); +} + +#undef Perl_save_freesv +void +Perl_save_freesv(void *pPerl, SV* sv) +{ + ((CPerlObj*)pPerl)->Perl_save_freesv(sv); +} + +#undef Perl_save_freeop +void +Perl_save_freeop(void *pPerl, OP* o) +{ + ((CPerlObj*)pPerl)->Perl_save_freeop(o); +} + +#undef Perl_save_freepv +void +Perl_save_freepv(void *pPerl, char* pv) +{ + ((CPerlObj*)pPerl)->Perl_save_freepv(pv); +} + +#undef Perl_save_generic_svref +void +Perl_save_generic_svref(void *pPerl, SV** sptr) +{ + ((CPerlObj*)pPerl)->Perl_save_generic_svref(sptr); +} + +#undef Perl_save_gp +void +Perl_save_gp(void *pPerl, GV* gv, I32 empty) +{ + ((CPerlObj*)pPerl)->Perl_save_gp(gv, empty); +} + +#undef Perl_save_hash +HV* +Perl_save_hash(void *pPerl, GV* gv) +{ + return ((CPerlObj*)pPerl)->Perl_save_hash(gv); +} + +#undef Perl_save_helem +void +Perl_save_helem(void *pPerl, HV* hv, SV *key, SV **sptr) +{ + ((CPerlObj*)pPerl)->Perl_save_helem(hv, key, sptr); +} + +#undef Perl_save_hints +void +Perl_save_hints(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_save_hints(); +} + +#undef Perl_save_hptr +void +Perl_save_hptr(void *pPerl, HV** hptr) +{ + ((CPerlObj*)pPerl)->Perl_save_hptr(hptr); +} + +#undef Perl_save_I16 +void +Perl_save_I16(void *pPerl, I16* intp) +{ + ((CPerlObj*)pPerl)->Perl_save_I16(intp); +} + +#undef Perl_save_I32 +void +Perl_save_I32(void *pPerl, I32* intp) +{ + ((CPerlObj*)pPerl)->Perl_save_I32(intp); +} + +#undef Perl_save_int +void +Perl_save_int(void *pPerl, int* intp) +{ + ((CPerlObj*)pPerl)->Perl_save_int(intp); +} + +#undef Perl_save_item +void +Perl_save_item(void *pPerl, SV* item) +{ + ((CPerlObj*)pPerl)->Perl_save_item(item); +} + +#undef Perl_save_iv +void +Perl_save_iv(void *pPerl, IV* iv) +{ + ((CPerlObj*)pPerl)->Perl_save_iv(iv); +} + +#undef Perl_save_list +void +Perl_save_list(void *pPerl, SV** sarg, I32 maxsarg) +{ + ((CPerlObj*)pPerl)->Perl_save_list(sarg, maxsarg); +} + +#undef Perl_save_long +void +Perl_save_long(void *pPerl, long* longp) +{ + ((CPerlObj*)pPerl)->Perl_save_long(longp); +} + +#undef Perl_save_nogv +void +Perl_save_nogv(void *pPerl, GV* gv) +{ + ((CPerlObj*)pPerl)->Perl_save_nogv(gv); +} + +#undef Perl_save_op +void +Perl_save_op(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_save_op(); +} + +#undef Perl_save_scalar +SV* +Perl_save_scalar(void *pPerl, GV* gv) +{ + return ((CPerlObj*)pPerl)->Perl_save_scalar(gv); +} + +#undef Perl_save_pptr +void +Perl_save_pptr(void *pPerl, char** pptr) +{ + ((CPerlObj*)pPerl)->Perl_save_pptr(pptr); +} + +#undef Perl_save_re_context +void +Perl_save_re_context(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_save_re_context(); +} + +#undef Perl_save_sptr +void +Perl_save_sptr(void *pPerl, SV** sptr) +{ + ((CPerlObj*)pPerl)->Perl_save_sptr(sptr); +} + +#undef Perl_save_svref +SV* +Perl_save_svref(void *pPerl, SV** sptr) +{ + return ((CPerlObj*)pPerl)->Perl_save_svref(sptr); +} + +#undef Perl_save_threadsv +SV** +Perl_save_threadsv(void *pPerl, PADOFFSET i) +{ + return ((CPerlObj*)pPerl)->Perl_save_threadsv(i); +} + +#undef Perl_sawparens +OP* +Perl_sawparens(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_sawparens(o); +} + +#undef Perl_scalar +OP* +Perl_scalar(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_scalar(o); +} + +#undef Perl_scalarkids +OP* +Perl_scalarkids(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_scalarkids(o); +} + +#undef Perl_scalarseq +OP* +Perl_scalarseq(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_scalarseq(o); +} + +#undef Perl_scalarvoid +OP* +Perl_scalarvoid(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_scalarvoid(o); +} + +#undef Perl_scan_bin +UV +Perl_scan_bin(void *pPerl, char* start, I32 len, I32* retlen) +{ + return ((CPerlObj*)pPerl)->Perl_scan_bin(start, len, retlen); +} + +#undef Perl_scan_hex +UV +Perl_scan_hex(void *pPerl, char* start, I32 len, I32* retlen) +{ + return ((CPerlObj*)pPerl)->Perl_scan_hex(start, len, retlen); +} + +#undef Perl_scan_num +char* +Perl_scan_num(void *pPerl, char* s) +{ + return ((CPerlObj*)pPerl)->Perl_scan_num(s); +} + +#undef Perl_scan_oct +UV +Perl_scan_oct(void *pPerl, char* start, I32 len, I32* retlen) +{ + return ((CPerlObj*)pPerl)->Perl_scan_oct(start, len, retlen); +} + +#undef Perl_scope +OP* +Perl_scope(void *pPerl, OP* o) +{ + return ((CPerlObj*)pPerl)->Perl_scope(o); +} + +#undef Perl_screaminstr +char* +Perl_screaminstr(void *pPerl, SV* bigsv, SV* littlesv, I32 start_shift, I32 end_shift, I32 *state, I32 last) +{ + return ((CPerlObj*)pPerl)->Perl_screaminstr(bigsv, littlesv, start_shift, end_shift, state, last); +} +#if !defined(VMS) + +#undef Perl_setenv_getix +I32 +Perl_setenv_getix(void *pPerl, char* nam) +{ + return ((CPerlObj*)pPerl)->Perl_setenv_getix(nam); +} +#endif + +#undef Perl_setdefout +void +Perl_setdefout(void *pPerl, GV* gv) +{ + ((CPerlObj*)pPerl)->Perl_setdefout(gv); +} + +#undef Perl_sharepvn +char* +Perl_sharepvn(void *pPerl, const char* sv, I32 len, U32 hash) +{ + return ((CPerlObj*)pPerl)->Perl_sharepvn(sv, len, hash); +} + +#undef Perl_share_hek +HEK* +Perl_share_hek(void *pPerl, const char* sv, I32 len, U32 hash) +{ + return ((CPerlObj*)pPerl)->Perl_share_hek(sv, len, hash); +} + +#undef Perl_sighandler +Signal_t +Perl_sighandler(void *pPerl, int sig) +{ + ((CPerlObj*)pPerl)->Perl_sighandler(sig); +} + +#undef Perl_stack_grow +SV** +Perl_stack_grow(void *pPerl, SV** sp, SV**p, int n) +{ + return ((CPerlObj*)pPerl)->Perl_stack_grow(sp, p, n); +} + +#undef Perl_start_subparse +I32 +Perl_start_subparse(void *pPerl, I32 is_format, U32 flags) +{ + return ((CPerlObj*)pPerl)->Perl_start_subparse(is_format, flags); +} + +#undef Perl_sub_crush_depth +void +Perl_sub_crush_depth(void *pPerl, CV* cv) +{ + ((CPerlObj*)pPerl)->Perl_sub_crush_depth(cv); +} + +#undef Perl_sv_2bool +bool +Perl_sv_2bool(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_2bool(sv); +} + +#undef Perl_sv_2cv +CV* +Perl_sv_2cv(void *pPerl, SV* sv, HV** st, GV** gvp, I32 lref) +{ + return ((CPerlObj*)pPerl)->Perl_sv_2cv(sv, st, gvp, lref); +} + +#undef Perl_sv_2io +IO* +Perl_sv_2io(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_2io(sv); +} + +#undef Perl_sv_2iv +IV +Perl_sv_2iv(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_2iv(sv); +} + +#undef Perl_sv_2mortal +SV* +Perl_sv_2mortal(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_2mortal(sv); +} + +#undef Perl_sv_2nv +NV +Perl_sv_2nv(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_2nv(sv); +} + +#undef Perl_sv_2pv +char* +Perl_sv_2pv(void *pPerl, SV* sv, STRLEN* lp) +{ + return ((CPerlObj*)pPerl)->Perl_sv_2pv(sv, lp); +} + +#undef Perl_sv_2uv +UV +Perl_sv_2uv(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_2uv(sv); +} + +#undef Perl_sv_iv +IV +Perl_sv_iv(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_iv(sv); +} + +#undef Perl_sv_uv +UV +Perl_sv_uv(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_uv(sv); +} + +#undef Perl_sv_nv +NV +Perl_sv_nv(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_nv(sv); +} + +#undef Perl_sv_pvn +char* +Perl_sv_pvn(void *pPerl, SV *sv, STRLEN *len) +{ + return ((CPerlObj*)pPerl)->Perl_sv_pvn(sv, len); +} + +#undef Perl_sv_true +I32 +Perl_sv_true(void *pPerl, SV *sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_true(sv); +} + +#undef Perl_sv_add_arena +void +Perl_sv_add_arena(void *pPerl, char* ptr, U32 size, U32 flags) +{ + ((CPerlObj*)pPerl)->Perl_sv_add_arena(ptr, size, flags); +} + +#undef Perl_sv_backoff +int +Perl_sv_backoff(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_backoff(sv); +} + +#undef Perl_sv_bless +SV* +Perl_sv_bless(void *pPerl, SV* sv, HV* stash) +{ + return ((CPerlObj*)pPerl)->Perl_sv_bless(sv, stash); +} + +#undef Perl_sv_catpv +void +Perl_sv_catpv(void *pPerl, SV* sv, const char* ptr) +{ + ((CPerlObj*)pPerl)->Perl_sv_catpv(sv, ptr); +} + +#undef Perl_sv_catpvn +void +Perl_sv_catpvn(void *pPerl, SV* sv, const char* ptr, STRLEN len) +{ + ((CPerlObj*)pPerl)->Perl_sv_catpvn(sv, ptr, len); +} + +#undef Perl_sv_catsv +void +Perl_sv_catsv(void *pPerl, SV* dsv, SV* ssv) +{ + ((CPerlObj*)pPerl)->Perl_sv_catsv(dsv, ssv); +} + +#undef Perl_sv_chop +void +Perl_sv_chop(void *pPerl, SV* sv, char* ptr) +{ + ((CPerlObj*)pPerl)->Perl_sv_chop(sv, ptr); +} + +#undef Perl_sv_clean_all +void +Perl_sv_clean_all(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_sv_clean_all(); +} + +#undef Perl_sv_clean_objs +void +Perl_sv_clean_objs(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_sv_clean_objs(); +} + +#undef Perl_sv_clear +void +Perl_sv_clear(void *pPerl, SV* sv) +{ + ((CPerlObj*)pPerl)->Perl_sv_clear(sv); +} + +#undef Perl_sv_cmp +I32 +Perl_sv_cmp(void *pPerl, SV* sv1, SV* sv2) +{ + return ((CPerlObj*)pPerl)->Perl_sv_cmp(sv1, sv2); +} + +#undef Perl_sv_cmp_locale +I32 +Perl_sv_cmp_locale(void *pPerl, SV* sv1, SV* sv2) +{ + return ((CPerlObj*)pPerl)->Perl_sv_cmp_locale(sv1, sv2); +} +#if defined(USE_LOCALE_COLLATE) + +#undef Perl_sv_collxfrm +char* +Perl_sv_collxfrm(void *pPerl, SV* sv, STRLEN* nxp) +{ + return ((CPerlObj*)pPerl)->Perl_sv_collxfrm(sv, nxp); +} +#endif + +#undef Perl_sv_compile_2op +OP* +Perl_sv_compile_2op(void *pPerl, SV* sv, OP** startp, char* code, AV** avp) +{ + return ((CPerlObj*)pPerl)->Perl_sv_compile_2op(sv, startp, code, avp); +} + +#undef Perl_sv_dec +void +Perl_sv_dec(void *pPerl, SV* sv) +{ + ((CPerlObj*)pPerl)->Perl_sv_dec(sv); +} + +#undef Perl_sv_dump +void +Perl_sv_dump(void *pPerl, SV* sv) +{ + ((CPerlObj*)pPerl)->Perl_sv_dump(sv); +} + +#undef Perl_sv_derived_from +bool +Perl_sv_derived_from(void *pPerl, SV* sv, const char* name) +{ + return ((CPerlObj*)pPerl)->Perl_sv_derived_from(sv, name); +} + +#undef Perl_sv_eq +I32 +Perl_sv_eq(void *pPerl, SV* sv1, SV* sv2) +{ + return ((CPerlObj*)pPerl)->Perl_sv_eq(sv1, sv2); +} + +#undef Perl_sv_free +void +Perl_sv_free(void *pPerl, SV* sv) +{ + ((CPerlObj*)pPerl)->Perl_sv_free(sv); +} + +#undef Perl_sv_free_arenas +void +Perl_sv_free_arenas(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_sv_free_arenas(); +} + +#undef Perl_sv_gets +char* +Perl_sv_gets(void *pPerl, SV* sv, PerlIO* fp, I32 append) +{ + return ((CPerlObj*)pPerl)->Perl_sv_gets(sv, fp, append); +} + +#undef Perl_sv_grow +char* +Perl_sv_grow(void *pPerl, SV* sv, STRLEN newlen) +{ + return ((CPerlObj*)pPerl)->Perl_sv_grow(sv, newlen); +} + +#undef Perl_sv_inc +void +Perl_sv_inc(void *pPerl, SV* sv) +{ + ((CPerlObj*)pPerl)->Perl_sv_inc(sv); +} + +#undef Perl_sv_insert +void +Perl_sv_insert(void *pPerl, SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen) +{ + ((CPerlObj*)pPerl)->Perl_sv_insert(bigsv, offset, len, little, littlelen); +} + +#undef Perl_sv_isa +int +Perl_sv_isa(void *pPerl, SV* sv, const char* name) +{ + return ((CPerlObj*)pPerl)->Perl_sv_isa(sv, name); +} + +#undef Perl_sv_isobject +int +Perl_sv_isobject(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_isobject(sv); +} + +#undef Perl_sv_len +STRLEN +Perl_sv_len(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_len(sv); +} + +#undef Perl_sv_len_utf8 +STRLEN +Perl_sv_len_utf8(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_len_utf8(sv); +} + +#undef Perl_sv_magic +void +Perl_sv_magic(void *pPerl, SV* sv, SV* obj, int how, const char* name, I32 namlen) +{ + ((CPerlObj*)pPerl)->Perl_sv_magic(sv, obj, how, name, namlen); +} + +#undef Perl_sv_mortalcopy +SV* +Perl_sv_mortalcopy(void *pPerl, SV* oldsv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_mortalcopy(oldsv); +} + +#undef Perl_sv_newmortal +SV* +Perl_sv_newmortal(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_sv_newmortal(); +} + +#undef Perl_sv_newref +SV* +Perl_sv_newref(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_newref(sv); +} + +#undef Perl_sv_peek +char* +Perl_sv_peek(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_peek(sv); +} + +#undef Perl_sv_pos_u2b +void +Perl_sv_pos_u2b(void *pPerl, SV* sv, I32* offsetp, I32* lenp) +{ + ((CPerlObj*)pPerl)->Perl_sv_pos_u2b(sv, offsetp, lenp); +} + +#undef Perl_sv_pos_b2u +void +Perl_sv_pos_b2u(void *pPerl, SV* sv, I32* offsetp) +{ + ((CPerlObj*)pPerl)->Perl_sv_pos_b2u(sv, offsetp); +} + +#undef Perl_sv_pvn_force +char* +Perl_sv_pvn_force(void *pPerl, SV* sv, STRLEN* lp) +{ + return ((CPerlObj*)pPerl)->Perl_sv_pvn_force(sv, lp); +} + +#undef Perl_sv_reftype +char* +Perl_sv_reftype(void *pPerl, SV* sv, int ob) +{ + return ((CPerlObj*)pPerl)->Perl_sv_reftype(sv, ob); +} + +#undef Perl_sv_replace +void +Perl_sv_replace(void *pPerl, SV* sv, SV* nsv) +{ + ((CPerlObj*)pPerl)->Perl_sv_replace(sv, nsv); +} + +#undef Perl_sv_report_used +void +Perl_sv_report_used(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_sv_report_used(); +} + +#undef Perl_sv_reset +void +Perl_sv_reset(void *pPerl, char* s, HV* stash) +{ + ((CPerlObj*)pPerl)->Perl_sv_reset(s, stash); +} + +#undef Perl_sv_setiv +void +Perl_sv_setiv(void *pPerl, SV* sv, IV num) +{ + ((CPerlObj*)pPerl)->Perl_sv_setiv(sv, num); +} + +#undef Perl_sv_setpviv +void +Perl_sv_setpviv(void *pPerl, SV* sv, IV num) +{ + ((CPerlObj*)pPerl)->Perl_sv_setpviv(sv, num); +} + +#undef Perl_sv_setuv +void +Perl_sv_setuv(void *pPerl, SV* sv, UV num) +{ + ((CPerlObj*)pPerl)->Perl_sv_setuv(sv, num); +} + +#undef Perl_sv_setnv +void +Perl_sv_setnv(void *pPerl, SV* sv, NV num) +{ + ((CPerlObj*)pPerl)->Perl_sv_setnv(sv, num); +} + +#undef Perl_sv_setref_iv +SV* +Perl_sv_setref_iv(void *pPerl, SV* rv, const char* classname, IV iv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_setref_iv(rv, classname, iv); +} + +#undef Perl_sv_setref_nv +SV* +Perl_sv_setref_nv(void *pPerl, SV* rv, const char* classname, NV nv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_setref_nv(rv, classname, nv); +} + +#undef Perl_sv_setref_pv +SV* +Perl_sv_setref_pv(void *pPerl, SV* rv, const char* classname, void* pv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_setref_pv(rv, classname, pv); +} + +#undef Perl_sv_setref_pvn +SV* +Perl_sv_setref_pvn(void *pPerl, SV* rv, const char* classname, char* pv, STRLEN n) +{ + return ((CPerlObj*)pPerl)->Perl_sv_setref_pvn(rv, classname, pv, n); +} + +#undef Perl_sv_setpv +void +Perl_sv_setpv(void *pPerl, SV* sv, const char* ptr) +{ + ((CPerlObj*)pPerl)->Perl_sv_setpv(sv, ptr); +} + +#undef Perl_sv_setpvn +void +Perl_sv_setpvn(void *pPerl, SV* sv, const char* ptr, STRLEN len) +{ + ((CPerlObj*)pPerl)->Perl_sv_setpvn(sv, ptr, len); +} + +#undef Perl_sv_setsv +void +Perl_sv_setsv(void *pPerl, SV* dsv, SV* ssv) +{ + ((CPerlObj*)pPerl)->Perl_sv_setsv(dsv, ssv); +} + +#undef Perl_sv_taint +void +Perl_sv_taint(void *pPerl, SV* sv) +{ + ((CPerlObj*)pPerl)->Perl_sv_taint(sv); +} + +#undef Perl_sv_tainted +bool +Perl_sv_tainted(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_tainted(sv); +} + +#undef Perl_sv_unmagic +int +Perl_sv_unmagic(void *pPerl, SV* sv, int type) +{ + return ((CPerlObj*)pPerl)->Perl_sv_unmagic(sv, type); +} + +#undef Perl_sv_unref +void +Perl_sv_unref(void *pPerl, SV* sv) +{ + ((CPerlObj*)pPerl)->Perl_sv_unref(sv); +} + +#undef Perl_sv_untaint +void +Perl_sv_untaint(void *pPerl, SV* sv) +{ + ((CPerlObj*)pPerl)->Perl_sv_untaint(sv); +} + +#undef Perl_sv_upgrade +bool +Perl_sv_upgrade(void *pPerl, SV* sv, U32 mt) +{ + return ((CPerlObj*)pPerl)->Perl_sv_upgrade(sv, mt); +} + +#undef Perl_sv_usepvn +void +Perl_sv_usepvn(void *pPerl, SV* sv, char* ptr, STRLEN len) +{ + ((CPerlObj*)pPerl)->Perl_sv_usepvn(sv, ptr, len); +} + +#undef Perl_sv_vcatpvfn +void +Perl_sv_vcatpvfn(void *pPerl, SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *used_locale) +{ + ((CPerlObj*)pPerl)->Perl_sv_vcatpvfn(sv, pat, patlen, args, svargs, svmax, used_locale); +} + +#undef Perl_sv_vsetpvfn +void +Perl_sv_vsetpvfn(void *pPerl, SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *used_locale) +{ + ((CPerlObj*)pPerl)->Perl_sv_vsetpvfn(sv, pat, patlen, args, svargs, svmax, used_locale); +} + +#undef Perl_swash_init +SV* +Perl_swash_init(void *pPerl, char* pkg, char* name, SV* listsv, I32 minbits, I32 none) +{ + return ((CPerlObj*)pPerl)->Perl_swash_init(pkg, name, listsv, minbits, none); +} + +#undef Perl_swash_fetch +UV +Perl_swash_fetch(void *pPerl, SV *sv, U8 *ptr) +{ + return ((CPerlObj*)pPerl)->Perl_swash_fetch(sv, ptr); +} + +#undef Perl_taint_env +void +Perl_taint_env(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_taint_env(); +} + +#undef Perl_taint_proper +void +Perl_taint_proper(void *pPerl, const char* f, char* s) +{ + ((CPerlObj*)pPerl)->Perl_taint_proper(f, s); +} + +#undef Perl_to_utf8_lower +UV +Perl_to_utf8_lower(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_to_utf8_lower(p); +} + +#undef Perl_to_utf8_upper +UV +Perl_to_utf8_upper(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_to_utf8_upper(p); +} + +#undef Perl_to_utf8_title +UV +Perl_to_utf8_title(void *pPerl, U8 *p) +{ + return ((CPerlObj*)pPerl)->Perl_to_utf8_title(p); +} +#if defined(UNLINK_ALL_VERSIONS) + +#undef Perl_unlnk +I32 +Perl_unlnk(void *pPerl, char* f) +{ + return ((CPerlObj*)pPerl)->Perl_unlnk(f); +} +#endif +#if defined(USE_THREADS) + +#undef Perl_unlock_condpair +void +Perl_unlock_condpair(void *pPerl, void* svv) +{ + ((CPerlObj*)pPerl)->Perl_unlock_condpair(svv); +} +#endif + +#undef Perl_unsharepvn +void +Perl_unsharepvn(void *pPerl, const char* sv, I32 len, U32 hash) +{ + ((CPerlObj*)pPerl)->Perl_unsharepvn(sv, len, hash); +} + +#undef Perl_unshare_hek +void +Perl_unshare_hek(void *pPerl, HEK* hek) +{ + ((CPerlObj*)pPerl)->Perl_unshare_hek(hek); +} + +#undef Perl_utilize +void +Perl_utilize(void *pPerl, int aver, I32 floor, OP* version, OP* id, OP* arg) +{ + ((CPerlObj*)pPerl)->Perl_utilize(aver, floor, version, id, arg); +} + +#undef Perl_utf16_to_utf8 +U8* +Perl_utf16_to_utf8(void *pPerl, U16* p, U8 *d, I32 bytelen) +{ + return ((CPerlObj*)pPerl)->Perl_utf16_to_utf8(p, d, bytelen); +} + +#undef Perl_utf16_to_utf8_reversed +U8* +Perl_utf16_to_utf8_reversed(void *pPerl, U16* p, U8 *d, I32 bytelen) +{ + return ((CPerlObj*)pPerl)->Perl_utf16_to_utf8_reversed(p, d, bytelen); +} + +#undef Perl_utf8_distance +I32 +Perl_utf8_distance(void *pPerl, U8 *a, U8 *b) +{ + return ((CPerlObj*)pPerl)->Perl_utf8_distance(a, b); +} + +#undef Perl_utf8_hop +U8* +Perl_utf8_hop(void *pPerl, U8 *s, I32 off) +{ + return ((CPerlObj*)pPerl)->Perl_utf8_hop(s, off); +} + +#undef Perl_utf8_to_uv +UV +Perl_utf8_to_uv(void *pPerl, U8 *s, I32* retlen) +{ + return ((CPerlObj*)pPerl)->Perl_utf8_to_uv(s, retlen); +} + +#undef Perl_uv_to_utf8 +U8* +Perl_uv_to_utf8(void *pPerl, U8 *d, UV uv) +{ + return ((CPerlObj*)pPerl)->Perl_uv_to_utf8(d, uv); +} + +#undef Perl_vivify_defelem +void +Perl_vivify_defelem(void *pPerl, SV* sv) +{ + ((CPerlObj*)pPerl)->Perl_vivify_defelem(sv); +} + +#undef Perl_vivify_ref +void +Perl_vivify_ref(void *pPerl, SV* sv, U32 to_what) +{ + ((CPerlObj*)pPerl)->Perl_vivify_ref(sv, to_what); +} + +#undef Perl_wait4pid +I32 +Perl_wait4pid(void *pPerl, int pid, int* statusp, int flags) +{ + return ((CPerlObj*)pPerl)->Perl_wait4pid(pid, statusp, flags); +} + +#undef Perl_watch +void +Perl_watch(void *pPerl, char** addr) +{ + ((CPerlObj*)pPerl)->Perl_watch(addr); +} + +#undef Perl_whichsig +I32 +Perl_whichsig(void *pPerl, char* sig) +{ + return ((CPerlObj*)pPerl)->Perl_whichsig(sig); +} + +#undef Perl_yyerror +int +Perl_yyerror(void *pPerl, char* s) +{ + return ((CPerlObj*)pPerl)->Perl_yyerror(s); +} +#if defined(USE_PURE_BISON) + +#undef Perl_yylex +int +Perl_yylex(void *pPerl, YYSTYPE *lvalp, int *lcharp) +{ + return ((CPerlObj*)pPerl)->Perl_yylex(lvalp, lcharp); +} +#else + +#undef Perl_yylex +int +Perl_yylex(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_yylex(); +} +#endif + +#undef Perl_yyparse +int +Perl_yyparse(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_yyparse(); +} + +#undef Perl_yywarn +int +Perl_yywarn(void *pPerl, char* s) +{ + return ((CPerlObj*)pPerl)->Perl_yywarn(s); +} +#if defined(MYMALLOC) + +#undef Perl_dump_mstats +void +Perl_dump_mstats(void *pPerl, char* s) +{ + ((CPerlObj*)pPerl)->Perl_dump_mstats(s); +} + +#undef Perl_malloc +Malloc_t +Perl_malloc(void *pPerl, MEM_SIZE nbytes) +{ + return ((CPerlObj*)pPerl)->Perl_malloc(nbytes); +} + +#undef Perl_calloc +Malloc_t +Perl_calloc(void *pPerl, MEM_SIZE elements, MEM_SIZE size) +{ + return ((CPerlObj*)pPerl)->Perl_calloc(elements, size); +} + +#undef Perl_realloc +Malloc_t +Perl_realloc(void *pPerl, Malloc_t where, MEM_SIZE nbytes) +{ + return ((CPerlObj*)pPerl)->Perl_realloc(where, nbytes); +} + +#undef Perl_mfree +Free_t +Perl_mfree(void *pPerl, Malloc_t where) +{ + ((CPerlObj*)pPerl)->Perl_mfree(where); +} +#endif + +#undef Perl_safesysmalloc +Malloc_t +Perl_safesysmalloc(void *pPerl, MEM_SIZE nbytes) +{ + return ((CPerlObj*)pPerl)->Perl_safesysmalloc(nbytes); +} + +#undef Perl_safesyscalloc +Malloc_t +Perl_safesyscalloc(void *pPerl, MEM_SIZE elements, MEM_SIZE size) +{ + return ((CPerlObj*)pPerl)->Perl_safesyscalloc(elements, size); +} + +#undef Perl_safesysrealloc +Malloc_t +Perl_safesysrealloc(void *pPerl, Malloc_t where, MEM_SIZE nbytes) +{ + return ((CPerlObj*)pPerl)->Perl_safesysrealloc(where, nbytes); +} + +#undef Perl_safesysfree +Free_t +Perl_safesysfree(void *pPerl, Malloc_t where) +{ + ((CPerlObj*)pPerl)->Perl_safesysfree(where); +} +#if defined(LEAKTEST) + +#undef Perl_safexmalloc +Malloc_t +Perl_safexmalloc(void *pPerl, I32 x, MEM_SIZE size) +{ + return ((CPerlObj*)pPerl)->Perl_safexmalloc(x, size); +} + +#undef Perl_safexcalloc +Malloc_t +Perl_safexcalloc(void *pPerl, I32 x, MEM_SIZE elements, MEM_SIZE size) +{ + return ((CPerlObj*)pPerl)->Perl_safexcalloc(x, elements, size); +} + +#undef Perl_safexrealloc +Malloc_t +Perl_safexrealloc(void *pPerl, Malloc_t where, MEM_SIZE size) +{ + return ((CPerlObj*)pPerl)->Perl_safexrealloc(where, size); +} + +#undef Perl_safexfree +void +Perl_safexfree(void *pPerl, Malloc_t where) +{ + ((CPerlObj*)pPerl)->Perl_safexfree(where); +} +#endif +#if defined(PERL_GLOBAL_STRUCT) + +#undef Perl_GetVars +struct perl_vars * +Perl_GetVars(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_GetVars(); +} +#endif + +#undef Perl_runops_standard +int +Perl_runops_standard(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_runops_standard(); +} + +#undef Perl_runops_debug +int +Perl_runops_debug(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_runops_debug(); +} + +#undef Perl_sv_catpv_mg +void +Perl_sv_catpv_mg(void *pPerl, SV *sv, const char *ptr) +{ + ((CPerlObj*)pPerl)->Perl_sv_catpv_mg(sv, ptr); +} + +#undef Perl_sv_catpvn_mg +void +Perl_sv_catpvn_mg(void *pPerl, SV *sv, const char *ptr, STRLEN len) +{ + ((CPerlObj*)pPerl)->Perl_sv_catpvn_mg(sv, ptr, len); +} + +#undef Perl_sv_catsv_mg +void +Perl_sv_catsv_mg(void *pPerl, SV *dstr, SV *sstr) +{ + ((CPerlObj*)pPerl)->Perl_sv_catsv_mg(dstr, sstr); +} + +#undef Perl_sv_setiv_mg +void +Perl_sv_setiv_mg(void *pPerl, SV *sv, IV i) +{ + ((CPerlObj*)pPerl)->Perl_sv_setiv_mg(sv, i); +} + +#undef Perl_sv_setpviv_mg +void +Perl_sv_setpviv_mg(void *pPerl, SV *sv, IV iv) +{ + ((CPerlObj*)pPerl)->Perl_sv_setpviv_mg(sv, iv); +} + +#undef Perl_sv_setuv_mg +void +Perl_sv_setuv_mg(void *pPerl, SV *sv, UV u) +{ + ((CPerlObj*)pPerl)->Perl_sv_setuv_mg(sv, u); +} + +#undef Perl_sv_setnv_mg +void +Perl_sv_setnv_mg(void *pPerl, SV *sv, NV num) +{ + ((CPerlObj*)pPerl)->Perl_sv_setnv_mg(sv, num); +} + +#undef Perl_sv_setpv_mg +void +Perl_sv_setpv_mg(void *pPerl, SV *sv, const char *ptr) +{ + ((CPerlObj*)pPerl)->Perl_sv_setpv_mg(sv, ptr); +} + +#undef Perl_sv_setpvn_mg +void +Perl_sv_setpvn_mg(void *pPerl, SV *sv, const char *ptr, STRLEN len) +{ + ((CPerlObj*)pPerl)->Perl_sv_setpvn_mg(sv, ptr, len); +} + +#undef Perl_sv_setsv_mg +void +Perl_sv_setsv_mg(void *pPerl, SV *dstr, SV *sstr) +{ + ((CPerlObj*)pPerl)->Perl_sv_setsv_mg(dstr, sstr); +} + +#undef Perl_sv_usepvn_mg +void +Perl_sv_usepvn_mg(void *pPerl, SV *sv, char *ptr, STRLEN len) +{ + ((CPerlObj*)pPerl)->Perl_sv_usepvn_mg(sv, ptr, len); +} + +#undef Perl_get_vtbl +MGVTBL* +Perl_get_vtbl(void *pPerl, int vtbl_id) +{ + return ((CPerlObj*)pPerl)->Perl_get_vtbl(vtbl_id); +} + +#undef Perl_pv_display +char* +Perl_pv_display(void *pPerl, SV *sv, char *pv, STRLEN cur, STRLEN len, STRLEN pvlim) +{ + return ((CPerlObj*)pPerl)->Perl_pv_display(sv, pv, cur, len, pvlim); +} + +#undef Perl_do_gv_dump +void +Perl_do_gv_dump(void *pPerl, I32 level, PerlIO *file, char *name, GV *sv) +{ + ((CPerlObj*)pPerl)->Perl_do_gv_dump(level, file, name, sv); +} + +#undef Perl_do_gvgv_dump +void +Perl_do_gvgv_dump(void *pPerl, I32 level, PerlIO *file, char *name, GV *sv) +{ + ((CPerlObj*)pPerl)->Perl_do_gvgv_dump(level, file, name, sv); +} + +#undef Perl_do_hv_dump +void +Perl_do_hv_dump(void *pPerl, I32 level, PerlIO *file, char *name, HV *sv) +{ + ((CPerlObj*)pPerl)->Perl_do_hv_dump(level, file, name, sv); +} + +#undef Perl_do_magic_dump +void +Perl_do_magic_dump(void *pPerl, I32 level, PerlIO *file, MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim) +{ + ((CPerlObj*)pPerl)->Perl_do_magic_dump(level, file, mg, nest, maxnest, dumpops, pvlim); +} + +#undef Perl_do_op_dump +void +Perl_do_op_dump(void *pPerl, I32 level, PerlIO *file, OP *o) +{ + ((CPerlObj*)pPerl)->Perl_do_op_dump(level, file, o); +} + +#undef Perl_do_pmop_dump +void +Perl_do_pmop_dump(void *pPerl, I32 level, PerlIO *file, PMOP *pm) +{ + ((CPerlObj*)pPerl)->Perl_do_pmop_dump(level, file, pm); +} + +#undef Perl_do_sv_dump +void +Perl_do_sv_dump(void *pPerl, I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim) +{ + ((CPerlObj*)pPerl)->Perl_do_sv_dump(level, file, sv, nest, maxnest, dumpops, pvlim); +} + +#undef Perl_magic_dump +void +Perl_magic_dump(void *pPerl, MAGIC *mg) +{ + ((CPerlObj*)pPerl)->Perl_magic_dump(mg); +} + +#undef Perl_reginitcolors +void +Perl_reginitcolors(void *pPerl) +{ + ((CPerlObj*)pPerl)->Perl_reginitcolors(); +} + +#undef Perl_sv_2pv_nolen +char* +Perl_sv_2pv_nolen(void *pPerl, SV* sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_2pv_nolen(sv); +} + +#undef Perl_sv_pv +char* +Perl_sv_pv(void *pPerl, SV *sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_pv(sv); +} + +#undef Perl_sv_force_normal +void +Perl_sv_force_normal(void *pPerl, SV *sv) +{ + ((CPerlObj*)pPerl)->Perl_sv_force_normal(sv); +} + +#undef Perl_tmps_grow +void +Perl_tmps_grow(void *pPerl, I32 n) +{ + ((CPerlObj*)pPerl)->Perl_tmps_grow(n); +} + +#undef Perl_sv_rvweaken +SV* +Perl_sv_rvweaken(void *pPerl, SV *sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_rvweaken(sv); +} + +#undef Perl_magic_killbackrefs +int +Perl_magic_killbackrefs(void *pPerl, SV *sv, MAGIC *mg) +{ + return ((CPerlObj*)pPerl)->Perl_magic_killbackrefs(sv, mg); +} +#if defined(PERL_OBJECT) +#endif +#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT) +#endif +#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT) +#endif +#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT) +#endif +#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) +#endif +#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) +#endif +#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +# if defined(PL_OP_SLAB_ALLOC) +# endif +#endif +#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT) +# if defined(IAMSUID) +# endif +# if defined(USE_THREADS) +# endif +#endif +#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT) +#endif +#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) +#endif +#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) +#endif +#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) +# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) +# endif +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) +#endif +#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) +#endif +#if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT) +#endif +#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) +#endif +#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +# if defined(PURIFY) +# else +# endif +# if defined(DEBUGGING) +# endif +#endif +#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) +# if defined(CRIPPLED_CC) +# endif +# if defined(WIN32) +# endif +#endif +#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) +#endif +#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) +# if defined(LEAKTEST) +# endif +#endif + +#undef Perl_ck_anoncode +OP * +Perl_ck_anoncode(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_anoncode(o); +} + +#undef Perl_ck_bitop +OP * +Perl_ck_bitop(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_bitop(o); +} + +#undef Perl_ck_concat +OP * +Perl_ck_concat(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_concat(o); +} + +#undef Perl_ck_defined +OP * +Perl_ck_defined(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_defined(o); +} + +#undef Perl_ck_delete +OP * +Perl_ck_delete(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_delete(o); +} + +#undef Perl_ck_eof +OP * +Perl_ck_eof(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_eof(o); +} + +#undef Perl_ck_eval +OP * +Perl_ck_eval(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_eval(o); +} + +#undef Perl_ck_exec +OP * +Perl_ck_exec(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_exec(o); +} + +#undef Perl_ck_exists +OP * +Perl_ck_exists(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_exists(o); +} + +#undef Perl_ck_ftst +OP * +Perl_ck_ftst(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_ftst(o); +} + +#undef Perl_ck_fun +OP * +Perl_ck_fun(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_fun(o); +} + +#undef Perl_ck_fun_locale +OP * +Perl_ck_fun_locale(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_fun_locale(o); +} + +#undef Perl_ck_glob +OP * +Perl_ck_glob(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_glob(o); +} + +#undef Perl_ck_grep +OP * +Perl_ck_grep(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_grep(o); +} + +#undef Perl_ck_index +OP * +Perl_ck_index(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_index(o); +} + +#undef Perl_ck_lengthconst +OP * +Perl_ck_lengthconst(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_lengthconst(o); +} + +#undef Perl_ck_lfun +OP * +Perl_ck_lfun(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_lfun(o); +} + +#undef Perl_ck_listiob +OP * +Perl_ck_listiob(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_listiob(o); +} + +#undef Perl_ck_match +OP * +Perl_ck_match(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_match(o); +} + +#undef Perl_ck_null +OP * +Perl_ck_null(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_null(o); +} + +#undef Perl_ck_repeat +OP * +Perl_ck_repeat(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_repeat(o); +} + +#undef Perl_ck_require +OP * +Perl_ck_require(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_require(o); +} + +#undef Perl_ck_rfun +OP * +Perl_ck_rfun(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_rfun(o); +} + +#undef Perl_ck_rvconst +OP * +Perl_ck_rvconst(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_rvconst(o); +} + +#undef Perl_ck_sassign +OP * +Perl_ck_sassign(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_sassign(o); +} + +#undef Perl_ck_scmp +OP * +Perl_ck_scmp(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_scmp(o); +} + +#undef Perl_ck_select +OP * +Perl_ck_select(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_select(o); +} + +#undef Perl_ck_shift +OP * +Perl_ck_shift(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_shift(o); +} + +#undef Perl_ck_sort +OP * +Perl_ck_sort(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_sort(o); +} + +#undef Perl_ck_spair +OP * +Perl_ck_spair(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_spair(o); +} + +#undef Perl_ck_split +OP * +Perl_ck_split(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_split(o); +} + +#undef Perl_ck_subr +OP * +Perl_ck_subr(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_subr(o); +} + +#undef Perl_ck_svconst +OP * +Perl_ck_svconst(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_svconst(o); +} + +#undef Perl_ck_trunc +OP * +Perl_ck_trunc(void *pPerl, OP *o) +{ + return ((CPerlObj*)pPerl)->Perl_ck_trunc(o); +} + +#undef Perl_pp_aassign +OP * +Perl_pp_aassign(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_aassign(); +} + +#undef Perl_pp_abs +OP * +Perl_pp_abs(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_abs(); +} + +#undef Perl_pp_accept +OP * +Perl_pp_accept(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_accept(); +} + +#undef Perl_pp_add +OP * +Perl_pp_add(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_add(); +} + +#undef Perl_pp_aelem +OP * +Perl_pp_aelem(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_aelem(); +} + +#undef Perl_pp_aelemfast +OP * +Perl_pp_aelemfast(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_aelemfast(); +} + +#undef Perl_pp_alarm +OP * +Perl_pp_alarm(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_alarm(); +} + +#undef Perl_pp_and +OP * +Perl_pp_and(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_and(); +} + +#undef Perl_pp_andassign +OP * +Perl_pp_andassign(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_andassign(); +} + +#undef Perl_pp_anoncode +OP * +Perl_pp_anoncode(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_anoncode(); +} + +#undef Perl_pp_anonhash +OP * +Perl_pp_anonhash(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_anonhash(); +} + +#undef Perl_pp_anonlist +OP * +Perl_pp_anonlist(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_anonlist(); +} + +#undef Perl_pp_aslice +OP * +Perl_pp_aslice(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_aslice(); +} + +#undef Perl_pp_atan2 +OP * +Perl_pp_atan2(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_atan2(); +} + +#undef Perl_pp_av2arylen +OP * +Perl_pp_av2arylen(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_av2arylen(); +} + +#undef Perl_pp_backtick +OP * +Perl_pp_backtick(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_backtick(); +} + +#undef Perl_pp_bind +OP * +Perl_pp_bind(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_bind(); +} + +#undef Perl_pp_binmode +OP * +Perl_pp_binmode(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_binmode(); +} + +#undef Perl_pp_bit_and +OP * +Perl_pp_bit_and(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_bit_and(); +} + +#undef Perl_pp_bit_or +OP * +Perl_pp_bit_or(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_bit_or(); +} + +#undef Perl_pp_bit_xor +OP * +Perl_pp_bit_xor(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_bit_xor(); +} + +#undef Perl_pp_bless +OP * +Perl_pp_bless(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_bless(); +} + +#undef Perl_pp_caller +OP * +Perl_pp_caller(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_caller(); +} + +#undef Perl_pp_chdir +OP * +Perl_pp_chdir(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_chdir(); +} + +#undef Perl_pp_chmod +OP * +Perl_pp_chmod(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_chmod(); +} + +#undef Perl_pp_chomp +OP * +Perl_pp_chomp(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_chomp(); +} + +#undef Perl_pp_chop +OP * +Perl_pp_chop(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_chop(); +} + +#undef Perl_pp_chown +OP * +Perl_pp_chown(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_chown(); +} + +#undef Perl_pp_chr +OP * +Perl_pp_chr(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_chr(); +} + +#undef Perl_pp_chroot +OP * +Perl_pp_chroot(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_chroot(); +} + +#undef Perl_pp_close +OP * +Perl_pp_close(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_close(); +} + +#undef Perl_pp_closedir +OP * +Perl_pp_closedir(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_closedir(); +} + +#undef Perl_pp_complement +OP * +Perl_pp_complement(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_complement(); +} + +#undef Perl_pp_concat +OP * +Perl_pp_concat(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_concat(); +} + +#undef Perl_pp_cond_expr +OP * +Perl_pp_cond_expr(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_cond_expr(); +} + +#undef Perl_pp_connect +OP * +Perl_pp_connect(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_connect(); +} + +#undef Perl_pp_const +OP * +Perl_pp_const(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_const(); +} + +#undef Perl_pp_cos +OP * +Perl_pp_cos(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_cos(); +} + +#undef Perl_pp_crypt +OP * +Perl_pp_crypt(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_crypt(); +} + +#undef Perl_pp_dbmclose +OP * +Perl_pp_dbmclose(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_dbmclose(); +} + +#undef Perl_pp_dbmopen +OP * +Perl_pp_dbmopen(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_dbmopen(); +} + +#undef Perl_pp_dbstate +OP * +Perl_pp_dbstate(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_dbstate(); +} + +#undef Perl_pp_defined +OP * +Perl_pp_defined(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_defined(); +} + +#undef Perl_pp_delete +OP * +Perl_pp_delete(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_delete(); +} + +#undef Perl_pp_die +OP * +Perl_pp_die(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_die(); +} + +#undef Perl_pp_divide +OP * +Perl_pp_divide(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_divide(); +} + +#undef Perl_pp_dofile +OP * +Perl_pp_dofile(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_dofile(); +} + +#undef Perl_pp_dump +OP * +Perl_pp_dump(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_dump(); +} + +#undef Perl_pp_each +OP * +Perl_pp_each(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_each(); +} + +#undef Perl_pp_egrent +OP * +Perl_pp_egrent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_egrent(); +} + +#undef Perl_pp_ehostent +OP * +Perl_pp_ehostent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ehostent(); +} + +#undef Perl_pp_enetent +OP * +Perl_pp_enetent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_enetent(); +} + +#undef Perl_pp_enter +OP * +Perl_pp_enter(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_enter(); +} + +#undef Perl_pp_entereval +OP * +Perl_pp_entereval(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_entereval(); +} + +#undef Perl_pp_enteriter +OP * +Perl_pp_enteriter(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_enteriter(); +} + +#undef Perl_pp_enterloop +OP * +Perl_pp_enterloop(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_enterloop(); +} + +#undef Perl_pp_entersub +OP * +Perl_pp_entersub(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_entersub(); +} + +#undef Perl_pp_entertry +OP * +Perl_pp_entertry(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_entertry(); +} + +#undef Perl_pp_enterwrite +OP * +Perl_pp_enterwrite(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_enterwrite(); +} + +#undef Perl_pp_eof +OP * +Perl_pp_eof(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_eof(); +} + +#undef Perl_pp_eprotoent +OP * +Perl_pp_eprotoent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_eprotoent(); +} + +#undef Perl_pp_epwent +OP * +Perl_pp_epwent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_epwent(); +} + +#undef Perl_pp_eq +OP * +Perl_pp_eq(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_eq(); +} + +#undef Perl_pp_eservent +OP * +Perl_pp_eservent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_eservent(); +} + +#undef Perl_pp_exec +OP * +Perl_pp_exec(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_exec(); +} + +#undef Perl_pp_exists +OP * +Perl_pp_exists(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_exists(); +} + +#undef Perl_pp_exit +OP * +Perl_pp_exit(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_exit(); +} + +#undef Perl_pp_exp +OP * +Perl_pp_exp(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_exp(); +} + +#undef Perl_pp_fcntl +OP * +Perl_pp_fcntl(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_fcntl(); +} + +#undef Perl_pp_fileno +OP * +Perl_pp_fileno(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_fileno(); +} + +#undef Perl_pp_flip +OP * +Perl_pp_flip(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_flip(); +} + +#undef Perl_pp_flock +OP * +Perl_pp_flock(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_flock(); +} + +#undef Perl_pp_flop +OP * +Perl_pp_flop(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_flop(); +} + +#undef Perl_pp_fork +OP * +Perl_pp_fork(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_fork(); +} + +#undef Perl_pp_formline +OP * +Perl_pp_formline(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_formline(); +} + +#undef Perl_pp_ftatime +OP * +Perl_pp_ftatime(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftatime(); +} + +#undef Perl_pp_ftbinary +OP * +Perl_pp_ftbinary(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftbinary(); +} + +#undef Perl_pp_ftblk +OP * +Perl_pp_ftblk(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftblk(); +} + +#undef Perl_pp_ftchr +OP * +Perl_pp_ftchr(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftchr(); +} + +#undef Perl_pp_ftctime +OP * +Perl_pp_ftctime(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftctime(); +} + +#undef Perl_pp_ftdir +OP * +Perl_pp_ftdir(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftdir(); +} + +#undef Perl_pp_fteexec +OP * +Perl_pp_fteexec(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_fteexec(); +} + +#undef Perl_pp_fteowned +OP * +Perl_pp_fteowned(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_fteowned(); +} + +#undef Perl_pp_fteread +OP * +Perl_pp_fteread(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_fteread(); +} + +#undef Perl_pp_ftewrite +OP * +Perl_pp_ftewrite(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftewrite(); +} + +#undef Perl_pp_ftfile +OP * +Perl_pp_ftfile(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftfile(); +} + +#undef Perl_pp_ftis +OP * +Perl_pp_ftis(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftis(); +} + +#undef Perl_pp_ftlink +OP * +Perl_pp_ftlink(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftlink(); +} + +#undef Perl_pp_ftmtime +OP * +Perl_pp_ftmtime(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftmtime(); +} + +#undef Perl_pp_ftpipe +OP * +Perl_pp_ftpipe(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftpipe(); +} + +#undef Perl_pp_ftrexec +OP * +Perl_pp_ftrexec(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftrexec(); +} + +#undef Perl_pp_ftrowned +OP * +Perl_pp_ftrowned(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftrowned(); +} + +#undef Perl_pp_ftrread +OP * +Perl_pp_ftrread(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftrread(); +} + +#undef Perl_pp_ftrwrite +OP * +Perl_pp_ftrwrite(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftrwrite(); +} + +#undef Perl_pp_ftsgid +OP * +Perl_pp_ftsgid(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftsgid(); +} + +#undef Perl_pp_ftsize +OP * +Perl_pp_ftsize(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftsize(); +} + +#undef Perl_pp_ftsock +OP * +Perl_pp_ftsock(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftsock(); +} + +#undef Perl_pp_ftsuid +OP * +Perl_pp_ftsuid(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftsuid(); +} + +#undef Perl_pp_ftsvtx +OP * +Perl_pp_ftsvtx(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftsvtx(); +} + +#undef Perl_pp_fttext +OP * +Perl_pp_fttext(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_fttext(); +} + +#undef Perl_pp_fttty +OP * +Perl_pp_fttty(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_fttty(); +} + +#undef Perl_pp_ftzero +OP * +Perl_pp_ftzero(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ftzero(); +} + +#undef Perl_pp_ge +OP * +Perl_pp_ge(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ge(); +} + +#undef Perl_pp_gelem +OP * +Perl_pp_gelem(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gelem(); +} + +#undef Perl_pp_getc +OP * +Perl_pp_getc(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_getc(); +} + +#undef Perl_pp_getlogin +OP * +Perl_pp_getlogin(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_getlogin(); +} + +#undef Perl_pp_getpeername +OP * +Perl_pp_getpeername(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_getpeername(); +} + +#undef Perl_pp_getpgrp +OP * +Perl_pp_getpgrp(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_getpgrp(); +} + +#undef Perl_pp_getppid +OP * +Perl_pp_getppid(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_getppid(); +} + +#undef Perl_pp_getpriority +OP * +Perl_pp_getpriority(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_getpriority(); +} + +#undef Perl_pp_getsockname +OP * +Perl_pp_getsockname(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_getsockname(); +} + +#undef Perl_pp_ggrent +OP * +Perl_pp_ggrent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ggrent(); +} + +#undef Perl_pp_ggrgid +OP * +Perl_pp_ggrgid(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ggrgid(); +} + +#undef Perl_pp_ggrnam +OP * +Perl_pp_ggrnam(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ggrnam(); +} + +#undef Perl_pp_ghbyaddr +OP * +Perl_pp_ghbyaddr(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ghbyaddr(); +} + +#undef Perl_pp_ghbyname +OP * +Perl_pp_ghbyname(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ghbyname(); +} + +#undef Perl_pp_ghostent +OP * +Perl_pp_ghostent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ghostent(); +} + +#undef Perl_pp_glob +OP * +Perl_pp_glob(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_glob(); +} + +#undef Perl_pp_gmtime +OP * +Perl_pp_gmtime(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gmtime(); +} + +#undef Perl_pp_gnbyaddr +OP * +Perl_pp_gnbyaddr(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gnbyaddr(); +} + +#undef Perl_pp_gnbyname +OP * +Perl_pp_gnbyname(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gnbyname(); +} + +#undef Perl_pp_gnetent +OP * +Perl_pp_gnetent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gnetent(); +} + +#undef Perl_pp_goto +OP * +Perl_pp_goto(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_goto(); +} + +#undef Perl_pp_gpbyname +OP * +Perl_pp_gpbyname(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gpbyname(); +} + +#undef Perl_pp_gpbynumber +OP * +Perl_pp_gpbynumber(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gpbynumber(); +} + +#undef Perl_pp_gprotoent +OP * +Perl_pp_gprotoent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gprotoent(); +} + +#undef Perl_pp_gpwent +OP * +Perl_pp_gpwent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gpwent(); +} + +#undef Perl_pp_gpwnam +OP * +Perl_pp_gpwnam(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gpwnam(); +} + +#undef Perl_pp_gpwuid +OP * +Perl_pp_gpwuid(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gpwuid(); +} + +#undef Perl_pp_grepstart +OP * +Perl_pp_grepstart(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_grepstart(); +} + +#undef Perl_pp_grepwhile +OP * +Perl_pp_grepwhile(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_grepwhile(); +} + +#undef Perl_pp_gsbyname +OP * +Perl_pp_gsbyname(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gsbyname(); +} + +#undef Perl_pp_gsbyport +OP * +Perl_pp_gsbyport(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gsbyport(); +} + +#undef Perl_pp_gservent +OP * +Perl_pp_gservent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gservent(); +} + +#undef Perl_pp_gsockopt +OP * +Perl_pp_gsockopt(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gsockopt(); +} + +#undef Perl_pp_gt +OP * +Perl_pp_gt(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gt(); +} + +#undef Perl_pp_gv +OP * +Perl_pp_gv(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gv(); +} + +#undef Perl_pp_gvsv +OP * +Perl_pp_gvsv(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_gvsv(); +} + +#undef Perl_pp_helem +OP * +Perl_pp_helem(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_helem(); +} + +#undef Perl_pp_hex +OP * +Perl_pp_hex(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_hex(); +} + +#undef Perl_pp_hslice +OP * +Perl_pp_hslice(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_hslice(); +} + +#undef Perl_pp_i_add +OP * +Perl_pp_i_add(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_i_add(); +} + +#undef Perl_pp_i_divide +OP * +Perl_pp_i_divide(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_i_divide(); +} + +#undef Perl_pp_i_eq +OP * +Perl_pp_i_eq(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_i_eq(); +} + +#undef Perl_pp_i_ge +OP * +Perl_pp_i_ge(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_i_ge(); +} + +#undef Perl_pp_i_gt +OP * +Perl_pp_i_gt(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_i_gt(); +} + +#undef Perl_pp_i_le +OP * +Perl_pp_i_le(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_i_le(); +} + +#undef Perl_pp_i_lt +OP * +Perl_pp_i_lt(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_i_lt(); +} + +#undef Perl_pp_i_modulo +OP * +Perl_pp_i_modulo(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_i_modulo(); +} + +#undef Perl_pp_i_multiply +OP * +Perl_pp_i_multiply(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_i_multiply(); +} + +#undef Perl_pp_i_ncmp +OP * +Perl_pp_i_ncmp(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_i_ncmp(); +} + +#undef Perl_pp_i_ne +OP * +Perl_pp_i_ne(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_i_ne(); +} + +#undef Perl_pp_i_negate +OP * +Perl_pp_i_negate(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_i_negate(); +} + +#undef Perl_pp_i_subtract +OP * +Perl_pp_i_subtract(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_i_subtract(); +} + +#undef Perl_pp_index +OP * +Perl_pp_index(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_index(); +} + +#undef Perl_pp_int +OP * +Perl_pp_int(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_int(); +} + +#undef Perl_pp_ioctl +OP * +Perl_pp_ioctl(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ioctl(); +} + +#undef Perl_pp_iter +OP * +Perl_pp_iter(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_iter(); +} + +#undef Perl_pp_join +OP * +Perl_pp_join(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_join(); +} + +#undef Perl_pp_keys +OP * +Perl_pp_keys(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_keys(); +} + +#undef Perl_pp_kill +OP * +Perl_pp_kill(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_kill(); +} + +#undef Perl_pp_last +OP * +Perl_pp_last(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_last(); +} + +#undef Perl_pp_lc +OP * +Perl_pp_lc(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_lc(); +} + +#undef Perl_pp_lcfirst +OP * +Perl_pp_lcfirst(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_lcfirst(); +} + +#undef Perl_pp_le +OP * +Perl_pp_le(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_le(); +} + +#undef Perl_pp_leave +OP * +Perl_pp_leave(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_leave(); +} + +#undef Perl_pp_leaveeval +OP * +Perl_pp_leaveeval(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_leaveeval(); +} + +#undef Perl_pp_leaveloop +OP * +Perl_pp_leaveloop(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_leaveloop(); +} + +#undef Perl_pp_leavesub +OP * +Perl_pp_leavesub(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_leavesub(); +} + +#undef Perl_pp_leavetry +OP * +Perl_pp_leavetry(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_leavetry(); +} + +#undef Perl_pp_leavewrite +OP * +Perl_pp_leavewrite(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_leavewrite(); +} + +#undef Perl_pp_left_shift +OP * +Perl_pp_left_shift(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_left_shift(); +} + +#undef Perl_pp_length +OP * +Perl_pp_length(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_length(); +} + +#undef Perl_pp_lineseq +OP * +Perl_pp_lineseq(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_lineseq(); +} + +#undef Perl_pp_link +OP * +Perl_pp_link(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_link(); +} + +#undef Perl_pp_list +OP * +Perl_pp_list(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_list(); +} + +#undef Perl_pp_listen +OP * +Perl_pp_listen(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_listen(); +} + +#undef Perl_pp_localtime +OP * +Perl_pp_localtime(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_localtime(); +} + +#undef Perl_pp_lock +OP * +Perl_pp_lock(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_lock(); +} + +#undef Perl_pp_log +OP * +Perl_pp_log(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_log(); +} + +#undef Perl_pp_lslice +OP * +Perl_pp_lslice(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_lslice(); +} + +#undef Perl_pp_lstat +OP * +Perl_pp_lstat(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_lstat(); +} + +#undef Perl_pp_lt +OP * +Perl_pp_lt(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_lt(); +} + +#undef Perl_pp_mapstart +OP * +Perl_pp_mapstart(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_mapstart(); +} + +#undef Perl_pp_mapwhile +OP * +Perl_pp_mapwhile(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_mapwhile(); +} + +#undef Perl_pp_match +OP * +Perl_pp_match(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_match(); +} + +#undef Perl_pp_method +OP * +Perl_pp_method(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_method(); +} + +#undef Perl_pp_mkdir +OP * +Perl_pp_mkdir(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_mkdir(); +} + +#undef Perl_pp_modulo +OP * +Perl_pp_modulo(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_modulo(); +} + +#undef Perl_pp_msgctl +OP * +Perl_pp_msgctl(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_msgctl(); +} + +#undef Perl_pp_msgget +OP * +Perl_pp_msgget(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_msgget(); +} + +#undef Perl_pp_msgrcv +OP * +Perl_pp_msgrcv(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_msgrcv(); +} + +#undef Perl_pp_msgsnd +OP * +Perl_pp_msgsnd(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_msgsnd(); +} + +#undef Perl_pp_multiply +OP * +Perl_pp_multiply(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_multiply(); +} + +#undef Perl_pp_ncmp +OP * +Perl_pp_ncmp(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ncmp(); +} + +#undef Perl_pp_ne +OP * +Perl_pp_ne(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ne(); +} + +#undef Perl_pp_negate +OP * +Perl_pp_negate(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_negate(); +} + +#undef Perl_pp_next +OP * +Perl_pp_next(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_next(); +} + +#undef Perl_pp_nextstate +OP * +Perl_pp_nextstate(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_nextstate(); +} + +#undef Perl_pp_not +OP * +Perl_pp_not(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_not(); +} + +#undef Perl_pp_null +OP * +Perl_pp_null(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_null(); +} + +#undef Perl_pp_oct +OP * +Perl_pp_oct(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_oct(); +} + +#undef Perl_pp_open +OP * +Perl_pp_open(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_open(); +} + +#undef Perl_pp_open_dir +OP * +Perl_pp_open_dir(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_open_dir(); +} + +#undef Perl_pp_or +OP * +Perl_pp_or(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_or(); +} + +#undef Perl_pp_orassign +OP * +Perl_pp_orassign(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_orassign(); +} + +#undef Perl_pp_ord +OP * +Perl_pp_ord(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ord(); +} + +#undef Perl_pp_pack +OP * +Perl_pp_pack(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_pack(); +} + +#undef Perl_pp_padany +OP * +Perl_pp_padany(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_padany(); +} + +#undef Perl_pp_padav +OP * +Perl_pp_padav(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_padav(); +} + +#undef Perl_pp_padhv +OP * +Perl_pp_padhv(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_padhv(); +} + +#undef Perl_pp_padsv +OP * +Perl_pp_padsv(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_padsv(); +} + +#undef Perl_pp_pipe_op +OP * +Perl_pp_pipe_op(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_pipe_op(); +} + +#undef Perl_pp_pop +OP * +Perl_pp_pop(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_pop(); +} + +#undef Perl_pp_pos +OP * +Perl_pp_pos(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_pos(); +} + +#undef Perl_pp_postdec +OP * +Perl_pp_postdec(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_postdec(); +} + +#undef Perl_pp_postinc +OP * +Perl_pp_postinc(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_postinc(); +} + +#undef Perl_pp_pow +OP * +Perl_pp_pow(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_pow(); +} + +#undef Perl_pp_predec +OP * +Perl_pp_predec(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_predec(); +} + +#undef Perl_pp_preinc +OP * +Perl_pp_preinc(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_preinc(); +} + +#undef Perl_pp_print +OP * +Perl_pp_print(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_print(); +} + +#undef Perl_pp_prototype +OP * +Perl_pp_prototype(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_prototype(); +} + +#undef Perl_pp_prtf +OP * +Perl_pp_prtf(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_prtf(); +} + +#undef Perl_pp_push +OP * +Perl_pp_push(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_push(); +} + +#undef Perl_pp_pushmark +OP * +Perl_pp_pushmark(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_pushmark(); +} + +#undef Perl_pp_pushre +OP * +Perl_pp_pushre(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_pushre(); +} + +#undef Perl_pp_qr +OP * +Perl_pp_qr(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_qr(); +} + +#undef Perl_pp_quotemeta +OP * +Perl_pp_quotemeta(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_quotemeta(); +} + +#undef Perl_pp_rand +OP * +Perl_pp_rand(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_rand(); +} + +#undef Perl_pp_range +OP * +Perl_pp_range(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_range(); +} + +#undef Perl_pp_rcatline +OP * +Perl_pp_rcatline(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_rcatline(); +} + +#undef Perl_pp_read +OP * +Perl_pp_read(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_read(); +} + +#undef Perl_pp_readdir +OP * +Perl_pp_readdir(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_readdir(); +} + +#undef Perl_pp_readline +OP * +Perl_pp_readline(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_readline(); +} + +#undef Perl_pp_readlink +OP * +Perl_pp_readlink(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_readlink(); +} + +#undef Perl_pp_recv +OP * +Perl_pp_recv(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_recv(); +} + +#undef Perl_pp_redo +OP * +Perl_pp_redo(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_redo(); +} + +#undef Perl_pp_ref +OP * +Perl_pp_ref(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ref(); +} + +#undef Perl_pp_refgen +OP * +Perl_pp_refgen(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_refgen(); +} + +#undef Perl_pp_regcmaybe +OP * +Perl_pp_regcmaybe(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_regcmaybe(); +} + +#undef Perl_pp_regcomp +OP * +Perl_pp_regcomp(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_regcomp(); +} + +#undef Perl_pp_regcreset +OP * +Perl_pp_regcreset(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_regcreset(); +} + +#undef Perl_pp_rename +OP * +Perl_pp_rename(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_rename(); +} + +#undef Perl_pp_repeat +OP * +Perl_pp_repeat(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_repeat(); +} + +#undef Perl_pp_require +OP * +Perl_pp_require(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_require(); +} + +#undef Perl_pp_reset +OP * +Perl_pp_reset(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_reset(); +} + +#undef Perl_pp_return +OP * +Perl_pp_return(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_return(); +} + +#undef Perl_pp_reverse +OP * +Perl_pp_reverse(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_reverse(); +} + +#undef Perl_pp_rewinddir +OP * +Perl_pp_rewinddir(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_rewinddir(); +} + +#undef Perl_pp_right_shift +OP * +Perl_pp_right_shift(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_right_shift(); +} + +#undef Perl_pp_rindex +OP * +Perl_pp_rindex(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_rindex(); +} + +#undef Perl_pp_rmdir +OP * +Perl_pp_rmdir(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_rmdir(); +} + +#undef Perl_pp_rv2av +OP * +Perl_pp_rv2av(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_rv2av(); +} + +#undef Perl_pp_rv2cv +OP * +Perl_pp_rv2cv(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_rv2cv(); +} + +#undef Perl_pp_rv2gv +OP * +Perl_pp_rv2gv(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_rv2gv(); +} + +#undef Perl_pp_rv2hv +OP * +Perl_pp_rv2hv(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_rv2hv(); +} + +#undef Perl_pp_rv2sv +OP * +Perl_pp_rv2sv(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_rv2sv(); +} + +#undef Perl_pp_sassign +OP * +Perl_pp_sassign(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sassign(); +} + +#undef Perl_pp_scalar +OP * +Perl_pp_scalar(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_scalar(); +} + +#undef Perl_pp_schomp +OP * +Perl_pp_schomp(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_schomp(); +} + +#undef Perl_pp_schop +OP * +Perl_pp_schop(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_schop(); +} + +#undef Perl_pp_scmp +OP * +Perl_pp_scmp(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_scmp(); +} + +#undef Perl_pp_scope +OP * +Perl_pp_scope(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_scope(); +} + +#undef Perl_pp_seek +OP * +Perl_pp_seek(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_seek(); +} + +#undef Perl_pp_seekdir +OP * +Perl_pp_seekdir(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_seekdir(); +} + +#undef Perl_pp_select +OP * +Perl_pp_select(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_select(); +} + +#undef Perl_pp_semctl +OP * +Perl_pp_semctl(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_semctl(); +} + +#undef Perl_pp_semget +OP * +Perl_pp_semget(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_semget(); +} + +#undef Perl_pp_semop +OP * +Perl_pp_semop(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_semop(); +} + +#undef Perl_pp_send +OP * +Perl_pp_send(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_send(); +} + +#undef Perl_pp_seq +OP * +Perl_pp_seq(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_seq(); +} + +#undef Perl_pp_setpgrp +OP * +Perl_pp_setpgrp(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_setpgrp(); +} + +#undef Perl_pp_setpriority +OP * +Perl_pp_setpriority(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_setpriority(); +} + +#undef Perl_pp_sge +OP * +Perl_pp_sge(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sge(); +} + +#undef Perl_pp_sgrent +OP * +Perl_pp_sgrent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sgrent(); +} + +#undef Perl_pp_sgt +OP * +Perl_pp_sgt(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sgt(); +} + +#undef Perl_pp_shift +OP * +Perl_pp_shift(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_shift(); +} + +#undef Perl_pp_shmctl +OP * +Perl_pp_shmctl(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_shmctl(); +} + +#undef Perl_pp_shmget +OP * +Perl_pp_shmget(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_shmget(); +} + +#undef Perl_pp_shmread +OP * +Perl_pp_shmread(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_shmread(); +} + +#undef Perl_pp_shmwrite +OP * +Perl_pp_shmwrite(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_shmwrite(); +} + +#undef Perl_pp_shostent +OP * +Perl_pp_shostent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_shostent(); +} + +#undef Perl_pp_shutdown +OP * +Perl_pp_shutdown(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_shutdown(); +} + +#undef Perl_pp_sin +OP * +Perl_pp_sin(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sin(); +} + +#undef Perl_pp_sle +OP * +Perl_pp_sle(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sle(); +} + +#undef Perl_pp_sleep +OP * +Perl_pp_sleep(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sleep(); +} + +#undef Perl_pp_slt +OP * +Perl_pp_slt(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_slt(); +} + +#undef Perl_pp_sne +OP * +Perl_pp_sne(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sne(); +} + +#undef Perl_pp_snetent +OP * +Perl_pp_snetent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_snetent(); +} + +#undef Perl_pp_socket +OP * +Perl_pp_socket(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_socket(); +} + +#undef Perl_pp_sockpair +OP * +Perl_pp_sockpair(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sockpair(); +} + +#undef Perl_pp_sort +OP * +Perl_pp_sort(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sort(); +} + +#undef Perl_pp_splice +OP * +Perl_pp_splice(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_splice(); +} + +#undef Perl_pp_split +OP * +Perl_pp_split(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_split(); +} + +#undef Perl_pp_sprintf +OP * +Perl_pp_sprintf(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sprintf(); +} + +#undef Perl_pp_sprotoent +OP * +Perl_pp_sprotoent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sprotoent(); +} + +#undef Perl_pp_spwent +OP * +Perl_pp_spwent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_spwent(); +} + +#undef Perl_pp_sqrt +OP * +Perl_pp_sqrt(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sqrt(); +} + +#undef Perl_pp_srand +OP * +Perl_pp_srand(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_srand(); +} + +#undef Perl_pp_srefgen +OP * +Perl_pp_srefgen(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_srefgen(); +} + +#undef Perl_pp_sselect +OP * +Perl_pp_sselect(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sselect(); +} + +#undef Perl_pp_sservent +OP * +Perl_pp_sservent(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sservent(); +} + +#undef Perl_pp_ssockopt +OP * +Perl_pp_ssockopt(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ssockopt(); +} + +#undef Perl_pp_stat +OP * +Perl_pp_stat(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_stat(); +} + +#undef Perl_pp_stringify +OP * +Perl_pp_stringify(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_stringify(); +} + +#undef Perl_pp_stub +OP * +Perl_pp_stub(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_stub(); +} + +#undef Perl_pp_study +OP * +Perl_pp_study(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_study(); +} + +#undef Perl_pp_subst +OP * +Perl_pp_subst(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_subst(); +} + +#undef Perl_pp_substcont +OP * +Perl_pp_substcont(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_substcont(); +} + +#undef Perl_pp_substr +OP * +Perl_pp_substr(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_substr(); +} + +#undef Perl_pp_subtract +OP * +Perl_pp_subtract(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_subtract(); +} + +#undef Perl_pp_symlink +OP * +Perl_pp_symlink(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_symlink(); +} + +#undef Perl_pp_syscall +OP * +Perl_pp_syscall(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_syscall(); +} + +#undef Perl_pp_sysopen +OP * +Perl_pp_sysopen(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sysopen(); +} + +#undef Perl_pp_sysread +OP * +Perl_pp_sysread(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sysread(); +} + +#undef Perl_pp_sysseek +OP * +Perl_pp_sysseek(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_sysseek(); +} + +#undef Perl_pp_system +OP * +Perl_pp_system(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_system(); +} + +#undef Perl_pp_syswrite +OP * +Perl_pp_syswrite(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_syswrite(); +} + +#undef Perl_pp_tell +OP * +Perl_pp_tell(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_tell(); +} + +#undef Perl_pp_telldir +OP * +Perl_pp_telldir(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_telldir(); +} + +#undef Perl_pp_threadsv +OP * +Perl_pp_threadsv(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_threadsv(); +} + +#undef Perl_pp_tie +OP * +Perl_pp_tie(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_tie(); +} + +#undef Perl_pp_tied +OP * +Perl_pp_tied(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_tied(); +} + +#undef Perl_pp_time +OP * +Perl_pp_time(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_time(); +} + +#undef Perl_pp_tms +OP * +Perl_pp_tms(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_tms(); +} + +#undef Perl_pp_trans +OP * +Perl_pp_trans(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_trans(); +} + +#undef Perl_pp_truncate +OP * +Perl_pp_truncate(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_truncate(); +} + +#undef Perl_pp_uc +OP * +Perl_pp_uc(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_uc(); +} + +#undef Perl_pp_ucfirst +OP * +Perl_pp_ucfirst(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_ucfirst(); +} + +#undef Perl_pp_umask +OP * +Perl_pp_umask(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_umask(); +} + +#undef Perl_pp_undef +OP * +Perl_pp_undef(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_undef(); +} + +#undef Perl_pp_unlink +OP * +Perl_pp_unlink(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_unlink(); +} + +#undef Perl_pp_unpack +OP * +Perl_pp_unpack(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_unpack(); +} + +#undef Perl_pp_unshift +OP * +Perl_pp_unshift(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_unshift(); +} + +#undef Perl_pp_unstack +OP * +Perl_pp_unstack(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_unstack(); +} + +#undef Perl_pp_untie +OP * +Perl_pp_untie(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_untie(); +} + +#undef Perl_pp_utime +OP * +Perl_pp_utime(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_utime(); +} + +#undef Perl_pp_values +OP * +Perl_pp_values(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_values(); +} + +#undef Perl_pp_vec +OP * +Perl_pp_vec(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_vec(); +} + +#undef Perl_pp_wait +OP * +Perl_pp_wait(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_wait(); +} + +#undef Perl_pp_waitpid +OP * +Perl_pp_waitpid(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_waitpid(); +} + +#undef Perl_pp_wantarray +OP * +Perl_pp_wantarray(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_wantarray(); +} + +#undef Perl_pp_warn +OP * +Perl_pp_warn(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_warn(); +} + +#undef Perl_pp_xor +OP * +Perl_pp_xor(void *pPerl) +{ + return ((CPerlObj*)pPerl)->Perl_pp_xor(); +} + +END_EXTERN_C + +#endif /* PERL_OBJECT */ diff --git a/perlapi.h b/perlapi.h new file mode 100755 index 0000000..d1d8dd5 --- /dev/null +++ b/perlapi.h @@ -0,0 +1,34 @@ +/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!! + This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h, + perlvars.h and thrdvar.h. Any changes made here will be lost! +*/ + +#if defined(PERL_OBJECT) + +/* declare accessor functions for Perl variables */ + +START_EXTERN_C + +#undef PERLVAR +#undef PERLVARA +#undef PERLVARI +#undef PERLVARIC +#define PERLVAR(v,t) EXTERN_C t* Perl_##v##_ptr(void *p); +#define PERLVARA(v,n,t) typedef t PL_##v##_t[n]; \ + EXTERN_C PL_##v##_t* Perl_##v##_ptr(void *p); +#define PERLVARI(v,t,i) PERLVAR(v,t) +#define PERLVARIC(v,t,i) PERLVAR(v,t) + +#include "thrdvar.h" +#include "intrpvar.h" +#include "perlvars.h" + +#undef PERLVAR +#undef PERLVARA +#undef PERLVARI +#undef PERLVARIC + +END_EXTERN_C + +#endif /* PERL_OBJECT */ + diff --git a/perly.c b/perly.c index 1a31506..b92de4e 100644 --- a/perly.c +++ b/perly.c @@ -16,6 +16,8 @@ static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; #define dep() deprecate("\"do\" to call subroutines") +static void yydestruct(pTHXo_ void *ptr); + #line 30 "perly.y" #define YYERRCODE 256 static short yylhs[] = { -1, @@ -1316,21 +1318,6 @@ struct ysv { YYSTYPE oldyylval; }; -void -Perl_yydestruct(pTHX_ void *ptr) -{ - struct ysv* ysave = (struct ysv*)ptr; - if (ysave->yyss) Safefree(ysave->yyss); - if (ysave->yyvs) Safefree(ysave->yyvs); - yydebug = ysave->oldyydebug; - yynerrs = ysave->oldyynerrs; - yyerrflag = ysave->oldyyerrflag; - yychar = ysave->oldyychar; - yyval = ysave->oldyyval; - yylval = ysave->oldyylval; - Safefree(ysave); -} - int Perl_yyparse(pTHX) { @@ -1350,7 +1337,7 @@ Perl_yyparse(pTHX) struct ysv *ysave; New(73, ysave, 1, struct ysv); - SAVEDESTRUCTOR(Perl_yydestruct, ysave); + SAVEDESTRUCTOR(yydestruct, ysave); ysave->oldyydebug = yydebug; ysave->oldyynerrs = yynerrs; ysave->oldyyerrflag = yyerrflag; @@ -2384,3 +2371,24 @@ yyabort: yyaccept: return retval; } + + +#ifdef PERL_OBJECT +#define NO_XSLOCKS +#include "XSUB.h" +#endif + +static void +yydestruct(pTHXo_ void *ptr) +{ + struct ysv* ysave = (struct ysv*)ptr; + if (ysave->yyss) Safefree(ysave->yyss); + if (ysave->yyvs) Safefree(ysave->yyvs); + yydebug = ysave->oldyydebug; + yynerrs = ysave->oldyynerrs; + yyerrflag = ysave->oldyyerrflag; + yychar = ysave->oldyychar; + yyval = ysave->oldyyval; + yylval = ysave->oldyylval; + Safefree(ysave); +} diff --git a/pp.c b/pp.c index faa6656..3bd26f4 100644 --- a/pp.c +++ b/pp.c @@ -5186,7 +5186,7 @@ PP(pp_lock) DEBUG_S(PerlIO_printf(PerlIO_stderr(), "0x%lx: pp_lock lock 0x%lx\n", (unsigned long)thr, (unsigned long)sv);) MUTEX_UNLOCK(MgMUTEXP(mg)); - save_destructor(Perl_unlock_condpair, sv); + SAVEDESTRUCTOR(Perl_unlock_condpair, sv); } #endif /* USE_THREADS */ if (SvTYPE(retsv) == SVt_PVAV || SvTYPE(retsv) == SVt_PVHV diff --git a/pp_ctl.c b/pp_ctl.c index af6394d..d7fec16 100644 --- a/pp_ctl.c +++ b/pp_ctl.c @@ -32,6 +32,16 @@ #define CALLOP *PL_op #endif +static I32 sortcv(pTHXo_ SV *a, SV *b); +static I32 sv_ncmp(pTHXo_ SV *a, SV *b); +static I32 sv_i_ncmp(pTHXo_ SV *a, SV *b); +static I32 amagic_ncmp(pTHXo_ SV *a, SV *b); +static I32 amagic_i_ncmp(pTHXo_ SV *a, SV *b); +static I32 amagic_cmp(pTHXo_ SV *a, SV *b); +static I32 amagic_cmp_locale(pTHXo_ SV *a, SV *b); +static I32 sv_cmp_static(pTHXo_ SV *a, SV *b); +static I32 sv_cmp_locale_static(pTHXo_ SV *a, SV *b); + PP(pp_wantarray) { djSP; @@ -755,120 +765,6 @@ PP(pp_mapwhile) } } -STATIC I32 -S_sv_ncmp(pTHX_ SV *a, SV *b) -{ - NV nv1 = SvNV(a); - NV nv2 = SvNV(b); - return nv1 < nv2 ? -1 : nv1 > nv2 ? 1 : 0; -} - -STATIC I32 -S_sv_i_ncmp(pTHX_ SV *a, SV *b) -{ - IV iv1 = SvIV(a); - IV iv2 = SvIV(b); - return iv1 < iv2 ? -1 : iv1 > iv2 ? 1 : 0; -} -#define tryCALL_AMAGICbin(left,right,meth,svp) STMT_START { \ - *svp = Nullsv; \ - if (PL_amagic_generation) { \ - if (SvAMAGIC(left)||SvAMAGIC(right))\ - *svp = amagic_call(left, \ - right, \ - CAT2(meth,_amg), \ - 0); \ - } \ - } STMT_END - -STATIC I32 -S_amagic_ncmp(pTHX_ register SV *a, register SV *b) -{ - SV *tmpsv; - tryCALL_AMAGICbin(a,b,ncmp,&tmpsv); - if (tmpsv) { - NV d; - - if (SvIOK(tmpsv)) { - I32 i = SvIVX(tmpsv); - if (i > 0) - return 1; - return i? -1 : 0; - } - d = SvNV(tmpsv); - if (d > 0) - return 1; - return d? -1 : 0; - } - return sv_ncmp(a, b); -} - -STATIC I32 -S_amagic_i_ncmp(pTHX_ register SV *a, register SV *b) -{ - SV *tmpsv; - tryCALL_AMAGICbin(a,b,ncmp,&tmpsv); - if (tmpsv) { - NV d; - - if (SvIOK(tmpsv)) { - I32 i = SvIVX(tmpsv); - if (i > 0) - return 1; - return i? -1 : 0; - } - d = SvNV(tmpsv); - if (d > 0) - return 1; - return d? -1 : 0; - } - return sv_i_ncmp(a, b); -} - -STATIC I32 -S_amagic_cmp(pTHX_ register SV *str1, register SV *str2) -{ - SV *tmpsv; - tryCALL_AMAGICbin(str1,str2,scmp,&tmpsv); - if (tmpsv) { - NV d; - - if (SvIOK(tmpsv)) { - I32 i = SvIVX(tmpsv); - if (i > 0) - return 1; - return i? -1 : 0; - } - d = SvNV(tmpsv); - if (d > 0) - return 1; - return d? -1 : 0; - } - return sv_cmp(str1, str2); -} - -STATIC I32 -S_amagic_cmp_locale(pTHX_ register SV *str1, register SV *str2) -{ - SV *tmpsv; - tryCALL_AMAGICbin(str1,str2,scmp,&tmpsv); - if (tmpsv) { - NV d; - - if (SvIOK(tmpsv)) { - I32 i = SvIVX(tmpsv); - if (i > 0) - return 1; - return i? -1 : 0; - } - d = SvNV(tmpsv); - if (d > 0) - return 1; - return d? -1 : 0; - } - return sv_cmp_locale(str1, str2); -} - PP(pp_sort) { djSP; dMARK; dORIGMARK; @@ -974,7 +870,7 @@ PP(pp_sort) (void)SvREFCNT_inc(cv); /* in preparation for POPSUB */ } PL_sortcxix = cxstack_ix; - qsortsv((myorigmark+1), max, FUNC_NAME_TO_PTR(S_sortcv)); + qsortsv((myorigmark+1), max, FUNC_NAME_TO_PTR(sortcv)); POPBLOCK(cx,PL_curpm); PL_stack_sp = newsp; @@ -989,18 +885,18 @@ PP(pp_sort) (PL_op->op_private & OPpSORT_NUMERIC) ? ( (PL_op->op_private & OPpSORT_INTEGER) ? ( overloading - ? FUNC_NAME_TO_PTR(S_amagic_i_ncmp) - : FUNC_NAME_TO_PTR(S_sv_i_ncmp)) + ? FUNC_NAME_TO_PTR(amagic_i_ncmp) + : FUNC_NAME_TO_PTR(sv_i_ncmp)) : ( overloading - ? FUNC_NAME_TO_PTR(S_amagic_ncmp) - : FUNC_NAME_TO_PTR(S_sv_ncmp))) + ? FUNC_NAME_TO_PTR(amagic_ncmp) + : FUNC_NAME_TO_PTR(sv_ncmp))) : ( (PL_op->op_private & OPpLOCALE) ? ( overloading - ? FUNC_NAME_TO_PTR(S_amagic_cmp_locale) - : FUNC_NAME_TO_PTR(Perl_sv_cmp_locale)) + ? FUNC_NAME_TO_PTR(amagic_cmp_locale) + : FUNC_NAME_TO_PTR(sv_cmp_locale_static)) : ( overloading - ? FUNC_NAME_TO_PTR(S_amagic_cmp) - : FUNC_NAME_TO_PTR(Perl_sv_cmp) ))); + ? FUNC_NAME_TO_PTR(amagic_cmp) + : FUNC_NAME_TO_PTR(sv_cmp_static) ))); if (PL_op->op_private & OPpSORT_REVERSE) { SV **p = ORIGMARK+1; SV **q = ORIGMARK+max; @@ -1595,30 +1491,6 @@ PP(pp_caller) RETURN; } -STATIC I32 -S_sortcv(pTHX_ SV *a, SV *b) -{ - dTHR; - I32 oldsaveix = PL_savestack_ix; - I32 oldscopeix = PL_scopestack_ix; - I32 result; - GvSV(PL_firstgv) = a; - GvSV(PL_secondgv) = b; - PL_stack_sp = PL_stack_base; - PL_op = PL_sortcop; - CALLRUNOPS(aTHX); - if (PL_stack_sp != PL_stack_base + 1) - Perl_croak(aTHX_ "Sort subroutine didn't return single value"); - if (!SvNIOKp(*PL_stack_sp)) - Perl_croak(aTHX_ "Sort subroutine didn't return a numeric value"); - result = SvIV(*PL_stack_sp); - while (PL_scopestack_ix > oldscopeix) { - LEAVE; - } - leave_scope(oldsaveix); - return result; -} - PP(pp_reset) { djSP; @@ -3503,13 +3375,8 @@ struct partition_stack_entry { /* Return < 0 == 0 or > 0 as the value of elt1 is < elt2, == elt2, > elt2 */ -#ifdef PERL_OBJECT #define qsort_cmp(elt1, elt2) \ - ((this->*compare)(array[elt1], array[elt2])) -#else -#define qsort_cmp(elt1, elt2) \ - ((*compare)(aTHX_ array[elt1], array[elt2])) -#endif + ((*compare)(aTHXo_ array[elt1], array[elt2])) #ifdef QSORT_ORDER_GUESS #define QSORT_NOTICE_SWAP swapped++; @@ -4080,3 +3947,163 @@ S_qsortsv(pTHX_ SV ** array, size_t num_elts, SVCOMPARE_t compare) /* Believe it or not, the array is sorted at this point! */ } + + +#ifdef PERL_OBJECT +#define NO_XSLOCKS +#undef this +#define this pPerl +#include "XSUB.h" +#endif + + +static I32 +sortcv(pTHXo_ SV *a, SV *b) +{ + dTHR; + I32 oldsaveix = PL_savestack_ix; + I32 oldscopeix = PL_scopestack_ix; + I32 result; + GvSV(PL_firstgv) = a; + GvSV(PL_secondgv) = b; + PL_stack_sp = PL_stack_base; + PL_op = PL_sortcop; + CALLRUNOPS(aTHX); + if (PL_stack_sp != PL_stack_base + 1) + Perl_croak(aTHX_ "Sort subroutine didn't return single value"); + if (!SvNIOKp(*PL_stack_sp)) + Perl_croak(aTHX_ "Sort subroutine didn't return a numeric value"); + result = SvIV(*PL_stack_sp); + while (PL_scopestack_ix > oldscopeix) { + LEAVE; + } + leave_scope(oldsaveix); + return result; +} + + +static I32 +sv_ncmp(pTHXo_ SV *a, SV *b) +{ + NV nv1 = SvNV(a); + NV nv2 = SvNV(b); + return nv1 < nv2 ? -1 : nv1 > nv2 ? 1 : 0; +} + +static I32 +sv_i_ncmp(pTHXo_ SV *a, SV *b) +{ + IV iv1 = SvIV(a); + IV iv2 = SvIV(b); + return iv1 < iv2 ? -1 : iv1 > iv2 ? 1 : 0; +} +#define tryCALL_AMAGICbin(left,right,meth,svp) STMT_START { \ + *svp = Nullsv; \ + if (PL_amagic_generation) { \ + if (SvAMAGIC(left)||SvAMAGIC(right))\ + *svp = amagic_call(left, \ + right, \ + CAT2(meth,_amg), \ + 0); \ + } \ + } STMT_END + +static I32 +amagic_ncmp(pTHXo_ register SV *a, register SV *b) +{ + SV *tmpsv; + tryCALL_AMAGICbin(a,b,ncmp,&tmpsv); + if (tmpsv) { + NV d; + + if (SvIOK(tmpsv)) { + I32 i = SvIVX(tmpsv); + if (i > 0) + return 1; + return i? -1 : 0; + } + d = SvNV(tmpsv); + if (d > 0) + return 1; + return d? -1 : 0; + } + return sv_ncmp(aTHXo_ a, b); +} + +static I32 +amagic_i_ncmp(pTHXo_ register SV *a, register SV *b) +{ + SV *tmpsv; + tryCALL_AMAGICbin(a,b,ncmp,&tmpsv); + if (tmpsv) { + NV d; + + if (SvIOK(tmpsv)) { + I32 i = SvIVX(tmpsv); + if (i > 0) + return 1; + return i? -1 : 0; + } + d = SvNV(tmpsv); + if (d > 0) + return 1; + return d? -1 : 0; + } + return sv_i_ncmp(aTHXo_ a, b); +} + +static I32 +amagic_cmp(pTHXo_ register SV *str1, register SV *str2) +{ + SV *tmpsv; + tryCALL_AMAGICbin(str1,str2,scmp,&tmpsv); + if (tmpsv) { + NV d; + + if (SvIOK(tmpsv)) { + I32 i = SvIVX(tmpsv); + if (i > 0) + return 1; + return i? -1 : 0; + } + d = SvNV(tmpsv); + if (d > 0) + return 1; + return d? -1 : 0; + } + return sv_cmp(str1, str2); +} + +static I32 +amagic_cmp_locale(pTHXo_ register SV *str1, register SV *str2) +{ + SV *tmpsv; + tryCALL_AMAGICbin(str1,str2,scmp,&tmpsv); + if (tmpsv) { + NV d; + + if (SvIOK(tmpsv)) { + I32 i = SvIVX(tmpsv); + if (i > 0) + return 1; + return i? -1 : 0; + } + d = SvNV(tmpsv); + if (d > 0) + return 1; + return d? -1 : 0; + } + return sv_cmp_locale(str1, str2); +} + +static I32 +sv_cmp_locale_static(pTHXo_ register SV *str1, register SV *str2) +{ + return sv_cmp_locale(str1, str2); +} + +static I32 +sv_cmp_static(pTHXo_ register SV *str1, register SV *str2) +{ + return sv_cmp(str1, str2); +} diff --git a/pp_hot.c b/pp_hot.c index f4ed171..81a4f56 100644 --- a/pp_hot.c +++ b/pp_hot.c @@ -34,25 +34,7 @@ /* Hot code. */ #ifdef USE_THREADS -STATIC void -S_unset_cvowner(pTHX_ void *cvarg) -{ - register CV* cv = (CV *) cvarg; -#ifdef DEBUGGING - dTHR; -#endif /* DEBUGGING */ - - DEBUG_S((PerlIO_printf(PerlIO_stderr(), "%p unsetting CvOWNER of %p:%s\n", - thr, cv, SvPEEK((SV*)cv)))); - MUTEX_LOCK(CvMUTEXP(cv)); - DEBUG_S(if (CvDEPTH(cv) != 0) - PerlIO_printf(PerlIO_stderr(), "depth %ld != 0\n", - CvDEPTH(cv));); - assert(thr == CvOWNER(cv)); - CvOWNER(cv) = 0; - MUTEX_UNLOCK(CvMUTEXP(cv)); - SvREFCNT_dec(cv); -} +static void unset_cvowner(pTHXo_ void *cvarg); #endif /* USE_THREADS */ PP(pp_const) @@ -2142,7 +2124,7 @@ try_autoload: DEBUG_S(PerlIO_printf(PerlIO_stderr(), "%p: pp_entersub lock %p\n", thr, sv);) MUTEX_UNLOCK(MgMUTEXP(mg)); - save_destructor(Perl_unlock_condpair, sv); + SAVEDESTRUCTOR(Perl_unlock_condpair, sv); } MUTEX_LOCK(CvMUTEXP(cv)); } @@ -2187,7 +2169,7 @@ try_autoload: CvOWNER(cv) = thr; SvREFCNT_inc(cv); if (CvDEPTH(cv) == 0) - SAVEDESTRUCTOR(S_unset_cvowner, (void*) cv); + SAVEDESTRUCTOR(unset_cvowner, (void*) cv); } else { /* (2) => grab ownership of cv. (3) => make clone */ @@ -2224,7 +2206,7 @@ try_autoload: DEBUG_S(if (CvDEPTH(cv) != 0) PerlIO_printf(PerlIO_stderr(), "depth %ld != 0\n", CvDEPTH(cv));); - SAVEDESTRUCTOR(S_unset_cvowner, (void*) cv); + SAVEDESTRUCTOR(unset_cvowner, (void*) cv); } } #endif /* USE_THREADS */ @@ -2597,3 +2579,24 @@ PP(pp_method) RETURN; } +#ifdef USE_THREADS +static void +unset_cvowner(pTHXo_ void *cvarg) +{ + register CV* cv = (CV *) cvarg; +#ifdef DEBUGGING + dTHR; +#endif /* DEBUGGING */ + + DEBUG_S((PerlIO_printf(PerlIO_stderr(), "%p unsetting CvOWNER of %p:%s\n", + thr, cv, SvPEEK((SV*)cv)))); + MUTEX_LOCK(CvMUTEXP(cv)); + DEBUG_S(if (CvDEPTH(cv) != 0) + PerlIO_printf(PerlIO_stderr(), "depth %ld != 0\n", + CvDEPTH(cv));); + assert(thr == CvOWNER(cv)); + CvOWNER(cv) = 0; + MUTEX_UNLOCK(CvMUTEXP(cv)); + SvREFCNT_dec(cv); +} +#endif /* USE_THREADS */ diff --git a/proto.h b/proto.h index 2fac5d0..b02eb43 100644 --- a/proto.h +++ b/proto.h @@ -676,16 +676,8 @@ VIRTUAL void Perl_safexfree(Malloc_t where); #if defined(PERL_GLOBAL_STRUCT) VIRTUAL struct perl_vars * Perl_GetVars(pTHX); #endif -VIRTUAL void Perl_yydestruct(pTHX_ void *ptr); VIRTUAL int Perl_runops_standard(pTHX); VIRTUAL int Perl_runops_debug(pTHX); -#if defined(WIN32) -#if defined(PERL_OBJECT) -VIRTUAL int& Perl_ErrorNo(pTHX); -#else -VIRTUAL int* Perl_ErrorNo(pTHX); -#endif -#endif VIRTUAL void Perl_sv_catpvf_mg(pTHX_ SV *sv, const char* pat, ...); VIRTUAL void Perl_sv_catpv_mg(pTHX_ SV *sv, const char *ptr); VIRTUAL void Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len); @@ -752,8 +744,6 @@ STATIC void S_hv_magic_check(pTHX_ HV *hv, bool *needs_copy, bool *needs_store); STATIC void S_save_magic(pTHX_ I32 mgs_ix, SV *sv); STATIC int S_magic_methpack(pTHX_ SV *sv, MAGIC *mg, char *meth); STATIC int S_magic_methcall(pTHX_ SV *sv, MAGIC *mg, char *meth, I32 f, int n, SV *val); -STATIC void S_unwind_handler_stack(pTHX_ void *p); -STATIC void S_restore_magic(pTHX_ void *p); #endif #if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) STATIC I32 S_list_assignment(pTHX_ OP *o); @@ -830,19 +820,9 @@ STATIC void S_save_lines(pTHX_ AV *array, SV *sv); STATIC OP* S_doeval(pTHX_ int gimme, OP** startop); STATIC PerlIO * S_doopen_pmc(pTHX_ const char *name, const char *mode); STATIC void S_qsortsv(pTHX_ SV ** array, size_t num_elts, SVCOMPARE_t f); -STATIC I32 S_sortcv(pTHX_ SV *a, SV *b); -STATIC I32 S_sv_ncmp(pTHX_ SV *a, SV *b); -STATIC I32 S_sv_i_ncmp(pTHX_ SV *a, SV *b); -STATIC I32 S_amagic_ncmp(pTHX_ SV *a, SV *b); -STATIC I32 S_amagic_i_ncmp(pTHX_ SV *a, SV *b); -STATIC I32 S_amagic_cmp(pTHX_ SV *str1, SV *str2); -STATIC I32 S_amagic_cmp_locale(pTHX_ SV *str1, SV *str2); #endif #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) STATIC CV* S_get_db_sub(pTHX_ SV **svp, CV *cv); -# if defined(USE_THREADS) -STATIC void S_unset_cvowner(pTHX_ void *cvarg); -# endif #endif #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) STATIC OP* S_doform(pTHX_ CV *cv, GV *gv, OP *retop); @@ -875,7 +855,6 @@ STATIC I32 S_add_data(pTHX_ I32 n, char *s); STATIC void S_re_croak2(pTHX_ const char* pat1, const char* pat2, ...) __attribute__((noreturn)); STATIC I32 S_regpposixcc(pTHX_ I32 value); STATIC void S_checkposixcc(pTHX); -STATIC void S_clear_re(pTHX_ void *r); #endif #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) STATIC I32 S_regmatch(pTHX_ regnode *prog); @@ -888,7 +867,6 @@ STATIC CHECKPOINT S_regcppush(pTHX_ I32 parenfloor); STATIC char* S_regcppop(pTHX); STATIC char* S_regcp_set_to(pTHX_ I32 ss); STATIC void S_cache_re(pTHX_ regexp *prog); -STATIC void S_restore_pos(pTHX_ void *arg); STATIC U8* S_reghop(pTHX_ U8 *pos, I32 off); STATIC U8* S_reghopmaybe(pTHX_ U8 *pos, I32 off); #endif @@ -915,10 +893,6 @@ STATIC void S_del_xnv(pTHX_ XPVNV* p); STATIC void S_del_xpv(pTHX_ XPV* p); STATIC void S_del_xrv(pTHX_ XRV* p); STATIC void S_sv_unglob(pTHX_ SV* sv); -STATIC void S_do_report_used(pTHX_ SV *sv); -STATIC void S_do_clean_objs(pTHX_ SV *sv); -STATIC void S_do_clean_named_objs(pTHX_ SV *sv); -STATIC void S_do_clean_all(pTHX_ SV *sv); STATIC void S_not_a_number(pTHX_ SV *sv); STATIC void S_visit(pTHX_ SVFUNC_t f); # if defined(PURIFY) @@ -969,9 +943,6 @@ STATIC void S_depcom(pTHX); STATIC char* S_incl_perldb(pTHX); STATIC I32 S_utf16_textfilter(pTHX_ int idx, SV *sv, int maxlen); STATIC I32 S_utf16rev_textfilter(pTHX_ int idx, SV *sv, int maxlen); -STATIC void S_restore_rsfp(pTHX_ void *f); -STATIC void S_restore_expect(pTHX_ void *e); -STATIC void S_restore_lex_expect(pTHX_ void *e); # if defined(CRIPPLED_CC) STATIC int S_uni(pTHX_ I32 f, char *s); # endif diff --git a/regcomp.c b/regcomp.c index 9c9fc14..d2717e1 100644 --- a/regcomp.c +++ b/regcomp.c @@ -169,11 +169,7 @@ static scan_data_t zero_scan_data = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, #define CHR_SVLEN(sv) (UTF ? sv_len_utf8(sv) : SvCUR(sv)) #define CHR_DIST(a,b) (UTF ? utf8_distance(a,b) : a - b) -STATIC void -S_clear_re(pTHX_ void *r) -{ - ReREFCNT_dec((regexp *)r); -} +static void clear_re(pTHXo_ void *r); STATIC void S_scan_commit(pTHX_ scan_data_t *data) @@ -3390,3 +3386,17 @@ Perl_save_re_context(pTHX) SAVEPPTR(PL_reg_starttry); /* from regexec.c */ #endif } + +#ifdef PERL_OBJECT +#define NO_XSLOCKS +#include "XSUB.h" +#undef this +#define this pPerl +#endif + +static void +clear_re(pTHXo_ void *r) +{ + ReREFCNT_dec((regexp *)r); +} + diff --git a/regcomp.h b/regcomp.h index 61726bb..7bddc1b 100644 --- a/regcomp.h +++ b/regcomp.h @@ -241,14 +241,14 @@ struct regnode_2 { #define FAIL(m) \ STMT_START { \ if (!SIZE_ONLY) \ - SAVEDESTRUCTOR(S_clear_re,(void*)PL_regcomp_rx); \ + SAVEDESTRUCTOR(clear_re,(void*)PL_regcomp_rx); \ Perl_croak(aTHX_ "/%.127s/: %s", PL_regprecomp,m); \ } STMT_END #define FAIL2(pat,m) \ STMT_START { \ if (!SIZE_ONLY) \ - SAVEDESTRUCTOR(S_clear_re,(void*)PL_regcomp_rx); \ + SAVEDESTRUCTOR(clear_re,(void*)PL_regcomp_rx); \ S_re_croak2(aTHX_ "/%.127s/: ",pat,PL_regprecomp,m); \ } STMT_END diff --git a/regexec.c b/regexec.c index 58d6af9..286131a 100644 --- a/regexec.c +++ b/regexec.c @@ -110,6 +110,9 @@ #define HOPc(pos,off) ((char*)HOP(pos,off)) #define HOPMAYBEc(pos,off) ((char*)HOPMAYBE(pos,off)) +static void restore_pos(pTHXo_ void *arg); + + STATIC CHECKPOINT S_regcppush(pTHX_ I32 parenfloor) { @@ -243,22 +246,6 @@ S_cache_re(pTHX_ regexp *prog) PL_reg_re = prog; } -STATIC void -S_restore_pos(pTHX_ void *arg) -{ - dTHR; - if (PL_reg_eval_set) { - if (PL_reg_oldsaved) { - PL_reg_re->subbeg = PL_reg_oldsaved; - PL_reg_re->sublen = PL_reg_oldsavedlen; - RX_MATCH_COPIED_on(PL_reg_re); - } - PL_reg_magic->mg_len = PL_reg_oldpos; - PL_reg_eval_set = 0; - PL_curpm = PL_reg_oldcurpm; - } -} - /* * Need to implement the following flags for reg_anch: * @@ -2022,7 +2009,7 @@ got_it: sv_setsv(oreplsv, GvSV(PL_replgv));/* So that when GvSV(replgv) is restored, the value remains the same. */ - restore_pos(0); + restore_pos(aTHXo_ 0); } /* make sure $`, $&, $', and $digit will work later */ @@ -2049,7 +2036,7 @@ got_it: phooey: if (PL_reg_eval_set) - restore_pos(0); + restore_pos(aTHXo_ 0); return 0; } @@ -2098,7 +2085,7 @@ S_regtry(pTHX_ regexp *prog, char *startpos) } PL_reg_magic = mg; PL_reg_oldpos = mg->mg_len; - SAVEDESTRUCTOR(S_restore_pos, 0); + SAVEDESTRUCTOR(restore_pos, 0); } if (!PL_reg_curpm) New(22,PL_reg_curpm, 1, PMOP); @@ -4455,3 +4442,25 @@ S_reghopmaybe(pTHX_ U8* s, I32 off) } return s; } + +#ifdef PERL_OBJECT +#define NO_XSLOCKS +#include "XSUB.h" +#endif + +static void +restore_pos(pTHXo_ void *arg) +{ + dTHR; + if (PL_reg_eval_set) { + if (PL_reg_oldsaved) { + PL_reg_re->subbeg = PL_reg_oldsaved; + PL_reg_re->sublen = PL_reg_oldsavedlen; + RX_MATCH_COPIED_on(PL_reg_re); + } + PL_reg_magic->mg_len = PL_reg_oldpos; + PL_reg_eval_set = 0; + PL_curpm = PL_reg_oldcurpm; + } +} + diff --git a/scope.c b/scope.c index f87689e..3da5e63 100644 --- a/scope.c +++ b/scope.c @@ -824,7 +824,7 @@ Perl_leave_scope(pTHX_ I32 base) break; case SAVEt_DESTRUCTOR: ptr = SSPOPPTR; - CALLDESTRUCTOR(aTHX_ ptr); + CALLDESTRUCTOR(aTHXo_ ptr); break; case SAVEt_REGCONTEXT: case SAVEt_ALLOC: diff --git a/scope.h b/scope.h index c0070bd..4a3a2ed 100644 --- a/scope.h +++ b/scope.h @@ -81,11 +81,7 @@ #define SAVEGENERICSV(s) save_generic_svref((SV**)&(s)) #define SAVEDELETE(h,k,l) \ save_delete(SOFT_CAST(HV*)(h), SOFT_CAST(char*)(k), (I32)(l)) -#ifdef PERL_OBJECT -#define CALLDESTRUCTOR (this->*SSPOPDPTR) -#else #define CALLDESTRUCTOR (*SSPOPDPTR) -#endif #define SAVEDESTRUCTOR(f,p) \ save_destructor((DESTRUCTORFUNC_t)(FUNC_NAME_TO_PTR(f)), \ SOFT_CAST(void*)(p)) diff --git a/sv.c b/sv.c index 9973156..5bb9a87 100644 --- a/sv.c +++ b/sv.c @@ -38,15 +38,22 @@ #endif #ifdef PERL_OBJECT -#define FCALL this->*f #define VTBL this->*vtbl #else /* !PERL_OBJECT */ #define VTBL *vtbl -#define FCALL *f #endif /* PERL_OBJECT */ +#define FCALL *f #define SV_CHECK_THINKFIRST(sv) if (SvTHINKFIRST(sv)) sv_force_normal(sv) +static void do_report_used(pTHXo_ SV *sv); +static void do_clean_objs(pTHXo_ SV *sv); +#ifndef DISABLE_DESTRUCTOR_KLUDGE +static void do_clean_named_objs(pTHXo_ SV *sv); +#endif +static void do_clean_all(pTHXo_ SV *sv); + + #ifdef PURIFY #define new_SV(p) \ @@ -277,87 +284,36 @@ S_visit(pTHX_ SVFUNC_t f) svend = &sva[SvREFCNT(sva)]; for (sv = sva + 1; sv < svend; ++sv) { if (SvTYPE(sv) != SVTYPEMASK) - (FCALL)(aTHX_ sv); + (FCALL)(aTHXo_ sv); } } } #endif /* PURIFY */ -STATIC void -S_do_report_used(pTHX_ SV *sv) -{ - if (SvTYPE(sv) != SVTYPEMASK) { - /* XXX Perhaps this ought to go to Perl_debug_log, if DEBUGGING. */ - PerlIO_printf(PerlIO_stderr(), "****\n"); - sv_dump(sv); - } -} - void Perl_sv_report_used(pTHX) { - visit(FUNC_NAME_TO_PTR(S_do_report_used)); + visit(FUNC_NAME_TO_PTR(do_report_used)); } -STATIC void -S_do_clean_objs(pTHX_ SV *sv) -{ - SV* rv; - - if (SvROK(sv) && SvOBJECT(rv = SvRV(sv))) { - DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning object ref:\n "), sv_dump(sv));) - SvROK_off(sv); - SvRV(sv) = 0; - SvREFCNT_dec(rv); - } - - /* XXX Might want to check arrays, etc. */ -} - -#ifndef DISABLE_DESTRUCTOR_KLUDGE -STATIC void -S_do_clean_named_objs(pTHX_ SV *sv) -{ - if (SvTYPE(sv) == SVt_PVGV) { - if ( SvOBJECT(GvSV(sv)) || - GvAV(sv) && SvOBJECT(GvAV(sv)) || - GvHV(sv) && SvOBJECT(GvHV(sv)) || - GvIO(sv) && SvOBJECT(GvIO(sv)) || - GvCV(sv) && SvOBJECT(GvCV(sv)) ) - { - DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning named glob object:\n "), sv_dump(sv));) - SvREFCNT_dec(sv); - } - } -} -#endif - void Perl_sv_clean_objs(pTHX) { PL_in_clean_objs = TRUE; - visit(FUNC_NAME_TO_PTR(S_do_clean_objs)); + visit(FUNC_NAME_TO_PTR(do_clean_objs)); #ifndef DISABLE_DESTRUCTOR_KLUDGE /* some barnacles may yet remain, clinging to typeglobs */ - visit(FUNC_NAME_TO_PTR(S_do_clean_named_objs)); + visit(FUNC_NAME_TO_PTR(do_clean_named_objs)); #endif PL_in_clean_objs = FALSE; } -STATIC void -S_do_clean_all(pTHX_ SV *sv) -{ - DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning loops: SV at 0x%lx\n", sv) );) - SvFLAGS(sv) |= SVf_BREAK; - SvREFCNT_dec(sv); -} - void Perl_sv_clean_all(pTHX) { PL_in_clean_all = TRUE; - visit(FUNC_NAME_TO_PTR(S_do_clean_all)); + visit(FUNC_NAME_TO_PTR(do_clean_all)); PL_in_clean_all = FALSE; } @@ -5241,3 +5197,61 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV SvCUR(sv) = p - SvPVX(sv); } } + + +#ifdef PERL_OBJECT +#define NO_XSLOCKS +#include "XSUB.h" +#endif + +static void +do_report_used(pTHXo_ SV *sv) +{ + if (SvTYPE(sv) != SVTYPEMASK) { + /* XXX Perhaps this ought to go to Perl_debug_log, if DEBUGGING. */ + PerlIO_printf(PerlIO_stderr(), "****\n"); + sv_dump(sv); + } +} + +static void +do_clean_objs(pTHXo_ SV *sv) +{ + SV* rv; + + if (SvROK(sv) && SvOBJECT(rv = SvRV(sv))) { + DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning object ref:\n "), sv_dump(sv));) + SvROK_off(sv); + SvRV(sv) = 0; + SvREFCNT_dec(rv); + } + + /* XXX Might want to check arrays, etc. */ +} + +#ifndef DISABLE_DESTRUCTOR_KLUDGE +static void +do_clean_named_objs(pTHXo_ SV *sv) +{ + if (SvTYPE(sv) == SVt_PVGV) { + if ( SvOBJECT(GvSV(sv)) || + GvAV(sv) && SvOBJECT(GvAV(sv)) || + GvHV(sv) && SvOBJECT(GvHV(sv)) || + GvIO(sv) && SvOBJECT(GvIO(sv)) || + GvCV(sv) && SvOBJECT(GvCV(sv)) ) + { + DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning named glob object:\n "), sv_dump(sv));) + SvREFCNT_dec(sv); + } + } +} +#endif + +static void +do_clean_all(pTHXo_ SV *sv) +{ + DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning loops: SV at 0x%lx\n", sv) );) + SvFLAGS(sv) |= SVf_BREAK; + SvREFCNT_dec(sv); +} + diff --git a/thrdvar.h b/thrdvar.h index c823393..5406085 100644 --- a/thrdvar.h +++ b/thrdvar.h @@ -138,7 +138,7 @@ PERLVAR(Tseen_evals, I32) /* from regcomp.c */ PERLVAR(Tregcomp_rx, regexp *) /* from regcomp.c */ PERLVAR(Textralen, I32) /* from regcomp.c */ PERLVAR(Tcolorset, int) /* from regcomp.c */ -PERLVAR(Tcolors[6], char *) /* from regcomp.c */ +PERLVARA(Tcolors,6, char *) /* from regcomp.c */ PERLVAR(Treginput, char *) /* String-input pointer. */ PERLVAR(Tregbol, char *) /* Beginning of input, for ^ check. */ PERLVAR(Tregeol, char *) /* End of input, for $ check. */ diff --git a/toke.c b/toke.c index d9e3bf7..85b37a4 100644 --- a/toke.c +++ b/toke.c @@ -20,6 +20,10 @@ static char ident_too_long[] = "Identifier too long"; +static void restore_rsfp(pTHXo_ void *f); +static void restore_expect(pTHXo_ void *e); +static void restore_lex_expect(pTHXo_ void *e); + #define UTF (PL_hints & HINT_UTF8) /* * Note: we try to be careful never to call the isXXX_utf8() functions @@ -282,12 +286,12 @@ Perl_lex_start(pTHX_ SV *line) SAVESPTR(PL_linestr); SAVEPPTR(PL_lex_brackstack); SAVEPPTR(PL_lex_casestack); - SAVEDESTRUCTOR(S_restore_rsfp, PL_rsfp); + SAVEDESTRUCTOR(restore_rsfp, PL_rsfp); SAVESPTR(PL_lex_stuff); SAVEI32(PL_lex_defer); SAVESPTR(PL_lex_repl); - SAVEDESTRUCTOR(S_restore_expect, PL_tokenbuf + PL_expect); /* encode as pointer */ - SAVEDESTRUCTOR(S_restore_lex_expect, PL_tokenbuf + PL_expect); + SAVEDESTRUCTOR(restore_expect, PL_tokenbuf + PL_expect); /* encode as pointer */ + SAVEDESTRUCTOR(restore_lex_expect, PL_tokenbuf + PL_expect); PL_lex_state = LEX_NORMAL; PL_lex_defer = 0; @@ -330,32 +334,6 @@ Perl_lex_end(pTHX) } STATIC void -S_restore_rsfp(pTHX_ void *f) -{ - PerlIO *fp = (PerlIO*)f; - - if (PL_rsfp == PerlIO_stdin()) - PerlIO_clearerr(PL_rsfp); - else if (PL_rsfp && (PL_rsfp != fp)) - PerlIO_close(PL_rsfp); - PL_rsfp = fp; -} - -STATIC void -S_restore_expect(pTHX_ void *e) -{ - /* a safe way to store a small integer in a pointer */ - PL_expect = (expectation)((char *)e - PL_tokenbuf); -} - -STATIC void -S_restore_lex_expect(pTHX_ void *e) -{ - /* a safe way to store a small integer in a pointer */ - PL_lex_expect = (expectation)((char *)e - PL_tokenbuf); -} - -STATIC void S_incline(pTHX_ char *s) { dTHR; @@ -6432,3 +6410,34 @@ Perl_yyerror(pTHX_ char *s) } +#ifdef PERL_OBJECT +#define NO_XSLOCKS +#include "XSUB.h" +#endif + +static void +restore_rsfp(pTHXo_ void *f) +{ + PerlIO *fp = (PerlIO*)f; + + if (PL_rsfp == PerlIO_stdin()) + PerlIO_clearerr(PL_rsfp); + else if (PL_rsfp && (PL_rsfp != fp)) + PerlIO_close(PL_rsfp); + PL_rsfp = fp; +} + +static void +restore_expect(pTHXo_ void *e) +{ + /* a safe way to store a small integer in a pointer */ + PL_expect = (expectation)((char *)e - PL_tokenbuf); +} + +static void +restore_lex_expect(pTHXo_ void *e) +{ + /* a safe way to store a small integer in a pointer */ + PL_lex_expect = (expectation)((char *)e - PL_tokenbuf); +} + diff --git a/util.c b/util.c index 9374299..64580f6 100644 --- a/util.c +++ b/util.c @@ -546,7 +546,7 @@ Perl_new_collate(pTHX_ const char *newcoll) } void -perl_set_numeric_radix(void) +Perl_set_numeric_radix(pTHX) { #ifdef USE_LOCALE_NUMERIC # ifdef HAS_LOCALECONV @@ -589,7 +589,7 @@ Perl_new_numeric(pTHX_ const char *newnum) PL_numeric_name = savepv(newnum); PL_numeric_standard = (strEQ(newnum, "C") || strEQ(newnum, "POSIX")); PL_numeric_local = TRUE; - perl_set_numeric_radix(); + set_numeric_radix(); } #endif /* USE_LOCALE_NUMERIC */ @@ -618,7 +618,7 @@ Perl_set_numeric_local(pTHX) setlocale(LC_NUMERIC, PL_numeric_name); PL_numeric_standard = FALSE; PL_numeric_local = TRUE; - perl_set_numeric_radix(); + set_numeric_radix(); } #endif /* USE_LOCALE_NUMERIC */ diff --git a/win32/GenCAPI.pl b/win32/GenCAPI.pl index 3cd581d..703a156 100644 --- a/win32/GenCAPI.pl +++ b/win32/GenCAPI.pl @@ -511,13 +511,13 @@ statusvalue_vms sublex_info thrsv threadnum -PL_piMem -PL_piENV -PL_piStdIO -PL_piLIO -PL_piDir -PL_piSock -PL_piProc +PL_Mem +PL_Env +PL_StdIO +PL_LIO +PL_Dir +PL_Sock +PL_Proc cshname threadsv_names thread @@ -544,7 +544,7 @@ sub readvars(\%$$) { or die "$0: Can't open $file: $!\n"; while () { s/[ \t]*#.*//; # Delete comments. - if (/PERLVARI?C?\($pre(\w+),\s*([^,)]+)/) { + if (/PERLVARA?I?C?\($pre(\w+),\s*([^,)]+)/) { $$syms{$1} = $2; } } @@ -675,13 +675,13 @@ void Perl_deb(const char pat, ...) { } -#undef PL_piMem -#undef PL_piENV -#undef PL_piStdIO -#undef PL_piLIO -#undef PL_piDir -#undef PL_piSock -#undef PL_piProc +#undef PL_Mem +#undef PL_Env +#undef PL_StdIO +#undef PL_LIO +#undef PL_Dir +#undef PL_Sock +#undef PL_Proc int * _win32_errno(void) { @@ -690,27 +690,27 @@ int * _win32_errno(void) FILE* _win32_stdin(void) { - return (FILE*)pPerl->PL_piStdIO->Stdin(); + return (FILE*)pPerl->PL_StdIO->Stdin(); } FILE* _win32_stdout(void) { - return (FILE*)pPerl->PL_piStdIO->Stdout(); + return (FILE*)pPerl->PL_StdIO->Stdout(); } FILE* _win32_stderr(void) { - return (FILE*)pPerl->PL_piStdIO->Stderr(); + return (FILE*)pPerl->PL_StdIO->Stderr(); } int _win32_ferror(FILE *fp) { - return pPerl->PL_piStdIO->Error((PerlIO*)fp, ErrorNo()); + return pPerl->PL_StdIO->Error((PerlIO*)fp, ErrorNo()); } int _win32_feof(FILE *fp) { - return pPerl->PL_piStdIO->Eof((PerlIO*)fp, ErrorNo()); + return pPerl->PL_StdIO->Eof((PerlIO*)fp, ErrorNo()); } char* _win32_strerror(int e) @@ -725,12 +725,12 @@ void _win32_perror(const char *str) int _win32_vfprintf(FILE *pf, const char *format, va_list arg) { - return pPerl->PL_piStdIO->Vprintf((PerlIO*)pf, ErrorNo(), format, arg); + return pPerl->PL_StdIO->Vprintf((PerlIO*)pf, ErrorNo(), format, arg); } int _win32_vprintf(const char *format, va_list arg) { - return pPerl->PL_piStdIO->Vprintf(pPerl->PL_piStdIO->Stdout(), ErrorNo(), format, arg); + return pPerl->PL_StdIO->Vprintf(pPerl->PL_StdIO->Stdout(), ErrorNo(), format, arg); } int _win32_fprintf(FILE *pf, const char *format, ...) @@ -755,532 +755,532 @@ int _win32_printf(const char *format, ...) size_t _win32_fread(void *buf, size_t size, size_t count, FILE *pf) { - return pPerl->PL_piStdIO->Read((PerlIO*)pf, buf, (size*count), ErrorNo()); + return pPerl->PL_StdIO->Read((PerlIO*)pf, buf, (size*count), ErrorNo()); } size_t _win32_fwrite(const void *buf, size_t size, size_t count, FILE *pf) { - return pPerl->PL_piStdIO->Write((PerlIO*)pf, buf, (size*count), ErrorNo()); + return pPerl->PL_StdIO->Write((PerlIO*)pf, buf, (size*count), ErrorNo()); } FILE* _win32_fopen(const char *path, const char *mode) { - return (FILE*)pPerl->PL_piStdIO->Open(path, mode, ErrorNo()); + return (FILE*)pPerl->PL_StdIO->Open(path, mode, ErrorNo()); } FILE* _win32_fdopen(int fh, const char *mode) { - return (FILE*)pPerl->PL_piStdIO->Fdopen(fh, mode, ErrorNo()); + return (FILE*)pPerl->PL_StdIO->Fdopen(fh, mode, ErrorNo()); } FILE* _win32_freopen(const char *path, const char *mode, FILE *pf) { - return (FILE*)pPerl->PL_piStdIO->Reopen(path, mode, (PerlIO*)pf, ErrorNo()); + return (FILE*)pPerl->PL_StdIO->Reopen(path, mode, (PerlIO*)pf, ErrorNo()); } int _win32_fclose(FILE *pf) { - return pPerl->PL_piStdIO->Close((PerlIO*)pf, ErrorNo()); + return pPerl->PL_StdIO->Close((PerlIO*)pf, ErrorNo()); } int _win32_fputs(const char *s,FILE *pf) { - return pPerl->PL_piStdIO->Puts((PerlIO*)pf, s, ErrorNo()); + return pPerl->PL_StdIO->Puts((PerlIO*)pf, s, ErrorNo()); } int _win32_fputc(int c,FILE *pf) { - return pPerl->PL_piStdIO->Putc((PerlIO*)pf, c, ErrorNo()); + return pPerl->PL_StdIO->Putc((PerlIO*)pf, c, ErrorNo()); } int _win32_ungetc(int c,FILE *pf) { - return pPerl->PL_piStdIO->Ungetc((PerlIO*)pf, c, ErrorNo()); + return pPerl->PL_StdIO->Ungetc((PerlIO*)pf, c, ErrorNo()); } int _win32_getc(FILE *pf) { - return pPerl->PL_piStdIO->Getc((PerlIO*)pf, ErrorNo()); + return pPerl->PL_StdIO->Getc((PerlIO*)pf, ErrorNo()); } int _win32_fileno(FILE *pf) { - return pPerl->PL_piStdIO->Fileno((PerlIO*)pf, ErrorNo()); + return pPerl->PL_StdIO->Fileno((PerlIO*)pf, ErrorNo()); } void _win32_clearerr(FILE *pf) { - pPerl->PL_piStdIO->Clearerr((PerlIO*)pf, ErrorNo()); + pPerl->PL_StdIO->Clearerr((PerlIO*)pf, ErrorNo()); } int _win32_fflush(FILE *pf) { - return pPerl->PL_piStdIO->Flush((PerlIO*)pf, ErrorNo()); + return pPerl->PL_StdIO->Flush((PerlIO*)pf, ErrorNo()); } long _win32_ftell(FILE *pf) { - return pPerl->PL_piStdIO->Tell((PerlIO*)pf, ErrorNo()); + return pPerl->PL_StdIO->Tell((PerlIO*)pf, ErrorNo()); } int _win32_fseek(FILE *pf,long offset,int origin) { - return pPerl->PL_piStdIO->Seek((PerlIO*)pf, offset, origin, ErrorNo()); + return pPerl->PL_StdIO->Seek((PerlIO*)pf, offset, origin, ErrorNo()); } int _win32_fgetpos(FILE *pf,fpos_t *p) { - return pPerl->PL_piStdIO->Getpos((PerlIO*)pf, p, ErrorNo()); + return pPerl->PL_StdIO->Getpos((PerlIO*)pf, p, ErrorNo()); } int _win32_fsetpos(FILE *pf,const fpos_t *p) { - return pPerl->PL_piStdIO->Setpos((PerlIO*)pf, p, ErrorNo()); + return pPerl->PL_StdIO->Setpos((PerlIO*)pf, p, ErrorNo()); } void _win32_rewind(FILE *pf) { - pPerl->PL_piStdIO->Rewind((PerlIO*)pf, ErrorNo()); + pPerl->PL_StdIO->Rewind((PerlIO*)pf, ErrorNo()); } FILE* _win32_tmpfile(void) { - return (FILE*)pPerl->PL_piStdIO->Tmpfile(ErrorNo()); + return (FILE*)pPerl->PL_StdIO->Tmpfile(ErrorNo()); } void _win32_setbuf(FILE *pf, char *buf) { - pPerl->PL_piStdIO->SetBuf((PerlIO*)pf, buf, ErrorNo()); + pPerl->PL_StdIO->SetBuf((PerlIO*)pf, buf, ErrorNo()); } int _win32_setvbuf(FILE *pf, char *buf, int type, size_t size) { - return pPerl->PL_piStdIO->SetVBuf((PerlIO*)pf, buf, type, size, ErrorNo()); + return pPerl->PL_StdIO->SetVBuf((PerlIO*)pf, buf, type, size, ErrorNo()); } char* _win32_fgets(char *s, int n, FILE *pf) { - return pPerl->PL_piStdIO->Gets((PerlIO*)pf, s, n, ErrorNo()); + return pPerl->PL_StdIO->Gets((PerlIO*)pf, s, n, ErrorNo()); } char* _win32_gets(char *s) { - return _win32_fgets(s, 80, (FILE*)pPerl->PL_piStdIO->Stdin()); + return _win32_fgets(s, 80, (FILE*)pPerl->PL_StdIO->Stdin()); } int _win32_fgetc(FILE *pf) { - return pPerl->PL_piStdIO->Getc((PerlIO*)pf, ErrorNo()); + return pPerl->PL_StdIO->Getc((PerlIO*)pf, ErrorNo()); } int _win32_putc(int c, FILE *pf) { - return pPerl->PL_piStdIO->Putc((PerlIO*)pf, c, ErrorNo()); + return pPerl->PL_StdIO->Putc((PerlIO*)pf, c, ErrorNo()); } int _win32_puts(const char *s) { - return pPerl->PL_piStdIO->Puts(pPerl->PL_piStdIO->Stdout(), s, ErrorNo()); + return pPerl->PL_StdIO->Puts(pPerl->PL_StdIO->Stdout(), s, ErrorNo()); } int _win32_getchar(void) { - return pPerl->PL_piStdIO->Getc(pPerl->PL_piStdIO->Stdin(), ErrorNo()); + return pPerl->PL_StdIO->Getc(pPerl->PL_StdIO->Stdin(), ErrorNo()); } int _win32_putchar(int c) { - return pPerl->PL_piStdIO->Putc(pPerl->PL_piStdIO->Stdout(), c, ErrorNo()); + return pPerl->PL_StdIO->Putc(pPerl->PL_StdIO->Stdout(), c, ErrorNo()); } void* _win32_malloc(size_t size) { - return pPerl->PL_piMem->Malloc(size); + return pPerl->PL_Mem->Malloc(size); } void* _win32_calloc(size_t numitems, size_t size) { - return pPerl->PL_piMem->Malloc(numitems*size); + return pPerl->PL_Mem->Malloc(numitems*size); } void* _win32_realloc(void *block, size_t size) { - return pPerl->PL_piMem->Realloc(block, size); + return pPerl->PL_Mem->Realloc(block, size); } void _win32_free(void *block) { - pPerl->PL_piMem->Free(block); + pPerl->PL_Mem->Free(block); } void _win32_abort(void) { - pPerl->PL_piProc->Abort(); + pPerl->PL_Proc->Abort(); } int _win32_pipe(int *phandles, unsigned int psize, int textmode) { - return pPerl->PL_piProc->Pipe(phandles); + return pPerl->PL_Proc->Pipe(phandles); } FILE* _win32_popen(const char *command, const char *mode) { - return (FILE*)pPerl->PL_piProc->Popen(command, mode); + return (FILE*)pPerl->PL_Proc->Popen(command, mode); } int _win32_pclose(FILE *pf) { - return pPerl->PL_piProc->Pclose((PerlIO*)pf); + return pPerl->PL_Proc->Pclose((PerlIO*)pf); } unsigned _win32_sleep(unsigned int t) { - return pPerl->PL_piProc->Sleep(t); + return pPerl->PL_Proc->Sleep(t); } int _win32_spawnvp(int mode, const char *cmdname, const char *const *argv) { - return pPerl->PL_piProc->Spawnvp(mode, cmdname, argv); + return pPerl->PL_Proc->Spawnvp(mode, cmdname, argv); } int _win32_mkdir(const char *dir, int mode) { - return pPerl->PL_piDir->Makedir(dir, mode, ErrorNo()); + return pPerl->PL_Dir->Makedir(dir, mode, ErrorNo()); } int _win32_rmdir(const char *dir) { - return pPerl->PL_piDir->Rmdir(dir, ErrorNo()); + return pPerl->PL_Dir->Rmdir(dir, ErrorNo()); } int _win32_chdir(const char *dir) { - return pPerl->PL_piDir->Chdir(dir, ErrorNo()); + return pPerl->PL_Dir->Chdir(dir, ErrorNo()); } #undef stat int _win32_fstat(int fd,struct stat *sbufptr) { - return pPerl->PL_piLIO->FileStat(fd, sbufptr, ErrorNo()); + return pPerl->PL_LIO->FileStat(fd, sbufptr, ErrorNo()); } int _win32_stat(const char *name,struct stat *sbufptr) { - return pPerl->PL_piLIO->NameStat(name, sbufptr, ErrorNo()); + return pPerl->PL_LIO->NameStat(name, sbufptr, ErrorNo()); } int _win32_rename(const char *oname, const char *newname) { - return pPerl->PL_piLIO->Rename(oname, newname, ErrorNo()); + return pPerl->PL_LIO->Rename(oname, newname, ErrorNo()); } int _win32_setmode(int fd, int mode) { - return pPerl->PL_piLIO->Setmode(fd, mode, ErrorNo()); + return pPerl->PL_LIO->Setmode(fd, mode, ErrorNo()); } long _win32_lseek(int fd, long offset, int origin) { - return pPerl->PL_piLIO->Lseek(fd, offset, origin, ErrorNo()); + return pPerl->PL_LIO->Lseek(fd, offset, origin, ErrorNo()); } long _win32_tell(int fd) { - return pPerl->PL_piStdIO->Tell((PerlIO*)fd, ErrorNo()); + return pPerl->PL_StdIO->Tell((PerlIO*)fd, ErrorNo()); } int _win32_dup(int fd) { - return pPerl->PL_piLIO->Dup(fd, ErrorNo()); + return pPerl->PL_LIO->Dup(fd, ErrorNo()); } int _win32_dup2(int h1, int h2) { - return pPerl->PL_piLIO->Dup2(h1, h2, ErrorNo()); + return pPerl->PL_LIO->Dup2(h1, h2, ErrorNo()); } int _win32_open(const char *path, int oflag,...) { - return pPerl->PL_piLIO->Open(path, oflag, ErrorNo()); + return pPerl->PL_LIO->Open(path, oflag, ErrorNo()); } int _win32_close(int fd) { - return pPerl->PL_piLIO->Close(fd, ErrorNo()); + return pPerl->PL_LIO->Close(fd, ErrorNo()); } int _win32_read(int fd, void *buf, unsigned int cnt) { - return pPerl->PL_piLIO->Read(fd, buf, cnt, ErrorNo()); + return pPerl->PL_LIO->Read(fd, buf, cnt, ErrorNo()); } int _win32_write(int fd, const void *buf, unsigned int cnt) { - return pPerl->PL_piLIO->Write(fd, buf, cnt, ErrorNo()); + return pPerl->PL_LIO->Write(fd, buf, cnt, ErrorNo()); } int _win32_times(struct tms *timebuf) { - return pPerl->PL_piProc->Times(timebuf); + return pPerl->PL_Proc->Times(timebuf); } int _win32_ioctl(int i, unsigned int u, char *data) { - return pPerl->PL_piLIO->IOCtl(i, u, data, ErrorNo()); + return pPerl->PL_LIO->IOCtl(i, u, data, ErrorNo()); } int _win32_utime(const char *f, struct utimbuf *t) { - return pPerl->PL_piLIO->Utime((char*)f, t, ErrorNo()); + return pPerl->PL_LIO->Utime((char*)f, t, ErrorNo()); } int _win32_uname(struct utsname *name) { - return pPerl->PL_piENV->Uname(name, ErrorNo()); + return pPerl->PL_Env->Uname(name, ErrorNo()); } unsigned long _win32_os_id(void) { - return pPerl->PL_piENV->OsID(); + return pPerl->PL_Env->OsID(); } char* _win32_getenv(const char *name) { - return pPerl->PL_piENV->Getenv(name, ErrorNo()); + return pPerl->PL_Env->Getenv(name, ErrorNo()); } int _win32_putenv(const char *name) { - return pPerl->PL_piENV->Putenv(name, ErrorNo()); + return pPerl->PL_Env->Putenv(name, ErrorNo()); } int _win32_open_osfhandle(long handle, int flags) { - return pPerl->PL_piStdIO->OpenOSfhandle(handle, flags); + return pPerl->PL_StdIO->OpenOSfhandle(handle, flags); } long _win32_get_osfhandle(int fd) { - return pPerl->PL_piStdIO->GetOSfhandle(fd); + return pPerl->PL_StdIO->GetOSfhandle(fd); } u_long _win32_htonl (u_long hostlong) { - return pPerl->PL_piSock->Htonl(hostlong); + return pPerl->PL_Sock->Htonl(hostlong); } u_short _win32_htons (u_short hostshort) { - return pPerl->PL_piSock->Htons(hostshort); + return pPerl->PL_Sock->Htons(hostshort); } u_long _win32_ntohl (u_long netlong) { - return pPerl->PL_piSock->Ntohl(netlong); + return pPerl->PL_Sock->Ntohl(netlong); } u_short _win32_ntohs (u_short netshort) { - return pPerl->PL_piSock->Ntohs(netshort); + return pPerl->PL_Sock->Ntohs(netshort); } unsigned long _win32_inet_addr (const char * cp) { - return pPerl->PL_piSock->InetAddr(cp, ErrorNo()); + return pPerl->PL_Sock->InetAddr(cp, ErrorNo()); } char * _win32_inet_ntoa (struct in_addr in) { - return pPerl->PL_piSock->InetNtoa(in, ErrorNo()); + return pPerl->PL_Sock->InetNtoa(in, ErrorNo()); } SOCKET _win32_socket (int af, int type, int protocol) { - return pPerl->PL_piSock->Socket(af, type, protocol, ErrorNo()); + return pPerl->PL_Sock->Socket(af, type, protocol, ErrorNo()); } int _win32_bind (SOCKET s, const struct sockaddr *addr, int namelen) { - return pPerl->PL_piSock->Bind(s, addr, namelen, ErrorNo()); + return pPerl->PL_Sock->Bind(s, addr, namelen, ErrorNo()); } int _win32_listen (SOCKET s, int backlog) { - return pPerl->PL_piSock->Listen(s, backlog, ErrorNo()); + return pPerl->PL_Sock->Listen(s, backlog, ErrorNo()); } SOCKET _win32_accept (SOCKET s, struct sockaddr *addr, int *addrlen) { - return pPerl->PL_piSock->Accept(s, addr, addrlen, ErrorNo()); + return pPerl->PL_Sock->Accept(s, addr, addrlen, ErrorNo()); } int _win32_connect (SOCKET s, const struct sockaddr *name, int namelen) { - return pPerl->PL_piSock->Connect(s, name, namelen, ErrorNo()); + return pPerl->PL_Sock->Connect(s, name, namelen, ErrorNo()); } int _win32_send (SOCKET s, const char * buf, int len, int flags) { - return pPerl->PL_piSock->Send(s, buf, len, flags, ErrorNo()); + return pPerl->PL_Sock->Send(s, buf, len, flags, ErrorNo()); } int _win32_sendto (SOCKET s, const char * buf, int len, int flags, const struct sockaddr *to, int tolen) { - return pPerl->PL_piSock->Sendto(s, buf, len, flags, to, tolen, ErrorNo()); + return pPerl->PL_Sock->Sendto(s, buf, len, flags, to, tolen, ErrorNo()); } int _win32_recv (SOCKET s, char * buf, int len, int flags) { - return pPerl->PL_piSock->Recv(s, buf, len, flags, ErrorNo()); + return pPerl->PL_Sock->Recv(s, buf, len, flags, ErrorNo()); } int _win32_recvfrom (SOCKET s, char * buf, int len, int flags, struct sockaddr *from, int * fromlen) { - return pPerl->PL_piSock->Recvfrom(s, buf, len, flags, from, fromlen, ErrorNo()); + return pPerl->PL_Sock->Recvfrom(s, buf, len, flags, from, fromlen, ErrorNo()); } int _win32_shutdown (SOCKET s, int how) { - return pPerl->PL_piSock->Shutdown(s, how, ErrorNo()); + return pPerl->PL_Sock->Shutdown(s, how, ErrorNo()); } int _win32_closesocket (SOCKET s) { - return pPerl->PL_piSock->Closesocket(s, ErrorNo()); + return pPerl->PL_Sock->Closesocket(s, ErrorNo()); } int _win32_ioctlsocket (SOCKET s, long cmd, u_long *argp) { - return pPerl->PL_piSock->Ioctlsocket(s, cmd, argp, ErrorNo()); + return pPerl->PL_Sock->Ioctlsocket(s, cmd, argp, ErrorNo()); } int _win32_setsockopt (SOCKET s, int level, int optname, const char * optval, int optlen) { - return pPerl->PL_piSock->Setsockopt(s, level, optname, optval, optlen, ErrorNo()); + return pPerl->PL_Sock->Setsockopt(s, level, optname, optval, optlen, ErrorNo()); } int _win32_getsockopt (SOCKET s, int level, int optname, char * optval, int *optlen) { - return pPerl->PL_piSock->Getsockopt(s, level, optname, optval, optlen, ErrorNo()); + return pPerl->PL_Sock->Getsockopt(s, level, optname, optval, optlen, ErrorNo()); } int _win32_getpeername (SOCKET s, struct sockaddr *name, int * namelen) { - return pPerl->PL_piSock->Getpeername(s, name, namelen, ErrorNo()); + return pPerl->PL_Sock->Getpeername(s, name, namelen, ErrorNo()); } int _win32_getsockname (SOCKET s, struct sockaddr *name, int * namelen) { - return pPerl->PL_piSock->Getsockname(s, name, namelen, ErrorNo()); + return pPerl->PL_Sock->Getsockname(s, name, namelen, ErrorNo()); } int _win32_gethostname (char * name, int namelen) { - return pPerl->PL_piSock->Gethostname(name, namelen, ErrorNo()); + return pPerl->PL_Sock->Gethostname(name, namelen, ErrorNo()); } struct hostent * _win32_gethostbyname(const char * name) { - return pPerl->PL_piSock->Gethostbyname(name, ErrorNo()); + return pPerl->PL_Sock->Gethostbyname(name, ErrorNo()); } struct hostent * _win32_gethostbyaddr(const char * addr, int len, int type) { - return pPerl->PL_piSock->Gethostbyaddr(addr, len, type, ErrorNo()); + return pPerl->PL_Sock->Gethostbyaddr(addr, len, type, ErrorNo()); } struct protoent * _win32_getprotobyname(const char * name) { - return pPerl->PL_piSock->Getprotobyname(name, ErrorNo()); + return pPerl->PL_Sock->Getprotobyname(name, ErrorNo()); } struct protoent * _win32_getprotobynumber(int proto) { - return pPerl->PL_piSock->Getprotobynumber(proto, ErrorNo()); + return pPerl->PL_Sock->Getprotobynumber(proto, ErrorNo()); } struct servent * _win32_getservbyname(const char * name, const char * proto) { - return pPerl->PL_piSock->Getservbyname(name, proto, ErrorNo()); + return pPerl->PL_Sock->Getservbyname(name, proto, ErrorNo()); } struct servent * _win32_getservbyport(int port, const char * proto) { - return pPerl->PL_piSock->Getservbyport(port, proto, ErrorNo()); + return pPerl->PL_Sock->Getservbyport(port, proto, ErrorNo()); } int _win32_select (int nfds, Perl_fd_set *rfds, Perl_fd_set *wfds, Perl_fd_set *xfds, const struct timeval *timeout) { - return pPerl->PL_piSock->Select(nfds, (char*)rfds, (char*)wfds, (char*)xfds, timeout, ErrorNo()); + return pPerl->PL_Sock->Select(nfds, (char*)rfds, (char*)wfds, (char*)xfds, timeout, ErrorNo()); } void _win32_endnetent(void) { - pPerl->PL_piSock->Endnetent(ErrorNo()); + pPerl->PL_Sock->Endnetent(ErrorNo()); } void _win32_endhostent(void) { - pPerl->PL_piSock->Endhostent(ErrorNo()); + pPerl->PL_Sock->Endhostent(ErrorNo()); } void _win32_endprotoent(void) { - pPerl->PL_piSock->Endprotoent(ErrorNo()); + pPerl->PL_Sock->Endprotoent(ErrorNo()); } void _win32_endservent(void) { - pPerl->PL_piSock->Endservent(ErrorNo()); + pPerl->PL_Sock->Endservent(ErrorNo()); } struct netent * _win32_getnetent(void) { - return pPerl->PL_piSock->Getnetent(ErrorNo()); + return pPerl->PL_Sock->Getnetent(ErrorNo()); } struct netent * _win32_getnetbyname(char *name) { - return pPerl->PL_piSock->Getnetbyname(name, ErrorNo()); + return pPerl->PL_Sock->Getnetbyname(name, ErrorNo()); } struct netent * _win32_getnetbyaddr(long net, int type) { - return pPerl->PL_piSock->Getnetbyaddr(net, type, ErrorNo()); + return pPerl->PL_Sock->Getnetbyaddr(net, type, ErrorNo()); } struct protoent *_win32_getprotoent(void) { - return pPerl->PL_piSock->Getprotoent(ErrorNo()); + return pPerl->PL_Sock->Getprotoent(ErrorNo()); } struct servent *_win32_getservent(void) { - return pPerl->PL_piSock->Getservent(ErrorNo()); + return pPerl->PL_Sock->Getservent(ErrorNo()); } void _win32_sethostent(int stayopen) { - pPerl->PL_piSock->Sethostent(stayopen, ErrorNo()); + pPerl->PL_Sock->Sethostent(stayopen, ErrorNo()); } void _win32_setnetent(int stayopen) { - pPerl->PL_piSock->Setnetent(stayopen, ErrorNo()); + pPerl->PL_Sock->Setnetent(stayopen, ErrorNo()); } void _win32_setprotoent(int stayopen) { - pPerl->PL_piSock->Setprotoent(stayopen, ErrorNo()); + pPerl->PL_Sock->Setprotoent(stayopen, ErrorNo()); } void _win32_setservent(int stayopen) { - pPerl->PL_piSock->Setservent(stayopen, ErrorNo()); + pPerl->PL_Sock->Setservent(stayopen, ErrorNo()); } } /* extern "C" */ EOCODE diff --git a/win32/Makefile b/win32/Makefile index 51f80c1..608d37e 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -40,7 +40,7 @@ INST_VER = \5.00557 # the same location. Commenting it out gives you a simpler # installation that is easier to understand for beginners. # -#INST_ARCH = \$(ARCHNAME) +INST_ARCH = \$(ARCHNAME) # # uncomment to enable threads-capabilities @@ -325,7 +325,7 @@ EXTUTILSDIR = $(LIBDIR)\extutils !IF "$(OBJECT)" == "-DPERL_OBJECT" PERLIMPLIB = ..\perlcore.lib PERLDLL = ..\perlcore.dll -#CAPILIB = $(COREDIR)\perlCAPI.lib +#CAPILIB = $(COREDIR)\perlapi.lib !ELSE PERLIMPLIB = ..\perl.lib PERLDLL = ..\perl.dll @@ -400,6 +400,7 @@ MICROCORE_SRC = \ ..\mg.c \ ..\op.c \ ..\perl.c \ + ..\perlapi.c \ ..\perly.c \ ..\pp.c \ ..\pp_ctl.c \ @@ -477,6 +478,7 @@ CORE_NOCFG_H = \ ..\op.h \ ..\opcode.h \ ..\perl.h \ + ..\perlapi.h \ ..\perlsdio.h \ ..\perlsfio.h \ ..\perly.h \ @@ -793,15 +795,12 @@ $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM) cd ..\..\win32 #!IF "$(OBJECT)" == "-DPERL_OBJECT" -#perlCAPI.cpp : $(MINIPERL) -# $(MINIPERL) GenCAPI.pl $(COREDIR) -# -#perlCAPI$(o) : perlCAPI.cpp +#perlapi$(o) : ..\perlapi.c # $(CC) $(CFLAGS_O) $(RUNTIME) -UPERLDLL -c \ -# $(OBJOUT_FLAG)perlCAPI$(o) perlCAPI.cpp +# $(OBJOUT_FLAG)perlapi$(o) ..\perlapi.c # -#$(CAPILIB) : perlCAPI.cpp perlCAPI$(o) -# lib /OUT:$(CAPILIB) perlCAPI$(o) +#$(CAPILIB) : ..\perlapi.c ..\perlapi$(o) +# lib /OUT:$(CAPILIB) ..\perlapi$(o) #!ENDIF $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs @@ -993,7 +992,6 @@ clean : -@erase perlmain$(o) -@erase config.w32 -@erase /f config.h - -@erase perlCAPI.cpp -@erase $(GLOBEXE) -@erase $(PERLEXE) -@erase $(PERLDLL) diff --git a/win32/makedef.pl b/win32/makedef.pl index f95d374..dc0869a 100644 --- a/win32/makedef.pl +++ b/win32/makedef.pl @@ -28,51 +28,50 @@ if ($define{PERL_OBJECT}) { print "LIBRARY PerlCore\n"; print "DESCRIPTION 'Perl interpreter'\n"; print "EXPORTS\n"; - output_symbol("perl_alloc"); +# output_symbol("perl_alloc"); output_symbol("perl_get_host_info"); output_symbol("perl_alloc_using"); - output_symbol("perl_construct"); - output_symbol("perl_destruct"); - output_symbol("perl_free"); - output_symbol("perl_parse"); - output_symbol("perl_run"); - output_symbol("RunPerl"); +# output_symbol("perl_construct"); +# output_symbol("perl_destruct"); +# output_symbol("perl_free"); +# output_symbol("perl_parse"); +# output_symbol("perl_run"); +# output_symbol("RunPerl"); output_symbol("GetPerlInterpreter"); - exit(0); +# exit(0); +} +else { + if ($CCTYPE ne 'GCC') { + print "LIBRARY Perl\n"; + print "DESCRIPTION 'Perl interpreter, export autogenerated'\n"; + } + else { + $define{'PERL_GLOBAL_STRUCT'} = 1; + $define{'MULTIPLICITY'} = 1; + } + print "EXPORTS\n"; } - -if ($CCTYPE ne 'GCC') - { - print "LIBRARY Perl\n"; - print "DESCRIPTION 'Perl interpreter, export autogenerated'\n"; - } -else - { - $define{'PERL_GLOBAL_STRUCT'} = 1; - $define{'MULTIPLICITY'} = 1; - } - -print "EXPORTS\n"; my %skip; my %export; -sub skip_symbols -{ - my $list = shift; - foreach my $symbol (@$list) - { - $skip{$symbol} = 1; - } +sub skip_symbols { + my $list = shift; + foreach my $symbol (@$list) { + $skip{$symbol} = 1; + } } -sub emit_symbols -{ - my $list = shift; - foreach my $symbol (@$list) - { - emit_symbol($symbol) unless exists $skip{$symbol}; - } +sub emit_symbols { + my $list = shift; + foreach my $symbol (@$list) { + my $skipsym = $symbol; + # XXX hack + if ($define{PERL_OBJECT}) { + $skipsym =~ s/^Perl_[GIT](\w+)_ptr$/PL_$1/; + } + emit_symbol($symbol) unless exists $skip{$skipsym}; + } } skip_symbols [qw( @@ -120,6 +119,24 @@ PL_cshname PL_opsave )]; +if ($define{'PERL_OBJECT'}) { + skip_symbols [qw( + Perl_getenv_len + Perl_my_popen + Perl_my_pclose + )]; +} +else { + skip_symbols [qw( + PL_Dir + PL_Env + PL_LIO + PL_Mem + PL_Proc + PL_Sock + PL_StdIO + )]; +} if ($define{'MYMALLOC'}) { @@ -194,13 +211,14 @@ unless ($define{'FAKE_THREADS'}) sub readvar { my $file = shift; + my $proc = shift || sub { "PL_$_[2]" }; open(VARS,$file) || die "Cannot open $file:$!"; my @syms; while () { # All symbols have a Perl_ prefix because that's what embed.h # sticks in front of them. - push(@syms,"PL_".$1) if (/\bPERLVARI?C?\([IGT](\w+)/); + push(@syms, &$proc($1,$2,$3)) if (/\bPERLVAR(A?I?C?)\(([IGT])(\w+)/); } close(VARS); return \@syms; @@ -267,23 +285,27 @@ for my $syms ('../global.sym','../pp.sym', '../globvar.sym') # variables -unless ($define{'PERL_GLOBAL_STRUCT'}) - { - my $glob = readvar("../perlvars.h"); - emit_symbols $glob; - } - -unless ($define{'MULTIPLICITY'}) - { - my $glob = readvar("../intrpvar.h"); - emit_symbols $glob; - } - -unless ($define{'MULTIPLICITY'} || $define{'USE_THREADS'}) - { - my $glob = readvar("../thrdvar.h"); - emit_symbols $glob; - } +if ($define{'PERL_OBJECT'}) { + for my $f ("../perlvars.h", "../intrpvar.h", "../thrdvar.h") { + my $glob = readvar($f, sub { "Perl_" . $_[1] . $_[2] . "_ptr" }); + emit_symbols $glob; + } +} +else { + unless ($define{'PERL_GLOBAL_STRUCT'}) { + my $glob = readvar("../perlvars.h"); + emit_symbols $glob; + } + unless ($define{'MULTIPLICITY'}) { + my $glob = readvar("../intrpvar.h"); + emit_symbols $glob; + } + + unless ($define{'MULTIPLICITY'} || $define{'USE_THREADS'}) { + my $glob = readvar("../thrdvar.h"); + emit_symbols $glob; + } +} while () { my $symbol; @@ -309,25 +331,28 @@ sub emit_symbol { sub output_symbol { my $symbol = shift; - if ($CCTYPE eq "BORLAND") { - # workaround Borland quirk by exporting both the straight - # name and a name with leading underscore. Note the - # alias *must* come after the symbol itself, if both - # are to be exported. (Linker bug?) - print "\t_$symbol\n"; - print "\t$symbol = _$symbol\n"; - } - elsif ($CCTYPE eq 'GCC') { - # Symbols have leading _ whole process is $%£"% slow - # so skip aliases for now - print "\t$symbol\n"; - } - else { - # for binary coexistence, export both the symbol and - # alias with leading underscore - print "\t$symbol\n"; - print "\t_$symbol = $symbol\n"; - } + print "\t$symbol\n"; +# XXX: binary compatibility between compilers is an exercise +# in frustration :-( +# if ($CCTYPE eq "BORLAND") { +# # workaround Borland quirk by exporting both the straight +# # name and a name with leading underscore. Note the +# # alias *must* come after the symbol itself, if both +# # are to be exported. (Linker bug?) +# print "\t_$symbol\n"; +# print "\t$symbol = _$symbol\n"; +# } +# elsif ($CCTYPE eq 'GCC') { +# # Symbols have leading _ whole process is $%@"% slow +# # so skip aliases for now +# print "\t$symbol\n"; +# } +# else { +# # for binary coexistence, export both the symbol and +# # alias with leading underscore +# print "\t$symbol\n"; +# print "\t_$symbol = $symbol\n"; +# } } 1; diff --git a/win32/perllib.c b/win32/perllib.c index 7cfe60d..8682f77 100644 --- a/win32/perllib.c +++ b/win32/perllib.c @@ -1473,10 +1473,12 @@ RunPerl(int argc, char **argv, char **env) #ifdef PERL_GLOBAL_STRUCT #define PERLVAR(var,type) /**/ +#define PERLVARA(var,type) /**/ #define PERLVARI(var,type,init) PL_Vars.var = init; #define PERLVARIC(var,type,init) PL_Vars.var = init; #include "perlvars.h" #undef PERLVAR +#undef PERLVARA #undef PERLVARI #undef PERLVARIC #endif diff --git a/win32/win32.c b/win32/win32.c index 1fffbaf..cbe50c2 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -90,7 +90,7 @@ static long tokenize(char *str, char **dest, char ***destv); static BOOL has_shell_metachars(char *ptr); static long filetime_to_clock(PFILETIME ft); static BOOL filetime_from_time(PFILETIME ft, time_t t); -static char * get_emd_part(char **leading, char *trailing, ...); +static char * get_emd_part(SV *leading, char *trailing, ...); static void remove_dead_process(long deceased); static long find_pid(int pid); static char * qualified_path(const char *cmd); @@ -134,9 +134,9 @@ IsWinNT(void) return (win32_os_id() == VER_PLATFORM_WIN32_NT); } -/* *ptr is expected to point to valid allocated space (can't be NULL) */ -char* -GetRegStrFromKey(HKEY hkey, const char *lpszValueName, char** ptr, DWORD* lpDataLen) +/* sv (if non-NULL) is expected to be POK (valid allocated SvPVX(sv)) */ +static char* +get_regstr_from(HKEY hkey, const char *valuename, SV *sv) { /* Retrieve a REG_SZ or REG_EXPAND_SZ from the registry */ HKEY handle; @@ -147,33 +147,38 @@ GetRegStrFromKey(HKEY hkey, const char *lpszValueName, char** ptr, DWORD* lpData retval = RegOpenKeyEx(hkey, subkey, 0, KEY_READ, &handle); if (retval == ERROR_SUCCESS) { - retval = RegQueryValueEx(handle, lpszValueName, 0, &type, NULL, lpDataLen); + DWORD datalen; + retval = RegQueryValueEx(handle, valuename, 0, &type, NULL, &datalen); if (retval == ERROR_SUCCESS && type == REG_SZ) { dPERLOBJ; - Renew(*ptr, *lpDataLen, char); - retval = RegQueryValueEx(handle, lpszValueName, 0, NULL, - (PBYTE)*ptr, lpDataLen); - if (retval == ERROR_SUCCESS) - str = *ptr; + if (!sv) + sv = sv_2mortal(newSVpvn("",0)); + SvGROW(sv, datalen); + retval = RegQueryValueEx(handle, valuename, 0, NULL, + (PBYTE)SvPVX(sv), &datalen); + if (retval == ERROR_SUCCESS) { + str = SvPVX(sv); + SvCUR_set(sv,datalen-1); + } } RegCloseKey(handle); } return str; } -/* *ptr is expected to point to valid allocated space (can't be NULL) */ -char* -GetRegStr(const char *lpszValueName, char** ptr, DWORD* lpDataLen) +/* sv (if non-NULL) is expected to be POK (valid allocated SvPVX(sv)) */ +static char* +get_regstr(const char *valuename, SV *sv) { - char *str = GetRegStrFromKey(HKEY_CURRENT_USER, lpszValueName, ptr, lpDataLen); + char *str = get_regstr_from(HKEY_CURRENT_USER, valuename, sv); if (!str) - str = GetRegStrFromKey(HKEY_LOCAL_MACHINE, lpszValueName, ptr, lpDataLen); + str = get_regstr_from(HKEY_LOCAL_MACHINE, valuename, sv); return str; } -/* *prev_path is expected to point to valid allocated space (can't be NULL) */ +/* prev_path (if non-NULL) is expected to be POK (valid allocated SvPVX(sv)) */ static char * -get_emd_part(char **prev_path, char *trailing_path, ...) +get_emd_part(SV *prev_path, char *trailing_path, ...) { char base[10]; va_list ap; @@ -242,13 +247,11 @@ get_emd_part(char **prev_path, char *trailing_path, ...) if (GetFileAttributes(mod_name) != (DWORD) -1) { /* directory exists */ dPERLOBJ; - newsize = strlen(mod_name) + 1; - oldsize = strlen(*prev_path) + 1; - newsize += oldsize; /* includes plus 1 for ';' */ - Renew(*prev_path, newsize, char); - (*prev_path)[oldsize-1] = ';'; - strcpy(&(*prev_path)[oldsize], mod_name); - return *prev_path; + if (!prev_path) + prev_path = sv_2mortal(newSVpvn("",0)); + sv_catpvn(prev_path, ";", 1); + sv_catpv(prev_path, mod_name); + return SvPVX(prev_path); } return Nullch; @@ -257,73 +260,60 @@ get_emd_part(char **prev_path, char *trailing_path, ...) char * win32_get_privlib(pTHX_ char *pl) { + dPERLOBJ; char *stdlib = "lib"; char buffer[MAX_PATH+1]; - char **path; - DWORD datalen; - dPERLOBJ; - SV *sv = sv_2mortal(newSVpvn("",127)); + SV *sv = Nullsv; /* $stdlib = $HKCU{"lib-$]"} || $HKLM{"lib-$]"} || $HKCU{"lib"} || $HKLM{"lib"} || ""; */ sprintf(buffer, "%s-%s", stdlib, pl); - path = &SvPVX(sv); - if (!GetRegStr(buffer, path, &datalen)) - (void)GetRegStr(stdlib, path, &datalen); + if (!get_regstr(buffer, sv)) + (void)get_regstr(stdlib, sv); /* $stdlib .= ";$EMD/../../lib" */ - (void)get_emd_part(path, stdlib, ARCHNAME, "bin", Nullch); - SvCUR_set(sv, strlen(*path)); - SvLEN_set(sv, SvCUR(sv)+1); - return SvPVX(sv); + return get_emd_part(sv, stdlib, ARCHNAME, "bin", Nullch); } char * win32_get_sitelib(pTHX_ char *pl) { + dPERLOBJ; char *sitelib = "sitelib"; char regstr[40]; char pathstr[MAX_PATH+1]; DWORD datalen; - char **path1, *str1 = Nullch; - char **path2, *str2 = Nullch; int len, newsize; - dPERLOBJ; - SV *sv1 = sv_2mortal(newSVpvn("",127)); - SV *sv2 = sv_2mortal(newSVpvn("",127)); + SV *sv1 = Nullsv; + SV *sv2 = Nullsv; /* $HKCU{"sitelib-$]"} || $HKLM{"sitelib-$]"} . ---; */ sprintf(regstr, "%s-%s", sitelib, pl); - path1 = &SvPVX(sv1); - (void)GetRegStr(regstr, path1, &datalen); + (void)get_regstr(regstr, sv1); /* $sitelib .= * ";$EMD/" . ((-d $EMD/../../../$]) ? "../../.." : "../.."). "/site/$]/lib"; */ sprintf(pathstr, "site/%s/lib", pl); - str1 = get_emd_part(path1, pathstr, ARCHNAME, "bin", pl, Nullch); - if (!str1 && strlen(pl) == 7) { + (void)get_emd_part(sv1, pathstr, ARCHNAME, "bin", pl, Nullch); + if (!sv1 && strlen(pl) == 7) { /* pl may have been SUBVERSION-specific; try again without * SUBVERSION */ sprintf(pathstr, "site/%.5s/lib", pl); - str1 = get_emd_part(path1, pathstr, ARCHNAME, "bin", pl, Nullch); + (void)get_emd_part(sv1, pathstr, ARCHNAME, "bin", pl, Nullch); } /* $HKCU{'sitelib'} || $HKLM{'sitelib'} . ---; */ - path2 = &SvPVX(sv2); - (void)GetRegStr(sitelib, path2, &datalen); + (void)get_regstr(sitelib, sv2); /* $sitelib .= * ";$EMD/" . ((-d $EMD/../../../$]) ? "../../.." : "../.."). "/site/lib"; */ - str2 = get_emd_part(path2, "site/lib", ARCHNAME, "bin", pl, Nullch); - - SvCUR_set(sv1, strlen(*path1)); - SvLEN_set(sv1, SvCUR(sv1)+1); - SvCUR_set(sv2, strlen(*path2)); - SvLEN_set(sv2, SvCUR(sv2)+1); + (void)get_emd_part(sv2, "site/lib", ARCHNAME, "bin", pl, Nullch); - if (!str1) - return *path2; - if (!str2) - return *path1; + if (!sv1 && !sv2) + return Nullch; + if (!sv1) + return SvPVX(sv2); + if (!sv2) + return SvPVX(sv1); sv_catpvn(sv1, ";", 1); sv_catsv(sv1, sv2); @@ -497,6 +487,7 @@ get_shell(void) int do_aspawn(pTHX_ void *vreally, void **vmark, void **vsp) { + dPERLOBJ; SV *really = (SV*)vreally; SV **mark = (SV**)vmark; SV **sp = (SV**)vsp; @@ -505,7 +496,6 @@ do_aspawn(pTHX_ void *vreally, void **vmark, void **vsp) int status; int flag = P_WAIT; int index = 0; - dPERLOBJ; if (sp <= mark) return -1; @@ -562,13 +552,13 @@ do_aspawn(pTHX_ void *vreally, void **vmark, void **vsp) int do_spawn2(pTHX_ char *cmd, int exectype) { + dPERLOBJ; char **a; char *s; char **argv; int status = -1; BOOL needToTry = TRUE; char *cmd2; - dPERLOBJ; /* Save an extra exec if possible. See if there are shell * metacharacters in it */ @@ -676,6 +666,7 @@ DIR * win32_opendir(char *filename) { dTHX; + dPERLOBJ; DIR *p; long len; long idx; @@ -687,7 +678,6 @@ win32_opendir(char *filename) char buffer[MAX_PATH*2]; WCHAR wbuffer[MAX_PATH]; char* ptr; - dPERLOBJ; len = strlen(filename); if (len > MAX_PATH) @@ -915,8 +905,8 @@ chown(const char *path, uid_t owner, gid_t group) static long find_pid(int pid) { - long child; dPERLOBJ; + long child; for (child = 0 ; child < w32_num_children ; ++child) { if (w32_child_pids[child] == pid) return child; @@ -966,6 +956,7 @@ win32_sleep(unsigned int t) DllExport int win32_stat(const char *path, struct stat *buffer) { + dPERLOBJ; char t[MAX_PATH+1]; int l = strlen(path); int res; @@ -991,7 +982,6 @@ win32_stat(const char *path, struct stat *buffer) break; } } - dPERLOBJ; if (USING_WIDE()) { dTHX; A2WHELPER(path, wbuffer, sizeof(wbuffer)); @@ -1140,80 +1130,61 @@ win32_getenv(const char *name) { dTHX; dPERLOBJ; - static char *curitem = Nullch; /* XXX threadead */ - static WCHAR *wCuritem = (WCHAR*)Nullch; /* XXX threadead */ - static DWORD curlen = 0, wCurlen = 0;/* XXX threadead */ WCHAR wBuffer[MAX_PATH]; DWORD needlen; - - if (USING_WIDE()) { - if (!wCuritem) { - wCurlen = 512; - New(1306,wCuritem,wCurlen,WCHAR); - } - } - if (!curitem) { - curlen = 512; - New(1305,curitem,curlen,char); - } + SV *curitem = Nullsv; if (USING_WIDE()) { A2WHELPER(name, wBuffer, sizeof(wBuffer)); - needlen = GetEnvironmentVariableW(wBuffer,wCuritem,wCurlen); + needlen = GetEnvironmentVariableW(wBuffer, NULL, 0); } else - needlen = GetEnvironmentVariableA(name,curitem,curlen); + needlen = GetEnvironmentVariableA(name,NULL,0); if (needlen != 0) { + curitem = sv_2mortal(newSVpvn("", 0)); if (USING_WIDE()) { - while (needlen > wCurlen) { - Renew(wCuritem,needlen,WCHAR); - wCurlen = needlen; - needlen = GetEnvironmentVariableW(wBuffer,wCuritem,wCurlen); - } - if (needlen > curlen) { - Renew(curitem,needlen,char); - curlen = needlen; - } - W2AHELPER(wCuritem, curitem, curlen); + SV *acuritem; + do { + SvGROW(curitem, (needlen+1)*sizeof(WCHAR)); + needlen = GetEnvironmentVariableW(wBuffer, + (WCHAR*)SvPVX(curitem), + needlen); + } while (needlen >= SvLEN(curitem)/sizeof(WCHAR)); + SvCUR_set(curitem, needlen*sizeof(WCHAR)); + acuritem = sv_2mortal(newSVsv(curitem)); + W2AHELPER((WCHAR*)SvPVX(acuritem), SvPVX(curitem), SvCUR(curitem)); } else { - while (needlen > curlen) { - Renew(curitem,needlen,char); - curlen = needlen; - needlen = GetEnvironmentVariableA(name,curitem,curlen); - } + do { + SvGROW(curitem, needlen+1); + needlen = GetEnvironmentVariableA(name,SvPVX(curitem), + needlen); + } while (needlen >= SvLEN(curitem)); + SvCUR_set(curitem, needlen); } } else { /* allow any environment variables that begin with 'PERL' to be stored in the registry */ - if (curitem) - *curitem = '\0'; - - if (strncmp(name, "PERL", 4) == 0) { - if (curitem) { - Safefree(curitem); - curitem = Nullch; - curlen = 0; - } - curitem = GetRegStr(name, &curitem, &curlen); - } + if (strncmp(name, "PERL", 4) == 0) + (void)get_regstr(name, curitem); } - if (curitem && *curitem == '\0') - return Nullch; + if (curitem && SvCUR(curitem)) + return SvPVX(curitem); - return curitem; + return Nullch; } DllExport int win32_putenv(const char *name) { + dPERLOBJ; char* curitem; char* val; WCHAR* wCuritem; WCHAR* wVal; int length, relval = -1; - dPERLOBJ; + if (name) { if (USING_WIDE()) { dTHX; @@ -1319,13 +1290,13 @@ filetime_from_time(PFILETIME pFileTime, time_t Time) DllExport int win32_utime(const char *filename, struct utimbuf *times) { + dPERLOBJ; HANDLE handle; FILETIME ftCreate; FILETIME ftAccess; FILETIME ftWrite; struct utimbuf TimeBuffer; WCHAR wbuffer[MAX_PATH]; - dPERLOBJ; int rc; if (USING_WIDE()) { @@ -1503,9 +1474,9 @@ win32_wait(int *status) /* XXX this wait emulation only knows about processes * spawned via win32_spawnvp(P_NOWAIT, ...). */ + dPERLOBJ; int i, retval; DWORD exitcode, waitcode; - dPERLOBJ; if (!w32_num_children) { errno = ECHILD; @@ -1899,11 +1870,11 @@ win32_fwrite(const void *buf, size_t size, size_t count, FILE *fp) DllExport FILE * win32_fopen(const char *filename, const char *mode) { + dPERLOBJ; WCHAR wMode[MODE_SIZE], wBuffer[MAX_PATH]; if (stricmp(filename, "/dev/null")==0) filename = "NUL"; - dPERLOBJ; if (USING_WIDE()) { dTHX; A2WHELPER(mode, wMode, sizeof(wMode)); @@ -1921,8 +1892,8 @@ win32_fopen(const char *filename, const char *mode) DllExport FILE * win32_fdopen(int handle, const char *mode) { - WCHAR wMode[MODE_SIZE]; dPERLOBJ; + WCHAR wMode[MODE_SIZE]; if (USING_WIDE()) { dTHX; A2WHELPER(mode, wMode, sizeof(wMode)); @@ -1934,8 +1905,8 @@ win32_fdopen(int handle, const char *mode) DllExport FILE * win32_freopen(const char *path, const char *mode, FILE *stream) { - WCHAR wMode[MODE_SIZE], wBuffer[MAX_PATH]; dPERLOBJ; + WCHAR wMode[MODE_SIZE], wBuffer[MAX_PATH]; if (stricmp(path, "/dev/null")==0) path = "NUL"; @@ -2318,10 +2289,10 @@ win32_tell(int fd) DllExport int win32_open(const char *path, int flag, ...) { + dPERLOBJ; va_list ap; int pmode; WCHAR wBuffer[MAX_PATH]; - dPERLOBJ; va_start(ap, flag); pmode = va_arg(ap, int); @@ -2395,10 +2366,10 @@ win32_chdir(const char *dir) static char * create_command_line(const char* command, const char * const *args) { + dPERLOBJ; int index; char *cmd, *ptr, *arg; STRLEN len = strlen(command) + 1; - dPERLOBJ; for (index = 0; (ptr = (char*)args[index]) != NULL; ++index) len += strlen(ptr) + 1; @@ -2419,11 +2390,11 @@ create_command_line(const char* command, const char * const *args) static char * qualified_path(const char *cmd) { + dPERLOBJ; char *pathstr; char *fullcmd, *curfullcmd; STRLEN cmdlen = 0; int has_slash = 0; - dPERLOBJ; if (!cmd) return Nullch; @@ -2521,11 +2492,11 @@ win32_spawnvp(int mode, const char *cmdname, const char *const *argv) #ifdef USE_RTL_SPAWNVP return spawnvp(mode, cmdname, (char * const *)argv); #else + dPERLOBJ; DWORD ret; STARTUPINFO StartupInfo; PROCESS_INFORMATION ProcessInformation; DWORD create = 0; - dPERLOBJ; char *cmd = create_command_line(cmdname, strcmp(cmdname, argv[0]) == 0 ? &argv[1] : argv); @@ -2819,8 +2790,8 @@ win32_get_osfhandle(int fd) DllExport void* win32_dynaload(aTHX_ const char*filename) { - HMODULE hModule; dPERLOBJ; + HMODULE hModule; if (USING_WIDE()) { WCHAR wfilename[MAX_PATH]; A2WHELPER(filename, wfilename, sizeof(wfilename)); @@ -3247,9 +3218,9 @@ XS(w32_CopyFile) void Perl_init_os_extras(pTHX) { + dPERLOBJ; char *file = __FILE__; dXSUB_SYS; - dPERLOBJ; w32_perlshell_tokens = Nullch; w32_perlshell_items = -1; diff --git a/win32/win32.h b/win32/win32.h index 75e3c61..38d8688 100644 --- a/win32/win32.h +++ b/win32/win32.h @@ -239,7 +239,7 @@ struct mgvtbl { \ } -#define dPERLOBJ +#define dPERLOBJ dNOOP #endif /* PERL_OBJECT */ #endif /* _MSC_VER */