| 4213 | } |
| 4214 | |
| 4215 | void fxProgramNodeCode(void* it, void* param) |
| 4216 | { |
| 4217 | txProgramNode* self = it; |
| 4218 | txCoder* coder = param; |
| 4219 | |
| 4220 | coder->line = -1; |
| 4221 | coder->programFlag = 1; |
| 4222 | coder->scopeLevel = 0; |
| 4223 | coder->firstBreakTarget = NULL; |
| 4224 | coder->firstContinueTarget = NULL; |
| 4225 | |
| 4226 | if (self->flags & mxStrictFlag) |
| 4227 | fxCoderAddIndex(param, 0, XS_CODE_BEGIN_STRICT, 0); |
| 4228 | else |
| 4229 | fxCoderAddIndex(param, 0, XS_CODE_BEGIN_SLOPPY, 0); |
| 4230 | coder->path = C_NULL; |
| 4231 | if (self->line >= 0) |
| 4232 | fxCoderAddLine(coder, 0, XS_CODE_LINE, it); |
| 4233 | if (coder->parser->flags & mxEvalFlag) { |
| 4234 | coder->evalFlag = 1; |
| 4235 | fxScopeCodingEval(self->scope, param); |
| 4236 | } |
| 4237 | else |
| 4238 | fxScopeCodingProgram(self->scope, param); |
| 4239 | coder->returnTarget = fxCoderCreateTarget(param); |
| 4240 | fxScopeCodeDefineNodes(self->scope, param); |
| 4241 | fxNodeDispatchCode(self->body, param); |
| 4242 | fxCoderAdd(param, 0, coder->returnTarget); |
| 4243 | fxCoderAddByte(param, 0, XS_CODE_RETURN); |
| 4244 | } |
| 4245 | |
| 4246 | void fxQuestionMarkNodeCode(void* it, void* param) |
| 4247 | { |
nothing calls this directly
no test coverage detected