diff options
author | Father Chrysostomos <sprout@cpan.org> | 2014-08-26 23:05:16 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2014-08-28 13:04:17 -0700 |
commit | b54c5e14b7fb9ecbcf34d74dd140de12cb73ff78 (patch) | |
tree | 9ccbd5504fa7696c60ca2cfe7530d383b525a71c /embedvar.h | |
parent | 8ce2f624198802e520eba6523c32ad6429463198 (diff) | |
download | perl-b54c5e14b7fb9ecbcf34d74dd140de12cb73ff78.tar.gz |
Split PL_padix into two variables
PL_padix keeps track of the position in the pad when pad_alloc has to
start scanning for an available slot.
The availability of a slot is determined differently for targets
(which may reuse slots that are already targets from previous state-
ments, at least when pad_reset is enabled) and constants (which may
not reuse targets).
Having the same index for both may require scanning the entire pad for
allocating a constant or GV.
t/re/uniprops.t was running far too slowly under USE_BROKEN_PAD_RESET
because of this. pad_reset would reset PL_padix to point to the
beginning of a pad with a few hundred thousand entries. pad_alloc
would then have to scan the entire pad before adding a GV to the end.
It is still too slow, even with this commit, but for other reasons.
(This is just a partial fix.)
Diffstat (limited to 'embedvar.h')
-rw-r--r-- | embedvar.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/embedvar.h b/embedvar.h index 454c1ee49b..766880ca73 100644 --- a/embedvar.h +++ b/embedvar.h @@ -97,6 +97,7 @@ #define PL_comppad_name (vTHX->Icomppad_name) #define PL_comppad_name_fill (vTHX->Icomppad_name_fill) #define PL_comppad_name_floor (vTHX->Icomppad_name_floor) +#define PL_constpadix (vTHX->Iconstpadix) #define PL_cop_seqmax (vTHX->Icop_seqmax) #define PL_cryptseen (vTHX->Icryptseen) #define PL_curcop (vTHX->Icurcop) |