protected internal override void VisitLoadField(LoadField node, object data) { StackTypes stack = data as StackTypes; if(node.Field.IsStatic) stack.Push(node.Field.FieldType); else Verifier.ProcessLdFld(stack, node.Field , false); AddTask(node.Next,stack); }
protected internal virtual void VisitLoadField(LoadField node, object data) { throw new NodeNotSupportedException(node); }
protected override void VisitLoadField(LoadField downNode, object o) { ObjectReferenceValue obj = this.state.Stack.Pop() as ObjectReferenceValue; PointerValue ptr = new PointerToObjectFieldValue(obj.Obj, downNode.Field); this.loadVar(downNode, ptr, o); }
protected override void VisitLoadField(LoadField upNode, object o) { State state = o as State; ReferenceBTValue obj = state.Stack.Pop() as ReferenceBTValue; ReferenceBTValue fld = obj[upNode.Field]; state.Stack.Push(fld.ToStack(upNode.Field.FieldType)); 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); }
protected override void VisitLoadField(LoadField upNode, object o) { }
protected internal override void VisitLoadField(LoadField node, object data) { if(node.Field.IsStatic) generator.Emit(OpCodes.Ldsfld, node.Field); else generator.Emit(OpCodes.Ldfld, node.Field); AddTask(node.Next,null); }