diff options
| author | FICTURE7 <FICTURE7@gmail.com> | 2021-09-29 03:38:37 +0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-29 01:38:37 +0200 |
| commit | 312be74861dae16311f4376e32195f8a4fd372c6 (patch) | |
| tree | 43b9937541dc1d3359ab18b3c45533f9de2b1b28 /Ryujinx.Memory/Tracking/MemoryTracking.cs | |
| parent | 1ae690ba2f407042456207d40e425f8b1f900863 (diff) | |
Optimize `HybridAllocator` (#2637)
* Store constant `Operand`s in the `LocalInfo`
Since the spill slot and register assigned is fixed, we can just store
the `Operand` reference in the `LocalInfo` struct. This allows skipping
hitting the intern-table for a look up.
* Skip `Uses`/`Assignments` management
Since the `HybridAllocator` is the last pass and we do not care about
uses/assignments we can skip managing that when setting destinations or
sources.
* Make `GetLocalInfo` inlineable
Also fix a possible issue where with numbered locals. See or-assignment
operator in `SetVisited(local)` before patch.
* Do not run `BlockPlacement` in LCQ
With the host mapped memory manager, there is a lot less cold code to
split from hot code. So disabling this in LCQ gives some extra
throughput - where we need it.
* Address Mou-Ikkai's feedback
* Apply suggestions from code review
Co-authored-by: VocalFan <45863583+Mou-Ikkai@users.noreply.github.com>
* Move check to an assert
Co-authored-by: VocalFan <45863583+Mou-Ikkai@users.noreply.github.com>
Diffstat (limited to 'Ryujinx.Memory/Tracking/MemoryTracking.cs')
0 files changed, 0 insertions, 0 deletions
