[feature/dataflow] Branch exit criteria cleanups
- 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