From 61634dd415fb71b3ae85871a0873d00195b0900c Mon Sep 17 00:00:00 2001 From: gdkchan Date: Wed, 16 Dec 2020 17:07:42 -0300 Subject: Clear JIT cache on exit (#1518) * Initial cache memory allocator implementation * Get rid of CallFlag * Perform cache cleanup on exit * Basic cache invalidation * Thats not how conditionals works in C# it seems * Set PTC version to PR number * Address PR feedback * Update InstEmitFlowHelper.cs * Flag clear on address is no longer needed * Do not include exit block in function size calculation * Dispose jump table * For future use * InternalVersion = 1519 (force retest). Co-authored-by: LDj3SNuD <35856442+LDj3SNuD@users.noreply.github.com> --- ARMeilleure/Translation/TranslatedFunction.cs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'ARMeilleure/Translation/TranslatedFunction.cs') diff --git a/ARMeilleure/Translation/TranslatedFunction.cs b/ARMeilleure/Translation/TranslatedFunction.cs index 36fae50a..54c050f6 100644 --- a/ARMeilleure/Translation/TranslatedFunction.cs +++ b/ARMeilleure/Translation/TranslatedFunction.cs @@ -4,23 +4,24 @@ using System.Threading; namespace ARMeilleure.Translation { - sealed class TranslatedFunction + class TranslatedFunction { private const int MinCallsForRejit = 100; private readonly GuestFunction _func; // Ensure that this delegate will not be garbage collected. - private int _callCount = 0; + private int _callCount; - public bool HighCq { get; } + public ulong GuestSize { get; } + public bool HighCq { get; } public IntPtr FuncPtr { get; } - public TranslatedFunction(GuestFunction func, bool highCq) + public TranslatedFunction(GuestFunction func, ulong guestSize, bool highCq) { _func = func; - - HighCq = highCq; - FuncPtr = Marshal.GetFunctionPointerForDelegate(func); + GuestSize = guestSize; + HighCq = highCq; + FuncPtr = Marshal.GetFunctionPointerForDelegate(func); } public ulong Execute(State.ExecutionContext context) -- cgit v1.2.3