plist trick only matters for split*

This commit is contained in:
Kyryl Melekhin
2021-08-05 23:20:44 +00:00
parent 6bd24252e1
commit a9e6720dff

24
pike.c
View File

@@ -464,23 +464,23 @@ if (--csub->ref == 0) { \
list[listidx++].pc = pc; \ list[listidx++].pc = pc; \
goto rec_check##nn; \ goto rec_check##nn; \
} \ } \
if(plist[pc - insts] == gen) { \
dec_check##nn: \
decref(sub) \
rec_check##nn: \
if (i) { \
pc = pcs[--i]; \
sub = subs[i]; \
goto rec##nn; \
} \
continue; \
} \
plist[pc - insts] = gen; \
switch(*pc) { \ switch(*pc) { \
case JMP: \ case JMP: \
pc += 2 + pc[1]; \ pc += 2 + pc[1]; \
goto rec##nn; \ goto rec##nn; \
case SPLIT: \ case SPLIT: \
if(plist[pc - insts] == gen) { \
dec_check##nn: \
decref(sub) \
rec_check##nn: \
if (i) { \
pc = pcs[--i]; \
sub = subs[i]; \
goto rec##nn; \
} \
continue; \
} \
plist[pc - insts] = gen; \
subs[i] = sub; \ subs[i] = sub; \
sub->ref++; \ sub->ref++; \
pc += 2; \ pc += 2; \