private void init(CfgBlock block, SymbolTable symbols) { // 'writtenOnly' has variables that are WRITE-ONLY inside at least one element // (as opposed to 'kill' which can have a variable that inside an element is both READ and WRITTEN) Set<Symbol> writtenOnly = new HashSet<>(); for (Tree element : block.elements()) { Map<Symbol, VariableUsage> variableUsages = ReadWriteVisitor.getVariableUsages(element, symbols); variableUsagesPerElement.put(element, variableUsages); computeGenAndKill(writtenOnly, variableUsages); } }
private void init(CfgBlock block, SymbolTable symbols) { // 'writtenOnly' has variables that are WRITE-ONLY inside at least one element // (as opposed to 'kill' which can have a variable that inside an element is both READ and WRITTEN) Set<Symbol> writtenOnly = new HashSet<>(); for (Tree element : block.elements()) { Map<Symbol, VariableUsage> variableUsages = ReadWriteVisitor.getVariableUsages(element, symbols); variableUsagesPerElement.put(element, variableUsages); computeGenAndKill(writtenOnly, variableUsages); } }