Example #1
0
            public DirectVisitor(IScriptStackWalkVisitor visitor)
            {
                this.visitor = Marshal.GetIUnknownForObject(visitor);

                submitFrameMethod = new FastMethod <Func <IntPtr, IntPtr, int, int> >(nameof(submitFrameMethod), this.visitor, 0);
            }
Example #2
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);
            }
        }