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
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
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
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
David Srbecký
51eb00aac7
Remove unreachable code in ILAstBuilder. Closes #134 . Closes #151 . Closes #171 .
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
Daniel Grunwald
508073d6ac
Applied some of the optimizations suggested by Kris Vandermotten. #150
14 years ago
Ivan Hamilton
b408acccea
Fix local variable post-increment recognition for split local variables.
14 years ago
Daniel Grunwald
d267eb2412
Fix NullReferenceException when viewing ILAst for a calli instruction. Closes #152
14 years ago
Daniel Grunwald
9fdd6539e2
YieldReturnDecompiler: don't require that class name starts with '<'
...
http://community.sharpdevelop.net/forums/t/13143.aspx
14 years ago
Daniel Grunwald
f68775e468
Revert fix for #120 . Siegfried found a case where the C# compiler creates a useless variable in debug builds.
...
We will keep performing dead store removal for all variables.
14 years ago
Daniel Grunwald
f12371e0e1
Consistently use the full MIT license header on source files.
14 years ago
Daniel Grunwald
5f069c4ea8
Perform dead store removal only for generated variables. Closes #120 .
14 years ago
Daniel Grunwald
1e6cc8f8b1
Fixed bugs with collection initializers.
14 years ago
Daniel Grunwald
8c927f199b
Fixed issues introduced by #139 (Improved local variable inlining)
14 years ago
Daniel Grunwald
660505e04d
Introduce 'AddressOf' pseudo-opcode to make the type system aware of inlined value types ( #139 )
14 years ago
pentp
8c161e51cd
fix changes
14 years ago
Daniel Grunwald
7c9013736e
Use hyperlinks for the named arguments in object initializers.
14 years ago
Daniel Grunwald
6a98af56ad
Fixed decompilation when an object initializer is used on a collection type.
14 years ago
Daniel Grunwald
207bb984aa
Implemented support for nested object/collection initializers.
14 years ago
pentp
71149caffd
Remove temporary local variables generated by the C# compiler for instance method calls on immutable value type values
14 years ago
Daniel Grunwald
baa05b2e01
Fixed unintended interaction between object initializers and anonymous methods.
14 years ago
Daniel Grunwald
600c07388e
Implemented object initializers.
14 years ago
Daniel Grunwald
d8fc41e7a9
Add refanytype and refanyval to type analysis.
14 years ago
Eusebiu Marcu
e4513b947b
Merged ICSharpCode.Decompiler changes from debugger branch.
...
(from commit e184c73f2d
)
14 years ago
Daniel Grunwald
78eea4fddf
Fixed bug that caused yield-return analysis to fail sometimes.
14 years ago
David Srbecký
08b8645308
Handle uninitialized variables. Closes #102 . Closes #116 .
14 years ago
David Srbecký
6222ef7bbf
Do stack analysis on the whole filter body. Closes #88
14 years ago
David Srbecký
7ac44375ff
Fixed NullReferenceException caused by unreachable IL code. It was generally caused by throw followed by catch leave.
...
Closes #89 . Closes #91 . Closes #96 . Closes #97 . Closes #117 .
14 years ago
Daniel Grunwald
1e66e970bf
Add support for mkrefany opcode.
14 years ago
Daniel Grunwald
15f5c7a0b4
CachedDelegateInitialization: use less aggressive inlining
14 years ago
Daniel Grunwald
f791897829
Implemented CachedDelegateInitialization transform for local variables (used for capturing lamdbas within loops).
14 years ago
Daniel Grunwald
d550d55560
Fixed 'as' and 'is' operators for value types.
14 years ago
Daniel Grunwald
9ad5124603
Fixed type analysis for collection initializers. Closes #104 .
14 years ago
Daniel Grunwald
55dec5389c
Fix crash when decompiling calli instruction. Closes #113 .
14 years ago
Daniel Grunwald
6376110913
Fixed issues with "fixed" statement that were introduced by recent changes.
15 years ago