From cb08218cfd357ed44d7c97804ce20639f7eb5407 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 21 Feb 2019 22:03:04 +0100 Subject: [PATCH] don't perform expensive PsiAnchor and smart pointer sanity checks during performance tests --- platform/core-impl/src/com/intellij/psi/PsiAnchor.java | 8 ++++++-- .../impl/smartPointers/SmartPsiElementPointerImpl.java | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/platform/core-impl/src/com/intellij/psi/PsiAnchor.java b/platform/core-impl/src/com/intellij/psi/PsiAnchor.java index b733cd3c79d0..d193197ba339 100644 --- a/platform/core-impl/src/com/intellij/psi/PsiAnchor.java +++ b/platform/core-impl/src/com/intellij/psi/PsiAnchor.java @@ -21,6 +21,7 @@ import com.intellij.injected.editor.VirtualFileWindow; import com.intellij.lang.Language; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ReadAction; +import com.intellij.openapi.application.impl.ApplicationInfoImpl; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; @@ -62,8 +63,11 @@ public abstract class PsiAnchor { PsiUtilCore.ensureValid(element); PsiAnchor anchor = doCreateAnchor(element); - if (ApplicationManager.getApplication().isUnitTestMode() && !element.equals(anchor.retrieve())) { - LOG.error("Cannot restore element " + element + " of " + element.getClass() + " from anchor " + anchor); + if (ApplicationManager.getApplication().isUnitTestMode() && !ApplicationInfoImpl.isInStressTest()) { + PsiElement restored = anchor.retrieve(); + if (!element.equals(restored)) { + LOG.error("Cannot restore element " + element + " of " + element.getClass() + " from anchor " + anchor + ", getting " + restored + " instead"); + } } return anchor; } diff --git a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiElementPointerImpl.java b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiElementPointerImpl.java index d81df2746c68..fd0eae0b8894 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiElementPointerImpl.java +++ b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiElementPointerImpl.java @@ -19,6 +19,7 @@ package com.intellij.psi.impl.smartPointers; import com.intellij.lang.LanguageUtil; import com.intellij.lang.injection.InjectedLanguageManager; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.impl.ApplicationInfoImpl; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; @@ -150,7 +151,7 @@ class SmartPsiElementPointerImpl implements SmartPointerEx PsiFile containingFile, boolean forInjected) { SmartPointerElementInfo elementInfo = doCreateElementInfo(manager.getProject(), element, containingFile, forInjected); - if (ApplicationManager.getApplication().isUnitTestMode()) { + if (ApplicationManager.getApplication().isUnitTestMode() && !ApplicationInfoImpl.isInStressTest()) { PsiElement restored = elementInfo.restoreElement(manager); if (!element.equals(restored)) { // likely cause: PSI having isPhysical==true, but which can't be restored by containing file and range. To fix, make isPhysical return false