Beispiel #1
0
 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);
 }
Beispiel #2
0
 protected internal virtual void VisitLoadField(LoadField node, object data)
 {
     throw new NodeNotSupportedException(node);
 }
Beispiel #3
0
 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);
 }
Beispiel #4
0
        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);
        }
Beispiel #5
0
 protected override void VisitLoadField(LoadField upNode, object o)
 {
 }
Beispiel #6
0
 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);
 }