Example #1
0
        private NodeTypeIndex GetNodeTypeIndex(ProfilerTypeID typeId)
        {
            var typeIdasInt = (int)typeId;

            NodeTypeIndex ret = NodeTypeIndex.Invalid;

            if (typeIdasInt >= m_profilerTypeToNodeType.Count)
            {
                int prevSize = m_profilerTypeToNodeType.Count;
                int newSize  = typeIdasInt + 100;
                m_profilerTypeToNodeType.Count = newSize;
                for (int i = prevSize; i < newSize; i++)
                {
                    m_profilerTypeToNodeType[i] = NodeTypeIndex.Invalid;
                }
            }
            else
            {
                ret = m_profilerTypeToNodeType[typeIdasInt];
            }

            if (ret == NodeTypeIndex.Invalid)
            {
                ProfilerType profilerType = m_clrProfilerParser.GetTypeById(typeId);
                ret = CreateType(profilerType.name);
                m_profilerTypeToNodeType[typeIdasInt] = ret;

                // TODO FIX NOW don't allocate every time
                GetType(ret, AllocTypeNodeStorage()).ModuleName = profilerType.ModuleName;
            }
            return(ret);
        }
Example #2
0
 // Callbacks from various records in the ClrProfiler log.
 private void OnStaticVar(Address objectAddress, string fieldName, ProfilerTypeID typeID, uint threadID, string appDomainName)
 {
     // Unfortunately we don't know the module name until late in the trace, so
     // we have to defer the work until then.  So just remember what we needs to do.
     m_deferedRoots.Add(new DeferedRoot {
         name          = fieldName,
         nodeIndex     = GetNodeIndex(objectAddress),
         typeID        = typeID,
         prefix        = threadID == 0 ? "static" : "threadStatic",
         appDomainName = appDomainName,
     });
 }
Example #3
0
        private void OnObjectDescription(Address objectAddress, ProfilerTypeID typeId, uint size, List <Address> pointsTo)
        {
            var nodeIndex = GetNodeIndex(objectAddress);

            m_tempChildren.Clear();
            for (int i = 0; i < pointsTo.Count; i++)
            {
                m_tempChildren.Add(GetNodeIndex(pointsTo[i]));
            }
            var typeIndex = GetNodeTypeIndex(typeId);

            this.SetNode(nodeIndex, typeIndex, (int)size, m_tempChildren);
        }
Example #4
0
 private void OnLocalVar(Address objectAddress, string localVarName, string methodName, ProfilerTypeID typeID, uint threadID, string appDomainName)
 {
     m_deferedRoots.Add(new DeferedRoot
     {
         // Unfortunately we don't know the module name until late in the trace, so
         // we have to defer the work until then.  So just remember what we needs to do.
         name          = methodName + " " + localVarName,
         nodeIndex     = GetNodeIndex(objectAddress),
         typeID        = typeID,
         prefix        = "local",
         appDomainName = appDomainName,
     });
 }