plist trick only matters for split*
This commit is contained in:
24
pike.c
24
pike.c
@@ -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; \
|
||||||
|
|||||||
Reference in New Issue
Block a user