Package edu.cmu.cs.crystal.flow

Examples of edu.cmu.cs.crystal.flow.ILabel


    return value;
  }
 
  @Override
  public <LE> IResult<LE> transfer(ITACBranchSensitiveTransferFunction<LE> tf, List<ILabel> labels, LE value) {
    ILabel normal = NormalLabel.getNormalLabel();
    List<ILabel> normalOnly = Collections.singletonList(normal);
   
    // this implementation makes the simplifying assumption that the last instruction
    // in the sequence relative to the analysis direction should generate results for
    // provided list of labels.  All other instructions only transfer over NormalLabel.
View Full Code Here


    // should never reach this point
    throw new IllegalArgumentException("Given instruction is unknown: " + targetInstr);
  }

  public <LE> IResult<LE> deriveResult(ITACBranchSensitiveTransferFunction<LE> tf, List<ILabel> labels, TACInstruction targetInstr, LE value, boolean afterResult) {
    ILabel normal = NormalLabel.getNormalLabel();
    List<ILabel> normalOnly = Collections.singletonList(normal);
   
    // this implementation makes the simplifying assumption that the last instruction
    // in the sequence relative to the analysis direction should generate results for
    // provided list of labels.  All other instructions only transfer over NormalLabel.
View Full Code Here

            InfixExpression.Operator.CONDITIONAL_OR.equals(((InfixExpression) astNode).getOperator()))
          return transferFunction.transfer(astNode, Collections.singletonList(transferLabel), incoming);
      }
      else if(astNode instanceof PrefixExpression) {
        if(PrefixExpression.Operator.NOT.equals(((PrefixExpression) astNode).getOperator())) {
          ILabel otherLabel = BooleanLabel.getBooleanLabel(! ((BooleanLabel) transferLabel).getBranchValue());
          return transferFunction.transfer(astNode, Collections.singletonList(otherLabel), incoming);
        }
      }
    }
    return transferFunction.transfer(astNode, getLabels(cfgNode), incoming);
View Full Code Here

        // put result back in
        resultsAfterAnalyzing.put(fromNode, checkNull(afterResults));
             
        // 2c. Transfer over following edges
        for (ICFGEdge<N> edge : (isForward ? fromNode.getOutputs() : fromNode.getInputs())) {
          ILabel edgeLabel = edge.getLabel();
          ILabel toLabel = incomingLabel(edgeLabel);
         
          // 2c-i. Find node and lattice to merge
          ICFGNode<N> toNode = isForward ? edge.getSink() : edge.getSource();
          LE mergeIntoNode = afterResults.get(edgeLabel);
         
View Full Code Here

    RelationshipContext relsContext = value.getRelContext();
    IResult<AC> aliasResults = aliasTF.transfer(instr, labels, aliasOps.copy(aBeforeContext));
   
   
    if (labels.contains(BooleanLabel.getBooleanLabel(true)) && labels.contains(BooleanLabel.getBooleanLabel(false))) {
      ILabel trueLabel = BooleanLabel.getBooleanLabel(true);
      ILabel falseLabel = BooleanLabel.getBooleanLabel(false);
     
      //true branch
      AC aAfterContextTrue = aliasResults.get(trueLabel);
      BooleanContext tBContext = new BooleanConstantWrapper(instr, mainAnalysis.getBooleanAnalysis(), aBeforeContext, aAfterContextTrue, true);
      FusionEnvironment<AC> tEnv = new FusionEnvironment<AC>(aAfterContextTrue, relsContext, tBContext, types, infers, mainAnalysis.getVariant());
View Full Code Here

TOP

Related Classes of edu.cmu.cs.crystal.flow.ILabel

Copyright © 2018 www.massapicom. 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.