Daniel Grunwald
5670bfc132
Stack slots holding value types previously nevertheless often had type `object`
...
This was due to StackType.O doing double-duty as `object` and `other`.
While ExpressionBuilder would often improve the type of such locals, the `object` nevertheless ended up used in a couple of places, e.g. via the `typeHint`. This could result in value types being boxed even though the original IL didn't contain any `box` instruction.
This is an attempt to use better types for stack slot variables created by ILReader. The idea is: there aren't many IL instructions that produce "other" value types, and `InferType()` already handles pretty much all of them, so we can use that to assign types to our stack slots.
It's a bit more tricky if the stack is pushed to on multiple branches that join together before the value is used: here the variable type must be suitable for both assignments. In this case, we go back to the previously-used stacktype.
3 weeks ago
ds5678
ad4a87b9a3
Improve inlining of boxed values
10 months ago
Siegfried Pammer
8834c02eb7
Improve naming of delegate-typed variables.
1 year ago
ElektroKill
ea1f6e7c25
Fixed compound assignment and post/pre increment for pointer dereference
3 years ago
Daniel Grunwald
5fb2f7a22f
#nullable enable for ILAst (except for generated code)
5 years ago
Daniel Grunwald
3831b42197
Properly support `calli` instruction and its interaction with function pointer types.
6 years ago
dotnet format
0d9f871a4f
#2128 : Reformat the whole code base.
6 years ago
Daniel Grunwald
3a4db502bc
Add support for arithmetic using C# 9 native integer types.
6 years ago
Daniel Grunwald
a1c211f326
Fix #1794 : Avoid extra cast to double for ulong -> float conversion
7 years ago
Daniel Grunwald
f6aae1f97d
Fix #1386 : MoveArrayToPointerToPinnedRegionInit: Only consider the pinned variable uses within the PinnedRegion
...
This also makes CleanUpTryFinallyAroundPinnedRegion() redundant as it is no longer necessary to trigger the array-to-pointer transform; so the normal elimination of pinned variable resets is sufficient.
8 years ago
Daniel Grunwald
ef866040b4
Update to SRM 1.6.0 and Roslyn 2.9. Adjust decompiler to new code pattern used for lifted nullable comparisons.
8 years ago
Daniel Grunwald
12e74daf48
Handle Comp in InferType().
8 years ago
Daniel Grunwald
ba0a3af3c4
#1195 : Fix several issues decompiling SharpSvn.dll (C++/CLI)
8 years ago
Daniel Grunwald
9479e8af13
Support overloaded operator &&/||.
8 years ago
Daniel Grunwald
0552b335c9
Implement InferType() for ldelema.
...
This improves decompilation of compound assignment on array elements.
8 years ago
Siegfried Pammer
4aafe2db69
Remove the last traces of Mono.Cecil in ICSharpCode.Decompiler and ILSpy.
9 years ago
Daniel Grunwald
ae819526eb
Fix assertion when call has unknown target type (due to missing assembly reference).
9 years ago
Siegfried Pammer
33c5e2d3ed
Add StackType.F4 and StackType.F8, and instructions LdcF4 and LdcF8.
9 years ago
Daniel Grunwald
02db362838
Ensure that StLoc.Value.ResultType == StLoc.Variable.StackType
...
This introduce a new explicit conversion (StartGCTracking) when converting unmanaged pointers to managed references.
9 years ago
Daniel Grunwald
248a9ad76f
Fix #954 : don't use invalid compound assignments on enums
9 years ago
Siegfried Pammer
840ec04fde
Namespace adjustments for Syntax classes
10 years ago
Christoph Wille
1ce8349dd9
Adjust namespaces
10 years ago
Daniel Grunwald
935f0118d1
First attempt at better cast handling
10 years ago
Daniel Grunwald
a95cf38ab6
Eliminate GetStackType() for cecil type references; it was incorrect for arrays of enums.
10 years ago
Daniel Grunwald
f1021d18af
Make comparisons in the ILAst more similar to C# comparisons.
...
Add some logic.not simplification to ExpressionTransforms.
10 years ago
Daniel Grunwald
2f83334c2e
Use NRefactory.TypeSystem for ILAst.
12 years ago
Daniel Grunwald
f2d5aa2c99
Handle enums in GetStackType() for cecil TypeReference. Add C# translation for the 'void' opcode.
12 years ago
Daniel Grunwald
68ab914293
Build exception handling blocks
12 years ago
Daniel Grunwald
49ce1bcea3
Worked on ILAst instruction representation
12 years ago
Daniel Grunwald
c2ac889ebe
Allow viewing 'typed IL'.
12 years ago
Daniel Grunwald
27252656cf
Upgrade to new ICSharpCode.Decompiler (work in progress)
...
- Switch AvalonEdit to NuGet package.
- Upgrade Mono.Cecil to new version
12 years ago