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); }
protected internal virtual void VisitStoreField(StoreField node, object data) { throw new NodeNotSupportedException(node); }
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); }
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); }
protected override void VisitStoreField(StoreField upNode, object o) { DepthContainer cnt = o as DepthContainer; cnt.Depth += 2; }
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); }