public DirectVisitor(IScriptStackWalkVisitor visitor) { this.visitor = Marshal.GetIUnknownForObject(visitor); submitFrameMethod = new FastMethod <Func <IntPtr, IntPtr, int, int> >(nameof(submitFrameMethod), this.visitor, 0); }
public void WalkStack(byte[] boundaryStart, int boundaryStartLength, byte[] boundaryEnd, int boundaryEndLength, IScriptStackWalkVisitor visitor) { var data = m_intManager?.WalkStack(boundaryStart, boundaryEnd); if (data == null) { return; } var frames = (IEnumerable <object>)MsgPackDeserializer.Deserialize(data); #if !IS_FXSERVER visitor = new DirectVisitor(visitor); #endif foreach (var frame in frames) { var f = MsgPackSerializer.Serialize(frame); visitor.SubmitStackFrame(f, f.Length); } }