Mercurial > hg > truffle
changeset 16810:f3a1020472cf
Truffle-DSL: added caching for autoimports.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Wed, 13 Aug 2014 18:06:18 +0200 |
parents | 7eeae4545685 |
children | e8d9b3827d4b |
files | graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/OrganizedImports.java |
diffstat | 1 files changed, 11 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- 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<String> declaredStaticFields = new HashSet<>(); private final Set<String> ambiguousStaticMethods = new HashSet<>(); private final Set<String> ambiguousStaticFields = new HashSet<>(); + private final Map<Element, Set<String>> autoImportCache = new HashMap<>(); private final CodeTypeElement topLevelClass; @@ -233,14 +234,18 @@ return false; // same package name -> no import } - List<Element> elements = ElementUtils.getElementHierarchy(enclosedElement); + Set<String> autoImportedTypes = autoImportCache.get(enclosedElement); - Set<String> autoImportedTypes = new HashSet<>(); - for (Element element : elements) { - if (element.getKind().isClass()) { - collectSuperTypeImports((TypeElement) element, autoImportedTypes); - collectInnerTypeImports((TypeElement) element, autoImportedTypes); + if (autoImportedTypes == null) { + List<Element> 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);