static void patchlistaux (FuncState *fs, int list, int vtarget, int reg,
int dtarget) {
while (list != NO_JUMP) {
int next = getjump(fs, list);
if (patchtestreg(fs, list, reg))
fixjump(fs, list, vtarget);
else
fixjump(fs, list, dtarget); /* jump to default target */
list = next;
}
}
Another question is, if patchtestreg return true,means list is an OP_TESTSET or OP_TEST instruction,but their format is not the same as OP_JMP,which is iAsBx,but in function fixjump it use SETARG_sBx macro to set sBx param.How could SETARG_sBx being used in OP_TESTSET or OP_TEST instruction?