dotnet / dotnet/linker

[feature/dataflow] Branch exit criteria cleanups

Open
#999 2 comments 0 reactions 0 assignees View on GitHub
task
Dominant language
C#
Stars
392
Forks
128
Avg merge
2d 10h
Merged PRs (30d)
2

Description

- [x] Make sure dataflow analysis only runs on method bodies that have references to linker-unfriendly methods/fields/or are linker unfriendly themselves.
- [x] Make `StackSlot` a struct, or eliminate `StackSlot` by replacing it with `ValueNode`.
- [ ] Other misc perf measurements and optimizations
- [x] Make sure unsafe reflection pattern reporting can handle multiple reported values (for e.g.`Activator. CreateInstance(cond ? typeof(Foo) : typeof(Bar))`).
- [x] Replace HashHelper with HashCode struct (commit 88b158eb2e468e37c109158256be503e010e1829 in #994 tried to do it but hit trouble in tests)
- [ ] Remove usage of lambdas which require closure - requires allocation on every call
- [ ] Measure and optimize the number of methods full method body scanning runs on
- [x] Make annotation JSON generic - https://github.com/mono/linker/issues/1118
- [ ] Handle assemblies referenced only via reflection - https://github.com/mono/linker/issues/1079 and https://github.com/mono/linker/issues/943
- [ ] Design and implement programmatic way to fully disable method body scanning - https://github.com/mono/linker/issues/1102
- [ ] Optimize the way we detect intrinsic - instead of switch on every referenced method, look these up upfront and build annotation cache
- [ ] Investigate a better way to compute annotations - currently done per-type (so referencing one thing on a type forces full annotation cache to be build for the entire type). Can we do it more incrementally?

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by choosing one unchecked item and reading the related issues #1079, #943, and #1102; the checklist covers dataflow scanning, reflection, annotations, intrinsics, and allocation costs. Done would require completing one explicitly scoped optimization or design item, but this issue does not define a single acceptance test or a specific code location.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
compilers, tooling
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.