if (log.isDebugEnabled()) {
log.debug(r.toString() + "Hotspots: " + hs_nt);
}
log.info("Converting to MLFA...");
Grammar2MLFA gm = new Grammar2MLFA(r);
MLFA mlfa = gm.convert();
propagateTaint(r);
for (Node n : nodes) {
Nonterminal nt = f2g.getNonterminal(n);
MLFAStatePair sp = gm.getMLFAStatePair(nt);
if (nt.isTaint()) {
sp.setTaint(true);
}
}
log.debug(mlfa.toString());
// Make map
map = new HashMap<ValueBox, MLFAStatePair>();
for (ValueBox box : hotspots) {
Node n = m3.get(m2.get(m1.get(box)));
if (n != null) {
Nonterminal nt = f2g.getNonterminal(n);
MLFAStatePair sp = gm.getMLFAStatePair(nt);
map.put(box, sp);
}
}
tostring_map = new HashMap<SootClass, MLFAStatePair>();
Map<SootClass, StringStatement> tostring_hotspot_map = jt.getToStringHotspotMap();
for (Map.Entry<SootClass, StringStatement> tse : tostring_hotspot_map.entrySet()) {
SootClass tsc = tse.getKey();
StringStatement ss = tse.getValue();
Node n = m3.get(m2.get(ss));
if (n != null) {
Nonterminal nt = f2g.getNonterminal(n);
MLFAStatePair sp = gm.getMLFAStatePair(nt);
tostring_map.put(tsc, sp);
}
}
sourcefile_map = jt.getSourceFileMap();
class_map = jt.getClassNameMap();