Example #1
0
        public override LocalVariableDefinition[] GetLocals()
        {
            if (_locals != null)
            {
                return(_locals);
            }

            var metadataReader = _module.MetadataReader;
            var localSignature = _methodBody.LocalSignature;

            if (localSignature.IsNil)
            {
                return(Array.Empty <LocalVariableDefinition>());
            }
            BlobReader signatureReader = metadataReader.GetBlobReader(metadataReader.GetStandaloneSignature(localSignature).Signature);

            EcmaSignatureParser parser = new EcmaSignatureParser(_module, signatureReader);

            LocalVariableDefinition[] locals = parser.ParseLocalsSignature();
            return(_locals = locals);
        }
Example #2
0
        public override LocalVariableDefinition[] GetLocals()
        {
            if (_locals != null)
            {
                return(_locals);
            }

            var metadataReader = _module.MetadataReader;
            var localSignature = _methodBody.LocalSignature;

            if (localSignature.IsNil)
            {
                return(Array.Empty <LocalVariableDefinition>());
            }
            BlobReader signatureReader = metadataReader.GetBlobReader(metadataReader.GetStandaloneSignature(localSignature).Signature);

            EcmaSignatureParser parser = new EcmaSignatureParser(_module, signatureReader, NotFoundBehavior.Throw);

            LocalVariableDefinition[] locals = parser.ParseLocalsSignature();

            Interlocked.CompareExchange(ref _locals, locals, null);
            return(_locals);
        }