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
Pent Ploompuu
8f5925f854
Ldloca support for variable splitting.
14 years ago
Pent Ploompuu
cd37d3dfd2
Decompilation of comparisons between nullable operands and constant values
14 years ago
Pent Ploompuu
341f54833e
Partial decompilation of math operators with nullable arguments
14 years ago
David Srbecký
f9d877b25a
Remove unreachable return statements. Closes #174 . Closes #192
14 years ago
David Srbecký
de4389cb39
Do not fall though the end of try-block. It should never happen in valid IL, but some obfuscators generate such code. Closes #164
14 years ago
David Srbecký
6fd28e8b6e
Remove unreachable return statements. Closes #174 . Closes #192
14 years ago
David Srbecký
c31f9232c5
Do not fall though the end of try-block. It should never happen in valid IL, but some obfuscators generate such code. Closes #164
14 years ago
Daniel Grunwald
c339b9270a
Fix crash in disassembler and decompiler when HasPInvokeInfo=true but PInvokeInfo=null (occurs with unmanaged methods in C++/CLI assemblies)
14 years ago
Pent Ploompuu
f7811e69ab
Added some comments and simplified the pattern matching
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
5bc2692ab7
Boolean logic decompilation improvement refactored to SimplifyTernaryOperator
14 years ago
Pent Ploompuu
970eaa0da1
Further improvements to boolean logic decompilation
14 years ago
Pent Ploompuu
001a5d4cd7
Improved decompilation quality for expressions involving boolean negations
14 years ago
Daniel Grunwald
17ad27bfac
Use AnyCPU config for BamlDecompiler.Plugin.
...
Support 'unbox' opcode in type analysis.
14 years ago
Daniel Grunwald
e59edceccb
Fix inlining into null coalescing operator.
14 years ago
Pent Ploompuu
af155c788e
Type analysis support for operators on nullable values
14 years ago
David Srbecký
51eb00aac7
Remove unreachable code in ILAstBuilder. Closes #134 . Closes #151 . Closes #171 .
14 years ago
Pent Ploompuu
cb174caab3
Negation of operators on nullable values is not allowed for correct decompilation
14 years ago
Pent Ploompuu
fec24cf171
Improved decompilation correctness for operators on nullable values
14 years ago
Siegfried Pammer
2b366fbb97
make pattern for custom short circuit operator invocations more restrictive
14 years ago
Siegfried Pammer
a929decdeb
implement basic support for custom short circuit operators + unit test; fixes #193
14 years ago
Daniel Grunwald
229218174f
Inlining: remove the arg_-Variable in catch blocks.
14 years ago
Daniel Grunwald
2d42dd5c57
Fixed several issues related to [MarshalAs] attributes.
14 years ago
Daniel Grunwald
d362f8d0f6
Fixed several bugs in the IL disassembler.
14 years ago
Daniel Grunwald
ae873ec18f
Fixed decompilation of anonymous methods created by the VB compiler. Closes #127 .
14 years ago
Daniel Grunwald
4ec92d9a55
Handle cpobj instruction as stobj(ldobj).
14 years ago
Daniel Grunwald
478035dfd9
Fix issues introduced when merging #166 .
14 years ago