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)); }
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)); }
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)); }
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)); }
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)); } }
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)); }
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)); }
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)); }
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)); }
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); }
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)); }
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)); }
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); } }
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]); } }
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); } }
public GCHandleEntriesCache(GCHandleEntries ss) { Count = ss.GetNumEntries(); dataSet = new SoaDataSet(Count, kCacheEntrySize); target = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.target)); }
public NativeMemoryLabelEntriesCache(NativeMemoryLabelEntries ss) { Count = ss.GetNumEntries(); dataSet = new SoaDataSet(Count, kCacheEntrySize); memoryLabelName = DataArray.MakeCache(dataSet, DataSourceFromAPI.ApiToDatabase(ss.memoryLabelName)); }