Daniel Grunwald
b404bf3aa7
#2480 : avoid crash if ILAst "cannot jump into block container" invariant is violated
4 years ago
dotnet format
0d9f871a4f
#2128 : Reformat the whole code base.
5 years ago
Siegfried Pammer
eac0e2257e
Support MatchInstruction in DataFlowVisitor
6 years ago
Siegfried Pammer
8925b4ff7b
Inline variable declarations/modernize parts of our code base.
6 years ago
Daniel Grunwald
18ee984ade
Add support for "definitely assigned if true/false" to data flow analysis.
7 years ago
Daniel Grunwald
8cfc21dfab
Fix DefiniteAssignmentVisitor bugs handling ILFunction, and add some comments.
7 years ago
Siegfried Pammer
7d62a7e032
Reset HasInitialValue flag after TransformDisplayClassUsage.
7 years ago
Daniel Grunwald
2929ae865f
Fix #1460 : assertion in DataFlowVisitor`1.DebugPoint() with try-fault statement.
7 years ago
Daniel Grunwald
a8a852b742
Add instructions for modeling the "?." operator in the ILAst.
8 years ago
Daniel Grunwald
102729cfde
Put switch instructions into their own BlockContainer.
...
This removes the need for "goto case" in the ILAst as we can just branch to the appropriate block.
It also means we can support "break;" within switch using the "leave" instruction (otherwise we'd have to introduce yet another special kind of jump).
8 years ago
Daniel Grunwald
8a68a94d35
Simplify use of SwitchInstruction in ILAst
...
* the default case is now handled as a normal case
* when dealing with basic blocks, SwitchInstruction will be the last instruction in the block
* introduced ILAst instruction for 'goto case'
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
Siegfried Pammer
206cdecf30
Merge Return instruction into Leave.
8 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
Daniel Grunwald
7273fe58fd
Add BlockTransform concept and apply a bunch of refactoring essentials suggestions.
9 years ago
Daniel Grunwald
a6fc52a63f
ConditionDetection: move blocks into switch sections
9 years ago
Daniel Grunwald
36d61db3a7
Add support for sparse integer switches.
9 years ago
Daniel Grunwald
20aec66815
Initial support for decompiling fixed statements
10 years ago
Daniel Grunwald
a40f0754c1
Add InvalidInstruction to represent invalid IL opcodes in the ILAst instead of crashing.
10 years ago
Daniel Grunwald
5998d39827
Fix bug in DataFlowVisitor.VisitSwitchInstruction
10 years ago
Daniel Grunwald
f3d108c469
Add SplitVariables transforms.
10 years ago
Daniel Grunwald
e21ad7c3e4
DataFlowVisitor: ignore MayThrow and consider every instruction to potentially throw.
...
This brings the IL definite assignment analysis more in line with the C# analysis.
It's arguably more correct, because there are async exceptions (ThreadAbortException).
It also means we call JoinWith() less often, so the analysis should be faster.
10 years ago
Daniel Grunwald
79030f6ee8
DataFlowVisitor: rename IsUnreachable to IsBottom
10 years ago
Daniel Grunwald
1aaf7b3dc0
Fix bugs in data flow analysis.
10 years ago
Daniel Grunwald
f5e66ff623
Extract reusable DataFlowVisitor from ReachingDefinitions; and add ILVariable.HasInitialValue.
10 years ago