void EmitMoveNext_NoResumePoints(EmitContext ec)
{
ec.EmitThis();
ec.Emit(OpCodes.Ldfld, storey.PC.Spec);
ec.EmitThis();
ec.EmitInt((int)IteratorStorey.State.After);
ec.Emit(OpCodes.Stfld, storey.PC.Spec);
// We only care if the PC is zero (start executing) or non-zero (don't do anything)
ec.Emit(OpCodes.Brtrue, move_next_error);
BodyEnd = ec.DefineLabel();
var async_init = this as AsyncInitializer;
if (async_init != null)
{
ec.BeginExceptionBlock();
}
block.EmitEmbedded(ec);
if (async_init != null)
{
async_init.EmitCatchBlock(ec);
}
ec.MarkLabel(BodyEnd);
EmitMoveNextEpilogue(ec);
ec.MarkLabel(move_next_error);
if (ReturnType.Kind != MemberKind.Void)
{
ec.EmitInt(0);
ec.Emit(OpCodes.Ret);
}
ec.MarkLabel(move_next_ok);
}