コード例 #1
0
ファイル: CachedSnapshot.cs プロジェクト: IanKz/Proyecto-IA
 public NativeCallstackSymbolEntriesCache(NativeCallstackSymbolEntries ss)
 {
     Count              = ss.GetNumEntries();
     dataSet            = new SoaDataSet(Count, kCacheEntrySize);
     symbol             = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.symbol));
     readableStackTrace = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.readableStackTrace));
 }
コード例 #2
0
 public ConnectionEntriesCache(ConnectionEntries ss)
 {
     Count   = ss.GetNumEntries();
     dataSet = new SoaDataSet(Count, kCacheEntrySize);
     from    = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.from));
     to      = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.to));
 }
コード例 #3
0
ファイル: CachedSnapshot.cs プロジェクト: IanKz/Proyecto-IA
 public NativeTypeEntriesCache(NativeTypeEntries ss)
 {
     Count    = ss.GetNumEntries();
     dataSet  = new SoaDataSet(Count, kCacheEntrySize);
     typeName = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.typeName));
     nativeBaseTypeArrayIndex = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.nativeBaseTypeArrayIndex));
 }
コード例 #4
0
ファイル: CachedSnapshot.cs プロジェクト: IanKz/Proyecto-IA
 public NativeAllocationSiteEntriesCache(NativeAllocationSiteEntries ss)
 {
     Count            = ss.GetNumEntries();
     dataSet          = new SoaDataSet(Count, kCacheEntrySize);
     id               = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.id));
     memoryLabelIndex = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.memoryLabelIndex));
     callstackSymbols = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.callstackSymbols));
 }
コード例 #5
0
            public ConnectionEntriesCache(PackedMemorySnapshot snap, bool connectionsNeedRemaping)
            {
                var ss = snap.connections;

                Count   = ss.GetNumEntries();
                dataSet = new SoaDataSet(Count, kCacheEntrySize);
#if UNITY_2019_3_OR_NEWER
                if (connectionsNeedRemaping)
                {
                    var fromAPIArr = new int[Count];
                    ss.from.GetEntries(0, (uint)Count, ref fromAPIArr);
                    var toAPIArr = new int[Count];
                    ss.to.GetEntries(0, (uint)Count, ref toAPIArr);
                    var instanceIDArr = new int[snap.nativeObjects.instanceId.GetNumEntries()];
                    snap.nativeObjects.instanceId.GetEntries(0, snap.nativeObjects.instanceId.GetNumEntries(), ref instanceIDArr);
                    var gchandlesIndexArr = new int[snap.nativeObjects.gcHandleIndex.GetNumEntries()];
                    snap.nativeObjects.gcHandleIndex.GetEntries(0, snap.nativeObjects.gcHandleIndex.GetNumEntries(), ref gchandlesIndexArr);

                    Dictionary <int, int> instanceIDToIndex         = new Dictionary <int, int>();
                    Dictionary <int, int> instanceIDToGcHandleIndex = new Dictionary <int, int>();

                    for (int i = 0; i < instanceIDArr.Length; ++i)
                    {
                        if (gchandlesIndexArr[i] != -1)
                        {
                            instanceIDToGcHandleIndex.Add(instanceIDArr[i], gchandlesIndexArr[i]);
                        }
                        instanceIDToIndex.Add(instanceIDArr[i], i);
                    }

                    var   gcHandlesCount = snap.gcHandles.GetNumEntries();
                    int[] fromIndices    = new int[Count + instanceIDToGcHandleIndex.Count];
                    int[] toIndices      = new int[fromIndices.Length];

                    for (long i = 0; i < Count; ++i)
                    {
                        fromIndices[i] = (int)(gcHandlesCount + instanceIDToIndex[fromAPIArr[i]]);
                        toIndices[i]   = (int)(gcHandlesCount + instanceIDToIndex[toAPIArr[i]]);
                    }

                    var enumerator = instanceIDToGcHandleIndex.GetEnumerator();
                    for (long i = Count; i < fromIndices.Length; ++i)
                    {
                        enumerator.MoveNext();
                        fromIndices[i] = (int)(gcHandlesCount + instanceIDToIndex[enumerator.Current.Key]);
                        toIndices[i]   = enumerator.Current.Value;
                    }

                    from = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(fromIndices));
                    to   = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(toIndices));
                }
                else
#endif
                {
                    from = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.from));
                    to   = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.to));
                }
            }
コード例 #6
0
ファイル: CachedSnapshot.cs プロジェクト: IanKz/Proyecto-IA
 public FieldDescriptionEntriesCache(FieldDescriptionEntries ss)
 {
     Count   = ss.GetNumEntries();
     dataSet = new SoaDataSet(Count, kCacheEntrySize);
     fieldDescriptionName = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.fieldDescriptionName));
     offset    = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.offset));
     typeIndex = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.typeIndex));
     isStatic  = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.isStatic));
 }
コード例 #7
0
ファイル: CachedSnapshot.cs プロジェクト: IanKz/Proyecto-IA
 public NativeRootReferenceEntriesCache(NativeRootReferenceEntries ss)
 {
     Count           = ss.GetNumEntries();
     dataSet         = new SoaDataSet(Count, kCacheEntrySize);
     id              = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.id));
     areaName        = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.areaName));
     objectName      = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.objectName));
     accumulatedSize = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.accumulatedSize));
 }
コード例 #8
0
ファイル: CachedSnapshot.cs プロジェクト: IanKz/Proyecto-IA
 public NativeMemoryRegionEntriesCache(NativeMemoryRegionEntries ss)
 {
     Count                = ss.GetNumEntries();
     dataSet              = new SoaDataSet(Count, kCacheEntrySize);
     memoryRegionName     = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.memoryRegionName));
     parentIndex          = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.parentIndex));
     addressBase          = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.addressBase));
     addressSize          = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.addressSize));
     firstAllocationIndex = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.firstAllocationIndex));
     numAllocations       = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.numAllocations));
 }
コード例 #9
0
ファイル: CachedSnapshot.cs プロジェクト: IanKz/Proyecto-IA
 public NativeAllocationEntriesCache(NativeAllocationEntries ss)
 {
     Count             = ss.GetNumEntries();
     dataSet           = new SoaDataSet(Count, kCacheEntrySize);
     memoryRegionIndex = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.memoryRegionIndex));
     rootReferenceId   = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.rootReferenceId));
     allocationSiteId  = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.allocationSiteId));
     address           = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.address));
     size         = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.size));
     overheadSize = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.overheadSize));
     paddingSize  = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.paddingSize));
 }
コード例 #10
0
        private void CreateTable_ManagedStacks(List <APITable> tables)
        {
            SoaDataSet dataSet = new SoaDataSet(m_Snapshot.managedHeapSections.Count, 1024);
            APITable   table   = new APITable(this, m_Snapshot, m_Snapshot.managedHeapSections.Count);

            table.AddColumn(
                new MetaColumn("startAddress", "startAddress", typeof(ulong), true, Grouping.groupByDuplicate, null)
                , DataArray.MakeColumn(dataSet, DataSourceFromAPI.ApiToDatabase(m_Snapshot.packedMemorySnapshot.managedHeapSections.startAddress))
                );
            table.CreateTable(kPrefixTableName + "ManagedStacks", kPrefixTableDisplayName + "ManagedStacks");
            AddTable(table, tables);
        }
コード例 #11
0
ファイル: CachedSnapshot.cs プロジェクト: IanKz/Proyecto-IA
 public NativeObjectEntriesCache(NativeObjectEntries ss)
 {
     Count                = ss.GetNumEntries();
     dataSet              = new SoaDataSet(Count, kCacheEntrySize);
     objectName           = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.objectName));
     instanceId           = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.instanceId));
     size                 = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.size));
     nativeTypeArrayIndex = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.nativeTypeArrayIndex));
     hideFlags            = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.hideFlags));
     flags                = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.flags));
     nativeObjectAddress  = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.nativeObjectAddress));
     rootReferenceId      = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.rootReferenceId));
 }
コード例 #12
0
ファイル: CachedSnapshot.cs プロジェクト: IanKz/Proyecto-IA
 public TypeDescriptionEntriesCache(TypeDescriptionEntries ss)
 {
     Count                  = ss.GetNumEntries();
     dataSet                = new SoaDataSet(Count, kCacheEntrySize);
     flags                  = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.flags));
     typeDescriptionName    = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.typeDescriptionName));
     assembly               = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.assembly));
     fieldIndices           = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.fieldIndices));
     staticFieldBytes       = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.staticFieldBytes));
     baseOrElementTypeIndex = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.baseOrElementTypeIndex));
     size            = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.size));
     typeInfoAddress = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.typeInfoAddress));
     typeIndex       = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.typeIndex));
 }
コード例 #13
0
            public ManagedMemorySectionEntriesCache(ManagedMemorySectionEntries ss)
            {
                Count   = ss.GetNumEntries();
                dataSet = new SoaDataSet(Count, kCacheEntrySize);

                if (Count > 0)
                {
                    bytes = new byte[Count][];
                    var cacheBytes = new byte[1][];
                    for (uint i = 0; i < Count; ++i)
                    {
                        ss.bytes.GetEntries(i, 1, ref cacheBytes);
                        bytes[i] = cacheBytes[0];
                    }
                    startAddress = new ulong[Count];
                    ss.startAddress.GetEntries(0, Count, ref startAddress);
                }
            }
コード例 #14
0
 public NativeObjectEntriesCache(INativeObjectEntries ss)
 {
     Count                           = ss.GetNumEntries();
     dataSet                         = new SoaDataSet(Count, kCacheEntrySize);
     objectName                      = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.objectName));
     instanceId                      = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.instanceId));
     size                            = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.size));
     nativeTypeArrayIndex            = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.nativeTypeArrayIndex));
     hideFlags                       = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.hideFlags));
     flags                           = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.flags));
     nativeObjectAddress             = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.nativeObjectAddress));
     rootReferenceId                 = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.rootReferenceId));
     nativeObjectAddressToInstanceId = new Dictionary <ulong, int>((int)nativeObjectAddress.Length);
     for (int i = 0; i < nativeObjectAddress.Length; ++i)
     {
         nativeObjectAddressToInstanceId.Add(nativeObjectAddress[i], instanceId[i]);
     }
 }
コード例 #15
0
            public ManagedMemorySectionEntriesCache(ManagedMemorySectionEntries ss)
            {
                Count   = ss.GetNumEntries();
                dataSet = new SoaDataSet(Count, kCacheEntrySize);

                if (Count > 0)
                {
                    bytes = new byte[Count][];
                    var cacheBytes = new byte[1][];
                    for (uint i = 0; i < Count; ++i)
                    {
                        ss.bytes.GetEntries(i, 1, ref cacheBytes);
                        bytes[i] = cacheBytes[0];
                    }
                    startAddress = new ulong[Count];
                    //workaround using GetNumEntries instead of count due to limitations of internal API
                    ss.startAddress.GetEntries(0, ss.GetNumEntries(), ref startAddress);
                }
            }
コード例 #16
0
ファイル: CachedSnapshot.cs プロジェクト: IanKz/Proyecto-IA
 public GCHandleEntriesCache(GCHandleEntries ss)
 {
     Count   = ss.GetNumEntries();
     dataSet = new SoaDataSet(Count, kCacheEntrySize);
     target  = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.target));
 }
コード例 #17
0
ファイル: CachedSnapshot.cs プロジェクト: IanKz/Proyecto-IA
 public NativeMemoryLabelEntriesCache(NativeMemoryLabelEntries ss)
 {
     Count           = ss.GetNumEntries();
     dataSet         = new SoaDataSet(Count, kCacheEntrySize);
     memoryLabelName = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.memoryLabelName));
 }