コード例 #1
0
        public static IEnumerable <object[]> Equals_TestData()
        {
            ModuleBuilder   module  = Helpers.DynamicModule();
            SignatureHelper helper1 = SignatureHelper.GetFieldSigHelper(module);
            SignatureHelper helper2 = SignatureHelper.GetFieldSigHelper(module);

            SignatureHelper helper3 = SignatureHelper.GetFieldSigHelper(module);

            helper3.AddArgument(typeof(string));
            SignatureHelper helper4 = SignatureHelper.GetFieldSigHelper(module);

            helper4.AddArgument(typeof(string));

            yield return(new object[] { helper1, helper2, true });

            yield return(new object[] { helper3, helper1, false });

            yield return(new object[] { helper3, helper4, true });

            yield return(new object[] { helper1, null, false });
        }
コード例 #2
0
 public void GetFieldSigHelperNormalModule()
 {
     SignatureHelper.GetFieldSigHelper(typeof(int).Module);
 }
コード例 #3
0
ファイル: LocalBuilder.cs プロジェクト: belav/runtime
        public void SetLocalSymInfo(string name, int startOffset, int endOffset)
        {
            ModuleBuilder   dynMod;
            SignatureHelper sigHelp;

            byte[] signature;
            byte[] mungedSig;
            int    index;

            MethodBuilder?methodBuilder = m_methodBuilder as MethodBuilder;

            if (methodBuilder == null)
            {
                // it's a light code gen entity
                throw new NotSupportedException();
            }
            dynMod = (ModuleBuilder)methodBuilder.Module;
            if (methodBuilder.IsTypeCreated())
            {
                // cannot change method after its containing type has been created
                throw new InvalidOperationException(SR.InvalidOperation_TypeHasBeenCreated);
            }

            // set the name and range of offset for the local
            if (dynMod.GetSymWriter() == null)
            {
                // cannot set local name if not debug module
                throw new InvalidOperationException(SR.InvalidOperation_NotADebugModule);
            }

            sigHelp = SignatureHelper.GetFieldSigHelper(dynMod);
            sigHelp.AddArgument(m_localType);
            signature = sigHelp.InternalGetSignature(out int sigLength);

            // The symbol store doesn't want the calling convention on the
            // front of the signature, but InternalGetSignature returns
            // the callinging convention. So we strip it off. This is a
            // bit unfortunate, since it means that we need to allocate
            // yet another array of bytes...
            mungedSig = new byte[sigLength - 1];
            Buffer.BlockCopy(signature, 1, mungedSig, 0, sigLength - 1);

            index = methodBuilder.GetILGenerator().m_ScopeTree.GetCurrentActiveScopeIndex();
            if (index == -1)
            {
                // top level scope information is kept with methodBuilder
                methodBuilder.m_localSymInfo !.AddLocalSymInfo(
                    name,
                    mungedSig,
                    m_localIndex,
                    startOffset,
                    endOffset
                    );
            }
            else
            {
                methodBuilder
                .GetILGenerator()
                .m_ScopeTree.AddLocalSymInfoToCurrentScope(
                    name,
                    mungedSig,
                    m_localIndex,
                    startOffset,
                    endOffset
                    );
            }
        }
コード例 #4
0
 public void GetFieldSigHelperNullModule()
 {
     SignatureHelper.GetFieldSigHelper(null);
 }