From 5f5fb627659c78494fc6e2a0df7112fddcd7d42a Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Wed, 19 Sep 2012 12:11:20 +0400 Subject: [PATCH] cache for not found classes: bundles loading optimization --- .../util/src/com/intellij/util/lang/UrlClassLoader.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/platform/util/src/com/intellij/util/lang/UrlClassLoader.java b/platform/util/src/com/intellij/util/lang/UrlClassLoader.java index 8443fb9fb1fe..5299cf9e5be1 100644 --- a/platform/util/src/com/intellij/util/lang/UrlClassLoader.java +++ b/platform/util/src/com/intellij/util/lang/UrlClassLoader.java @@ -17,6 +17,7 @@ package com.intellij.util.lang; import com.intellij.openapi.diagnostic.Logger; +import gnu.trove.THashSet; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -31,6 +32,7 @@ import java.util.*; public class UrlClassLoader extends ClassLoader { private final ClassPath myClassPath; private final List myURLs; + private final Set myNotFound = new THashSet(); @NonNls static final String CLASS_EXTENSION = ".class"; protected static final boolean myDebugTime = false; protected static final long NS_THRESHOLD = 10000000; @@ -68,8 +70,12 @@ public class UrlClassLoader extends ClassLoader { } protected Class findClass(final String name) throws ClassNotFoundException { + if (myNotFound.contains(name)) { + throw new ClassNotFoundException(name); + } Resource res = myClassPath.getResource(name.replace('.', '/').concat(CLASS_EXTENSION), false); if (res == null) { + myNotFound.add(name); throw new ClassNotFoundException(name); }