void emitMIterNext(IRGS& env, int32_t iterId, Offset relOffset, int32_t valLocalId) { surpriseCheck(env, relOffset); auto const res = gen( env, MIterNext, TBool, IterData(iterId, -1, valLocalId), fp(env) ); implCondJmp(env, bcOff(env) + relOffset, false, res); }
void emitWIterNext(IRGS& env, int32_t iterId, Offset relOffset, int32_t valLocalId) { surpriseCheck(env, relOffset); auto const targetOffset = iterBranchTarget(*env.currentNormalizedInstruction); auto const res = gen( env, WIterNext, TBool, IterData(iterId, -1, valLocalId), fp(env) ); implCondJmp(env, targetOffset, false, res); }
void emitJmpNZ(HTS& env, Offset relOffset) { surpriseCheck(env, relOffset); condJmpInversion(env, relOffset, false); }
void emitJmp(HTS& env, Offset relOffset) { surpriseCheck(env, relOffset); auto const offset = bcOff(env) + relOffset; jmpImpl(env, offset, instrJmpFlags(*env.currentNormalizedInstruction)); }
void emitJmpZ(HTS& env, Offset relOffset) { surpriseCheck(env, relOffset); auto const takenOff = bcOff(env) + relOffset; implCondJmp(env, takenOff, true, popC(env)); }