public void setVarVersions(RootStatement root) { VarVersionsProcessor oldProcessor = varVersions; varVersions = new VarVersionsProcessor(method, methodDescriptor); varVersions.setVarVersions(root, oldProcessor); }
public void setVarVersions(RootStatement root, VarVersionsProcessor previousVersionsProcessor) { SSAConstructorSparseEx ssa = new SSAConstructorSparseEx(); ssa.splitVariables(root, method); FlattenStatementsHelper flattenHelper = new FlattenStatementsHelper(); DirectGraph graph = flattenHelper.buildDirectGraph(root); mergePhiVersions(ssa, graph); typeProcessor.calculateVarTypes(root, graph); simpleMerge(typeProcessor, graph, method); // FIXME: advanced merging eliminateNonJavaTypes(typeProcessor); setNewVarIndices(typeProcessor, graph, previousVersionsProcessor); }
public Integer getVarOriginalIndex(int index) { if (varVersions == null) { return null; } return varVersions.getMapOriginalVarIndices().get(index); }
public VarType getVarType(VarVersionPair pair) { return varVersions == null ? null : varVersions.getVarType(pair); }
public void setVarType(VarVersionPair pair, VarType type) { varVersions.setVarType(pair, type); }
public void setVarFinal(VarVersionPair pair, int finalType) { varVersions.setVarFinal(pair, finalType); }
public int getVarFinal(VarVersionPair pair) { return varVersions == null ? VarTypeProcessor.VAR_FINAL : varVersions.getVarFinal(pair); }
public VarType getVarType(VarVersionPair pair) { return varVersions == null ? null : varVersions.getVarType(pair); }
public void setVarType(VarVersionPair pair, VarType type) { varVersions.setVarType(pair, type); }
public void setVarFinal(VarVersionPair pair, int finalType) { varVersions.setVarFinal(pair, finalType); }
public int getVarFinal(VarVersionPair pair) { return varVersions == null ? VarTypeProcessor.VAR_FINAL : varVersions.getVarFinal(pair); }
public void setVarVersions(RootStatement root, VarVersionsProcessor previousVersionsProcessor) { SSAConstructorSparseEx ssa = new SSAConstructorSparseEx(); ssa.splitVariables(root, method); FlattenStatementsHelper flattenHelper = new FlattenStatementsHelper(); DirectGraph graph = flattenHelper.buildDirectGraph(root); mergePhiVersions(ssa, graph); typeProcessor.calculateVarTypes(root, graph); simpleMerge(typeProcessor, graph, method); // FIXME: advanced merging eliminateNonJavaTypes(typeProcessor); setNewVarIndices(typeProcessor, graph, previousVersionsProcessor); }
public void setVarVersions(RootStatement root) { VarVersionsProcessor oldProcessor = varVersions; varVersions = new VarVersionsProcessor(method, methodDescriptor); varVersions.setVarVersions(root, oldProcessor); }
public void setDebugVarNames(Map<Integer, String> mapDebugVarNames) { if (varVersions == null) { return; } Map<Integer, Integer> mapOriginalVarIndices = varVersions.getMapOriginalVarIndices(); List<VarVersionPair> listVars = new ArrayList<>(mapVarNames.keySet()); listVars.sort(Comparator.comparingInt(o -> o.var)); Map<String, Integer> mapNames = new HashMap<>(); for (VarVersionPair pair : listVars) { String name = mapVarNames.get(pair); Integer index = mapOriginalVarIndices.get(pair.var); if (index != null) { String debugName = mapDebugVarNames.get(index); if (debugName != null && TextUtil.isValidIdentifier(debugName, method.getClassStruct().getBytecodeVersion())) { name = debugName; } } Integer counter = mapNames.get(name); mapNames.put(name, counter == null ? counter = 0 : ++counter); if (counter > 0) { name += String.valueOf(counter); } mapVarNames.put(pair, name); } }
Map<Integer, Integer> oldIndices = previousVersionsProcessor.getMapOriginalVarIndices(); this.mapOriginalVarIndices = new HashMap<>(mapOriginalVarIndices.size()); for (Entry<Integer, Integer> entry : mapOriginalVarIndices.entrySet()) {
public Integer getVarOriginalIndex(int index) { if (varVersions == null) { return null; } return varVersions.getMapOriginalVarIndices().get(index); }
public void setDebugVarNames(Map<Integer, String> mapDebugVarNames) { if (varVersions == null) { return; } Map<Integer, Integer> mapOriginalVarIndices = varVersions.getMapOriginalVarIndices(); List<VarVersionPair> listVars = new ArrayList<>(mapVarNames.keySet()); Collections.sort(listVars, Comparator.comparingInt(o -> o.var)); Map<String, Integer> mapNames = new HashMap<>(); for (VarVersionPair pair : listVars) { String name = mapVarNames.get(pair); Integer index = mapOriginalVarIndices.get(pair.var); if (index != null) { String debugName = mapDebugVarNames.get(index); if (debugName != null && TextUtil.isValidIdentifier(debugName, method.getClassStruct().getBytecodeVersion())) { name = debugName; } } Integer counter = mapNames.get(name); mapNames.put(name, counter == null ? counter = 0 : ++counter); if (counter > 0) { name += String.valueOf(counter); } mapVarNames.put(pair, name); } }
Map<Integer, Integer> oldIndices = previousVersionsProcessor.getMapOriginalVarIndices(); this.mapOriginalVarIndices = new HashMap<>(mapOriginalVarIndices.size()); for (Entry<Integer, Integer> entry : mapOriginalVarIndices.entrySet()) {