1 Index: D:/dev/perl/ver/zoro/embed.h
2 ===================================================================
3 --- D:/dev/perl/ver/zoro/embed.h (revision 972)
4 +++ D:/dev/perl/ver/zoro/embed.h (revision 973)
6 #if defined(PERL_CORE) || defined(PERL_EXT)
7 #define reg_named_buff_get Perl_reg_named_buff_get
8 #define reg_numbered_buff_get Perl_reg_numbered_buff_get
10 +#if defined(PERL_CORE) || defined(PERL_EXT)
11 #define regprop Perl_regprop
13 #define repeatcpy Perl_repeatcpy
15 #define regnext(a) Perl_regnext(aTHX_ a)
16 #if defined(PERL_CORE) || defined(PERL_EXT)
17 #define reg_named_buff_get(a,b,c) Perl_reg_named_buff_get(aTHX_ a,b,c)
18 -#define reg_numbered_buff_get(a,b,c,d) Perl_reg_numbered_buff_get(aTHX_ a,b,c,d)
19 +#define reg_numbered_buff_get(a,b,c) Perl_reg_numbered_buff_get(aTHX_ a,b,c)
21 +#if defined(PERL_CORE) || defined(PERL_EXT)
22 #define regprop(a,b,c) Perl_regprop(aTHX_ a,b,c)
24 #define repeatcpy(a,b,c,d) Perl_repeatcpy(aTHX_ a,b,c,d)
25 Index: D:/dev/perl/ver/zoro/regcomp.c
26 ===================================================================
27 --- D:/dev/perl/ver/zoro/regcomp.c (revision 972)
28 +++ D:/dev/perl/ver/zoro/regcomp.c (revision 973)
29 @@ -4692,58 +4692,53 @@
33 -#undef CORE_ONLY_BLOCK
36 -#ifndef PERL_IN_XSUB_RE
39 -Perl_reg_named_buff_get(pTHX_ SV* namesv, const REGEXP * const from_re, U32 flags)
40 +Perl_reg_named_buff_get(pTHX_ const REGEXP * const rx, SV* namesv, U32 flags)
47 - if (from_re || PL_curpm) {
48 - const REGEXP * const rx = from_re ? from_re : PM_GETRE(PL_curpm);
49 - if (rx && rx->paren_names) {
50 - HE *he_str = hv_fetch_ent( rx->paren_names, namesv, 0, 0 );
53 - SV* sv_dat=HeVAL(he_str);
54 - I32 *nums=(I32*)SvPVX(sv_dat);
55 - for ( i=0; i<SvIVX(sv_dat); i++ ) {
56 - if ((I32)(rx->nparens) >= nums[i]
57 - && rx->startp[nums[i]] != -1
58 - && rx->endp[nums[i]] != -1)
60 - ret = reg_numbered_buff_get(nums[i],rx,NULL,0);
64 - ret = newSVsv(&PL_sv_undef);
68 - av_push(retarray, ret);
71 + if (rx && rx->paren_names) {
72 + HE *he_str = hv_fetch_ent( rx->paren_names, namesv, 0, 0 );
75 + SV* sv_dat=HeVAL(he_str);
76 + I32 *nums=(I32*)SvPVX(sv_dat);
77 + for ( i=0; i<SvIVX(sv_dat); i++ ) {
78 + if ((I32)(rx->nparens) >= nums[i]
79 + && rx->startp[nums[i]] != -1
80 + && rx->endp[nums[i]] != -1)
82 + ret = CALLREG_NUMBUF(rx,nums[i],NULL);
86 + ret = newSVsv(&PL_sv_undef);
89 - return (SV*)retarray;
92 + av_push(retarray, ret);
96 + return (SV*)retarray;
103 -Perl_reg_numbered_buff_get(pTHX_ I32 paren, const REGEXP * const rx, SV* usesv, U32 flags)
104 +Perl_reg_numbered_buff_get(pTHX_ const REGEXP * const rx, I32 paren, SV* usesv)
109 SV *sv = usesv ? usesv : newSVpvs("");
110 - PERL_UNUSED_ARG(flags);
113 sv_setsv(sv,&PL_sv_undef);
114 @@ -4812,8 +4807,8 @@
121 /* Scans the name of a named buffer from the pattern.
122 * If flags is REG_RSN_RETURN_NULL returns null.
123 * If flags is REG_RSN_RETURN_NAME returns an SV* containing the name
124 Index: D:/dev/perl/ver/zoro/regcomp.h
125 ===================================================================
126 --- D:/dev/perl/ver/zoro/regcomp.h (revision 972)
127 +++ D:/dev/perl/ver/zoro/regcomp.h (revision 973)
129 Perl_re_intuit_start,
130 Perl_re_intuit_string,
131 Perl_regfree_internal,
132 + Perl_reg_numbered_buff_get,
133 + Perl_reg_named_buff_get,
134 #if defined(USE_ITHREADS)
135 Perl_regdupe_internal
137 Index: D:/dev/perl/ver/zoro/regexp.h
138 ===================================================================
139 --- D:/dev/perl/ver/zoro/regexp.h (revision 972)
140 +++ D:/dev/perl/ver/zoro/regexp.h (revision 973)
142 struct re_scream_pos_data_s *data);
143 SV* (*checkstr) (pTHX_ regexp *prog);
144 void (*free) (pTHX_ struct regexp* r);
145 + SV* (*numbered_buff_get) (pTHX_ const REGEXP * const rx, I32 paren, SV* usesv);
146 + SV* (*named_buff_get)(pTHX_ const REGEXP * const rx, SV* namesv, U32 flags);
148 void* (*dupe) (pTHX_ const regexp *r, CLONE_PARAMS *param);
150 Index: D:/dev/perl/ver/zoro/perl.h
151 ===================================================================
152 --- D:/dev/perl/ver/zoro/perl.h (revision 972)
153 +++ D:/dev/perl/ver/zoro/perl.h (revision 973)
155 #define CALLREGFREE_PVT(prog) \
156 if(prog) CALL_FPTR((prog)->engine->free)(aTHX_ (prog))
158 +#define CALLREG_NUMBUF(rx,paren,usesv) \
159 + CALL_FPTR((rx)->engine->numbered_buff_get)(aTHX_ (rx),(paren),(usesv))
161 +#define CALLREG_NAMEDBUF(rx,name,flags) \
162 + CALL_FPTR((rx)->engine->named_buff_get)(aTHX_ (rx),(name),(flags))
165 #if defined(USE_ITHREADS)
166 #define CALLREGDUPE(prog,param) \
167 Perl_re_dup(aTHX_ (prog),(param))
168 Index: D:/dev/perl/ver/zoro/proto.h
169 ===================================================================
170 --- D:/dev/perl/ver/zoro/proto.h (revision 972)
171 +++ D:/dev/perl/ver/zoro/proto.h (revision 973)
172 @@ -1888,12 +1888,15 @@
173 __attribute__warn_unused_result__
174 __attribute__nonnull__(pTHX_1);
176 -PERL_CALLCONV SV* Perl_reg_named_buff_get(pTHX_ SV* namesv, const REGEXP * const from_re, U32 flags)
177 - __attribute__nonnull__(pTHX_1);
179 -PERL_CALLCONV SV* Perl_reg_numbered_buff_get(pTHX_ I32 paren, const REGEXP * const rx, SV* usesv, U32 flags)
180 +PERL_CALLCONV SV* Perl_reg_named_buff_get(pTHX_ const REGEXP * const rx, SV* namesv, U32 flags)
181 + __attribute__nonnull__(pTHX_1)
182 __attribute__nonnull__(pTHX_2);
184 +PERL_CALLCONV SV* Perl_reg_numbered_buff_get(pTHX_ const REGEXP * const rx, I32 paren, SV* usesv)
185 + __attribute__nonnull__(pTHX_1);
188 PERL_CALLCONV void Perl_regprop(pTHX_ const regexp *prog, SV* sv, const regnode* o)
189 __attribute__nonnull__(pTHX_2)
190 __attribute__nonnull__(pTHX_3);
191 Index: D:/dev/perl/ver/zoro/ext/re/re.xs
192 ===================================================================
193 --- D:/dev/perl/ver/zoro/ext/re/re.xs (revision 972)
194 +++ D:/dev/perl/ver/zoro/ext/re/re.xs (revision 973)
196 extern SV* my_re_intuit_string (pTHX_ regexp *prog);
198 extern void my_regfree (pTHX_ struct regexp* r);
199 +extern SV* my_reg_numbered_buff_get(pTHX_ const REGEXP * const rx, I32 paren, SV* usesv);
200 +extern SV* my_reg_named_buff_get(pTHX_ const REGEXP * const rx, SV* namesv, U32 flags);
201 #if defined(USE_ITHREADS)
202 extern void* my_regdupe (pTHX_ const regexp *r, CLONE_PARAMS *param);
208 + my_reg_numbered_buff_get,
209 + my_reg_named_buff_get,
210 #if defined(USE_ITHREADS)
215 re = get_re_arg( aTHX_ qr, 1, NULL);
216 if (SvPOK(sv) && re && re->paren_names) {
217 - bufs = Perl_reg_named_buff_get(aTHX_ sv, re ,all && SvTRUE(all));
218 + bufs = CALLREG_NAMEDBUF(re,sv,all && SvTRUE(all));
220 if (all && SvTRUE(all))
222 Index: D:/dev/perl/ver/zoro/ext/re/re_top.h
223 ===================================================================
224 --- D:/dev/perl/ver/zoro/ext/re/re_top.h (revision 972)
225 +++ D:/dev/perl/ver/zoro/ext/re/re_top.h (revision 973)
227 #define Perl_regfree_internal my_regfree
228 #define Perl_re_intuit_string my_re_intuit_string
229 #define Perl_regdupe_internal my_regdupe
230 +#define Perl_reg_numbered_buff_get my_reg_numbered_buff_get
231 +#define Perl_reg_named_buff_get my_reg_named_buff_get
233 #define PERL_NO_GET_CONTEXT
235 Index: D:/dev/perl/ver/zoro/mg.c
236 ===================================================================
237 --- D:/dev/perl/ver/zoro/mg.c (revision 972)
238 +++ D:/dev/perl/ver/zoro/mg.c (revision 973)
240 * XXX Does the new way break anything?
242 paren = atoi(mg->mg_ptr); /* $& is in [0] */
243 - reg_numbered_buff_get( paren, rx, sv, 0);
244 + CALLREG_NUMBUF(rx,paren,sv);
247 sv_setsv(sv,&PL_sv_undef);
250 if (PL_curpm && (rx = PM_GETRE(PL_curpm))) {
252 - reg_numbered_buff_get( rx->lastparen, rx, sv, 0);
253 + CALLREG_NUMBUF(rx,rx->lastparen,sv);
258 case '\016': /* ^N */
259 if (PL_curpm && (rx = PM_GETRE(PL_curpm))) {
260 if (rx->lastcloseparen) {
261 - reg_numbered_buff_get( rx->lastcloseparen, rx, sv, 0);
262 + CALLREG_NUMBUF(rx,rx->lastcloseparen,sv);
266 @@ -891,16 +891,16 @@
269 if (PL_curpm && (rx = PM_GETRE(PL_curpm))) {
270 - reg_numbered_buff_get( -2, rx, sv, 0);
272 + CALLREG_NUMBUF(rx,-2,sv);
275 sv_setsv(sv,&PL_sv_undef);
279 if (PL_curpm && (rx = PM_GETRE(PL_curpm))) {
280 - reg_numbered_buff_get( -1, rx, sv, 0);
282 + CALLREG_NUMBUF(rx,-1,sv);
285 sv_setsv(sv,&PL_sv_undef);
287 Index: D:/dev/perl/ver/zoro/embed.fnc
288 ===================================================================
289 --- D:/dev/perl/ver/zoro/embed.fnc (revision 972)
290 +++ D:/dev/perl/ver/zoro/embed.fnc (revision 973)
292 |NN char* strend|NN char* strbeg|I32 minend \
293 |NN SV* screamer|NULLOK void* data|U32 flags
294 ApR |regnode*|regnext |NN regnode* p
295 -EXp |SV*|reg_named_buff_get |NN SV* namesv|NULLOK const REGEXP * const from_re|U32 flags
296 -EXp |SV*|reg_numbered_buff_get|I32 paren|NN const REGEXP * const rx|NULLOK SV* usesv|U32 flags
298 +EXp |SV*|reg_named_buff_get |NN const REGEXP * const rx|NN SV* namesv|U32 flags
299 +EXp |SV*|reg_numbered_buff_get|NN const REGEXP * const rx|I32 paren|NULLOK SV* usesv
301 Ep |void |regprop |NULLOK const regexp *prog|NN SV* sv|NN const regnode* o
302 Ap |void |repeatcpy |NN char* to|NN const char* from|I32 len|I32 count
303 ApP |char* |rninstr |NN const char* big|NN const char* bigend \