private void varMapToGraph(VarVersionPair varpaar, SFormsFastMapDirect varmap) { VBStyleCollection<VarVersionNode, VarVersionPair> nodes = ssuversions.nodes; VarVersionNode node = nodes.getWithKey(varpaar); node.live = new SFormsFastMapDirect(varmap); }
public SFormsFastMapDirect getCopy() { SFormsFastMapDirect map = new SFormsFastMapDirect(false); map.size = size;
varmap = new SFormsFastMapDirect(varmap);
mergeInVarMaps(node, dgraph); SFormsFastMapDirect varmap = new SFormsFastMapDirect(inVarVersions.get(node.id));
private SFormsFastMapDirect getFilteredOutMap(String nodeid, String predid, DirectGraph dgraph, String destid) { SFormsFastMapDirect mapNew = new SFormsFastMapDirect(); SFormsFastMapDirect mapTrueSource = new SFormsFastMapDirect();
private void mergeInVarMaps(DirectNode node, DirectGraph dgraph) { SFormsFastMapDirect mapNew = new SFormsFastMapDirect(); for (DirectNode pred : node.preds) { SFormsFastMapDirect mapOut = getFilteredOutMap(node.id, pred.id, dgraph, node.id); if (mapNew.isEmpty()) { mapNew = mapOut.getCopy(); } else { mergeMaps(mapNew, mapOut); } } if (extraVarVersions.containsKey(node.id)) { SFormsFastMapDirect mapExtra = extraVarVersions.get(node.id); if (mapNew.isEmpty()) { mapNew = mapExtra.getCopy(); } else { mergeMaps(mapNew, mapExtra); } } inVarVersions.put(node.id, mapNew); }
private void mergeInVarMaps(DirectNode node, DirectGraph dgraph) { SFormsFastMapDirect mapNew = new SFormsFastMapDirect(); for (DirectNode pred : node.preds) { SFormsFastMapDirect mapOut = getFilteredOutMap(node.id, pred.id, dgraph, node.id); if (mapNew.isEmpty()) { mapNew = mapOut.getCopy(); } else { mergeMaps(mapNew, mapOut); } } if (extraVarVersions.containsKey(node.id)) { SFormsFastMapDirect mapExtra = extraVarVersions.get(node.id); if (mapNew.isEmpty()) { mapNew = mapExtra.getCopy(); } else { mergeMaps(mapNew, mapExtra); } } inVarVersions.put(node.id, mapNew); }
private SFormsFastMapDirect getFilteredOutMap(String nodeid, String predid, DirectGraph dgraph, String destid) { SFormsFastMapDirect mapNew = new SFormsFastMapDirect(); SFormsFastMapDirect mapTrueSource = new SFormsFastMapDirect();
private void setCatchMaps(Statement stat, DirectGraph dgraph, FlattenStatementsHelper flatthelper) { SFormsFastMapDirect map; switch (stat.type) { case Statement.TYPE_CATCHALL: case Statement.TYPE_TRYCATCH: List<VarExprent> lstVars; if (stat.type == Statement.TYPE_CATCHALL) { lstVars = ((CatchAllStatement)stat).getVars(); } else { lstVars = ((CatchStatement)stat).getVars(); } for (int i = 1; i < stat.getStats().size(); i++) { int varindex = lstVars.get(i - 1).getIndex(); int version = getNextFreeVersion(varindex); // == 1 map = new SFormsFastMapDirect(); setCurrentVar(map, varindex, version); extraVarVersions.put(dgraph.nodes.getWithKey(flatthelper.getMapDestinationNodes().get(stat.getStats().get(i).id)[0]).id, map); } } for (Statement st : stat.getStats()) { setCatchMaps(st, dgraph, flatthelper); } }
private void setCatchMaps(Statement stat, DirectGraph dgraph, FlattenStatementsHelper flatthelper) { SFormsFastMapDirect map; switch (stat.type) { case Statement.TYPE_CATCHALL: case Statement.TYPE_TRYCATCH: List<VarExprent> lstVars; if (stat.type == Statement.TYPE_CATCHALL) { lstVars = ((CatchAllStatement)stat).getVars(); } else { lstVars = ((CatchStatement)stat).getVars(); } for (int i = 1; i < stat.getStats().size(); i++) { int varindex = lstVars.get(i - 1).getIndex(); int version = getNextFreeVersion(varindex, stat); // == 1 map = new SFormsFastMapDirect(); setCurrentVar(map, varindex, version); extraVarVersions.put(dgraph.nodes.getWithKey(flatthelper.getMapDestinationNodes().get(stat.getStats().get(i).id)[0]).id, map); //ssuversions.createOrGetNode(new VarVersionPair(varindex, version)); ssuversions.createNode(new VarVersionPair(varindex, version)); } } for (Statement st : stat.getStats()) { setCatchMaps(st, dgraph, flatthelper); } }
private SFormsFastMapDirect createFirstMap(StructMethod mt) { boolean thisvar = !mt.hasModifier(CodeConstants.ACC_STATIC); MethodDescriptor md = MethodDescriptor.parseDescriptor(mt.getDescriptor()); int paramcount = md.params.length + (thisvar ? 1 : 0); int varindex = 0; SFormsFastMapDirect map = new SFormsFastMapDirect(); for (int i = 0; i < paramcount; i++) { int version = getNextFreeVersion(varindex); // == 1 FastSparseSet<Integer> set = factory.spawnEmptySet(); set.add(version); map.put(varindex, set); if (thisvar) { if (i == 0) { varindex++; } else { varindex += md.params[i - 1].stackSize; } } else { varindex += md.params[i].stackSize; } } return map; }
varmapFalse = new SFormsFastMapDirect(varmaparr[0]); processExprent(func.getLstOperands().get(0), varmaparr); SFormsFastMapDirect[] varmaparrAnd = new SFormsFastMapDirect[]{new SFormsFastMapDirect(varmaparr[0]), null}; new SFormsFastMapDirect[]{new SFormsFastMapDirect(varmaparr[varmaparr[1] == null ? 0 : 1]), null};
private SFormsFastMapDirect createFirstMap(StructMethod mt, RootStatement root) { boolean thisvar = !mt.hasModifier(CodeConstants.ACC_STATIC); MethodDescriptor md = MethodDescriptor.parseDescriptor(mt.getDescriptor()); int paramcount = md.params.length + (thisvar ? 1 : 0); int varindex = 0; SFormsFastMapDirect map = new SFormsFastMapDirect(); for (int i = 0; i < paramcount; i++) { int version = getNextFreeVersion(varindex, root); // == 1 FastSparseSet<Integer> set = factory.spawnEmptySet(); set.add(version); map.put(varindex, set); ssuversions.createNode(new VarVersionPair(varindex, version)); if (thisvar) { if (i == 0) { varindex++; } else { varindex += md.params[i - 1].stackSize; } } else { varindex += md.params[i].stackSize; } } return map; }
varmapFalse = new SFormsFastMapDirect(varmaparr[0]); processExprent(func.getLstOperands().get(0), varmaparr, stat, calcLiveVars); SFormsFastMapDirect[] varmaparrAnd = new SFormsFastMapDirect[]{new SFormsFastMapDirect(varmaparr[0]), null}; new SFormsFastMapDirect[]{new SFormsFastMapDirect(varmaparr[varmaparr[1] == null ? 0 : 1]), null};
private void varMapToGraph(VarVersionPair varpaar, SFormsFastMapDirect varmap) { VBStyleCollection<VarVersionNode, VarVersionPair> nodes = ssuversions.nodes; VarVersionNode node = nodes.getWithKey(varpaar); node.live = new SFormsFastMapDirect(varmap); }
private void mergeInVarMaps(DirectNode node, DirectGraph dgraph) { SFormsFastMapDirect mapNew = new SFormsFastMapDirect(); for (DirectNode pred : node.preds) { SFormsFastMapDirect mapOut = getFilteredOutMap(node.id, pred.id, dgraph, node.id); if (mapNew.isEmpty()) { mapNew = mapOut.getCopy(); } else { mergeMaps(mapNew, mapOut); } } if (extraVarVersions.containsKey(node.id)) { SFormsFastMapDirect mapExtra = extraVarVersions.get(node.id); if (mapNew.isEmpty()) { mapNew = mapExtra.getCopy(); } else { mergeMaps(mapNew, mapExtra); } } inVarVersions.put(node.id, mapNew); }
private void mergeInVarMaps(DirectNode node, DirectGraph dgraph) { SFormsFastMapDirect mapNew = new SFormsFastMapDirect(); for (DirectNode pred : node.preds) { SFormsFastMapDirect mapOut = getFilteredOutMap(node.id, pred.id, dgraph, node.id); if (mapNew.isEmpty()) { mapNew = mapOut.getCopy(); } else { mergeMaps(mapNew, mapOut); } } if (extraVarVersions.containsKey(node.id)) { SFormsFastMapDirect mapExtra = extraVarVersions.get(node.id); if (mapNew.isEmpty()) { mapNew = mapExtra.getCopy(); } else { mergeMaps(mapNew, mapExtra); } } inVarVersions.put(node.id, mapNew); }
private void setCatchMaps(Statement stat, DirectGraph dgraph, FlattenStatementsHelper flatthelper) { SFormsFastMapDirect map; switch (stat.type) { case Statement.TYPE_CATCHALL: case Statement.TYPE_TRYCATCH: List<VarExprent> lstVars; if (stat.type == Statement.TYPE_CATCHALL) { lstVars = ((CatchAllStatement)stat).getVars(); } else { lstVars = ((CatchStatement)stat).getVars(); } for (int i = 1; i < stat.getStats().size(); i++) { int varindex = lstVars.get(i - 1).getIndex(); int version = getNextFreeVersion(varindex); // == 1 map = new SFormsFastMapDirect(); setCurrentVar(map, varindex, version); extraVarVersions.put(dgraph.nodes.getWithKey(flatthelper.getMapDestinationNodes().get(stat.getStats().get(i).id)[0]).id, map); startVars.add(new VarVersionPair(varindex, version)); } } for (Statement st : stat.getStats()) { setCatchMaps(st, dgraph, flatthelper); } }
private void setCatchMaps(Statement stat, DirectGraph dgraph, FlattenStatementsHelper flatthelper) { SFormsFastMapDirect map; switch (stat.type) { case Statement.TYPE_CATCHALL: case Statement.TYPE_TRYCATCH: List<VarExprent> lstVars; if (stat.type == Statement.TYPE_CATCHALL) { lstVars = ((CatchAllStatement)stat).getVars(); } else { lstVars = ((CatchStatement)stat).getVars(); } for (int i = 1; i < stat.getStats().size(); i++) { int varindex = lstVars.get(i - 1).getIndex(); int version = getNextFreeVersion(varindex, stat); // == 1 map = new SFormsFastMapDirect(); setCurrentVar(map, varindex, version); extraVarVersions.put(dgraph.nodes.getWithKey(flatthelper.getMapDestinationNodes().get(stat.getStats().get(i).id)[0]).id, map); //ssuversions.createOrGetNode(new VarVersionPair(varindex, version)); ssuversions.createNode(new VarVersionPair(varindex, version)); } } for (Statement st : stat.getStats()) { setCatchMaps(st, dgraph, flatthelper); } }
private SFormsFastMapDirect createFirstMap(StructMethod mt, RootStatement root) { boolean thisvar = !mt.hasModifier(CodeConstants.ACC_STATIC); MethodDescriptor md = MethodDescriptor.parseDescriptor(mt.getDescriptor()); int paramcount = md.params.length + (thisvar ? 1 : 0); int varindex = 0; SFormsFastMapDirect map = new SFormsFastMapDirect(); for (int i = 0; i < paramcount; i++) { int version = getNextFreeVersion(varindex, root); // == 1 FastSparseSet<Integer> set = factory.spawnEmptySet(); set.add(version); map.put(varindex, set); ssuversions.createNode(new VarVersionPair(varindex, version)); if (thisvar) { if (i == 0) { varindex++; } else { varindex += md.params[i - 1].stackSize; } } else { varindex += md.params[i].stackSize; } } return map; }