mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-12-23 22:55:34 +00:00
Fix memory tracking performance regression (#2026)
* Fix memory tracking performance regression * Set PTC version
This commit is contained in:
parent
715b605e95
commit
9d82d27df2
|
@ -334,14 +334,14 @@ namespace ARMeilleure.Instructions
|
||||||
{
|
{
|
||||||
if (write)
|
if (write)
|
||||||
{
|
{
|
||||||
pte = context.ShiftLeft(pte, Const(1));
|
|
||||||
context.BranchIf(lblSlowPath, pte, Const(0L), Comparison.LessOrEqual);
|
context.BranchIf(lblSlowPath, pte, Const(0L), Comparison.LessOrEqual);
|
||||||
pte = context.ShiftRightUI(pte, Const(1));
|
pte = context.BitwiseAnd(pte, Const(0xffffffffffffUL)); // Ignore any software protection bits. (they are still used by C# memory access)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
pte = context.ShiftLeft(pte, Const(1));
|
||||||
context.BranchIf(lblSlowPath, pte, Const(0L), Comparison.LessOrEqual);
|
context.BranchIf(lblSlowPath, pte, Const(0L), Comparison.LessOrEqual);
|
||||||
pte = context.BitwiseAnd(pte, Const(0xffffffffffffUL)); // Ignore any software protection bits. (they are still used by C# memory access)
|
pte = context.ShiftRightUI(pte, Const(1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -22,7 +22,7 @@ namespace ARMeilleure.Translation.PTC
|
||||||
{
|
{
|
||||||
private const string HeaderMagic = "PTChd";
|
private const string HeaderMagic = "PTChd";
|
||||||
|
|
||||||
private const int InternalVersion = 1987; //! To be incremented manually for each change to the ARMeilleure project.
|
private const int InternalVersion = 2026; //! To be incremented manually for each change to the ARMeilleure project.
|
||||||
|
|
||||||
private const string ActualDir = "0";
|
private const string ActualDir = "0";
|
||||||
private const string BackupDir = "1";
|
private const string BackupDir = "1";
|
||||||
|
|
|
@ -561,7 +561,7 @@ namespace Ryujinx.Cpu
|
||||||
long tag = protection switch
|
long tag = protection switch
|
||||||
{
|
{
|
||||||
MemoryPermission.None => 0L,
|
MemoryPermission.None => 0L,
|
||||||
MemoryPermission.Read => 2L << PointerTagBit,
|
MemoryPermission.Write => 2L << PointerTagBit,
|
||||||
_ => 3L << PointerTagBit
|
_ => 3L << PointerTagBit
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -631,7 +631,7 @@ namespace Ryujinx.Cpu
|
||||||
// tracking using host guard pages in future, but also supporting platforms where this is not possible.
|
// tracking using host guard pages in future, but also supporting platforms where this is not possible.
|
||||||
|
|
||||||
// Write tag includes read protection, since we don't have any read actions that aren't performed before write too.
|
// Write tag includes read protection, since we don't have any read actions that aren't performed before write too.
|
||||||
long tag = (write ? 3L : 2L) << PointerTagBit;
|
long tag = (write ? 3L : 1L) << PointerTagBit;
|
||||||
|
|
||||||
ulong endVa = (va + size + PageMask) & ~(ulong)PageMask;
|
ulong endVa = (va + size + PageMask) & ~(ulong)PageMask;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue