Mercurial > hg > truffle
changeset 13544:c1b49fd59811
made initial size of block predecessor and successor lists 4 (testing shows this cover 99% of cases)
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Wed, 08 Jan 2014 10:43:05 +0100 |
parents | 9cd47b39b0ef |
children | 550f66e4347f |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java |
diffstat | 1 files changed, 18 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java Tue Jan 07 16:32:58 2014 -0800 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java Wed Jan 08 10:43:05 2014 +0100 @@ -22,9 +22,11 @@ */ package com.oracle.graal.nodes.cfg; +import java.io.*; import java.util.*; import com.oracle.graal.debug.*; +import com.oracle.graal.debug.internal.*; import com.oracle.graal.graph.*; import com.oracle.graal.nodes.*; @@ -197,10 +199,22 @@ } } + static final DebugHistogram H = Debug.createHistogram("Predecessors"); + static final DebugHistogram S = Debug.createHistogram("Succecessors"); + static { + Runtime.getRuntime().addShutdownHook(new Thread() { + @Override + public void run() { + new DebugHistogramAsciiPrinter(new PrintStream(System.out)).print(H); + new DebugHistogramAsciiPrinter(new PrintStream(System.out)).print(S); + } + }); + } + // Connect blocks (including loop backward edges), but ignoring dead code (blocks with id < 0). private void connectBlocks() { for (Block block : reversePostOrder) { - List<Block> predecessors = new ArrayList<>(); + List<Block> predecessors = new ArrayList<>(4); for (Node predNode : block.getBeginNode().cfgPredecessors()) { Block predBlock = nodeToBlock.get(predNode); if (predBlock.id >= 0) { @@ -216,8 +230,9 @@ } } block.predecessors = predecessors; + H.add(predecessors.size()); - List<Block> successors = new ArrayList<>(); + List<Block> successors = new ArrayList<>(4); for (Node suxNode : block.getEndNode().cfgSuccessors()) { Block suxBlock = nodeToBlock.get(suxNode); assert suxBlock.id >= 0; @@ -229,6 +244,7 @@ successors.add(suxBlock); } block.successors = successors; + S.add(predecessors.size()); } }