perform onlist check only on nlist

seems like it's only necessary to disambiguate
paths once in the addthread2. Let me know if you
ever find a counter example.
This commit is contained in:
Kyryl Melekhin
2021-10-05 16:10:18 +00:00
parent 04c9aae3fa
commit 2fe1deca0b

15
pike.c
View File

@@ -478,6 +478,13 @@ for (j = 0; j < nsubp / 2 - 1; j++) s1->sub[j] = nsub->sub[j];) \
newsub(/*nop*/, /*nop*/) \
for (j = 0; j < nsubp; j++) s1->sub[j] = nsub->sub[j]; \
#define onnlist(nn) \
if (npc[2] == gen) \
deccheck(nn) \
npc[2] = gen; \
#define onclist(nn) /* nop */ \
#define addthread(nn, list, listidx) \
{ \
int i = 0; \
@@ -499,16 +506,12 @@ for (j = 0; j < nsubp; j++) s1->sub[j] = nsub->sub[j]; \
npc += 2 + npc[1]; \
goto rec##nn; \
case SPLIT: \
if (npc[2] == gen) \
deccheck(nn) \
npc[2] = gen; \
on##list(nn) \
npc += 3; \
pcs[i] = npc + npc[-2]; \
fastrec(nn, list, listidx) \
case RSPLIT: \
if (npc[2] == gen) \
deccheck(nn) \
npc[2] = gen; \
on##list(nn) \
npc += 3; \
pcs[i] = npc; \
npc += npc[-2]; \