Mercurial > hg > openjdk > lambda > jdk
changeset 10208:0b6632e570b0
8026398: Can't load jdk.Exported, ClassNotFoundException
Reviewed-by: chegar, mchung
author | alanb |
---|---|
date | Tue, 15 Oct 2013 10:52:09 +0100 |
parents | abe8d432f714 |
children | 2c16140fb515 |
files | make/tools/src/build/tools/buildmetaindex/BuildMetaIndex.java |
diffstat | 1 files changed, 16 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/make/tools/src/build/tools/buildmetaindex/BuildMetaIndex.java Tue Oct 15 10:26:34 2013 +0200 +++ b/make/tools/src/build/tools/buildmetaindex/BuildMetaIndex.java Tue Oct 15 10:52:09 2013 +0100 @@ -173,6 +173,12 @@ */ private HashMap<String, HashSet<String>> knownPrefixMap = new HashMap<>(); + /** + * Special value for the HashSet to indicate that there are classes in + * the top-level package. + */ + private static final String TOP_LEVEL = "TOP"; + /* * A class for mapping package prefixes to the number of * levels of package elements to include. @@ -212,7 +218,7 @@ /* - * We add maximum 5 second level entries to "sun", "java" and + * We add maximum 5 second level entries to "sun", "jdk", "java" and * "javax" entries. Tune this parameter to get a balance on the * cold start and footprint. */ @@ -223,6 +229,7 @@ JarMetaIndex(String fileName) throws IOException { jar = new JarFile(fileName); knownPrefixMap.put("sun", new HashSet<String>()); + knownPrefixMap.put("jdk", new HashSet<String>()); knownPrefixMap.put("java", new HashSet<String>()); knownPrefixMap.put("javax", new HashSet<String>()); } @@ -336,12 +343,12 @@ return false; } - String secondPkgElement = name.substring(firstSlashIndex + 1, - name.indexOf("/", - firstSlashIndex + 1)); - /* Add the second level package name to the corresponding hashset. */ - if (secondPkgElement != null) { + int secondSlashIndex = name.indexOf("/", firstSlashIndex+1); + if (secondSlashIndex == -1) { + pkgSet.add(TOP_LEVEL); + } else { + String secondPkgElement = name.substring(firstSlashIndex+1, secondSlashIndex); pkgSet.add(secondPkgElement); } @@ -368,8 +375,9 @@ if (setSize == 0) { continue; } - else if (setSize > JarMetaIndex.MAX_PKGS_WITH_KNOWN_PREFIX) { - indexSet.add(key + "/"); + if (setSize > JarMetaIndex.MAX_PKGS_WITH_KNOWN_PREFIX || + pkgSetStartsWithKey.contains(TOP_LEVEL)) { + indexSet.add(key + "/"); } else { /* If the set contains less than MAX_PKGS_WITH_KNOWN_PREFIX, add * them to the indexSet of the MetaIndex object.