tom-englert
3248657d2b
Add filtering/sorting capabilities to ReflectionDisassembler ( #2835 )
...
Co-authored-by: Siegfried Pammer <siegfriedpammer@gmail.com>
3 years ago
ElektroKill
7c73517892
Fix formatting
3 years ago
ElektroKill
a979f0fdfa
Add support for VB.NET cached delegate initialization with closures
3 years ago
Daniel Grunwald
d3919aa99a
Support native ints in "Combine bit.and into shift" transform
3 years ago
Siegfried Pammer
6766ad0c59
#2823 : Introduce `IType.GetDefinitionOrUnknown()` to allow better detection of async state-machines involving unknown types.
3 years ago
Siegfried Pammer
bde782e4f5
Fix #2806 : Do not use implicitly typed out variables, if argument and parameter types do not match exactly.
3 years ago
Siegfried Pammer
47250d670b
Fix #2791 : Ensure that the capture scope used is either a loop or the ILFunction root container.
3 years ago
Siegfried Pammer
ac6a2e54ca
Use IsAccessor again.
3 years ago
Siegfried Pammer
927b46b17d
Fix #2787 : Enable NRT in TransformCollectionAndObjectInitializers and fix problems.
3 years ago
Siegfried Pammer
9f6f7a03ac
Fix #2788 : Handling of cpobj in ILReader was missing the stobj special case for the target pointer.
3 years ago
Siegfried Pammer
1ac1bd6eab
Remove context field from TransformCollectionAndObjectInitializers, inline DoTransform.
3 years ago
Siegfried Pammer
a3191f19e2
Fix #2763 : Improve decompilation of switch-on-enum by preserving enum type information when inlining local variables into SwitchInstruction.Value.
3 years ago
Siegfried Pammer
81f575e9ce
Use PopStObjTarget in ILReader, if a call instruction has the same semantics as initobj.
3 years ago
Siegfried Pammer
948da3f9ee
ILInlining: IStatementTransform.Run repeatedly inline all possible statements.
3 years ago
Daniel Grunwald
503048b314
Prevent the early ILInlining pass from creating `addressof` instructions
3 years ago
Daniel Grunwald
9254abcf88
Fix StObj.CheckTargetSlot assertion
3 years ago
Daniel Grunwald
c36c6efb2a
ILReader: don't create stack slots if we can directly created inlined ILAst
...
This is a performance optimization: we dramatically reduce the amount of ILVariables created;
and thus need to spend less time in the first ILInlining run.
3 years ago
Siegfried Pammer
af56bb10d0
Determine isBranchTarget in a separate pass. We will need it for an optimization to ILReader in a future commit.
3 years ago
Siegfried Pammer
c5ff0cafc5
TransformInlineAssignmentStObjOrCall: Make sure no dead store is produced by the transform.
3 years ago
Daniel Grunwald
b4b070468f
Revert "Performance Optimization: Do no longer collect all lower case type and member names."
...
This reverts commit 6584a2f576
.
3 years ago
Siegfried Pammer
6584a2f576
Performance Optimization: Do no longer collect all lower case type and member names.
3 years ago
Daniel Grunwald
3c847b56a2
Fix decompilation of async streams compiled with Roslyn 4.2
3 years ago
Daniel Grunwald
08ceffc3ad
Upgrade dotnet-format from version 5 to the version included with the .NET (6) SDK.
3 years ago
Siegfried Pammer
f695bbcf3a
Add support for DefaultInterpolatedStringHandler
3 years ago
ElektroKill
760a6a653e
Reduce allocations in TransformArrayInitializers
...
DecodeArrayInitializer - Instead of relying on the Add method of a list to expand the underlying array when necessary, the code now allocates a big enough array to fit all the elements removing the need for the Add method to expand the array several times.
BlockFromInitializer now reuses a single instance of List<ILInstruction> instead of reallocating a new one every time and clears it when necessary. The same pre-allocation approach mentioned above has been implemented here too.
3 years ago
Siegfried Pammer
d3f8912d53
Handle special-cases with addressof:
...
- Never introduce casts for ldobj-address-chains
- Add special-case to TransformExpressionTrees: transform addressof(ldloc) to ldloca
- Classify foreach and using variables as readonly lvalues
3 years ago
Siegfried Pammer
702a7da2c3
Fix #2714 : Force inlining of call targets in ctor initializers.
3 years ago
Siegfried Pammer
874ac9ac0b
Fix #2712 : TransformCollectionAndObjectInitializers fails to properly detect set-accessors of FakeProperties.
...
Bug likely introduced due to an oversight in #2677 .
3 years ago
Siegfried Pammer
d248867302
Add support for C# 10 record structs.
3 years ago
Siegfried Pammer
39992161b6
Fix #2692 : NRE in DeconstructionTransform.IsCompatibleImplicitConversion
3 years ago
Siegfried Pammer
6a3bb2bbf1
Fix #2655 : TranslateArrayInitializer crashes with out of order array init
3 years ago
Siegfried Pammer
9e462b53ad
Add support for C# 11 parameter null checks
3 years ago
Siegfried Pammer
93dcba3426
* Rename Metadata.GenericContext to MetadataGenericContext to avoid conflicts with TypeSystem.GenericContext
...
* Change MetadataGenericContext to readonly struct
* Rearrange types in Dom.cs
3 years ago
Siegfried Pammer
4c1931d5c6
Fix NRT warning in GetBlockStateSetMappingForLeave.
3 years ago
Siegfried Pammer
a4e2bd7f8f
Handle leave instructions in state-range analysis.
3 years ago
Siegfried Pammer
84c15bb24f
Fix #2652 : AwaitInFinallyTransform: ILAst must form a tree
3 years ago
Daniel Grunwald
ced6ed445a
Fix #2582 : Assertion when using named arguments in a constrained call
3 years ago
Siegfried Pammer
a9c8f86abc
Make TypeDef-ctor of FindTypeDecoder internal.
3 years ago
Siegfried Pammer
8cc0bf8b49
Generalize FindTypeDecoder
3 years ago
Siegfried Pammer
3c2e52854e
DetectPinnedRegions: Inline the stack-slot involved in CustomRefPinPattern so that the following ProcessPinnedRegion call can reuse existing unmanaged pointer variables instead of being forced to create a new variable.
3 years ago
Siegfried Pammer
f98012ec16
DetectPinnedRegions: Support special case where pinned pointer is unused and the compiler optimized out the StopGCTracking-conversion.
3 years ago
Siegfried Pammer
5f73bfbb01
Fix Deconstruction for Deconstruct instance methods of value-types.
3 years ago
Siegfried Pammer
e726ae28a5
Fix type equality check in TransformCollectionAndObjectInitializers
3 years ago
Siegfried Pammer
d98ff730a0
Fix build.
4 years ago
Siegfried Pammer
4aa7f5fc38
Fix #2612 decompilation of newarr with int.MaxValue causes OOME in decompiler.
4 years ago
Daniel Grunwald
787621fb51
Revert "Use Nop instead of InvalidExpression to hold the "goto from catch-block to try-block" comment"
...
This reverts commit 77dcbbee86
.
4 years ago
Daniel Grunwald
cedd8a6bf6
Fix #2480 : Avoid yield-return decompilation if there are unrecognized state assignments in a finally method.
4 years ago
Daniel Grunwald
77dcbbee86
Use Nop instead of InvalidExpression to hold the "goto from catch-block to try-block" comment
4 years ago
Daniel Grunwald
f104233e78
Fix #2388 : Add support for branch from catch-block to try-block (VB `On Error Resume Next`)
4 years ago
Daniel Grunwald
d0012bf7d8
StatementTransform: Run an expensive invariant check slightly less often.
4 years ago