LordJZ
7cacb70148
Fixed some corner cases
10 years ago
LordJZ
e6058e819a
Spaces to tabs in pointer handling code
11 years ago
LordJZ
5f2097ade6
Fixed C++/CLI generated stackalloc
...
fixed #592
partially fixes #569
11 years ago
LordJZ
aeddcf4b80
Enhanced point arithmetic handling
...
This fixes more complex pointer addition/subtraction examples, like PointerArithmetic3 and 4 test cases. Test case 2 is still failing.
Fixes #565
Fixes #400
11 years ago
LordJZ
b75f217167
Enhanced DivideBySize
...
This fixes some redundant IntPtr casts. Some tests are still failing.
Partially fixes #271
11 years ago
Siegfried Pammer
74238630cf
fix #367 - VB output issues
12 years ago
Daniel Grunwald
d2c24a3b0a
Don't eliminate delegate caching when lambda decompilation is disabled.
...
Closes #388
12 years ago
Daniel Grunwald
2edcaa2c44
Initial implementation of async/await decompiler.
14 years ago
Daniel Grunwald
0b968182a3
Fix #296 : Array initialization decompiles into recursive reference
14 years ago
Daniel Grunwald
0010be6add
Fixed decompiling "new byte[length]" where length is a long.
14 years ago
Daniel Grunwald
7e35c705b6
Initial implementation of Expression Tree Decompilation ( #175 )
14 years ago
Pent Ploompuu
92c892577d
Use consistent terminology for lifted operators
14 years ago
David Srbecký
3b692d9c7c
Ignore arguments of 'leave'. Closes #185
14 years ago
David Srbecký
822e473df3
Replace endfinally with jump. Closes #232
14 years ago
Pent Ploompuu
d226afb26d
Decompile all lifted operators on nullable values. Postfix increment/decrement and custom type conversions support incomplete, but correct.
14 years ago
Daniel Grunwald
43b4339bea
Simplify shift operators (<< and >>).
...
Based on patch by Pent Ploompuu.
14 years ago
Daniel Grunwald
6c94092dc5
Fixed ILAstOptimizer.CanBeExpressionStatement to include more types of assignments.
...
Fixed TypeAnalysis.IsEnum so that arrays of enums are not considered to be enums.
14 years ago
Alex Lyman
9faee0ad8d
- Modified the InitializerPeepholeTransforms' Array Initializers to do a forward scan of the block instead of just checking the next instruction. The next-instruction thing breaks down under the case where you have an array-of-arrays (int[][])
...
- Added to the InitializerPeepholeTransforms' Array Initializers to detect the creation of a multi-dimensional array (int[,])
- Modified the ILCode.InitArray contract to take an ArrayType instead of just the element type, and passing with the ArrayType.Dimensions set accordingly.
- AstMethodBodyBuilder now used the ArrayType.Dimensions info to build a tree of ArrayInitializerExpressions from the raw, element-by-element list.
- Fixed OutputVisitor not calling StartNode for EmptyExpressions
Known issues:
- ArrayCreateExpression outputs extra space in the array specifier when using EmptyExpressions, ala: "new int[][, ]"
- The tree of ArrayInitializerExpressions outputs with blank lines before and after each block.
14 years ago
Pent Ploompuu
24c9e68633
Simplify shift operators (<< and >>).
14 years ago
David Srbecký
f9d877b25a
Remove unreachable return statements. Closes #174 . Closes #192
14 years ago
David Srbecký
6fd28e8b6e
Remove unreachable return statements. Closes #174 . Closes #192
14 years ago
Daniel Grunwald
67fcd4ef7d
Fix NullReferenceException in ILAstOptimizer.RecombineVariables
14 years ago
Daniel Grunwald
f1a34c6a31
Fix #202 : Decompilation of multiple catch clauses sharing the same variable name
14 years ago
Pent Ploompuu
fec24cf171
Improved decompilation correctness for operators on nullable values
14 years ago
Siegfried Pammer
a929decdeb
implement basic support for custom short circuit operators + unit test; fixes #193
14 years ago
Daniel Grunwald
2d42dd5c57
Fixed several issues related to [MarshalAs] attributes.
14 years ago
Daniel Grunwald
ae873ec18f
Fixed decompilation of anonymous methods created by the VB compiler. Closes #127 .
14 years ago
Daniel Grunwald
508073d6ac
Applied some of the optimizations suggested by Kris Vandermotten. #150
14 years ago
Pent Ploompuu
1628f2870c
Simplify operators on nullable values: primitive comparisons
14 years ago
Daniel Grunwald
f12371e0e1
Consistently use the full MIT license header on source files.
15 years ago
Daniel Grunwald
8c927f199b
Fixed issues introduced by #139 (Improved local variable inlining)
15 years ago
Daniel Grunwald
660505e04d
Introduce 'AddressOf' pseudo-opcode to make the type system aware of inlined value types ( #139 )
15 years ago
Daniel Grunwald
600c07388e
Implemented object initializers.
15 years ago
Daniel Grunwald
f791897829
Implemented CachedDelegateInitialization transform for local variables (used for capturing lamdbas within loops).
15 years ago
Daniel Grunwald
6376110913
Fixed issues with "fixed" statement that were introduced by recent changes.
15 years ago
Daniel Grunwald
cc0ab56869
Add pre- and post-increment support for properties (both instance and static) and for multi-dimensional arrays.
15 years ago
Daniel Grunwald
4c7a896a84
Implemented post-increment operator. Closes #76 .
15 years ago
Daniel Grunwald
1df82cc3d1
Improved support for compound assignments and the pre-increment operator.
15 years ago
Daniel Grunwald
7e6490a816
Simplify conv.i8(ldc.i4(x)) to ldc.i8(x).
15 years ago
Daniel Grunwald
d430ee056b
Recombine variables after ILAst optimizations so that there is only a single C# variable for a single IL variable.
15 years ago
David Srbecký
ab9452a30e
ILBasicBlock refactored to consist only of the body. Removed ILComment. Closes #86
15 years ago
David Srbecký
17f68f450f
Moved some of the optimizations into the while(modified) loop
15 years ago
David Srbecký
579cbb0acd
Added a pass to joint basic blocks
15 years ago
David Srbecký
10a96a8d3f
Helpers ILCode.IsConditionalControlFlow() and ILCode.IsUnconditionalControlFlow()
15 years ago
David Srbecký
015d70ff52
Simplification of && || ?? ?: put into separate file. Just recalculate the analysis rather then trying to keep it up to date.
15 years ago
David Srbecký
31b2de1126
Fixed initilizers and fixed statements which I broke during the refactoring.
15 years ago
David Srbecký
1a64d56b5a
Create short circuit logical expressions as left associative
15 years ago
David Srbecký
1b8a62fb7c
Run optimization loops backwards (bottom-up)
15 years ago
David Srbecký
6046fdcdfb
Do not put brtrue into its own basic block - store it together with the previous instructions.
...
Handle single-statement loops.
15 years ago
David Srbecký
b3f1d599f8
Refactored some peephole transforms; Moved some of the transforms before loop and condition detection
15 years ago