public JavaJavaScriptHybridCallGraphBuilder(IMethod fakeRootClass, AnalysisOptions options, IAnalysisCacheView cache) {
super(fakeRootClass, options, cache, new AstCFAPointerKeys());
globalObject = new GlobalObjectKey(cha.lookupClass(JavaScriptTypes.Root));
SSAContextInterpreter contextInterpreter = makeDefaultContextInterpreters(null, options, cha);
setContextInterpreter( contextInterpreter );
ContextSelector def = new DefaultContextSelector(options, cha);
Map<Atom,ContextSelector> languageSelectors = HashMapFactory.make();
languageSelectors.put(JavaScriptTypes.jsName,
new JavaScriptFunctionApplyContextSelector(new JavaScriptConstructorContextSelector(def)));
languageSelectors.put(Language.JAVA.getName(), def);
setContextSelector(new CrossLanguageContextSelector(languageSelectors));
Map<Atom,InstanceKeyFactory> instanceKeys = HashMapFactory.make();
instanceKeys.put(
JavaScriptTypes.jsName,
new JavaScriptScopeMappingInstanceKeys(cha, this, new JavaScriptConstructorInstanceKeys(new ZeroXInstanceKeys(
options, cha, contextInterpreter, ZeroXInstanceKeys.ALLOCATIONS))));
instanceKeys.put(
Language.JAVA.getName(),
new ZeroXInstanceKeys(options, cha, contextInterpreter, ZeroXInstanceKeys.NONE));
setInstanceKeys(new CrossLanguageInstanceKeys(instanceKeys));
}