comparison graal/GraalCompiler/src/com/sun/c1x/ir/Instruction.java @ 2707:7ed72769d51a

exception handling related changes: * changed blockPredecessors to list of Instructions, instead of Blocks * removed explicit predecessor management in BlockBegin, now using predecessors from Graph structure * replaced generated LIR exception entries with exception dispatch chains in IR * added Unwind and ExceptionDispatch instructions * removed ExceptionEntry flag in BlockBegin and all code depending on it * removed exceptionHandler list from Instruction, replaced by exception Edge on Invoke and Throw * replaced list of ExceptionHandlers with single exception edge in debug info misc: * changed GraphvizPrinter layout (smaller ports on large nodes) * removed defunct run config
author Lukas Stadler <lukas.stadler@jku.at>
date Wed, 18 May 2011 18:09:20 +0200
parents 0f69be73d5ce
children a0dd2b907806
comparison
equal deleted inserted replaced
2677:0ea5f12e873a 2707:7ed72769d51a
76 /** 76 /**
77 * Index of bytecode that generated this node when appended in a basic block. 77 * Index of bytecode that generated this node when appended in a basic block.
78 * Negative values indicate special cases. 78 * Negative values indicate special cases.
79 */ 79 */
80 private int bci; 80 private int bci;
81
82 /**
83 * List of associated exception handlers.
84 */
85 private List<ExceptionHandler> exceptionHandlers = ExceptionHandler.ZERO_HANDLERS;
86 81
87 private boolean isAppended = false; 82 private boolean isAppended = false;
88 83
89 /** 84 /**
90 * Constructs a new instruction with the specified value type. 85 * Constructs a new instruction with the specified value type.
183 } 178 }
184 return ((BlockEnd) cur).begin(); 179 return ((BlockEnd) cur).begin();
185 } 180 }
186 181
187 /** 182 /**
188 * Gets the list of exception handlers associated with this instruction.
189 * @return the list of exception handlers for this instruction
190 */
191 public final List<ExceptionHandler> exceptionHandlers() {
192 return exceptionHandlers;
193 }
194
195 /**
196 * Sets the list of exception handlers for this instruction.
197 * @param exceptionHandlers the exception handlers
198 */
199 public final void setExceptionHandlers(List<ExceptionHandler> exceptionHandlers) {
200 this.exceptionHandlers = exceptionHandlers;
201 }
202
203 /**
204 * Compute the value number of this Instruction. Local and global value numbering 183 * Compute the value number of this Instruction. Local and global value numbering
205 * optimizations use a hash map, and the value number provides a hash code. 184 * optimizations use a hash map, and the value number provides a hash code.
206 * If the instruction cannot be value numbered, then this method should return 185 * If the instruction cannot be value numbered, then this method should return
207 * {@code 0}. 186 * {@code 0}.
208 * @return the hashcode of this instruction 187 * @return the hashcode of this instruction
245 * @return the state after the instruction 224 * @return the state after the instruction
246 */ 225 */
247 public FrameState stateAfter() { 226 public FrameState stateAfter() {
248 return null; 227 return null;
249 } 228 }
229
230 public BlockBegin exceptionEdge() {
231 return null;
232 }
250 } 233 }