76 Commits (846c8613b0c48fdb25a057b6572a65b6f455426d)

Author SHA1 Message Date
Daniel Grunwald 846c8613b0 [async] Delete dead ldloc(cachedStateVar). 8 years ago
Daniel Grunwald a6c6ddcea1 Fix #861: Improved loop exit point heuristic. 8 years ago
Daniel Grunwald 7017c6f6e6 Replace LoopingBlockTransform with StatementTransform. 8 years ago
Daniel Grunwald 0008deb021 Fix handling of try-finally blocks in ReachingDefinitionsVisitor. 8 years ago
Daniel Grunwald 919219524b Eliminate the dedicated logic.not instruction, and treat it as syntax sugar similar to logic.and/logic.or. 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
Daniel Grunwald 259e322e26 Fix typo in IsBranchOrLeave() 8 years ago
Siegfried Pammer 2d1692c72f Add value parameter to Leave ctor. 8 years ago
Daniel Grunwald 513a01e4dd Ignore non-void leave in ConditionDetection. 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
Daniel Grunwald d5e41a91e6 [async] Fix await decompilation when GetResult call got inlined into another instruction. 8 years ago
Daniel Grunwald e024641a5f [async] Fix bug when async method uses this pointer. 8 years ago
Daniel Grunwald fac340965f return statements are no longer forcibly moved into loops when the loops are within exception handling blocks. 8 years ago
Daniel Grunwald 4bfdcdd8a2 [async] Fix handling of doFinallyBodies. 8 years ago
Daniel Grunwald 098d1152ff [async] Handle pre-roslyn stack saving during await. 8 years ago
Daniel Grunwald 6c7e2efa6c [async] Fix await decompiler for pre-roslyn csc, at least in cases where the stack is empty during the await. 8 years ago
Daniel Grunwald 123a7f4a62 [async] small improvements to await decompilation 8 years ago
Daniel Grunwald 04215ebcfa [async] Add copy propagation so that state machine field accesses can be reliably detected. 8 years ago
Daniel Grunwald 7d6122cfaf [async] Decompile await operator. 8 years ago
Daniel Grunwald 3ff3b34be9 [async]: control flow reconstruction: fixes for legacy csc 8 years ago
Daniel Grunwald 40212685b6 [async]: control flow reconstruction 8 years ago
Daniel Grunwald 2396a7449b [async] Support state machine classes. 8 years ago
Daniel Grunwald b36ae9df7e Start on new async/await decompiler. 8 years ago
Daniel Grunwald bcdd34a9d0 More aggressively duplicate return blocks in MoveNext() methods. 8 years ago
Daniel Grunwald f411d15fc6 Fix generating switch sections without any case labels. 8 years ago
Daniel Grunwald 3e8ab77d52 Perform even less aggressive inlining of return blocks. 8 years ago
Daniel Grunwald c239204c7f Perform less aggressive inlining of return blocks. This tends to reconstruct control flow closer to the original code. 8 years ago
Daniel Grunwald 4c77022988 Improve decompiler performance. 8 years ago
Daniel Grunwald a5a98ae9f1 Adjust labels of simple switch instructions. 8 years ago
Daniel Grunwald 2207ab40f7 Check the CancellationToken a bit more frequently. 8 years ago
Daniel Grunwald 69c77d75a5 Try to get rid of some more gotos. 8 years ago
Daniel Grunwald cc33c27d9c ConditionDetection: Try to prefer 'break;' over other gotos 8 years ago
Daniel Grunwald 173c8d353f Support 'state + c1 < c2' in state-range-analysis. 8 years ago
Daniel Grunwald b9b510d225 yield return decompiler: fix yield return in structs; fix local variables in finally block 8 years ago
Daniel Grunwald 7277de6c08 More fixes for yield return decompilation. 8 years ago
Daniel Grunwald 9fa6009c44 Remove dead compiler-generated 'V = null;' assignments. 8 years ago
Daniel Grunwald bddda342a1 Improve yield-return-decompiler. 8 years ago
Daniel Grunwald f0e230ae91 Run a second pass of DetectExitPoints to use 'return;' as exit point if no previous transform picked another exit point. 9 years ago
Daniel Grunwald 1001ff5721 Fix 'yield break;' in try-catch blocks. 9 years ago
Daniel Grunwald 5621101436 Reconstruct try-finally blocks in yield return decompiler 9 years ago
Daniel Grunwald fe84ea9730 WIP: yield return decompiler 9 years ago
Siegfried Pammer 0970b95d5f Rename ILVariable.Scope to Function and introduce BlockContainer CaptureScope 9 years ago
Daniel Grunwald 66dee6c6f9 LoopDetection: find appropriate exit points 9 years ago
Daniel Grunwald e871f7c05a Convert LoopDetection into a block transform. 9 years ago
Daniel Grunwald ed3d4aba9d Run IntroduceExitPoints before loop detection, and let loop detection introduce its own exit points. 9 years ago
Siegfried Pammer 840ec04fde Namespace adjustments for Syntax classes 9 years ago