private bool CheckForIsCompletedCall(InstructionBlock theBlock) { V_0 = theBlock.get_First(); while ((object)V_0 != (object)theBlock.get_Last()) { if (V_0.get_OpCode().get_Code() == 39 || V_0.get_OpCode().get_Code() == 110 && String.op_Equality(((MethodReference)V_0.get_Operand()).get_Name(), "get_IsCompleted")) { if (!StateMachineUtilities.TryGetVariableFromInstruction(V_0.get_Previous(), this.moveNextMethodContext.get_Body().get_Variables(), out V_2)) { return(false); } dummyVar0 = this.awaiterVariables.Add(V_2); return(true); } V_0 = V_0.get_Next(); } return(false); }
/// <summary> /// Checks whether the specified block contains a call of the get_IsCompleted method. /// </summary> /// <remarks> /// Saves the target variable of the call. /// </remarks> /// <param name="theBlock"></param> /// <returns></returns> private bool CheckForIsCompletedCall(InstructionBlock theBlock) { for (Instruction current = theBlock.First; current != theBlock.Last; current = current.Next) { if ((current.OpCode.Code == Code.Call || current.OpCode.Code == Code.Callvirt) && ((MethodReference)current.Operand).Name == "get_IsCompleted") { VariableReference awaiterVariable; if (StateMachineUtilities.TryGetVariableFromInstruction(current.Previous, moveNextMethodContext.Body.Variables, out awaiterVariable)) { awaiterVariables.Add(awaiterVariable); return(true); } return(false); } } return(false); }