internal StackFrame UnwindStack(StackFrame frame, TargetMemoryAccess memory)
{
if (!IsLoaded)
return null;
try {
StackFrame new_frame = Module.UnwindStack (frame, memory);
if (new_frame != null)
return new_frame;
} catch {
}
int prologue_size;
if (HasMethodBounds)
prologue_size = (int) (MethodStartAddress - StartAddress);
else
prologue_size = (int) (EndAddress - StartAddress);
int offset = (int) (frame.TargetAddress - StartAddress);
byte[] prologue = memory.ReadBuffer (StartAddress, prologue_size);
return frame.Thread.Architecture.UnwindStack (frame, memory, prologue, offset);
}