public FaintVariableAnalysis(Body body) { Chain<Local> locals = body.getLocals(); allVariables = new CollectionFlowUniverse<Local>(locals); universalSet = new ArrayPackedSet(allVariables); for (Local l : locals) universalSet.add(l); useSetMap = new HashMap<Unit, BoundedFlowSet>(); defSetMap = new HashMap<Unit, BoundedFlowSet>(); UnitGraph graph = new BriefUnitGraph(body); for (Unit u : graph) { BoundedFlowSet defSet = new ArrayPackedSet(allVariables); BoundedFlowSet useSet = new ArrayPackedSet(allVariables); for (ValueBox v : u.getDefBoxes()) { // Only do this for locals. We're not going to even try to handle anything // other than locals. if (v.getValue() instanceof Local) { defSet.add(v.getValue()); } } for (ValueBox v : u.getUseBoxes()) { // Only do this for locals. We're not going to even try to handle anything // other than locals. if (v.getValue() instanceof Local) { useSet.add(v.getValue()); } } defSetMap.put(u, defSet); useSetMap.put(u, useSet); } }