示例#1
0
        public VMPathFinder PushNewPathFinder(VMStackFrame frame, List <VMFindLocationResult> locations)
        {
            var childFrame = new VMPathFinder
            {
                Routine     = frame.Routine,
                Caller      = frame.Caller,
                Callee      = frame.Callee,
                CodeOwner   = frame.CodeOwner,
                StackObject = frame.StackObject,
                Thread      = this
            };

            var success = childFrame.InitRoutes(locations);

            if (!success)
            {
                return(null);          //no route, don't push
            }
            else
            {
                Stack.Add(childFrame);
                return(childFrame);
            }
        }
示例#2
0
        public VMPathFinder PushNewPathFinder(VMStackFrame frame, List<VMFindLocationResult> locations)
        {
            var childFrame = new VMPathFinder
            {
                Routine = frame.Routine,
                Caller = frame.Caller,
                Callee = frame.Callee,
                CodeOwner = frame.CodeOwner,
                StackObject = frame.StackObject,
                Thread = this
            };

            var success = childFrame.InitRoutes(locations);

            if (!success) return null; //no route, don't push
            else
            {
                Stack.Add(childFrame);
                return childFrame;
            }
        }