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:
15
pike.c
15
pike.c
@@ -478,6 +478,13 @@ for (j = 0; j < nsubp / 2 - 1; j++) s1->sub[j] = nsub->sub[j];) \
|
|||||||
newsub(/*nop*/, /*nop*/) \
|
newsub(/*nop*/, /*nop*/) \
|
||||||
for (j = 0; j < nsubp; j++) s1->sub[j] = nsub->sub[j]; \
|
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) \
|
#define addthread(nn, list, listidx) \
|
||||||
{ \
|
{ \
|
||||||
int i = 0; \
|
int i = 0; \
|
||||||
@@ -499,16 +506,12 @@ for (j = 0; j < nsubp; j++) s1->sub[j] = nsub->sub[j]; \
|
|||||||
npc += 2 + npc[1]; \
|
npc += 2 + npc[1]; \
|
||||||
goto rec##nn; \
|
goto rec##nn; \
|
||||||
case SPLIT: \
|
case SPLIT: \
|
||||||
if (npc[2] == gen) \
|
on##list(nn) \
|
||||||
deccheck(nn) \
|
|
||||||
npc[2] = gen; \
|
|
||||||
npc += 3; \
|
npc += 3; \
|
||||||
pcs[i] = npc + npc[-2]; \
|
pcs[i] = npc + npc[-2]; \
|
||||||
fastrec(nn, list, listidx) \
|
fastrec(nn, list, listidx) \
|
||||||
case RSPLIT: \
|
case RSPLIT: \
|
||||||
if (npc[2] == gen) \
|
on##list(nn) \
|
||||||
deccheck(nn) \
|
|
||||||
npc[2] = gen; \
|
|
||||||
npc += 3; \
|
npc += 3; \
|
||||||
pcs[i] = npc; \
|
pcs[i] = npc; \
|
||||||
npc += npc[-2]; \
|
npc += npc[-2]; \
|
||||||
|
|||||||
Reference in New Issue
Block a user