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); }
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); }