コード例 #1
0
ファイル: InstructionGraph.cs プロジェクト: harnold/cobe
        protected virtual void CloneEdgesForValue(
            ValueNode val,
            InstructionGraph clone,
            IDictionary instructionMap,
            IDictionary valueMap,
            IDictionary valueProcessed)
        {
            if (!(bool) valueProcessed[val] && !val.IsInputValue()) {

                valueProcessed[val] = true;
                ValueNode cloneResValue = (ValueNode) valueMap[val];
                InstructionNode cloneInstr =
                    (InstructionNode) instructionMap[val.ProducingInstruction];

                clone.AddEdge(cloneInstr, cloneResValue);

                foreach (ValueNode opVal in val.ProducingInstruction.OperandValues) {
                    ValueNode cloneOpVal = (ValueNode) valueMap[opVal];
                    clone.AddEdge(cloneOpVal, cloneInstr);
                    CloneEdgesForValue(opVal, clone, instructionMap, valueMap,
                                       valueProcessed);
                }
            }
        }