void IRTranslator::translateWIterNext(const NormalizedInstruction& i) { bool invertCond = false; Offset targetOffset = getBranchTarget(i, invertCond); HHIR_EMIT(WIterNext, i.imm[0].u_IVA, targetOffset, i.imm[2].u_IVA, invertCond); }
void IRTranslator::translateIterInit(const NormalizedInstruction& i) { bool invertCond = false; Offset targetOffset = getBranchTarget(i, invertCond); HHIR_EMIT(IterInit, i.imm[0].u_IVA, targetOffset, i.imm[2].u_IVA, invertCond, instrJmpFlags(i)); }
void TernaryExpressionSyntax::emit(types::NameResolutionContextStack *ctx, emit::MethodBody *method) { _cond->emit(ctx, method); if (_castCondition != nullptr) _castCondition->emitCall(method); auto brfalse = new emit::BrfalseInstr(); method->emit(brfalse); _iftrue->emit(ctx, method); if (_castTrue != nullptr) _castTrue->emitCall(method); auto brafter = new emit::BrInstr(); method->emit(brafter); auto brfalse_target = brfalse->getBranchTarget(); method->emitDecorator(brfalse_target); _iffalse->emit(ctx, method); if (_castFalse != nullptr) _castFalse->emitCall(method); auto brafter_target = brafter->getBranchTarget(); method->emitDecorator(brafter_target); }