mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-11-30 11:42:04 +00:00
a694420d11
* Implement speculative translation on the cpu, and change the way how branches to unknown or untranslated addresses works * Port t0opt changes and other cleanups * Change namespace from translation related classes to ChocolArm64.Translation, other minor tweaks * Fix typo * Translate higher quality code for indirect jumps aswell, and on some cases that were missed when lower quality (tier 0) code was available * Remove debug print * Remove direct argument passing optimization, and enable tail calls for BR instructions * Call delegates directly with Callvirt rather than calling Execute, do not emit calls for tier 0 code * Remove unused property * Rename argument on ArmSubroutine delegate
23 lines
No EOL
550 B
C#
23 lines
No EOL
550 B
C#
using System.Reflection;
|
|
using System.Reflection.Emit;
|
|
|
|
namespace ChocolArm64.Translation
|
|
{
|
|
struct ILOpCodeCall : IILEmit
|
|
{
|
|
public MethodInfo Info { get; private set; }
|
|
|
|
public bool IsVirtual { get; private set; }
|
|
|
|
public ILOpCodeCall(MethodInfo info, bool isVirtual)
|
|
{
|
|
Info = info;
|
|
IsVirtual = isVirtual;
|
|
}
|
|
|
|
public void Emit(ILMethodBuilder context)
|
|
{
|
|
context.Generator.Emit(IsVirtual ? OpCodes.Callvirt : OpCodes.Call, Info);
|
|
}
|
|
}
|
|
} |