Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.jruby.ir.representations;
  
  import java.util.List;
  
  public class ExceptionRegion {
      private Label ensureBlockLabel// Label of the ensure block
     private Label firstRescueBlockLabel// Label of the first rescue block
 
     private List<BasicBlockexclusiveBBs;  // Basic blocks exclusively contained within this region
     private List<ExceptionRegionnestedRegions// Rescue regions nested within this one
     private BasicBlock startBB;       // First BB of the rescued region
     private BasicBlock endBB;         // Last BB of the rescued region
     private BasicBlock firstRescueBB// First BB of the first rescue block of this region
 
     public ExceptionRegion(Label firstRescueBlockLabelLabel ensureBlockLabelBasicBlock startBB) {
         this. = firstRescueBlockLabel;
         this. = ensureBlockLabel;
         this. = startBB;
          = new ArrayList<BasicBlock>();
          = new ArrayList<ExceptionRegion>();
     }
 
     public void setEndBB(BasicBlock bb) {
          = bb;
     }
 
     public Label getEnsureBlockLabel() {
         return ;
     }
 
     public BasicBlock getStartBB() {
         return ;
     }
 
     public BasicBlock getEndBB() {
         return ;
     }
 
     public List<BasicBlockgetExclusiveBBs() {
         return ;
     }
 
     public void addBB(BasicBlock bb) {
         .add(bb);
     }
 
     public void addNestedRegion(ExceptionRegion r) {
         .add(r);
         .remove(r.exclusiveBBs.get(0));
     }
 
     // BB b has been merged into BB a.
     // Update the exception region.
     public void mergeBBs(BasicBlock aBasicBlock b) {
 
         // Remove b from exclusiveBBs.
         .remove(b);
 
         // Update endBB if it is b
         if ( == b) {
              = a;
         }
 
         // Process nested regions
         for (ExceptionRegion er) {
             er.mergeBBs(ab);
         }
     }
 
     public void setFirstRescueBB(BasicBlock frbb) {
          = frbb;
     }
 
     public Label getFirstRescueBlockLabel() {
         return ;
     }
 
              == null ? null : ii.getRenamedLabel(),
             ii.getRenamedBB(this.));
         newR.endBB = ii.getRenamedBB();
         newR.firstRescueBB = ii.getRenamedBB();
 
         for (BasicBlock b) {
             newR.addBB(ii.getRenamedBB(b));
         }
 
         for (ExceptionRegion r) {
             newR.addNestedRegion(r.cloneForInlining(ii));
         }
 
         return newR;
     }
 
     @Override
    public String toString() {
        StringBuilder buf = new StringBuilder();
        buf.append("--- Exception Region ---");
        buf.append("\n");
        buf.append("Exclusive BBs\n");
        for (BasicBlock b) {
            buf.append("\t");
            buf.append(b);
            buf.append("\n");
        }
        buf.append("End: ");
        buf.append(.getLabel());
        buf.append("\n");
        buf.append("Rescuer: ");
        buf.append();
        buf.append("\n");
        if ( != null) {
            buf.append("Ensurer: ");
            buf.append();
            buf.append("\n");
        }
        buf.append("\n");
        for (ExceptionRegion er) {
            buf.append(er.toString());
        }
        return buf.toString();
    }
New to GrepCode? Check out our FAQ X