cvs commit: modperl-2.0/src/modules/perl modperl_perl_pp.c
dougm 2002/06/15 18:34:02 Modified:src/modules/perl modperl_perl_pp.c Log: MP_FUNC_T not needed, infact breaks win32 Revision ChangesPath 1.3 +1 -1 modperl-2.0/src/modules/perl/modperl_perl_pp.c Index: modperl_perl_pp.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_pp.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- modperl_perl_pp.c 16 Jun 2002 01:20:50 - 1.2 +++ modperl_perl_pp.c 16 Jun 2002 01:34:02 - 1.3 @@ -7,7 +7,7 @@ OP_REQUIRE }; -typedef OP * MP_FUNC_T(modperl_pp_t)(pTHX); +typedef OP * (*modperl_pp_t)(pTHX); static modperl_pp_t MP_PERL_ppaddr[MP_OP_max];
cvs commit: modperl-2.0/src/modules/perl modperl_perl_pp.c modperl_perl_pp.h
dougm 2002/06/15 18:20:50 Modified:src/modules/perl modperl_perl_pp.c modperl_perl_pp.h Log: stub modperl_pp_require Revision ChangesPath 1.2 +8 -0 modperl-2.0/src/modules/perl/modperl_perl_pp.c Index: modperl_perl_pp.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_pp.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- modperl_perl_pp.c 16 Jun 2002 01:07:21 - 1.1 +++ modperl_perl_pp.c 16 Jun 2002 01:20:50 - 1.2 @@ -4,6 +4,7 @@ #ifdef MP_REFGEN_FIXUP OP_SREFGEN, #endif +OP_REQUIRE }; typedef OP * MP_FUNC_T(modperl_pp_t)(pTHX); @@ -47,10 +48,17 @@ #endif /* MP_REFGEN_FIXUP */ +static OP *modperl_pp_require(pTHX) +{ +/* nothing yet */ +return MP_PERL_ppaddr[MP_OP_REQUIRE](aTHX); +} + static modperl_pp_t MP_ppaddr[] = { #ifdef MP_REFGEN_FIXUP MEMBER_TO_FPTR(modperl_pp_srefgen), #endif +MEMBER_TO_FPTR(modperl_pp_require) }; void modperl_perl_pp_set(modperl_perl_opcode_e idx) 1.2 +1 -0 modperl-2.0/src/modules/perl/modperl_perl_pp.h Index: modperl_perl_pp.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_pp.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- modperl_perl_pp.h 16 Jun 2002 01:07:21 - 1.1 +++ modperl_perl_pp.h 16 Jun 2002 01:20:50 - 1.2 @@ -9,6 +9,7 @@ #ifdef MP_REFGEN_FIXUP MP_OP_SREFGEN, #endif +MP_OP_REQUIRE, MP_OP_max } modperl_perl_opcode_e;
cvs commit: modperl-2.0/src/modules/perl modperl_perl_pp.c modperl_perl_pp.h
dougm 2002/06/15 18:07:21 Added: src/modules/perl modperl_perl_pp.c modperl_perl_pp.h Log: new module where any PL_ppaddr modifications are done Revision ChangesPath 1.1 modperl-2.0/src/modules/perl/modperl_perl_pp.c Index: modperl_perl_pp.c === #include "mod_perl.h" static enum opcode MP_pp_map[] = { #ifdef MP_REFGEN_FIXUP OP_SREFGEN, #endif }; typedef OP * MP_FUNC_T(modperl_pp_t)(pTHX); static modperl_pp_t MP_PERL_ppaddr[MP_OP_max]; #ifdef MP_REFGEN_FIXUP /* * nasty workaround for bug fixed in bleedperl (11536 + 11553) * XXX: when 5.8.0 is released + stable, we will require 5.8.0 * if ithreads are enabled. */ static OP *modperl_pp_srefgen(pTHX) { dSP; OP *o; SV *sv = *SP; if (SvPADTMP(sv) && IS_PADGV(sv)) { /* prevent S_refto from making a copy of the GV, * tricking it to SvREFCNT_inc and point to this one instead. */ SvPADTMP_off(sv); } else { sv = Nullsv; } /* o = Perl_pp_srefgen(aTHX) */ o = MP_PERL_ppaddr[MP_OP_SREFGEN](aTHX); if (sv) { /* restore original flags */ SvPADTMP_on(sv); } return o; } #endif /* MP_REFGEN_FIXUP */ static modperl_pp_t MP_ppaddr[] = { #ifdef MP_REFGEN_FIXUP MEMBER_TO_FPTR(modperl_pp_srefgen), #endif }; void modperl_perl_pp_set(modperl_perl_opcode_e idx) { int pl_idx = MP_pp_map[idx]; /* save original */ MP_PERL_ppaddr[idx] = PL_ppaddr[pl_idx]; /* replace with our own */ PL_ppaddr[pl_idx] = MP_ppaddr[idx]; } void modperl_perl_pp_set_all(void) { int i; for (i=0; i