Daniel Grunwald
9becae2de7
Fix #3051 : "InvalidOperationException: Stack empty" when decompiling reference assembly with empty method bodies
2 years ago
Daniel Grunwald
768cb02f0b
Fix #2964 : Better error message when a method only contains a single ret instruction.
2 years ago
Daniel Grunwald
b93e65cdad
Fix #901 : Refactor ILReader: only read reachable code + support reimports
This makes our logic more similar to that used by the dotnet runtime. This lets us infer correct stack types in edge cases such as #2401 . It also improves support for obfuscated control flow such as #2878 .
2 years ago
Siegfried Pammer
af56bb10d0
Determine isBranchTarget in a separate pass. We will need it for an optimization to ILReader in a future commit.
3 years ago
Daniel Grunwald
787621fb51
Revert "Use Nop instead of InvalidExpression to hold the "goto from catch-block to try-block" comment"
This reverts commit 77dcbbee86
.
4 years ago
Daniel Grunwald
77dcbbee86
Use Nop instead of InvalidExpression to hold the "goto from catch-block to try-block" comment
4 years ago
Daniel Grunwald
f104233e78
Fix #2388 : Add support for branch from catch-block to try-block (VB `On Error Resume Next`)
4 years ago
dotnet format
0d9f871a4f
#2128 : Reformat the whole code base.
5 years ago
Siegfried Pammer
8925b4ff7b
Inline variable declarations/modernize parts of our code base.
5 years ago
Siegfried Pammer
e4fda5c2e4
Rename HasILRange to ILRangeIsEmpty to properly reflect its implementation.
5 years ago
Siegfried Pammer
c1fca21e8a
Make ILRange field private - introduce public API for IL range manipulation.
7 years ago
Siegfried Pammer
c34a36b3ec
Fix #1326 : Another case of missing ILRanges in
- TryFinally/TryFault instructions
- blocks, that are skipped when leaving nested containers
7 years ago
Siegfried Pammer
8740e2413d
Remove redundant namespace usage.
7 years ago
Siegfried Pammer
5b7e1b844f
Fix #1327 : BlockBuilder: ILRange was not set on last block of outer containers, if there were nested containers, such as try/finally.
7 years ago
Chicken-Bones
e9b766d708
Improve persistence of IL offsets through various transforms.
7 years ago
Daniel Grunwald
0006330c1a
Fix #1235 : Insert StackType conversion when filling in Leave target.
7 years ago
Daniel Grunwald
107fe5eb1c
Eliminate SpecializingDecompilerTypeSystem and use GenericContext instead.
7 years ago
Siegfried Pammer
ddb74945b8
port BlockBuilder
7 years ago
Daniel Grunwald
03cb637798
#993 : Move empty body special case to ILAst.
8 years ago
Daniel Grunwald
f155ca4ef6
Fix #938 : add support for I4->I stack type adjustments.
With this fix we still only propagate type information along forward branches, so some of the issues in #901 remain.
8 years ago
Siegfried Pammer
154833b06c
Add ContainerKind
8 years ago
Daniel Grunwald
75a65380f0
BlockBuilder: avoid crash on invalid branches ( #902 )
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
Siegfried Pammer
c34541ad4c
Implement catch-when and remove local copy of exception slot.
8 years ago
Daniel Grunwald
71defde402
Improve cancellation.
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
Siegfried Pammer
840ec04fde
Namespace adjustments for Syntax classes
9 years ago
Christoph Wille
1ce8349dd9
Adjust namespaces
9 years ago
Daniel Grunwald
c3937c3fab
Add ImplicitConversions test and fix some conversions.
9 years ago
Daniel Grunwald
1e2147d1bd
Fix building TryCatchHandlers
10 years ago
Daniel Grunwald
06356512fa
Remove the evaluation stack from ILAst; the ILReader now directly introduces stack variables.
10 years ago
Daniel Grunwald
4dec7abb63
Replace 'endfinally' with 'leave'
11 years ago
Daniel Grunwald
0cae30cce2
ILInstruction.Clone()
11 years ago
Daniel Grunwald
b2dfdea68e
Add loop detection.
11 years ago
Daniel Grunwald
5ead8e9230
Add SpecializingDecompilerTypeSystem
11 years ago
Daniel Grunwald
08a5e81517
Re-enable IntroduceUsingDeclarations
11 years ago
Daniel Grunwald
2f83334c2e
Use NRefactory.TypeSystem for ILAst.
11 years ago
Daniel Grunwald
11ec5f24a7
Make assignment ILAst opcodes return the assigned value
11 years ago
Daniel Grunwald
68ab914293
Build exception handling blocks
11 years ago
Daniel Grunwald
63b32fef35
Create ILFunction top-level node
11 years ago
Daniel Grunwald
2f1e229046
Add parent pointers to ILAst
11 years ago
Daniel Grunwald
0c72367579
Fix bugs.
11 years ago
Daniel Grunwald
42bfff077d
Finish the move to the new generated ILAst classes
11 years ago
Daniel Grunwald
49ce1bcea3
Worked on ILAst instruction representation
11 years ago
Daniel Grunwald
7e8cc06c76
Don't declare variables in primary ctors
11 years ago
Daniel Grunwald
557f790127
Build inline blocks when there are IL statements (opcodes not pushing anything) in a block while the stack is non-empty.
11 years ago
Daniel Grunwald
817b0baded
expr inlining
11 years ago
Daniel Grunwald
167e140c75
'Typed IL' view shows stack
11 years ago
Daniel Grunwald
c2ac889ebe
Allow viewing 'typed IL'.
11 years ago