Jackson Davis
6ab1f98fa3
Expand the range of sequence points out the closest empty ilstack
or implicit sequence point without creating overlapping sequence points.
If such a location cannot be found do, nothing. Fill in the
gaps with hidden sequence points.
Also emit a sequence point for
the prolog to account for seqeunce point there emitted by the C#
compiler. Without this, the debugger can stop there on a step in
using the original pdb, then decompile resulting in a no-code at this
location failure.
5 years ago
Daniel Grunwald
4b1f0b342c
Fix #1925 : Adjust AsyncAwaitDecompiler to changes in Roslyn 3.5.0-beta2
6 years ago
Daniel Grunwald
1b505b8c6d
Adjust async-streams decompiler for dotnet/roslyn#39436
6 years ago
Daniel Grunwald
eaecedd8ea
Fix #1782 : AsyncAwaitDecompiler for methods in struct
6 years ago
Daniel Grunwald
fc95f3056b
Fix #1788 : async/await decompilation fails with custom task type when the builder and/or awaiter is a reference type.
6 years ago
Daniel Grunwald
c88bd597df
Fix null checks.
6 years ago
Daniel Grunwald
233f33f197
Handle 'yield break;' in async streams
6 years ago
Daniel Grunwald
de33e79384
Add tests for 'async IAsyncEnumerable'.
Remove [AsyncIteratorStateMachine] attribute and left-over ldc.i4 instructions.
6 years ago
Daniel Grunwald
be2731c6e6
Handle `if (disposeMode)` in async streams.
6 years ago
Daniel Grunwald
ef699c096b
Support parameters in IAsyncEnumerator methods
6 years ago
Daniel Grunwald
67fa24b09f
Improve async/await decompilation when reference assemblies are missing
6 years ago
Daniel Grunwald
f8ee7c2bf3
Initial support for `async IAsyncEnumerator<T>` methods
6 years ago
Daniel Grunwald
0d3a3bee82
Fix #1703 : Support async methods that never return normally.
Closes #1678 .
6 years ago
Siegfried Pammer
4db22c87e1
Implement detection of custom task implementations + tests.
6 years ago
Siegfried Pammer
e5d603ced2
Fix #1632 : await pattern might use negated IsCompleted check.
6 years ago
Daniel Grunwald
5177c56d88
Reject MoveNext() methods with more than one cachedStateVar.
6 years ago
Daniel Grunwald
3f996ff2c0
Fix #1604 : async methods that had no 'await' but were capturing 'this' were not decompiled correctly
6 years ago
Daniel Grunwald
beed6b5e24
Remove MarkGeneratedVariables() step in AsyncAwaitDecompiler.
This was left-over from earlier versions; but ILSpy stopped caring so much about variable vs. stack slot since Roslyn started to optimize more aggressively.
The change of variable type caused problems for debug information and could even cause an assertion.
Closes #1456 , closes #1562 .
6 years ago
Siegfried Pammer
ab55086cd7
Use ILRange API in AsyncAwaitDecompiler.
7 years ago
Siegfried Pammer
c1fca21e8a
Make ILRange field private - introduce public API for IL range manipulation.
7 years ago
Daniel Grunwald
f1c8142ce2
PDB generator now can emit "method stepping information" for async functions.
7 years ago
Siegfried Pammer
d9952a7e10
#1388 : Fix ArgumentOutOfRangeException in AsyncAwaitDecompiler.AnalyzeAwaitBlock.
7 years ago
Daniel Grunwald
47ca51a769
Clarify the meaning of ILVariable.Index
7 years ago
Siegfried Pammer
00a54a278a
Fix #1344 : Fix GetCodeMappingInfo for nested async FSMs
7 years ago
Daniel Grunwald
deb2ceebd8
Fix #970 : 'await' decompilation when the awaiter does not implement ICriticalNotifyCompletion
7 years ago
Daniel Grunwald
b396d203bd
Merge IDecompilerTypeSystem with ICompilation.
7 years ago
Daniel Grunwald
1f3916d554
Use the resolve methods in MetadataModule, and remove the wrappers in DecompilerTypeSystem.
7 years ago
Siegfried Pammer
458f448fae
Avoid unnecessary allocations of MetadataReader and clean up Dom structs a bit.
7 years ago
Siegfried Pammer
592935537a
Migrate AsyncAwaitDecompiler and YieldReturnDecompiler to SRM.
7 years ago
Pent Ploompuu
a63e65fae8
Reduced allocations in ILInlining
7 years ago
Siegfried Pammer
fa57b9769f
Port AsyncAwaitDecompiler.IsCompilerGeneratedMainMethod
7 years ago
Daniel Grunwald
ed493c3037
Fix 'await default(SomeStruct)'.
7 years ago
Siegfried Pammer
adda97cf84
Add AwaitInFinallyTransform
8 years ago
Siegfried Pammer
9b665b7cbc
Add AwaitInCatchTransform
8 years ago
MikeFH
c299304034
Check that method is actually the entry point
8 years ago
MikeFH
66d806b2d9
Add support for async main method
8 years ago
Daniel Grunwald
02db362838
Ensure that StLoc.Value.ResultType == StLoc.Variable.StackType
This introduce a new explicit conversion (StartGCTracking) when converting unmanaged pointers to managed references.
8 years ago
Moritz
f4209947a0
Fix await calls not getting decompiled correctly ( #904 )
8 years ago
Daniel Grunwald
236c7c28b4
Remove redundant lambda casts.
8 years ago
Daniel Grunwald
39bb6856b7
Fix various bugs with compound assignments.
8 years ago
Daniel Grunwald
846c8613b0
[async] Delete dead ldloc(cachedStateVar).
8 years ago
Daniel Grunwald
0008deb021
Fix handling of try-finally blocks in ReachingDefinitionsVisitor.
This was causing variables to get split incorrectly.
8 years ago
Daniel Grunwald
919219524b
Eliminate the dedicated logic.not instruction, and treat it as syntax sugar similar to logic.and/logic.or.
'logic.not(arg)' is now represented using 'comp(arg == ldc.i4 0)'.
8 years ago
Daniel Grunwald
e266c634de
[nullables] Add support for lifted binary operators where one of the inputs is nullable.
8 years ago
Daniel Grunwald
6b3ab66300
Fix ExpectedResultType of main BlockContainer.
8 years ago
Siegfried Pammer
2d1692c72f
Add value parameter to Leave ctor.
8 years ago
Siegfried Pammer
206cdecf30
Merge Return instruction into Leave.
8 years ago
Daniel Grunwald
ec610a4422
Clean up mono yield-return decompilation.
8 years ago
Daniel Grunwald
d550390f4d
Initial support for yield-return decompilation in assemblies compiled with the mono compiler.
8 years ago
Daniel Grunwald
f5d907e0ce
[async] Allow splitting awaiter variables.
8 years ago