Example #1
0
        public void UpdateWith(IncrementalMethodBodyInfo imbi)
        {
            CurrentData = imbi;

            var xslt = new XslCompiledTransform();

            using (var sr = new StringReader(Resources.XSLT))
            {
                using (var xtr = new XmlTextReader(sr))
                {
                    xslt.Load(xtr);
                }
            }

            var serializer = new XmlSerializer(typeof(IncrementalMethodBodyInfo));

            using (var beforeTransform = new MemoryStream())
            {
                var afterTransform = new MemoryStream();
                serializer.Serialize(beforeTransform, CurrentData);

                beforeTransform.Position = 0;
                using (var reader = new XmlTextReader(beforeTransform))
                {
                    xslt.Transform(reader, null, afterTransform);
                }

                afterTransform.Position   = 0;
                webBrowser.DocumentStream = afterTransform;
            }
        }
Example #2
0
        public static IncrementalMethodBodyInfo Create(MethodBodyInfo mbi, IEnumerable <int> history = null)
        {
            var imbi = new IncrementalMethodBodyInfo
            {
                Identity       = mbi.Identity,
                TypeName       = mbi.TypeName,
                MethodToString = mbi.MethodToString,
                Instructions   = mbi.Instructions.Select(i => new AgingInstruction {
                    ILString = i
                }).ToArray(),
                LengthHistory = new List <int>(history ?? Enumerable.Empty <int>())
                {
                    mbi.Instructions.Count
                }
            };

            for (var i = 0; i < imbi.LengthHistory.Count - 1; i++)
            {
                for (var a = imbi.LengthHistory[i]; a < imbi.LengthHistory[i + 1]; a++)
                {
                    imbi.Instructions[a].Age = i + 1;
                }
            }

            return(imbi);
        }
Example #3
0
        private void OnVisualizerDataReady(object sender, VisualizerDataEventArgs <MethodBodyInfo> e)
        {
            var mbi       = e.VisualizerData;
            var childForm = FindOrCreateChildForm(mbi);

            var imbi = childForm.CurrentData != null
                ? IncrementalMethodBodyInfo.Create(mbi, childForm.CurrentData.LengthHistory)
                : IncrementalMethodBodyInfo.Create(mbi);

            childForm.UpdateWith(imbi);
        }