[FELIX-4942] Avoid one additional call in the stack for each recurtion
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1690709 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java b/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
index 40ed588..dc42341 100644
--- a/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
+++ b/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
@@ -397,7 +397,7 @@
ResolutionError rethrow = checkPackageSpaceConsistency(
session, entry.getValue(),
- allCandidates, resourcePkgMap, resultCache);
+ allCandidates, false, resourcePkgMap, resultCache);
if (rethrow != null)
{
Resource faultyResource = entry.getKey();
@@ -527,9 +527,9 @@
//dumpResourcePkgMap(resourcePkgMap);
//System.out.println("+++ PACKAGE SPACES END +++");
- rethrow = checkDynamicPackageSpaceConsistency(session,
+ rethrow = checkPackageSpaceConsistency(session,
allCandidates.getWrappedHost(host),
- allCandidates, resourcePkgMap, new HashMap<Resource, Object>(64));
+ allCandidates, true, resourcePkgMap, new HashMap<Resource, Object>(64));
}
while ((rethrow != null)
&& ((usesPermutations.size() > 0) || (importPermutations.size() > 0)));
@@ -1150,24 +1150,14 @@
ResolveSession session,
Resource resource,
Candidates allCandidates,
+ boolean dynamic,
Map<Resource, Packages> resourcePkgMap,
Map<Resource, Object> resultCache)
{
- if (session.getContext().getWirings().containsKey(resource))
+ if (!dynamic && session.getContext().getWirings().containsKey(resource))
{
return null;
}
- return checkDynamicPackageSpaceConsistency(
- session, resource, allCandidates, resourcePkgMap, resultCache);
- }
-
- private ResolutionError checkDynamicPackageSpaceConsistency(
- ResolveSession session,
- Resource resource,
- Candidates allCandidates,
- Map<Resource, Packages> resourcePkgMap,
- Map<Resource, Object> resultCache)
- {
Object cache = resultCache.get(resource);
if (cache != null)
{
@@ -1437,7 +1427,7 @@
{
rethrow = checkPackageSpaceConsistency(
session, cap.getResource(),
- allCandidates, resourcePkgMap, resultCache);
+ allCandidates, false, resourcePkgMap, resultCache);
if (rethrow != null)
{
// If the lower level check didn't create any permutations,