コード例 #1
0
        public static void CopyOutAndRefParameters(TypeReference[] dereferencedArguments, LocalReference invocation, MethodInfo method, MethodEmitter emitter)
        {
            var parameters = method.GetParameters();

            if (!ArgumentsUtil.IsAnyByRef(parameters))
            {
                return;                 //saving the need to create locals if there is no need
            }

            var arguments = StoreInvocationArgumentsInLocal(emitter, invocation);

            for (int i = 0; i < parameters.Length; i++)
            {
                if (!parameters[i].ParameterType.IsByRef)
                {
                    continue;
                }

                emitter.CodeBuilder.AddStatement(AssignArgument(dereferencedArguments, i, arguments));
            }
        }