Пример #1
0
 protected internal override void VisitStoreIndirect(StoreIndirect node, object data)
 {
     StackTypes stack = data as StackTypes;
     Verifier.ProcessStInd(node.Type, stack);
     //looks like ProcessStInd method functions correctly in case of STOBJ
     AddTask(node.Next,stack);
 }
Пример #2
0
 protected override void VisitStoreIndirect(StoreIndirect downNode, object o)
 {
     PointerValue ptr = this.state.Stack.Pop() as PointerValue;
     this.storeVar(downNode, ptr, o);
 }
Пример #3
0
 protected internal virtual void VisitStoreIndirect(StoreIndirect node, object data)
 {
     throw new NodeNotSupportedException(node);
 }
Пример #4
0
 protected internal override void VisitStoreIndirect(StoreIndirect node, object data)
 {
     if(node.Type.Equals( typeof(IntPtr) ))
         generator.Emit(OpCodes.Stind_I);
     else if(node.Type.Equals( typeof(sbyte) ))
         generator.Emit(OpCodes.Stind_I1);
     else if(node.Type.Equals( typeof(short) ))
         generator.Emit(OpCodes.Stind_I2);
     else if(node.Type.Equals( typeof(int) ))
         generator.Emit(OpCodes.Stind_I4);
     else if(node.Type.Equals( typeof(long) ))
         generator.Emit(OpCodes.Stind_I8);
     else if(node.Type.Equals( typeof(UIntPtr) ))
         generator.Emit(OpCodes.Stind_I);
     else if(node.Type.Equals( typeof(byte) ))
         generator.Emit(OpCodes.Stind_I1);
     else if(node.Type.Equals( typeof(ushort) ))
         generator.Emit(OpCodes.Stind_I2);
     else if(node.Type.Equals( typeof(uint) ))
         generator.Emit(OpCodes.Stind_I4);
     else if(node.Type.Equals( typeof(ulong) ))
         generator.Emit(OpCodes.Stind_I8);
     else if(node.Type.Equals( typeof(float) ))
         generator.Emit(OpCodes.Stind_R4);
     else if(node.Type.Equals( typeof(double) ))
         generator.Emit(OpCodes.Stind_R8);
     else if(node.Type.IsValueType)
         generator.Emit(OpCodes.Stobj, node.Type);
     else
         generator.Emit(OpCodes.Stind_Ref);
     AddTask(node.Next,null);
 }