public static MethodData ComputeAndEvaluatePurityOfCall(LocalOperation operation) { var operationData = (MethodData)operation.Value; var methodInterpreter = operationData.Info.GetInterpreter(Runtime); if (AnalyzeFunctionPurity.ReadPurity(methodInterpreter)) { operationData.Interpreter.AnalyzeProperties.IsPure = true; } else { if (methodInterpreter == null) { return(operationData); } if (methodInterpreter.Kind != MethodKind.Default) { operationData.Interpreter.AnalyzeProperties.IsPure = false; return(operationData); } var computeIsPure = AnalyzeFunctionPurity.ComputeFunctionPurity(methodInterpreter); if (computeIsPure) { operationData.Interpreter.AnalyzeProperties.IsPure = true; } } return(operationData); }
public static bool ReadPurity(MethodBase methodBase, ClosureEntities crRuntime) { var method = methodBase.GetInterpreter(crRuntime); return(AnalyzeFunctionPurity.ReadPurity(method as CilMethodInterpreter)); }
public static bool ReadPurity(MethodBase methodBase, CrRuntimeLibrary crRuntime) { var method = methodBase.GetInterpreter(crRuntime); return(AnalyzeFunctionPurity.ReadPurity(method)); }