public override LocalList <IDeclaredElement> GetRootMarksFromNode(ITreeNode currentNode, IDeclaredElement containingFunction) { var result = base.GetRootMarksFromNode(currentNode, containingFunction); var coroutineOrInvoke = ExtractCoroutineOrInvokeRepeating(currentNode); if (coroutineOrInvoke != null) { result.Add(coroutineOrInvoke); } // it means we are in functional type member like methodDeclaration if (containingFunction == null) { return(result); } var declaration = currentNode as ITypeMemberDeclaration; var typeMember = declaration?.DeclaredElement; if (PerformanceCriticalCodeStageUtil.IsPerformanceCriticalRootMethod(typeMember)) { result.Add(typeMember); } return(result); }
public override LocalList <IDeclaredElement> GetRootMarksFromNode(ITreeNode currentNode, IDeclaredElement containingFunction) { var result = new LocalList <IDeclaredElement>(); var coroutineOrInvoke = ExtractCoroutineOrInvokeRepeating(currentNode); if (coroutineOrInvoke != null) { result.Add(coroutineOrInvoke); } // it means we are in functional type member like methodDeclaration if (containingFunction == null) { return(result); } var functionDeclaration = currentNode as IFunctionDeclaration; var hasComment = UnityCallGraphUtil.HasAnalysisComment(functionDeclaration, MarkId, ReSharperControlConstruct.Kind.Restore); if (hasComment) { result.Add(functionDeclaration.DeclaredElement); } var declaration = currentNode as ITypeMemberDeclaration; var typeMember = declaration?.DeclaredElement; if (PerformanceCriticalCodeStageUtil.IsPerformanceCriticalRootMethod(typeMember)) { result.Add(typeMember); } return(result); }
private bool IsPerformanceCriticalDeclaration(ITreeNode element) { if (!(element is ICSharpDeclaration declaration)) { return(false); } var declaredElement = declaration.DeclaredElement; if (declaredElement == null) { return(false); } if (myProcessKind == DaemonProcessKind.GLOBAL_WARNINGS) { var id = myProvider.GetElementId(declaredElement); if (!id.HasValue) { return(false); } return(myCallGraphSwaExtensionProvider.IsMarkedByCallGraphAnalyzer( myPerformanceCriticalCodeCallGraphMarksProvider.Id, true, id.Value)); } return(PerformanceCriticalCodeStageUtil.IsPerformanceCriticalRootMethod(myAPI, declaration)); }
public bool IsAvailable(IUserDataHolder cache) { var methodDeclaration = myMethodDeclaration; if (methodDeclaration == null) { return(false); } var declaredElement = methodDeclaration.DeclaredElement; return(declaredElement != null && methodDeclaration.IsValid() && !PerformanceCriticalCodeStageUtil.IsPerformanceCriticalRootMethod(methodDeclaration)); }
public static bool IsAvailable([CanBeNull] IMethodDeclaration methodDeclaration) { if (methodDeclaration == null) { return(false); } methodDeclaration.GetPsiServices().Locks.AssertReadAccessAllowed(); var declaredElement = methodDeclaration.DeclaredElement; return(declaredElement != null && methodDeclaration.IsValid() && !PerformanceCriticalCodeStageUtil.IsPerformanceCriticalRootMethod(methodDeclaration)); }
public bool IsAvailable(IUserDataHolder cache) { var identifier = myDataProvider.GetSelectedElement <ITreeNode>() as ICSharpIdentifier; var methodDeclaration = MethodDeclarationNavigator.GetByNameIdentifier(identifier); if (methodDeclaration == null) { return(false); } var declaredElement = methodDeclaration.DeclaredElement; return(declaredElement != null && methodDeclaration.IsValid() && !PerformanceCriticalCodeStageUtil.IsPerformanceCriticalRootMethod(methodDeclaration)); }
public override LocalList <IDeclaredElement> GetMarkedFunctionsFrom(ITreeNode currentNode, IDeclaredElement containingFunction) { var result = new LocalList <IDeclaredElement>(); if (PerformanceCriticalCodeStageUtil.IsPerformanceCriticalRootMethod(myUnityApi, currentNode)) { result.Add(containingFunction); } var coroutineOrInvoke = ExtractCoroutineOrInvokeRepeating(currentNode); if (coroutineOrInvoke != null) { result.Add(coroutineOrInvoke); } return(result); }
public void ProcessBeforeInterior(ITreeNode element) { IsPerformanceCriticalCodeFound = PerformanceCriticalCodeStageUtil.IsPerformanceCriticalRootMethod(element); }
protected override bool IsMarkedFast(IDeclaredElement declaredElement) => PerformanceCriticalCodeStageUtil.IsPerformanceCriticalRootMethod(declaredElement);
public override void ProcessBeforeInterior(ITreeNode element) { ProcessingIsFinished = PerformanceCriticalCodeStageUtil.IsPerformanceCriticalRootMethod(element); }