예제 #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));
 }