Package org.candle.decompiler.intermediate.graph.range

Source Code of org.candle.decompiler.intermediate.graph.range.IfLowerRangeVisitor

package org.candle.decompiler.intermediate.graph.range;

import org.apache.bcel.generic.InstructionHandle;
import org.candle.decompiler.intermediate.code.AbstractIntermediate;
import org.candle.decompiler.intermediate.code.conditional.ElseIfIntermediate;
import org.candle.decompiler.intermediate.code.conditional.IfIntermediate;
import org.candle.decompiler.intermediate.graph.GraphIntermediateVisitor;
import org.candle.decompiler.intermediate.graph.context.IntermediateGraphContext;
import org.candle.decompiler.intermediate.graph.context.NullIntermediate;

public class IfLowerRangeVisitor extends GraphIntermediateVisitor {

  public IfLowerRangeVisitor(IntermediateGraphContext igc) {
    super(igc);
  }
 
  @Override
  public void visitElseIfIntermediate(ElseIfIntermediate line) {
    visitIfIntermediate(line);
  }
 
  @Override
  public void visitIfIntermediate(IfIntermediate line) {
    AbstractIntermediate l = igc.getTrueTarget(line);
    InstructionHandle lower = l.getInstruction();
    line.getBlockRange().setStart(lower);
   
    //upper range...
    AbstractIntermediate u = igc.getFalseTarget(line);
    NullIntermediate nullIntermediate = new NullIntermediate(u.getInstruction().getPrev());
    AbstractIntermediate ai = igc.getOrderedIntermediate().floor(nullIntermediate);

    if(ai != null) {
      line.getBlockRange().setEnd(ai.getInstruction());
    }
   
  }

}
TOP

Related Classes of org.candle.decompiler.intermediate.graph.range.IfLowerRangeVisitor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.