private void UpdateState(ConstantPropagationDomain state, IVariable v, Constant c) { var cpd = ConstantSetDomain.Bottom; cpd.Add(c); state.Set(v, cpd); }
private void UpdateState(ConstantPropagationDomain state, IFieldReference f, Constant c) { var cpd = ConstantSetDomain.Bottom; cpd.Add(c); state.Set(f, cpd); }
public ConstantPropagationDomain Clone() { var clone = new ConstantPropagationDomain(); foreach (var v in varMapping.Keys) { clone.Set(v, varMapping[v].Clone()); } foreach (var f in fieldMapping.Keys) { clone.Set(f, fieldMapping[f].Clone()); } return(clone); }
public static ConstantPropagationDomain Bottom(IEnumerable <IVariable> vars, IEnumerable <IFieldReference> fields) { var cpd = new ConstantPropagationDomain(); foreach (var v in vars) { cpd.Set(v, ConstantSetDomain.Bottom); } foreach (var f in fields) { cpd.Set(f, ConstantSetDomain.Bottom); } return(cpd); }
public void Join(ConstantPropagationDomain other) { if (VarCount != other.VarCount) { throw new IncompatibleConstantPropagationDomains("Not the same variable set!"); } for (int i = 0; i < varMapping.Keys.Count; i++) { var v = varMapping.Keys.ElementAt(i); if (!other.Contains(v)) { throw new IncompatibleConstantPropagationDomains("Not the same variable set! " + v.ToString()); } var ncsd = Constants(v).Clone(); ncsd.Join(other.Constants(v)); Set(v, ncsd); } if (FieldCount != other.FieldCount) { throw new IncompatibleConstantPropagationDomains("Not the same field set!"); } for (int i = 0; i < fieldMapping.Keys.Count; i++) { var f = fieldMapping.Keys.ElementAt(i); if (!other.Contains(f)) { throw new IncompatibleConstantPropagationDomains("Not the same field set! " + f.ToString()); } var ncsd = Constants(f).Clone(); ncsd.Join(other.Constants(f)); Set(f, ncsd); } }
private void UpdateStateCopy(ConstantPropagationDomain state, IVariable dest, IFieldReference src) { var cl = state.Constants(src).Clone(); state.Set(dest, cl); }
private void UpdateStateNotConstant(ConstantPropagationDomain state) { state.SetNonConstant(); }
private void UpdateStateNotConstant(ConstantPropagationDomain state, IFieldReference f) { state.SetNonConstant(f); }
private void UpdateStateNotConstant(ConstantPropagationDomain state, IVariable v) { state.SetNonConstant(v); }
private void SavePostState(Instruction instruction, ConstantPropagationDomain cpd) { postState[instruction] = cpd; }
private void SetCurrent(ConstantPropagationDomain curr) { current = curr; }
public ConstantPropagationTransferVisitor(ConstantPropagationDomain start, ConstantPropagationSetAnalysis dad) { parent = dad; SetCurrent(start); }