Ejemplo n.º 1
0
 protected internal override void VisitStoreField(StoreField node, object data)
 {
     StackTypes stack = data as StackTypes;
     if(node.Field.IsStatic)
         Verifier.ProcessStSFld(stack, node.Field);
     else
         Verifier.ProcessStFld(stack, node.Field);
     AddTask(node.Next,stack);
 }
Ejemplo n.º 2
0
 protected internal virtual void VisitStoreField(StoreField node, object data)
 {
     throw new NodeNotSupportedException(node);
 }
Ejemplo n.º 3
0
 protected override void VisitStoreField(StoreField downNode, object o)
 {
     ObjectReferenceValue obj = this.state.Stack.Pop() as ObjectReferenceValue;
     PointerValue ptr = new PointerToObjectFieldValue(obj.Obj, downNode.Field);
     this.storeVar(downNode, ptr, o);
 }
Ejemplo n.º 4
0
        protected override void VisitStoreField(StoreField upNode, object o)
        {
            State state = o as State;
            BTValue val = state.Stack.Pop() as BTValue;
            ReferenceBTValue obj = state.Stack.Pop() as ReferenceBTValue;
            ReferenceBTValue fld = obj[upNode.Field];

            Creators crtrs = BTValue.Merge(val.FromStack(), fld);
            if (crtrs.IsEmpty)
            {
                BTType btType;
                if (obj.BTType == BTType.Dynamic)
                    btType = BTType.Dynamic;
                else if (fld.BTType == BTType.Dynamic)
                    btType = BTType.eXclusive;
                else
                    btType = BTType.Static;
                Annotation.SetNodeBTType(upNode, btType);

                fld.Creators[this].AddCreator(upNode);
            }
            else
                throw new LiftException(crtrs);
        }
Ejemplo n.º 5
0
 protected override void VisitStoreField(StoreField upNode, object o)
 {
     DepthContainer cnt = o as DepthContainer;
     cnt.Depth += 2;
 }
Ejemplo n.º 6
0
 protected internal override void VisitStoreField(StoreField node, object data)
 {
     if(node.Field.IsStatic)
         generator.Emit(OpCodes.Stsfld, node.Field);
     else
         generator.Emit(OpCodes.Stfld, node.Field);
     AddTask(node.Next,null);
 }