Lines Matching refs:block

73     /** {@code null-ok;} block output order; becomes non-null in {@link #pickOrder} */
130 * objects per basic block (to the first and last instruction,
131 * and just past the end of the block), and the possibility of
132 * an extra goto at the end of each basic block.
139 * extra instruction per block (for the locals state at the
140 * start of the block) as well as one for each interblock
179 * We almost could just check the first block here, but the
181 * subsequent block in the case of synchronized methods.
233 * and output of one block.
235 * @param block {@code non-null;} the block to process and output
236 * @param nextLabel {@code >= -1;} the next block that will be processed, or
237 * {@code -1} if there is no next block
239 private void outputBlock(BasicBlock block, int nextLabel) {
240 // Append the code address for this block.
241 CodeAddress startAddress = addresses.getStart(block);
244 // Append the local variable state for the block.
246 RegisterSpecSet starts = locals.getStarts(block);
255 translationVisitor.setBlock(block, addresses.getLast(block));
256 block.getInsns().forEach(translationVisitor);
258 // Insert the block end code address.
259 output.add(addresses.getEnd(block));
261 // Set up for end-of-block activities.
263 int succ = block.getPrimarySuccessor();
264 Insn lastInsn = block.getLastInsn();
268 * which block will get output next.
273 * The block has a "primary successor" and that primary
274 * successor isn't the next block to be output.
278 (block.getSecondarySuccessor() == nextLabel)) {
280 * The block ends with an "if" of some sort, and its
282 * next block to output. So, reverse the sense of
283 * the test, so that we can just emit the next block
321 * first block of the method), add that label to the order,
327 * unordered block, and adding it to the order, and so on.
334 * Attempt to trace backward from the chosen block to an
336 * block as its primary successor, and so on, until we
338 * trace with that block. Note that the first block in the
341 * picking a new starter block.
373 // Failed to find a better block to start the trace.
378 * Trace a path from the chosen block to one of its
400 * Order the current block's preferred successor
430 // There was a duplicate block label.
492 /** {@code non-null;} basic block being worked on */
493 private BasicBlock block;
497 * block (used before switches and throwing instructions)
511 * Sets the block currently being worked on.
513 * @param block {@code non-null;} the block
515 * last instruction of the block
517 public void setBlock(BasicBlock block, CodeAddress lastAddress) {
518 this.block = block;
552 * immediately subsequent block).
557 int target = block.getSuccessors().get(1);
611 IntList successors = block.getSuccessors();
614 int primarySuccessor = block.getPrimarySuccessor();
653 * Looks forward to the current block's primary successor, returning
655 * top of that block or null if none.
662 int label = block.getPrimarySuccessor();