internal MethodCallExpression Reduce(ParameterExpression awaiterHolder, uint state, LabelTarget stateLabel, LabelTarget returnLabel, CodeInsertionPoint prologue) { prologue(Assign(awaiterHolder, GetAwaiter)); prologue(Condition(new MoveNextExpression(awaiterHolder, state), Empty(), Return(returnLabel), typeof(void))); prologue(stateLabel.LandingSite()); return(awaiterHolder.Call(GetResultMethod)); }
internal FinallyStatement(Expression body, uint previousState, LabelTarget finallyLabel) : base(body) { prologue.AddFirst(finallyLabel.LandingSite()); prologue.AddLast(new ExitGuardedCodeExpression(previousState)); }