From 48cd960eeeed5fb79ab8eba8d5e0ce11e5d94d17 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 14 Mar 2013 15:19:08 +0400 Subject: [PATCH] Use CachedValuesManager.getCachedValue() --- .../project/AnalyzerFacadeWithCache.java | 63 +++++++++---------- 1 file changed, 30 insertions(+), 33 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeWithCache.java b/idea/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeWithCache.java index 91db9951ae6..f4a0c2c1cec 100644 --- a/idea/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeWithCache.java +++ b/idea/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeWithCache.java @@ -74,43 +74,40 @@ public final class AnalyzerFacadeWithCache { @NotNull public static AnalyzeExhaust analyzeFileWithCache(@NotNull final JetFile file, @NotNull final Function> declarationProvider) { - // Need lock for getValue(), because parallel threads can start evaluation of compute() simultaneously + // Need lock, because parallel threads can start evaluation of compute() simultaneously synchronized (lock) { - CachedValue result = file.getUserData(ANALYZE_EXHAUST_FULL); - if (result == null) { - result = - CachedValuesManager.getManager(file.getProject()).createCachedValue(new CachedValueProvider() { - @Override - public Result compute() { - try { - if (DumbService.isDumb(file.getProject())) { - return new Result( - emptyExhaust(), - PsiModificationTracker.MODIFICATION_COUNT); - } - - ApplicationUtils.warnTimeConsuming(LOG); - - AnalyzeExhaust analyzeExhaustHeaders = analyzeHeadersWithCacheOnFile(file, declarationProvider); - - AnalyzeExhaust exhaust = analyzeBodies(analyzeExhaustHeaders, file); - - return new Result(exhaust, PsiModificationTracker.MODIFICATION_COUNT); - } - catch (ProcessCanceledException e) { - throw e; - } - catch (Throwable e) { - handleError(e); - return emptyExhaustWithDiagnosticOnFile(file, e); - } + return CachedValuesManager.getManager(file.getProject()).getCachedValue( + file, + ANALYZE_EXHAUST_FULL, + new CachedValueProvider() { + @Override + public Result compute() { + try { + if (DumbService.isDumb(file.getProject())) { + return new Result( + emptyExhaust(), + PsiModificationTracker.MODIFICATION_COUNT); } - }, false); - file.putUserData(ANALYZE_EXHAUST_FULL, result); - } + ApplicationUtils.warnTimeConsuming(LOG); - return result.getValue(); + AnalyzeExhaust analyzeExhaustHeaders = analyzeHeadersWithCacheOnFile(file, declarationProvider); + + AnalyzeExhaust exhaust = analyzeBodies(analyzeExhaustHeaders, file); + + return new Result(exhaust, PsiModificationTracker.MODIFICATION_COUNT); + } + catch (ProcessCanceledException e) { + throw e; + } + catch (Throwable e) { + handleError(e); + return emptyExhaustWithDiagnosticOnFile(file, e); + } + } + }, + false + ); } }