コード例 #1
0
ファイル: CFGVerifier.cs プロジェクト: DragonXYZ/cilpe
 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);
 }
コード例 #2
0
ファイル: Visitor.cs プロジェクト: DragonXYZ/cilpe
 protected internal virtual void VisitLoadField(LoadField node, object data)
 {
     throw new NodeNotSupportedException(node);
 }
コード例 #3
0
ファイル: Spec.cs プロジェクト: DragonXYZ/cilpe
 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);
 }
コード例 #4
0
ファイル: BTA.cs プロジェクト: DragonXYZ/cilpe
        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);
        }
コード例 #5
0
ファイル: BTA.cs プロジェクト: DragonXYZ/cilpe
 protected override void VisitLoadField(LoadField upNode, object o)
 {
 }
コード例 #6
0
ファイル: Emitter.cs プロジェクト: DragonXYZ/cilpe
 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);
 }