mirror of https://github.com/icsharpcode/ILSpy.git
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							44 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							44 lines
						
					
					
						
							1.1 KiB
						
					
					
				using System; | 
						|
using System.Collections.Immutable; | 
						|
using System.Reflection.Metadata; | 
						|
using System.Reflection.Metadata.Ecma335; | 
						|
 | 
						|
namespace ICSharpCode.Decompiler.DebugInfo | 
						|
{ | 
						|
	public readonly struct AsyncDebugInfo | 
						|
	{ | 
						|
		public readonly int CatchHandlerOffset; | 
						|
		public readonly ImmutableArray<Await> Awaits; | 
						|
 | 
						|
		public AsyncDebugInfo(int catchHandlerOffset, ImmutableArray<Await> awaits) | 
						|
		{ | 
						|
			this.CatchHandlerOffset = catchHandlerOffset; | 
						|
			this.Awaits = awaits; | 
						|
		} | 
						|
 | 
						|
		public readonly struct Await | 
						|
		{ | 
						|
			public readonly int YieldOffset; | 
						|
			public readonly int ResumeOffset; | 
						|
 | 
						|
			public Await(int yieldOffset, int resumeOffset) | 
						|
			{ | 
						|
				this.YieldOffset = yieldOffset; | 
						|
				this.ResumeOffset = resumeOffset; | 
						|
			} | 
						|
		} | 
						|
 | 
						|
		public BlobBuilder BuildBlob(MethodDefinitionHandle moveNext) | 
						|
		{ | 
						|
			BlobBuilder blob = new BlobBuilder(); | 
						|
			blob.WriteUInt32((uint)CatchHandlerOffset); | 
						|
			foreach (var await in Awaits) | 
						|
			{ | 
						|
				blob.WriteUInt32((uint)await.YieldOffset); | 
						|
				blob.WriteUInt32((uint)await.ResumeOffset); | 
						|
				blob.WriteCompressedInteger(MetadataTokens.GetRowNumber(moveNext)); | 
						|
			} | 
						|
			return blob; | 
						|
		} | 
						|
	} | 
						|
}
 | 
						|
 |