示例#1
0
 public StackInfo Throw(APC pc, Dummy exception, StackInfo data)
 {
     return(new StackInfo(0, 0));
 }
示例#2
0
 public StackInfo EndFinally(APC pc, StackInfo data)
 {
     return(new StackInfo(0, 0));
 }
示例#3
0
 public StackInfo LoadArgAddress(APC pc, Parameter argument, bool isOld, Dummy dest, StackInfo data)
 {
     return(data.Push());
 }
示例#4
0
        public StackInfo Calli <TypeList, ArgList> (APC pc, TypeNode returnType, TypeList argTypes, bool instance, Dummy dest, Dummy functionPointer, ArgList args, StackInfo data)
            where TypeList : IIndexable <TypeNode>
            where ArgList : IIndexable <Dummy>
        {
            int count = 1;

            if (instance)
            {
                ++count;
            }
            int slots = count + (argTypes == null ? 0 : argTypes.Count);

            data.Pop(slots);
            if (MetaDataProvider.IsVoid(returnType))
            {
                return(data);
            }
            return(data.Push());
        }
示例#5
0
 public StackInfo CopyBlock(APC pc, Dummy destAddress, Dummy srcAddress, Dummy len, StackInfo data)
 {
     return(data.Pop(3));
 }
示例#6
0
 public StackInfo BranchCond(APC pc, APC target, BranchOperator bop, Dummy value1, Dummy value2, StackInfo data)
 {
     return(data.Pop(2));
 }
示例#7
0
 public StackInfo Break(APC pc, StackInfo data)
 {
     return(data);
 }
示例#8
0
 public StackInfo Sizeof(APC pc, TypeNode type, Dummy dest, StackInfo data)
 {
     return(data.Push());
 }
示例#9
0
 public StackInfo Unary(APC pc, UnaryOperator op, bool unsigned, Dummy dest, Dummy source, StackInfo data)
 {
     return(data.Pop(1).Push());
 }
示例#10
0
 public StackInfo LoadNull(APC pc, Dummy dest, StackInfo polarity)
 {
     return(polarity.Push());
 }
示例#11
0
 public StackInfo LoadConst(APC pc, TypeNode type, object constant, Dummy dest, StackInfo data)
 {
     return(data.Push());
 }
示例#12
0
 public StackInfo Isinst(APC pc, TypeNode type, Dummy dest, Dummy obj, StackInfo data)
 {
     return(data);
 }
示例#13
0
 public StackInfo Binary(APC pc, BinaryOperator op, Dummy dest, Dummy operand1, Dummy operand2, StackInfo data)
 {
     return(data.Pop(2).Push());
 }
示例#14
0
 public StackInfo UnboxAny(APC pc, TypeNode type, Dummy dest, Dummy obj, StackInfo data)
 {
     return(data.Pop(1).Push());
 }
示例#15
0
 public StackInfo Arglist(APC pc, Dummy dest, StackInfo data)
 {
     return(data.Push());
 }
示例#16
0
 public StackInfo Entry(APC pc, Method method, StackInfo data)
 {
     return(data);
 }
示例#17
0
 public StackInfo Branch(APC pc, APC target, bool leavesExceptionBlock, StackInfo data)
 {
     return(data);
 }
示例#18
0
 public StackInfo Assert(APC pc, EdgeTag tag, Dummy condition, StackInfo data)
 {
     return(data.Pop(1));
 }
示例#19
0
 public StackInfo BranchFalse(APC pc, APC target, Dummy cond, StackInfo data)
 {
     return(data.Pop(1));
 }
示例#20
0
 public StackInfo BeginOld(APC pc, APC matchingEnd, StackInfo data)
 {
     return(new StackInfo(OldStartDepth(pc.Block.Subroutine), 4));
 }
示例#21
0
        public StackInfo Call <TypeList, ArgList> (APC pc, Method method, bool virt, TypeList extraVarargs, Dummy dest, ArgList args, StackInfo data)
            where TypeList : IIndexable <TypeNode>
            where ArgList : IIndexable <Dummy>
        {
            int count = MetaDataProvider.Parameters(method).Count + (extraVarargs == null ? 0 : extraVarargs.Count);

            if (!MetaDataProvider.IsStatic(method))
            {
                if (data.IsThis(count))
                {
                    this.stack_depth_mirror_for_end_old.AddCallOnThis(pc);
                }
                ++count;
            }
            data = data.Pop(count);
            if (MetaDataProvider.IsVoidMethod(method))
            {
                return(data);
            }
            return(data.Push());
        }
示例#22
0
 public StackInfo EndOld(APC pc, APC matchingBegin, TypeNode type, Dummy dest, Dummy source, StackInfo data)
 {
     return(new StackInfo(this.stack_depth_mirror_for_end_old [matchingBegin] + 1, 4));
 }
示例#23
0
 public StackInfo CheckFinite(APC pc, Dummy dest, Dummy source, StackInfo data)
 {
     return(data);
 }
示例#24
0
 public StackInfo LoadStack(APC pc, int offset, Dummy dest, Dummy source, bool isOld, StackInfo data)
 {
     return(data.Push(data [offset]));
 }
示例#25
0
 public StackInfo EndFilter(APC pc, Dummy decision, StackInfo data)
 {
     return(data.Pop(1));
 }
示例#26
0
 public StackInfo LoadStackAddress(APC pc, int offset, Dummy dest, Dummy source, TypeNode type, bool isOld, StackInfo data)
 {
     return(data.Push());
 }
示例#27
0
 public StackInfo Jmp(APC pc, Method method, StackInfo data)
 {
     return(new StackInfo(0, 0));
 }
示例#28
0
 public StackInfo LoadResult(APC pc, TypeNode type, Dummy dest, Dummy source, StackInfo data)
 {
     return(data.Push());
 }
示例#29
0
 public StackInfo LoadLocalAddress(APC pc, Local local, Dummy dest, StackInfo data)
 {
     return(data.Push());
 }
示例#30
0
 public StackInfo StoreStaticField(APC pc, Field field, Dummy value, StackInfo data)
 {
     return(data.Pop(1));
 }