Exemple #1
0
        public StackInfo LoadArg(APC pc, Parameter argument, bool isOld, Dummy dest, StackInfo data)
        {
            if (!MetaDataProvider.IsStatic(MetaDataProvider.DeclaringMethod(argument)) && MetaDataProvider.ParameterIndex(argument) == 0)
            {
                return(data.PushThis());
            }

            return(data.Push());
        }
Exemple #2
0
        private int OldStartDepth(Subroutine subroutine)
        {
            Method method = ((IMethodInfo)subroutine).Method;
            int    count  = MetaDataProvider.Parameters(method).Count;

            if (!MetaDataProvider.IsConstructor(method) && !MetaDataProvider.IsStatic(method))
            {
                ++count;
            }
            return(count);
        }
Exemple #3
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());
        }