Exemplo n.º 1
0
 public static void Init()
 {
     DynamicMethodWrapper.Init();
     DynamicILGenerator.Init();
     DynamicILInfoWrapper.Init();
     DynamicScope.Init();
     DynamicResolver.Init();
 }
Exemplo n.º 2
0
        public void WriteToDynamicMethod(DynamicMethod dynamicMethod, int?maxStack)
        {
            Seal();
            MaxStack = maxStack ?? new MaxStackSizeCalculator(this, ResolveToken).ComputeMaxStack();
            var dynamicILInfo = new DynamicMethodWrapper(dynamicMethod).GetDynamicILInfoWithOldScope();
            var wrapper       = new DynamicILInfoWrapper(dynamicILInfo);
            var code          = new ILCodeBaker(Instructions, wrapper.GetTokenFor).BakeILCode();

            dynamicILInfo.SetCode(code, MaxStack);
            dynamicILInfo.SetLocalSignature(GetLocalSignature());
            if (HasExceptionHandlers)
            {
                dynamicILInfo.SetExceptions(new ExceptionsBaker(ExceptionHandlers, Instructions, wrapper.GetTokenFor).BakeExceptions());
            }
        }
Exemplo n.º 3
0
        public static unsafe MethodBody Read(DynamicMethod dynamicMethod, bool resolveTokens)
        {
            var wrapper       = new DynamicMethodWrapper(dynamicMethod);
            var dynamicILInfo = wrapper.m_DynamicILInfo;

            if (dynamicILInfo != null)
            {
                return(new MethodBodyOnDynamicILInfo(dynamicMethod, dynamicILInfo, resolveTokens));
            }
            var ilGenerator = wrapper.m_ilGenerator;

            if (ilGenerator != null)
            {
                return(new MethodBodyOnDynamicILGenerator(dynamicMethod, ilGenerator, resolveTokens));
            }
            return(new MethodBodyOnUnmanagedBuffer(null, null, MetadataToken.Zero, resolveTokens));
        }