# HG changeset patch # User Christian Humer # Date 1407945978 -7200 # Node ID f3a1020472cf1b1def5c8ec8dd9ef105c9e863d3 # Parent 7eeae4545685fef70ebc5f6d5ec985ee16e65ef1 Truffle-DSL: added caching for autoimports. diff -r 7eeae4545685 -r f3a1020472cf graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/OrganizedImports.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/OrganizedImports.java Wed Aug 13 18:06:18 2014 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/OrganizedImports.java Wed Aug 13 18:06:18 2014 +0200 @@ -43,6 +43,7 @@ private final Set declaredStaticFields = new HashSet<>(); private final Set ambiguousStaticMethods = new HashSet<>(); private final Set ambiguousStaticFields = new HashSet<>(); + private final Map> autoImportCache = new HashMap<>(); private final CodeTypeElement topLevelClass; @@ -233,14 +234,18 @@ return false; // same package name -> no import } - List elements = ElementUtils.getElementHierarchy(enclosedElement); + Set autoImportedTypes = autoImportCache.get(enclosedElement); - Set autoImportedTypes = new HashSet<>(); - for (Element element : elements) { - if (element.getKind().isClass()) { - collectSuperTypeImports((TypeElement) element, autoImportedTypes); - collectInnerTypeImports((TypeElement) element, autoImportedTypes); + if (autoImportedTypes == null) { + List elements = ElementUtils.getElementHierarchy(enclosedElement); + autoImportedTypes = new HashSet<>(); + for (Element element : elements) { + if (element.getKind().isClass()) { + collectSuperTypeImports((TypeElement) element, autoImportedTypes); + collectInnerTypeImports((TypeElement) element, autoImportedTypes); + } } + autoImportCache.put(enclosedElement, autoImportedTypes); } String qualifiedName = getQualifiedName(importType);