public MethodBodyOnMethodBase(MethodBase method, bool resolveTokens) : base(GetMethodSignature(method), resolveTokens) { module = method.Module; var methodBody = method.GetMethodBody(); MaxStack = methodBody.MaxStackSize; InitLocals = methodBody.InitLocals; var localSignature = methodBody.LocalSignatureMetadataToken != 0 ? method.Module.ResolveSignature(methodBody.LocalSignatureMetadataToken) : SignatureHelper.GetLocalVarSigHelper().GetSignature(); // null is invalid value SetLocalSignature(localSignature); ILCodeReader.Read(methodBody.GetILAsByteArray(), ResolveToken, resolveTokens, this); ReadExceptions(methodBody.ExceptionHandlingClauses); }
public MethodBodyOnDynamicILInfo(DynamicMethod dynamicMethod, GrEmit.Utils.DynamicILInfo dynamicILInfo, bool resolveTokens) : base(GetMethodSignature(dynamicILInfo), resolveTokens) { scope = new DynamicILInfoWrapper(dynamicILInfo).m_scope; using (var dynamicResolver = new DynamicResolver(dynamicMethod, dynamicILInfo)) { int stackSize; int initLocals; int EHCount; var code = dynamicResolver.GetCodeInfo(out stackSize, out initLocals, out EHCount); MaxStack = stackSize; InitLocals = initLocals != 0; SetLocalSignature(dynamicResolver.m_localSignature); ILCodeReader.Read(code, ResolveToken, resolveTokens, this); ExceptionsInfoReader.Read(dynamicResolver.GetRawEHInfo(), ResolveToken, resolveTokens, this); } }
public MethodBodyOnDynamicILGenerator(DynamicMethod dynamicMethod, ILGenerator ilGenerator, bool resolveTokens) : base(GetMethodSignature(ilGenerator), resolveTokens) { scope = new DynamicILGenerator(ilGenerator).m_scope; using (var dynamicResolver = new DynamicResolver(dynamicMethod, ilGenerator)) { int stackSize; int initLocals; int EHCount; var code = dynamicResolver.GetCodeInfo(out stackSize, out initLocals, out EHCount); MaxStack = stackSize; InitLocals = initLocals != 0; SetLocalSignature(dynamicResolver.m_localSignature); ILCodeReader.Read(code, ResolveToken, resolveTokens, this); ReadExceptions(dynamicResolver, EHCount); } }