From c58b680b06b94939ee921d7062cd14927136ae30 Mon Sep 17 00:00:00 2001 From: Father Chrysostomos Date: Sat, 28 Apr 2012 00:18:30 -0700 Subject: [PATCH] Stop using PL_glob_index for PL_globhook If Glob.xs just uses the address of PL_op as its iterator key all the time (when called via PL_globhook too, not just via a glob override), the code is simpler. --- ext/File-Glob/Glob.xs | 12 ++---------- op.c | 3 --- pp_sys.c | 4 ---- 3 files changed, 2 insertions(+), 17 deletions(-) diff --git a/ext/File-Glob/Glob.xs b/ext/File-Glob/Glob.xs index 252c2ed..50bb2da 100644 --- a/ext/File-Glob/Glob.xs +++ b/ext/File-Glob/Glob.xs @@ -67,17 +67,13 @@ iterate(pTHX_ bool(*globber)(pTHX_ AV *entries, SV *patsv)) dSP; dMY_CXT; - SV * const cxixsv = POPs; - const char *cxixpv; - STRLEN cxixlen; + const char * const cxixpv = (char *)&PL_op; + STRLEN const cxixlen = sizeof(OP *); AV *entries; U32 const gimme = GIMME_V; SV *patsv = POPs; bool on_stack = FALSE; - SvGETMAGIC(cxixsv); - cxixpv = SvPV_nomg(cxixsv, cxixlen); - if (!MY_CXT.x_GLOB_ENTRIES) MY_CXT.x_GLOB_ENTRIES = newHV(); entries = (AV *)*(hv_fetch(MY_CXT.x_GLOB_ENTRIES, cxixpv, cxixlen, 1)); @@ -359,8 +355,6 @@ PPCODE: else { XPUSHs(&PL_sv_undef); } - XPUSHs(newSVpvn_flags((char *)&PL_op, sizeof(OP *), SVs_TEMP)); - sv_catpvs(*SP, "_"); /* Avoid conflicts with PL_glob_index */ PUTBACK; csh_glob_iter(aTHX); SPAGAIN; @@ -372,8 +366,6 @@ PPCODE: else { XPUSHs(&PL_sv_undef); } - XPUSHs(newSVpvn_flags((char *)&PL_op, sizeof(OP *), SVs_TEMP)); - sv_catpvs(*SP, "_"); /* Avoid conflicts with PL_glob_index */ PUTBACK; iterate(aTHX_ doglob_iter_wrapper); SPAGAIN; diff --git a/op.c b/op.c index 0a747a7..fd114b1 100644 --- a/op.c +++ b/op.c @@ -9005,9 +9005,6 @@ Perl_ck_glob(pTHX_ OP *o) gv = (GV *)newSV(0); gv_init(gv, 0, "", 0, 0); gv_IOadd(gv); -#ifndef PERL_EXTERNAL_GLOB - sv_setiv(GvSVn(gv),PL_glob_index++); -#endif op_append_elem(OP_GLOB, o, newGVOP(OP_GV, 0, gv)); SvREFCNT_dec_NN(gv); /* newGVOP increased it */ scalarkids(o); diff --git a/pp_sys.c b/pp_sys.c index 06b3684..ec77763 100644 --- a/pp_sys.c +++ b/pp_sys.c @@ -376,11 +376,7 @@ PP(pp_glob) * */ return NORMAL; } - /* stack args are: wildcard, gv(_GEN_n) */ - if (PL_globhook) { - PUSHs(GvSV(gv)); - PUTBACK; PL_globhook(aTHX); return NORMAL; } -- 2.7.4