public void VisitValueCollectorNode(ValueCollectorNode node) { if (node.IsCollected) { collectValueNode(node); } else { continueValueNode(node); } }
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); } }
/// <summary> /// Perform custom assign operation on value node. /// </summary> /// <param name="node">The node.</param> protected abstract void collectValueNode(ValueCollectorNode node);
/// <summary> /// Continues the value node. /// </summary> /// <param name="node">The node.</param> protected void continueValueNode(ValueCollectorNode node) { enqueueLocationChildNodes(node); }
protected override void collectValueNode(ValueCollectorNode node) { }