|
using System;
|
|
using UnityEditor.MemoryProfiler;
|
|
|
|
namespace MemoryProfilerWindow
|
|
{
|
|
static class StringTools
|
|
{
|
|
public static string ReadString(BytesAndOffset bo, VirtualMachineInformation virtualMachineInformation)
|
|
{
|
|
var lengthPointer = bo.Add(virtualMachineInformation.objectHeaderSize);
|
|
var length = lengthPointer.ReadInt32();
|
|
var firstChar = lengthPointer.Add(4);
|
|
|
|
return System.Text.Encoding.Unicode.GetString(firstChar.bytes, firstChar.offset, length * 2);
|
|
}
|
|
|
|
public static int ReadStringObjectSizeInBytes(BytesAndOffset bo, VirtualMachineInformation virtualMachineInformation)
|
|
{
|
|
var lengthPointer = bo.Add(virtualMachineInformation.objectHeaderSize);
|
|
var length = lengthPointer.ReadInt32();
|
|
|
|
return virtualMachineInformation.objectHeaderSize + /*lengthfield*/ 1 + (length * /*utf16=2bytes per char*/ 2) + /*2 zero terminators*/ 2;
|
|
}
|
|
}
|
|
}
|