for (int i = 0; i < size; i++) if (nodes[i].block.exits() == 0) if (nodes[i].makeDominatorTree(visited, distance, access)) changed = true; } while (changed);
for (int i = 0; i < size; i++) if (nodes[i].block.exits() == 0) if (nodes[i].makeDominatorTree(visited, distance, access)) changed = true; } while (changed);
for (int i = 0; i < size; i++) if (nodes[i].block.exits() == 0) if (nodes[i].makeDominatorTree(visited, distance, access)) changed = true; } while (changed);
for (int i = 0; i < size; i++) visited[i] = false; } while (nodes[0].makeDominatorTree(visited, distance, access)); Node.setChildren(nodes); return nodes;
for (int i = 0; i < size; i++) visited[i] = false; } while (nodes[0].makeDominatorTree(visited, distance, access)); Node.setChildren(nodes); return nodes;
for (int i = 0; i < size; i++) visited[i] = false; } while (nodes[0].makeDominatorTree(visited, distance, access)); Node.setChildren(nodes); return nodes;
boolean makeDominatorTree(boolean[] visited, int[] distance, Access access) { int index = block.index; if (visited[index]) return false; visited[index] = true; boolean changed = false; BasicBlock[] exits = access.exits(this); if (exits != null) for (int i = 0; i < exits.length; i++) { Node n = access.node(exits[i]); if (n.makeDominatorTree(visited, distance, access)) changed = true; } BasicBlock[] entrances = access.entrances(this); if (entrances != null) for (int i = 0; i < entrances.length; i++) { if (parent != null) { Node n = getAncestor(parent, access.node(entrances[i]), distance); if (n != parent) { parent = n; changed = true; } } } return changed; }
boolean makeDominatorTree(boolean[] visited, int[] distance, Access access) { int index = block.index; if (visited[index]) return false; visited[index] = true; boolean changed = false; BasicBlock[] exits = access.exits(this); if (exits != null) for (int i = 0; i < exits.length; i++) { Node n = access.node(exits[i]); if (n.makeDominatorTree(visited, distance, access)) changed = true; } BasicBlock[] entrances = access.entrances(this); if (entrances != null) for (int i = 0; i < entrances.length; i++) { if (parent != null) { Node n = getAncestor(parent, access.node(entrances[i]), distance); if (n != parent) { parent = n; changed = true; } } } return changed; }
boolean makeDominatorTree(boolean[] visited, int[] distance, Access access) { int index = block.index; if (visited[index]) return false; visited[index] = true; boolean changed = false; BasicBlock[] exits = access.exits(this); if (exits != null) for (int i = 0; i < exits.length; i++) { Node n = access.node(exits[i]); if (n.makeDominatorTree(visited, distance, access)) changed = true; } BasicBlock[] entrances = access.entrances(this); if (entrances != null) for (int i = 0; i < entrances.length; i++) { if (parent != null) { Node n = getAncestor(parent, access.node(entrances[i]), distance); if (n != parent) { parent = n; changed = true; } } } return changed; }
for (int i = 0; i < size; i++) if (nodes[i].block.exits() == 0) if (nodes[i].makeDominatorTree(visited, distance, access)) changed = true; } while (changed);
for (int i = 0; i < size; i++) visited[i] = false; } while (nodes[0].makeDominatorTree(visited, distance, access)); Node.setChildren(nodes); return nodes;
boolean makeDominatorTree(boolean[] visited, int[] distance, Access access) { int index = block.index; if (visited[index]) return false; visited[index] = true; boolean changed = false; BasicBlock[] exits = access.exits(this); if (exits != null) for (int i = 0; i < exits.length; i++) { Node n = access.node(exits[i]); if (n.makeDominatorTree(visited, distance, access)) changed = true; } BasicBlock[] entrances = access.entrances(this); if (entrances != null) for (int i = 0; i < entrances.length; i++) { if (parent != null) { Node n = getAncestor(parent, access.node(entrances[i]), distance); if (n != parent) { parent = n; changed = true; } } } return changed; }
for (int i = 0; i < size; i++) if (nodes[i].block.exits() == 0) if (nodes[i].makeDominatorTree(visited, distance, access)) changed = true; } while (changed);
for (int i = 0; i < size; i++) visited[i] = false; } while (nodes[0].makeDominatorTree(visited, distance, access)); Node.setChildren(nodes); return nodes;
boolean makeDominatorTree(boolean[] visited, int[] distance, Access access) { int index = block.index; if (visited[index]) return false; visited[index] = true; boolean changed = false; BasicBlock[] exits = access.exits(this); if (exits != null) for (int i = 0; i < exits.length; i++) { Node n = access.node(exits[i]); if (n.makeDominatorTree(visited, distance, access)) changed = true; } BasicBlock[] entrances = access.entrances(this); if (entrances != null) for (int i = 0; i < entrances.length; i++) { if (parent != null) { Node n = getAncestor(parent, access.node(entrances[i]), distance); if (n != parent) { parent = n; changed = true; } } } return changed; }