private ContextSelector getSelector(CallSiteReference site) { return languageSelectors.get(getLanguage(site)); }
@Override public IntSet getRelevantParameters(CGNode caller, CallSiteReference site) { return getSelector(site).getRelevantParameters(caller, site); } }
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)); }
@Override public Context getCalleeTarget(CGNode caller, CallSiteReference site, IMethod callee, InstanceKey[] receiver) { return getSelector(site).getCalleeTarget(caller, site, callee, receiver); }
private ContextSelector getSelector(CallSiteReference site) { return languageSelectors.get(getLanguage(site)); }
@Override public IntSet getRelevantParameters(CGNode caller, CallSiteReference site) { return getSelector(site).getRelevantParameters(caller, site); } }
@Override public Context getCalleeTarget(CGNode caller, CallSiteReference site, IMethod callee, InstanceKey[] receiver) { return getSelector(site).getCalleeTarget(caller, site, callee, receiver); }