aboutsummaryrefslogtreecommitdiff
path: root/ARMeilleure/Translation/PTC/PtcInfo.cs
diff options
context:
space:
mode:
authorFICTURE7 <FICTURE7@gmail.com>2021-09-14 03:23:37 +0400
committerGitHub <noreply@github.com>2021-09-14 01:23:37 +0200
commita9343c9364246d3288b4e7f20919ca1ad2e1fd3e (patch)
treeba8ada2c2f5d2b4b0c92fbc5258bc43ad4809913 /ARMeilleure/Translation/PTC/PtcInfo.cs
parentac4ec1a0151fd958d7ec58146169763b446836fe (diff)
Refactor `PtcInfo` (#2625)
* Refactor `PtcInfo` This change reduces the coupling of `PtcInfo` by moving relocation tracking to the backend. `RelocEntry`s remains as `RelocEntry`s through out the pipeline until it actually needs to be written to the PTC streams. Keeping this representation makes inspecting and manipulating relocations after compilations less painful. This is something I needed to do to patch relocations to 0 to diff dumps. Contributes to #1125. * Turn `Symbol` & `RelocInfo` into readonly structs * Add documentation to `CompiledFunction` * Remove `Compiler.Compile<T>` Remove `Compiler.Compile<T>` and replace it by `Map<T>` of the `CompiledFunction` returned.
Diffstat (limited to 'ARMeilleure/Translation/PTC/PtcInfo.cs')
-rw-r--r--ARMeilleure/Translation/PTC/PtcInfo.cs63
1 files changed, 0 insertions, 63 deletions
diff --git a/ARMeilleure/Translation/PTC/PtcInfo.cs b/ARMeilleure/Translation/PTC/PtcInfo.cs
deleted file mode 100644
index b28b2dc1..00000000
--- a/ARMeilleure/Translation/PTC/PtcInfo.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-using ARMeilleure.CodeGen.Unwinding;
-using System;
-using System.IO;
-
-namespace ARMeilleure.Translation.PTC
-{
- class PtcInfo : IDisposable
- {
- private readonly BinaryWriter _relocWriter;
- private readonly BinaryWriter _unwindInfoWriter;
-
- public byte[] Code { get; set; }
-
- public MemoryStream RelocStream { get; }
- public MemoryStream UnwindInfoStream { get; }
-
- public int RelocEntriesCount { get; private set; }
-
- public PtcInfo()
- {
- RelocStream = new MemoryStream();
- UnwindInfoStream = new MemoryStream();
-
- _relocWriter = new BinaryWriter(RelocStream, EncodingCache.UTF8NoBOM, true);
- _unwindInfoWriter = new BinaryWriter(UnwindInfoStream, EncodingCache.UTF8NoBOM, true);
-
- RelocEntriesCount = 0;
- }
-
- public void WriteRelocEntry(RelocEntry relocEntry)
- {
- _relocWriter.Write((int)relocEntry.Position);
- _relocWriter.Write((byte)relocEntry.Symbol.Type);
- _relocWriter.Write((ulong)relocEntry.Symbol.Value);
-
- RelocEntriesCount++;
- }
-
- public void WriteUnwindInfo(UnwindInfo unwindInfo)
- {
- _unwindInfoWriter.Write((int)unwindInfo.PushEntries.Length);
-
- foreach (UnwindPushEntry unwindPushEntry in unwindInfo.PushEntries)
- {
- _unwindInfoWriter.Write((int)unwindPushEntry.PseudoOp);
- _unwindInfoWriter.Write((int)unwindPushEntry.PrologOffset);
- _unwindInfoWriter.Write((int)unwindPushEntry.RegIndex);
- _unwindInfoWriter.Write((int)unwindPushEntry.StackOffsetOrAllocSize);
- }
-
- _unwindInfoWriter.Write((int)unwindInfo.PrologSize);
- }
-
- public void Dispose()
- {
- _relocWriter.Dispose();
- _unwindInfoWriter.Dispose();
-
- RelocStream.Dispose();
- UnwindInfoStream.Dispose();
- }
- }
-} \ No newline at end of file