Exemple #1
0
        protected virtual IList CreateCoveringDescForValue(
            ValueNode val, IList instructions)
        {
            IList coveringDescForValue = new ArrayList();

            foreach (Instruction instr in instructions) {

                CoveringInfo coveringInfo = new CoveringInfo(instr);

                if (val.Cover(instr.Pattern.ResultValue, coveringInfo)) {
                    coveringInfo.ResultValue = val;
                    coveringDescForValue.Add(coveringInfo);
                }
            }

            return coveringDescForValue;
        }
Exemple #2
0
        public virtual bool Cover(
            ValueNode patternValue, CoveringInfo coveringInfo)
        {
            bool result = false;

            if (IsCoverableWith(patternValue)) {

                if (!IsInputValue() && !patternValue.IsInputValue()) {

                    if (patternValue.OutNodes.Count == 0 ||
                        ConsumingOperations.Count <= 1 && !OutputFlag) {

                        if (ProducingOperation.Cover(
                                patternValue.ProducingOperation,
                                coveringInfo)) {

                            result = true;
                        }
                    }

                } else if (patternValue.IsInputValue()) {
                    coveringInfo.OperandValues.Add(this);
                    result = true;
                }

                if (result == true)
                    coveringInfo.CoveredValues.Add(this);
            }

            return result;
        }
Exemple #3
0
 public abstract bool Cover(
     OperationNode patternOp, CoveringInfo coveringInfo);
Exemple #4
0
        public override bool Cover(
            OperationNode patternOp, CoveringInfo coveringInfo)
        {
            bool result = false;

            if (IsCoverableWith(patternOp)) {

                UnaryOperationNode unaryPatternOp = (UnaryOperationNode) patternOp;

                if (OperandValue.Cover(unaryPatternOp.OperandValue, coveringInfo)) {
                    coveringInfo.CoveredOperations.Add(this);
                    result = true;
                }
            }

            return result;
        }
Exemple #5
0
        public override bool Cover(
            OperationNode patternOp, CoveringInfo coveringInfo)
        {
            bool result = false;

            if (IsCoverableWith(patternOp)) {

                BinaryOperationNode binaryPatternOp =
                    (BinaryOperationNode) patternOp;

                if (LeftOperandValue.Cover(binaryPatternOp.LeftOperandValue,
                                           coveringInfo) &&
                    RightOperandValue.Cover(binaryPatternOp.RightOperandValue,
                                            coveringInfo)) {

                    coveringInfo.CoveredOperations.Add(this);
                    result = true;
                }
            }

            return result;
        }