public bool Equals(CopyAnalysisState other) { if (this.IsDefault != other.IsDefault) { return(false); } if ((this.IsDefault && other.IsDefault) || _varState == other._varState) { return(true); } // We are supposed to compare only states from the same routine Debug.Assert(_varState.Length == other._varState.Length); for (int i = 0; i < other._varState.Length; i++) { if (_varState[i] != other._varState[i]) { return(false); } } return(true); }
public CopyAnalysisState WithMerge(CopyAnalysisState other) { if (this.IsDefault) { return(other); } else if (other.IsDefault) { return(this); } if (this.Equals(other)) { return(this); } var merged = new CopyAnalysisState(_varState.Length); for (int i = 0; i < merged._varState.Length; i++) { merged._varState[i] = _varState[i] | other._varState[i]; } return(merged); }
public CopyAnalysisState Clone() { var clone = new CopyAnalysisState(_varState.Length); _varState.CopyTo(clone._varState, 0); return(clone); }