Exemplo n.º 1
0
        public MCNE_PerfectHashtable(int[] keys, MethodCallNode[] values)
        {
            count = keys.Length;
            var length = keys.Length - 1;

            while (true)
            {
                ++length;
                var  was = new bool[length];
                bool ok  = true;
                foreach (var key in keys)
                {
                    var index = key % length;
                    if (was[index])
                    {
                        ok = false;
                        break;
                    }
                    was[index] = true;
                }
                if (ok)
                {
                    break;
                }
            }
            handles  = new int[length];
            children = new MethodCallNode[length];
            for (int i = 0; i < keys.Length; ++i)
            {
                var index = keys[i] % length;
                handles[index]  = keys[i];
                children[index] = values[i];
            }
        }
Exemplo n.º 2
0
        public MethodCallNode StartMethod(int methodId)
        {
            var child = edges.Jump(methodId);

            if (child != null)
            {
                return(child);
            }
            child = new MethodCallNode(this, methodId);
            edges = MethodCallNodeEdgesFactory.Create(edges.MethodIds.Concat(new[] { methodId }), edges.Children.Concat(new[] { child }));
            return(child);
        }
Exemplo n.º 3
0
 public MethodCallNode(MethodCallNode parent, int methodId)
 {
     this.parent = parent;
     MethodId    = methodId;
     edges       = new MCNE_Empty();
 }
Exemplo n.º 4
0
 public MethodCallTree()
 {
     root       = new MethodCallNode(null, 0);
     current    = root;
     startTicks = MethodBaseTracingInstaller.TicksReader();
 }