Examples of InputBlock


Examples of com.sun.hotspot.igv.data.InputBlock

            boolean progress = false;

            Set<Node> newUnscheduled = new HashSet<Node>();
            for (Node n : unscheduled) {

                InputBlock block = null;
                if (this.isPhi(n) && n.preds.get(0) != null) {
                    // Phi nodes in same block as region nodes
                    block = n.preds.get(0).block;
                } else {
                    for (Node s : n.succs) {
                        if (reachable.contains(s)) {
                            if (s.block == null) {
                                block = null;
                                break;
                            } else {
                                if (block == null) {
                                    block = s.block;
                                } else {
                                    block = commonDominator[this.blockIndex.get(block)][blockIndex.get(s.block)];
                                }
                            }
                        }
                    }
                }

                if (block != null) {
                    n.block = block;
                    block.addNode(n.inputNode.getId());
                    progress = true;
                } else {
                    newUnscheduled.add(n);
                }
            }
View Full Code Here

Examples of com.sun.hotspot.igv.data.InputBlock

            }
        }
    }

    public InputBlock getCommonDominator(int a, int b) {
        InputBlock ba = blocks.get(a);
        InputBlock bb = blocks.get(b);
        if (ba == bb) {
            return ba;
        }
        Set<InputBlock> visited = new HashSet<InputBlock>();
        while (ba != null) {
View Full Code Here

Examples of com.sun.hotspot.igv.data.InputBlock

                ib.dominator = 0;
            }
        }

        for (BlockIntermediate bi : intermediate) {
            InputBlock b = bi.block;
            int dominator = bi.dominator;
            InputBlock dominatorBlock = null;
            if (dominator != -1) {
                dominatorBlock = intermediate.get(dominator).block;
            }

            if (dominatorBlock == b) {
View Full Code Here

Examples of com.sun.hotspot.igv.data.InputBlock

        }
        Stack<Node> stack = new Stack<Node>();
        Set<Node> visited = new HashSet<Node>();
        stack.add(root);
        int blockCount = 0;
        InputBlock rootBlock = null;


        while (!stack.isEmpty()) {
            Node proj = stack.pop();
            Node parent = proj;
            if (proj.isBlockProjection && proj.preds.size() > 0) {
                parent = proj.preds.get(0);
            }

            if (!visited.contains(parent)) {
                visited.add(parent);
                InputBlock block = new InputBlock(graph, "" + blockCount);
                blocks.add(block);
                if (parent == root) {
                    rootBlock = block;
                }
                blockCount++;
                parent.block = block;
                if (proj != parent && proj.succs.size() == 1 && proj.succs.contains(root)) {
                    // Special treatment of Halt-nodes
                    proj.block = block;
                }

                Node p = proj;
                do {
                    if (p.preds.size() == 0 || p.preds.get(0) == null) {
                        p = parent;
                        break;
                    }
                    p = p.preds.get(0);

                    if (p.block == null) {
                        p.block = block;
                    }
                } while (!p.isBlockProjection && !p.isBlockStart);

                if (block != rootBlock) {
                    for (Node n : p.preds) {
                        if (n != null && n != p) {
                            if (n.isBlockProjection) {
                                n = n.preds.get(0);
                            }
                            if (n.block != null) {
                                n.block.addSuccessor(block);
                            }
                        }
                    }
                }

                for (Node n : parent.succs) {
                    if (n != root && n.isBlockProjection) {
                        for (Node n2 : n.succs) {

                            if (n2 != parent && n2.block != null && n2.block != rootBlock) {
                                block.addSuccessor(n2.block);
                            }
                        }
                    } else {
                        if (n != parent && n.block != null && n.block != rootBlock) {
                            block.addSuccessor(n.block);
                        }
                    }
                }

                int num_preds = p.preds.size();
                int bottom = -1;
                if (isRegion(p) || isPhi(p)) {
                    bottom = 0;
                }

                int pushed = 0;
                for (int i = num_preds - 1; i > bottom; i--) {
                    if (p.preds.get(i) != null && p.preds.get(i) != p) {
                        stack.push(p.preds.get(i));
                        pushed++;
                    }
                }

                if (pushed == 0 && p == root) {
                // TODO: special handling when root backedges are not built yet
                }
            }
        }

        for (Node n : nodes) {
            InputBlock block = n.block;
            if (block != null) {
                block.addNode(n.inputNode.getId());
            }
        }

        int z = 0;
        blockIndex = new HashMap<InputBlock, Integer>();
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.