0
0
Fork 0
mirror of https://github.com/GreemDev/Ryujinx.git synced 2025-01-10 11:42:00 +00:00
Ryujinx/src/ARMeilleure/Allocators.cs
TSRBerry 2989c163a8
editorconfig: Set default encoding to UTF-8 (#5793)
* editorconfig: Add default charset

* Change file encoding from UTF-8-BOM to UTF-8
2023-12-04 14:17:13 +01:00

39 lines
1.5 KiB
C#

using ARMeilleure.Common;
using System;
using System.Runtime.CompilerServices;
namespace ARMeilleure
{
static class Allocators
{
[ThreadStatic] private static ArenaAllocator _default;
[ThreadStatic] private static ArenaAllocator _operands;
[ThreadStatic] private static ArenaAllocator _operations;
[ThreadStatic] private static ArenaAllocator _references;
[ThreadStatic] private static ArenaAllocator _liveRanges;
[ThreadStatic] private static ArenaAllocator _liveIntervals;
public static ArenaAllocator Default => GetAllocator(ref _default, 256 * 1024, 4);
public static ArenaAllocator Operands => GetAllocator(ref _operands, 64 * 1024, 8);
public static ArenaAllocator Operations => GetAllocator(ref _operations, 64 * 1024, 8);
public static ArenaAllocator References => GetAllocator(ref _references, 64 * 1024, 8);
public static ArenaAllocator LiveRanges => GetAllocator(ref _liveRanges, 64 * 1024, 8);
public static ArenaAllocator LiveIntervals => GetAllocator(ref _liveIntervals, 64 * 1024, 8);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static ArenaAllocator GetAllocator(ref ArenaAllocator alloc, uint pageSize, uint pageCount)
{
alloc ??= new ArenaAllocator(pageSize, pageCount);
return alloc;
}
public static void ResetAll()
{
Default.Reset();
Operands.Reset();
Operations.Reset();
References.Reset();
}
}
}