mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-07-25 15:19:50 -06:00
27 lines
914 B
C#
27 lines
914 B
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace Ryujinx.Cpu.LightningJit.CodeGen.Arm64
|
|
{
|
|
class StackWalker : IStackWalker
|
|
{
|
|
public IEnumerable<ulong> GetCallStack(nint framePointer, nint codeRegionStart, int codeRegionSize, nint codeRegion2Start, int codeRegion2Size)
|
|
{
|
|
while (true)
|
|
{
|
|
nint functionPointer = Marshal.ReadIntPtr(framePointer, nint.Size);
|
|
|
|
if ((functionPointer < codeRegionStart || functionPointer >= codeRegionStart + codeRegionSize) &&
|
|
(functionPointer < codeRegion2Start || functionPointer >= codeRegion2Start + codeRegion2Size))
|
|
{
|
|
break;
|
|
}
|
|
|
|
yield return (ulong)functionPointer - 4;
|
|
framePointer = Marshal.ReadIntPtr(framePointer);
|
|
}
|
|
}
|
|
}
|
|
}
|