-
-
Notifications
You must be signed in to change notification settings - Fork 3.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TopologicalSort stack overflow when decompiling long method #3075
Comments
Lots of the decompiler uses recursive algorithms. While Can you run the decompiler on a larger stack instead? (e.g. using the ILSpy.exe does not crash on your example, as we use |
…ckTransformContext.IndexOfFirstAlreadyTransformedInstruction, which allows us to track already transformed instructions after a block has been merged into another by ConditionDetection.
…tore bit individually in ReachingDefinitionsVisitor.GetStores()
…me in cases with a large number of local variables.
Decompiling
yields the following results for various optimizations we performed:
I think there's not much left we can do (for now) to improve this specific case, without making the decompiler slower in the general case. |
@siegfriedpammer those are some impressive gains! |
The following method uses recursion instead of iteration for the call to
Visit
:ILSpy/ICSharpCode.Decompiler/IL/Instructions/BlockContainer.cs
Line 277 in bd82b94
This will stack overflow when decompiling the following property:
https://github.com/microsoft/fluentui-blazor/blob/9d092562af1570269c62be9a99b6e7e9a7470c87/src/Assets/FluentUI.Icons/Icons/Icons.cs#L14
The property has the following general structure:
The text was updated successfully, but these errors were encountered: