Пример #1
0
  public void removePhiFuncVariable(String origName, String varName) {
    for (int i = 0; i < getPhiFunctions().size(); i++) {
      PhiFunction phiFunc = getPhiFunctions().get(i);

      if (0 == phiFunc.getVariable().getName().compareTo(origName)) {
        __debugPrintln("Removing Phi Func ref: " + origName + " to " + varName);

        phiFunc.deleteVariable(varName);
      }
    }
  }
Пример #2
0
  public boolean hasPhiFunc(String strName) {
    boolean bRet = false;

    for (int i = 0; !bRet && i < getPhiFunctions().size(); i++) {
      PhiFunction phiFunc = getPhiFunctions().get(i);

      if (0 == phiFunc.getVariable().getName().compareTo(strName)) {
        bRet = true;
      }
    }

    return bRet;
  }
Пример #3
0
  // Updates this block's Phi Function
  public void updatePhiFunction(Argument arg, Symbol sym) {
    for (int i = 0; i < getPhiFunctions().size(); i++) {
      PhiFunction phiFunc = getPhiFunctions().get(i);

      if (0 == phiFunc.getVariable().getName().compareTo(arg.getOrigName())) {
        __debugPrintln("Updating Phi Func: " + arg.getOrigName() + " to " + sym.getIntegerValue());

        phiFunc.updateVariable(arg.getName(), new Symbol(sym));

        break;
      }
    }
  }
Пример #4
0
  public int getPhiFunctionConstValue(String strName) {
    int nRet = 0;

    for (int i = 0; i < getPhiFunctions().size(); i++) {
      PhiFunction phiFunc = getPhiFunctions().get(i);

      if (0 == phiFunc.getVariable().getName().compareTo(strName)) {
        if (phiFunc.isConst()) {
          nRet = phiFunc.getConstValue();
          break;
        }
      }
    }

    return nRet;
  }
Пример #5
0
  public void updatePhiFunctionCurName(String strCurName, Symbol sym) {
    for (int i = 0; i < getPhiFunctions().size(); i++) {
      PhiFunction phiFunc = getPhiFunctions().get(i);

      if (phiFunc.varInMergeList(strCurName)) {
        __debugPrintln(
            "Updating Phi Func: "
                + phiFunc.getVariable().getName()
                + " to "
                + sym.getIntegerValue());

        phiFunc.updateVariable(strCurName, new Symbol(sym));

        break;
      }
    }
  }
Пример #6
0
  public Symbol getPhiFunctionSymbol(String strName) {
    Symbol symRet = null;

    for (int i = 0; i < getPhiFunctions().size(); i++) {
      PhiFunction phiFunc = getPhiFunctions().get(i);

      if (0 == phiFunc.getVariable().getName().compareTo(strName)) {
        __debugPrintln("Found Symbol for " + strName);
        symRet =
            new Symbol(
                "" + phiFunc.getConstValue(), Symbol.SymbolType.CONSTANT, Symbol.DataType.INTEGER);
        symRet.setIntegerValue(phiFunc.getConstValue());
        break;
      }
    }

    return symRet;
  }
Пример #7
0
  public PhiFunction getPhiFunctionMatchingCurName(String strCurName) {
    PhiFunction ret = null;

    for (int i = 0; i < getPhiFunctions().size(); i++) {
      PhiFunction phiFunc = getPhiFunctions().get(i);

      if (phiFunc.varInMergeList(strCurName)) {
        __debugPrintln(
            "Found Phi Func : " + phiFunc.getVariable().getName() + " matching " + strCurName);

        ret = phiFunc;

        break;
      }
    }

    return ret;
  }