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 }