| 1273 | } |
| 1274 | |
| 1275 | void fxCoderJumpTargets(txCoder* self, txTargetCode* target, txInteger selector, txInteger* address) |
| 1276 | { |
| 1277 | txInteger selection = *address; |
| 1278 | while (target) { |
| 1279 | if (target->used) { |
| 1280 | txTargetCode* elseTarget = fxCoderCreateTarget(self); |
| 1281 | fxCoderAddInteger(self, 1, XS_CODE_INTEGER_1, selection); |
| 1282 | fxCoderAddIndex(self, 1, XS_CODE_GET_LOCAL_1, selector); |
| 1283 | fxCoderAddByte(self, -1, XS_CODE_STRICT_EQUAL); |
| 1284 | fxCoderAddBranch(self, -1, XS_CODE_BRANCH_ELSE_1, elseTarget); |
| 1285 | fxCoderAdjustEnvironment(self, target); |
| 1286 | fxCoderAdjustScope(self, target); |
| 1287 | fxCoderAddBranch(self, 0, XS_CODE_BRANCH_1, target); |
| 1288 | fxCoderAdd(self, 0, elseTarget); |
| 1289 | } |
| 1290 | target = target->nextTarget; |
| 1291 | selection++; |
| 1292 | } |
| 1293 | *address = selection; |
| 1294 | } |
| 1295 | |
| 1296 | void fxCoderOptimize(txCoder* self) |
| 1297 | { |
no test coverage detected