Mercurial > hg > graal-compiler
comparison graal/GraalCompiler/src/com/sun/c1x/graph/IR.java @ 2833:1cd59ca9ac86
Removed Throw HIR instruction. Removed special handling for exceptions in register allocator.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Tue, 31 May 2011 13:30:23 +0200 |
parents | 775c31be565c |
children | c1c8a0291771 |
comparison
equal
deleted
inserted
replaced
2832:775c31be565c | 2833:1cd59ca9ac86 |
---|---|
86 List<Block> blocks = schedule.getBlocks(); | 86 List<Block> blocks = schedule.getBlocks(); |
87 List<LIRBlock> lirBlocks = new ArrayList<LIRBlock>(); | 87 List<LIRBlock> lirBlocks = new ArrayList<LIRBlock>(); |
88 Map<Block, LIRBlock> map = new HashMap<Block, LIRBlock>(); | 88 Map<Block, LIRBlock> map = new HashMap<Block, LIRBlock>(); |
89 for (Block b : blocks) { | 89 for (Block b : blocks) { |
90 LIRBlock block = new LIRBlock(b.blockID()); | 90 LIRBlock block = new LIRBlock(b.blockID()); |
91 block.setExceptionEntry(b.isExceptionEntry()); | |
92 map.put(b, block); | 91 map.put(b, block); |
93 block.setInstructions(b.getInstructions()); | 92 block.setInstructions(b.getInstructions()); |
94 block.setLinearScanNumber(b.blockID()); | 93 block.setLinearScanNumber(b.blockID()); |
95 | 94 |
96 block.setFirstInstruction(b.firstNode()); | 95 block.setFirstInstruction(b.firstNode()); |
98 lirBlocks.add(block); | 97 lirBlocks.add(block); |
99 } | 98 } |
100 | 99 |
101 for (Block b : blocks) { | 100 for (Block b : blocks) { |
102 for (Block succ : b.getSuccessors()) { | 101 for (Block succ : b.getSuccessors()) { |
103 // if (succ.isExceptionEntry()) { | 102 map.get(b).blockSuccessors().add(map.get(succ)); |
104 // map.get(b).getExceptionHandlerSuccessors().add(map.get(succ)); | |
105 // } else { | |
106 map.get(b).blockSuccessors().add(map.get(succ)); | |
107 // } | |
108 } | 103 } |
109 | 104 |
110 for (Block pred : b.getPredecessors()) { | 105 for (Block pred : b.getPredecessors()) { |
111 map.get(b).blockPredecessors().add(map.get(pred)); | 106 map.get(b).blockPredecessors().add(map.get(pred)); |
112 } | 107 } |
113 } | 108 } |
114 | 109 |
115 | |
116 // TODO(tw): Schedule nodes within a block. | |
117 | |
118 | |
119 CriticalEdgeFinder finder = new CriticalEdgeFinder(lirBlocks, compilation.graph); | 110 CriticalEdgeFinder finder = new CriticalEdgeFinder(lirBlocks, compilation.graph); |
120 finder.splitCriticalEdges(); | 111 finder.splitCriticalEdges(); |
121 | 112 |
122 | |
123 orderedBlocks = lirBlocks; | 113 orderedBlocks = lirBlocks; |
124 | |
125 valueToBlock = new HashMap<Node, LIRBlock>(); | 114 valueToBlock = new HashMap<Node, LIRBlock>(); |
126 for (LIRBlock b : orderedBlocks) { | 115 for (LIRBlock b : orderedBlocks) { |
127 for (Node i : b.getInstructions()) { | 116 for (Node i : b.getInstructions()) { |
128 valueToBlock.put(i, b); | 117 valueToBlock.put(i, b); |
129 } | 118 } |