Example #1
0
        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));
            }
        }
Example #2
0
        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);
            }
        }