Package dk.brics.xact.analysis.flowgraph

Examples of dk.brics.xact.analysis.flowgraph.Variable


    cfg.addStatement(new AnalyzeStm(AnalyzeStm.Kind.TYPEANNOTATION, makevar(), var, annotation, context.getCurrentOrigin()));
  }
  private Variable assumeTypeAnnotation(SchemaType annotation, Variable var) {
    if (annotation == null)
      return var;
    Variable result = makevar();
    cfg.addStatement(new ValidateStm(result, null, annotation, context.getCurrentOrigin()));
    return result;
  }
View Full Code Here


    cfg.addStatement(new ValidateStm(result, null, annotation, context.getCurrentOrigin()));
    return result;
  }

  public void caseReturnStmt(ReturnStmt s) {
    Variable result = translateExpr(s.getOp());
    checkTypeAnnotation(context.getCurrentMethod().getReturnType(), result);
    cfg.addStatement(new VarStm(context.getCurrentMethod().getReturnVar(), result, context.getCurrentOrigin()));
  }
View Full Code Here

    cfg.endBranch();
  }

  private void putArrayAddAll(Value dest, ValueBox source) {
    hardcodeResult = context.getNothing();
    Variable array = translateExpr(dest);
    Variable src = translateExpr(source.getValue());
    cfg.startBranch();
    cfg.useBranch();
    cfg.addStatement(new VarStm(array, src, context.getCurrentOrigin()));
    cfg.useBranch();
    cfg.endBranch();
View Full Code Here

    cfg.useBranch();
    cfg.endBranch();
  }
  private void putArrayWrite(Value dest, ValueBox source) {
    hardcodeResult = context.getNothing();
    Variable array = translateExpr(dest);
    Variable src = translateExpr(source.getValue());
    cfg.addStatement(new ArrayWriteStm(array, src, context.getCurrentOrigin()));
    cfg.addStatement(addStringStatement(new ArrayWriteStringStm(array, null, context.getCurrentOrigin()), source));
  }
View Full Code Here

    hardcodeResult = makevar();
    cfg.addStatement(new ArrayReadStm(hardcodeResult, translateExpr(from), context.getCurrentOrigin()));
  }
  private void putArrayReadAndWrite(Value arrayValue, ValueBox source) {
      hardcodeResult = makevar();
      Variable array = translateExpr(arrayValue);
      Variable src = translateExpr(source.getValue());
      cfg.addStatement(new ArrayReadStm(hardcodeResult, array, context.getCurrentOrigin()));
        cfg.addStatement(new ArrayWriteStm(array, src, context.getCurrentOrigin()));
        cfg.addStatement(addStringStatement(new ArrayWriteStringStm(array, null, context.getCurrentOrigin()), source));
  }
View Full Code Here

  private void putConcat(ValueBox source) {
    ArrayConstantInfo info = context.getConstantArray(source.getValue());
    if (info.contents != null) {
      // we know exactly how this array is structured
      // use append statements instead to preserve non-emptiness and sequence order
      Variable var = makevar();
      // check if array was not initialized completely
      for (int i=0; i<info.contents.length; i++) {
        if (info.contents[i] == null || info.contents[i].getValue() instanceof NullConstant) {
          // concat() definitely throws NullPointerException
          // just return uninitialized variable
          hardcodeResult = var;
          return;
        }
      }
      cfg.addStatement(new ConstStm(var,
          emptyConstant,
          context.getCurrentOrigin()));
      for (int i=0; i<info.contents.length; i++) {
        Variable var2 = makevar();
        Variable val = translateExpr(info.contents[i].getValue());
        Statement stm;
        cfg.addStatement(stm = new InsertStm(InsertStm.Kind.APPEND,
            var2,
            var,
            null,
View Full Code Here

  public Variable getVariableFromObjectExp(ValueBox b) {
    return getVarFromObjectExpByType(b, b.getValue().getType());
  }
  public Variable getVarFromObjectExpByType(ValueBox b, Type t) {
    if (t instanceof RefType) {
      Variable var = new Variable(context.getNextVarID(), false);
      Debug.println(15, true, "    created variable for " + b.getValue() + ": " + var);
      cfg.startBranch();
      // make an empty branch leaving the variable undefined.
      // this case covers when a text node is plugged in
      cfg.useBranch();
View Full Code Here

TOP

Related Classes of dk.brics.xact.analysis.flowgraph.Variable

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.