Nits.
This commit is contained in:
parent
d49d8d6579
commit
e68376d70b
4 changed files with 23 additions and 29 deletions
|
@ -18,6 +18,8 @@ using System.Runtime.CompilerServices;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
|
using static ARMeilleure.Translation.PTC.PtcFormatter;
|
||||||
|
|
||||||
namespace ARMeilleure.Translation.PTC
|
namespace ARMeilleure.Translation.PTC
|
||||||
{
|
{
|
||||||
public static class Ptc
|
public static class Ptc
|
||||||
|
@ -206,11 +208,7 @@ namespace ARMeilleure.Translation.PTC
|
||||||
using (FileStream compressedStream = new(fileName, FileMode.Open))
|
using (FileStream compressedStream = new(fileName, FileMode.Open))
|
||||||
using (DeflateStream deflateStream = new(compressedStream, CompressionMode.Decompress, true))
|
using (DeflateStream deflateStream = new(compressedStream, CompressionMode.Decompress, true))
|
||||||
{
|
{
|
||||||
int hashSize = Unsafe.SizeOf<Hash128>();
|
Hash128 currentSizeHash = DeserializeStructure<Hash128>(compressedStream);
|
||||||
|
|
||||||
Span<byte> currentSizeHashBytes = new byte[hashSize];
|
|
||||||
compressedStream.Read(currentSizeHashBytes);
|
|
||||||
Hash128 currentSizeHash = MemoryMarshal.Read<Hash128>(currentSizeHashBytes);
|
|
||||||
|
|
||||||
Span<byte> sizeBytes = new byte[sizeof(int)];
|
Span<byte> sizeBytes = new byte[sizeof(int)];
|
||||||
compressedStream.Read(sizeBytes);
|
compressedStream.Read(sizeBytes);
|
||||||
|
@ -244,11 +242,10 @@ namespace ARMeilleure.Translation.PTC
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
stream.Seek(0L, SeekOrigin.Begin);
|
int hashSize = Unsafe.SizeOf<Hash128>();
|
||||||
|
|
||||||
Span<byte> currentHashBytes = new byte[hashSize];
|
stream.Seek(0L, SeekOrigin.Begin);
|
||||||
stream.Read(currentHashBytes);
|
Hash128 currentHash = DeserializeStructure<Hash128>(stream);
|
||||||
Hash128 currentHash = MemoryMarshal.Read<Hash128>(currentHashBytes);
|
|
||||||
|
|
||||||
ReadOnlySpan<byte> streamBytes = new(stream.PositionPointer, (int)(stream.Length - stream.Position));
|
ReadOnlySpan<byte> streamBytes = new(stream.PositionPointer, (int)(stream.Length - stream.Position));
|
||||||
Hash128 expectedHash = XXHash128.ComputeHash(streamBytes);
|
Hash128 expectedHash = XXHash128.ComputeHash(streamBytes);
|
||||||
|
@ -447,11 +444,8 @@ namespace ARMeilleure.Translation.PTC
|
||||||
ReadOnlySpan<byte> streamBytes = new(stream.PositionPointer, (int)(stream.Length - stream.Position));
|
ReadOnlySpan<byte> streamBytes = new(stream.PositionPointer, (int)(stream.Length - stream.Position));
|
||||||
Hash128 hash = XXHash128.ComputeHash(streamBytes);
|
Hash128 hash = XXHash128.ComputeHash(streamBytes);
|
||||||
|
|
||||||
Span<byte> hashBytes = new byte[hashSize];
|
|
||||||
MemoryMarshal.Write<Hash128>(hashBytes, ref hash);
|
|
||||||
|
|
||||||
stream.Seek(0L, SeekOrigin.Begin);
|
stream.Seek(0L, SeekOrigin.Begin);
|
||||||
stream.Write(hashBytes);
|
SerializeStructure(stream, hash);
|
||||||
|
|
||||||
translatedFuncsCount = GetInfosEntriesCount();
|
translatedFuncsCount = GetInfosEntriesCount();
|
||||||
|
|
||||||
|
|
|
@ -90,11 +90,11 @@ namespace ARMeilleure.Translation.PTC
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static void SerializeDictionary<TKey, TValue>(Stream stream, Dictionary<TKey, TValue> dictionary, Action<Stream, TValue> valueAction) where TKey : unmanaged
|
public static void SerializeDictionary<TKey, TValue>(Stream stream, Dictionary<TKey, TValue> dictionary, Action<Stream, TValue> valueAction) where TKey : unmanaged
|
||||||
{
|
{
|
||||||
SerializeStructure<int>(stream, ref Unsafe.AsRef(dictionary.Count));
|
SerializeStructure<int>(stream, dictionary.Count);
|
||||||
|
|
||||||
foreach ((TKey key, TValue value) in dictionary)
|
foreach ((TKey key, TValue value) in dictionary)
|
||||||
{
|
{
|
||||||
SerializeStructure<TKey>(stream, ref Unsafe.AsRef(key));
|
SerializeStructure<TKey>(stream, key);
|
||||||
valueAction(stream, value);
|
valueAction(stream, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -102,16 +102,16 @@ namespace ARMeilleure.Translation.PTC
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static void SerializeList<T>(Stream stream, List<T> list) where T : unmanaged
|
public static void SerializeList<T>(Stream stream, List<T> list) where T : unmanaged
|
||||||
{
|
{
|
||||||
SerializeStructure<int>(stream, ref Unsafe.AsRef(list.Count));
|
SerializeStructure<int>(stream, list.Count);
|
||||||
|
|
||||||
foreach (T item in list)
|
foreach (T item in list)
|
||||||
{
|
{
|
||||||
SerializeStructure<T>(stream, ref Unsafe.AsRef(item));
|
SerializeStructure<T>(stream, item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static void SerializeStructure<T>(Stream stream, ref T structure) where T : unmanaged
|
public static void SerializeStructure<T>(Stream stream, T structure) where T : unmanaged
|
||||||
{
|
{
|
||||||
Span<T> spanT = MemoryMarshal.CreateSpan(ref structure, 1);
|
Span<T> spanT = MemoryMarshal.CreateSpan(ref structure, 1);
|
||||||
stream.Write(MemoryMarshal.AsBytes(spanT));
|
stream.Write(MemoryMarshal.AsBytes(spanT));
|
||||||
|
|
|
@ -85,24 +85,24 @@ namespace ARMeilleure.Translation.PTC
|
||||||
{
|
{
|
||||||
int size = 0;
|
int size = 0;
|
||||||
|
|
||||||
size += GetSerializeSizeList<TableEntry<DirectHostAddress>>(ptcJumpTable._jumpTable);
|
size += GetSerializeSizeList(ptcJumpTable._jumpTable);
|
||||||
size += GetSerializeSizeList<TableEntry<IndirectHostAddress>>(ptcJumpTable._dynamicTable);
|
size += GetSerializeSizeList(ptcJumpTable._dynamicTable);
|
||||||
|
|
||||||
size += GetSerializeSizeList<ulong>(ptcJumpTable.Targets);
|
size += GetSerializeSizeList(ptcJumpTable.Targets);
|
||||||
size += GetSerializeSizeDictionary<ulong, List<int>>(ptcJumpTable.Dependants, (list) => GetSerializeSizeList<int>(list));
|
size += GetSerializeSizeDictionary(ptcJumpTable.Dependants, (list) => GetSerializeSizeList(list));
|
||||||
size += GetSerializeSizeDictionary<ulong, List<int>>(ptcJumpTable.Owners, (list) => GetSerializeSizeList<int>(list));
|
size += GetSerializeSizeDictionary(ptcJumpTable.Owners, (list) => GetSerializeSizeList(list));
|
||||||
|
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Serialize(Stream stream, PtcJumpTable ptcJumpTable)
|
public static void Serialize(Stream stream, PtcJumpTable ptcJumpTable)
|
||||||
{
|
{
|
||||||
SerializeList<TableEntry<DirectHostAddress>>(stream, ptcJumpTable._jumpTable);
|
SerializeList(stream, ptcJumpTable._jumpTable);
|
||||||
SerializeList<TableEntry<IndirectHostAddress>>(stream, ptcJumpTable._dynamicTable);
|
SerializeList(stream, ptcJumpTable._dynamicTable);
|
||||||
|
|
||||||
SerializeList<ulong>(stream, ptcJumpTable.Targets);
|
SerializeList(stream, ptcJumpTable.Targets);
|
||||||
SerializeDictionary<ulong, List<int>>(stream, ptcJumpTable.Dependants, (stream, list) => SerializeList<int>(stream, list));
|
SerializeDictionary(stream, ptcJumpTable.Dependants, (stream, list) => SerializeList(stream, list));
|
||||||
SerializeDictionary<ulong, List<int>>(stream, ptcJumpTable.Owners, (stream, list) => SerializeList<int>(stream, list));
|
SerializeDictionary(stream, ptcJumpTable.Owners, (stream, list) => SerializeList(stream, list));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Initialize(JumpTable jumpTable)
|
public void Initialize(JumpTable jumpTable)
|
||||||
|
|
|
@ -336,7 +336,7 @@ namespace ARMeilleure.Translation.PTC
|
||||||
|
|
||||||
private static void Serialize(Stream stream, Dictionary<ulong, FuncProfile> profiledFuncs)
|
private static void Serialize(Stream stream, Dictionary<ulong, FuncProfile> profiledFuncs)
|
||||||
{
|
{
|
||||||
SerializeDictionary<ulong, FuncProfile>(stream, profiledFuncs, (stream, structure) => SerializeStructure<FuncProfile>(stream, ref structure));
|
SerializeDictionary(stream, profiledFuncs, (stream, structure) => SerializeStructure(stream, structure));
|
||||||
}
|
}
|
||||||
|
|
||||||
private struct Header
|
private struct Header
|
||||||
|
|
Loading…
Reference in a new issue