Daniel Grunwald
6d4f2e37fe
Fix crash when decompiling WebSocketBase::SendFrameAsync.
13 years ago
Daniel Grunwald
1b6d1088e8
Fix #346 : incorrect type inference for if statement on ref bool parameter
13 years ago
Daniel Grunwald
daa5900f9c
Fixed async/await decompilation when the GetAwaiter() is called on a value type.
13 years ago
Daniel Grunwald
8acf17d50a
Improved async/await decompiler.
13 years ago
Daniel Grunwald
2edcaa2c44
Initial implementation of async/await decompiler.
13 years ago
Daniel Grunwald
979f7d018a
Traverse the dominator tree in depth-first order when finding conditions. This reduces the number of gotos produced for complex control flow.
...
Closes #253 .
13 years ago
Siegfried Pammer
856c2e823c
implement special cases for enum type inference (addition); closes #299
13 years ago
Daniel Grunwald
0369486be7
Fixed issue with the patch for #300 when an 'else' block starts with a while loop.
13 years ago
Siegfried Pammer
91b74550fe
implement special cases for enum type inference; closes #248
13 years ago
Siegfried Pammer
1e79bf3588
do not use DominanceFrontiers to detect condition bodies; closes #300
13 years ago
Daniel Grunwald
0b968182a3
Fix #296 : Array initialization decompiles into recursive reference
13 years ago
Daniel Grunwald
549d2c4dca
Fix #304 Search for enum underlying type is incorrect
13 years ago
Daniel Grunwald
c3b9fd63c1
Fix array creation with unsigned integers.
14 years ago
Daniel Grunwald
0010be6add
Fixed decompiling "new byte[length]" where length is a long.
14 years ago
Jb Evain
8e4d8226f1
Recover collection initializers using call opcode
14 years ago
Jb Evain
c9d99af4e8
Remove unused variable
14 years ago
Jb Evain
11c99f778f
Refactor DecodeArrayInitializer to support enums.
...
Remove code duplication.
14 years ago
Jb Evain
38cae92dee
Fix InitializeArray decompilation for initialize values that include padding
14 years ago
David Srbecký
e0e53ae650
Switched to "define-use" naming convention in ILAstBuilder. Refactored variable splitting.
14 years ago
Pent Ploompuu
8490b4cfd5
Restrict variable splitting in case of nondeterministic ldloca opcodes.
14 years ago
Daniel Grunwald
7e35c705b6
Initial implementation of Expression Tree Decompilation ( #175 )
14 years ago
Zohar Kelrich
470caaa6bb
Fix #278 : Decompiling generic multidimensional array access throws exception
14 years ago
Pent Ploompuu
41e71ead8c
Fix variable splitting for ldloca opcodes
14 years ago
Daniel Grunwald
0cdaf3bec4
Ensure the value parameter of a property setter is called 'value'.
14 years ago
Pent Ploompuu
fad596bc4b
Fix type casting regression by improving type analysis of ILCode.Box
14 years ago
Pent Ploompuu
92c892577d
Use consistent terminology for lifted operators
14 years ago
Pent Ploompuu
66fde6d0ee
Compound assignment support for overloaded operators
14 years ago
Pent Ploompuu
ee0f43ad38
Compound assignment support for lifted operators
14 years ago
David Srbecký
aeeda32d10
Return instruction pops zero or one item instead of all.
...
Exception of catch block does not have to be consumed.
Related to #185
14 years ago
David Srbecký
3b692d9c7c
Ignore arguments of 'leave'. Closes #185
14 years ago
Siegfried Pammer
f4d29b2f2b
add AlwaysGenerateExceptionVariableForCatchBlocks setting to avoid Catch clauses without a variable; disable C#'s query expression translation
14 years ago
Pent Ploompuu
e5c8b06e1c
Fixed TernaryOp and NullCoalescing type analysis.
14 years ago
Daniel Grunwald
17a75ded4e
Fix #211 InvalidCastException in ILAstOptimizer.TransformArrayInitializers
14 years ago
Daniel Grunwald
3fad5cb76b
Fix #249 : Object Initializer not detected for value types
14 years ago
Pent Ploompuu
1388f0b678
Fix performance regression in stack analysis (probably caused by increased complexity from Ldloca support).
14 years ago
Pent Ploompuu
587c36bea2
Type analysis support for the remaining lifted operators
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
3020bc9ce8
Fixed type analysis for right shift operator.
14 years ago
Daniel Grunwald
43b4339bea
Simplify shift operators (<< and >>).
...
Based on patch by Pent Ploompuu.
14 years ago
Daniel Grunwald
8beed6aa70
Fixed type inference for shift operators. Closes #239 .
14 years ago
Daniel Grunwald
2783b02007
Fix #241 : type analysis causes truncation of integer literals when calculating with types smaller than int32.
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
e484d35fe2
- Altered the InitializerPeepholeTransforms' ArrayInitializer forward-scan to only look at the next instruction: in practice, CSC does not seem to generate code that needs anything more, and there are some questions as to the validity of the looping itself (i.e. what if there is a branch between them?
...
- Added another test to the InitializerTests, to validate that it handles deeper multi-dimensional arrays (I went 3x3x3 for simplicity)
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
007549180d
Set correct InferredType after decompiling operators with nullable values (needed for LogicNot simplification).
14 years ago
Pent Ploompuu
24c9e68633
Simplify shift operators (<< and >>).
14 years ago
Pent Ploompuu
0abae7a2ad
Improve decompilation of operations with nullable booleans.
14 years ago
Pent Ploompuu
83c3696724
Decompile null coalescing operator for nullable types
14 years ago
Pent Ploompuu
ca6a283b16
Fixed variable splitting
14 years ago