From 0cdaae3e56c7eb2fab73f258cf564fe0d6d1b083 Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Wed, 21 Jul 2021 07:05:47 +0000 Subject: [PATCH] In Perl_gv_check() set and clear HvAUXf_SCAN_STASH just once. Previously the flag bit was set and cleared for each iteration of the outer loop. The compiler *might* have made this optimisation that this commit makes for us, but might not. --- gv.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gv.c b/gv.c index fcde2123c0dd..306a5240f80d 100644 --- a/gv.c +++ b/gv.c @@ -2652,10 +2652,10 @@ Perl_gv_check(pTHX_ HV *stash) assert(HvARRAY(stash)); + /* mark stash is being scanned, to avoid recursing */ + HvAUX(stash)->xhv_aux_flags |= HvAUXf_SCAN_STASH; for (i = 0; i <= (I32) HvMAX(stash); i++) { const HE *entry; - /* mark stash is being scanned, to avoid recursing */ - HvAUX(stash)->xhv_aux_flags |= HvAUXf_SCAN_STASH; for (entry = HvARRAY(stash)[i]; entry; entry = HeNEXT(entry)) { GV *gv; HV *hv; @@ -2696,8 +2696,8 @@ Perl_gv_check(pTHX_ HV *stash) HEKfARG(GvNAME_HEK(gv))); } } - HvAUX(stash)->xhv_aux_flags &= ~HvAUXf_SCAN_STASH; } + HvAUX(stash)->xhv_aux_flags &= ~HvAUXf_SCAN_STASH; } GV *