protected override void collectUndefinedCollectorNode(UndefinedCollectorNode node) { PathModifications.GetOrCreateModification(node.TargetIndex).SetCollectedIndex(); if (node.IsMust || ForceStrongWrite) { AddOperation(new UndefinedMustAssignOperation(this, node.TargetIndex, memoryEntryCollector.RootNode, AssignAliasesIntoCollectedIndexes)); } else { AddOperation(new UndefinedMayAssignOperation(this, node.TargetIndex, memoryEntryCollector.RootNode, AssignAliasesIntoCollectedIndexes)); } }
protected override void collectValueNode(ValueCollectorNode node) { MemoryIndexModification modification = PathModifications.GetOrCreateModification(node.TargetIndex); if (node.IsMust || ForceStrongWrite) { modification.SetCollectedIndex(); valueLocationVisitor.IsMust = true; node.ValueLocation.ContainingIndex = node.TargetIndex; node.ValueLocation.Accept(valueLocationVisitor); } else { modification.SetCollectedIndex(); valueLocationVisitor.IsMust = false; node.ValueLocation.ContainingIndex = node.TargetIndex; node.ValueLocation.Accept(valueLocationVisitor); } }