Skip to content
Snippets Groups Projects
Commit 92745192 authored by Lukas Stadler's avatar Lukas Stadler
Browse files

keep package-specific lists of builtins

parent cf676450
Branches
No related tags found
No related merge requests found
......@@ -71,10 +71,10 @@ public abstract class RBuiltinPackage {
}
}
private static final HashMap<String, ArrayList<Component>> rSources = new HashMap<>();
private static final TreeMap<String, RBuiltinFactory> builtins = new TreeMap<>();
private final HashMap<String, ArrayList<Component>> rSources = new HashMap<>();
private final TreeMap<String, RBuiltinFactory> builtins = new TreeMap<>();
private static synchronized void putBuiltin(String name, RBuiltinFactory factory) {
private synchronized void putBuiltin(String name, RBuiltinFactory factory) {
builtins.put(name, factory);
}
......@@ -118,7 +118,7 @@ public abstract class RBuiltinPackage {
}
}
public static RBuiltinFactory lookupByName(String methodName) {
public RBuiltinFactory lookupByName(String methodName) {
return builtins.get(methodName);
}
......
......@@ -46,7 +46,7 @@ import com.oracle.truffle.r.runtime.env.REnvironment.PutException;
*/
public final class RBuiltinPackages implements RBuiltinLookup {
private static final HashMap<String, RBuiltinPackage> packages = new HashMap<>(6);
private static final LinkedHashMap<String, RBuiltinPackage> packages = new LinkedHashMap<>(6);
private static final RBuiltinPackages instance = new RBuiltinPackages();
......@@ -127,7 +127,13 @@ public final class RBuiltinPackages implements RBuiltinLookup {
}
public static RBuiltinFactory lookupBuiltin(String name) {
return RBuiltinPackage.lookupByName(name);
for (RBuiltinPackage pkg : packages.values()) {
RBuiltinFactory factory = pkg.lookupByName(name);
if (factory != null) {
return factory;
}
}
return null;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment