| 4295 | } |
| 4296 | |
| 4297 | void fxSpreadNodeCode(void* it, void* param, txInteger counter) |
| 4298 | { |
| 4299 | txSpreadNode* self = it; |
| 4300 | txCoder* coder = param; |
| 4301 | txTargetCode* nextTarget = fxCoderCreateTarget(param); |
| 4302 | txTargetCode* doneTarget = fxCoderCreateTarget(param); |
| 4303 | txInteger iterator; |
| 4304 | fxNodeDispatchCode(self->expression, param); |
| 4305 | fxCoderAddByte(param, 0, XS_CODE_FOR_OF); |
| 4306 | iterator = fxCoderUseTemporaryVariable(param); |
| 4307 | fxCoderAddIndex(param, 0, XS_CODE_SET_LOCAL_1, iterator); |
| 4308 | fxCoderAddByte(param, -1, XS_CODE_POP); |
| 4309 | fxCoderAdd(param, 0, nextTarget); |
| 4310 | fxCoderAddIndex(param, 1, XS_CODE_GET_LOCAL_1, iterator); |
| 4311 | fxCoderAddByte(param, 1, XS_CODE_DUB); |
| 4312 | fxCoderAddSymbol(param, 0, XS_CODE_GET_PROPERTY, coder->parser->nextSymbol); |
| 4313 | fxCoderAddByte(param, 1, XS_CODE_CALL); |
| 4314 | fxCoderAddInteger(param, -2, XS_CODE_RUN_1, 0); |
| 4315 | fxCoderAddByte(param, 1, XS_CODE_DUB); |
| 4316 | fxCoderAddSymbol(param, 0, XS_CODE_GET_PROPERTY, coder->parser->doneSymbol); |
| 4317 | fxCoderAddBranch(param, -1, XS_CODE_BRANCH_IF_1, doneTarget); |
| 4318 | fxCoderAddSymbol(param, 0, XS_CODE_GET_PROPERTY, coder->parser->valueSymbol); |
| 4319 | fxCoderAddIndex(param, 1, XS_CODE_GET_LOCAL_1, counter); |
| 4320 | fxCoderAddInteger(param, 1, XS_CODE_INTEGER_1, 1); |
| 4321 | fxCoderAddByte(param, -1, XS_CODE_ADD); |
| 4322 | fxCoderAddIndex(param, 0, XS_CODE_SET_LOCAL_1, counter); |
| 4323 | fxCoderAddByte(param, -1, XS_CODE_POP); |
| 4324 | fxCoderAddBranch(param, 0, XS_CODE_BRANCH_1, nextTarget); |
| 4325 | fxCoderAdd(param, 1, doneTarget); |
| 4326 | fxCoderAddByte(param, -1, XS_CODE_POP); |
| 4327 | fxCoderUnuseTemporaryVariables(param, 1); |
| 4328 | } |
| 4329 | |
| 4330 | void fxStatementNodeCode(void* it, void* param) |
| 4331 | { |
no test coverage detected