diff options
author | FICTURE7 <FICTURE7@gmail.com> | 2021-04-19 01:43:53 +0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-18 23:43:53 +0200 |
commit | 89791ba68dba70999643c5d876e9329b385c6e8a (patch) | |
tree | 10d17c4b9a77590f516494267a6a632af95da171 /ARMeilleure/Instructions/NativeInterface.cs | |
parent | bb43219f1dfc2fc35e21bcccab4d96fba5e01f34 (diff) |
Add inlined on translation call counting (#2190)
* Add EntryTable<TEntry>
* Add on translation call counting
* Add Counter
* Add PPTC support
* Make Counter a generic & use a 32-bit counter instead
* Return false on overflow
* Set PPTC version
* Print more information about the rejit queue
* Make Counter<T> disposable
* Remove Block.TailCall since it is not used anymore
* Apply suggestions from code review
Address gdkchan's feedback
Co-authored-by: gdkchan <gab.dark.100@gmail.com>
* Fix more stale docs
* Remove rejit requests queue logging
* Make Counter<T> finalizable
Most certainly quite an odd use case.
* Make EntryTable<T>.TryAllocate set entry to default
* Re-trigger CI
* Dispose Counters before they hit the finalizer queue
* Re-trigger CI
Just for good measure...
* Make EntryTable<T> expandable
* EntryTable is now expandable instead of being a fixed slab.
* Remove EntryTable<T>.TryAllocate
* Remove Counter<T>.TryCreate
Address LDj3SNuD's feedback
* Apply suggestions from code review
Address LDj3SNuD's feedback
Co-authored-by: LDj3SNuD <35856442+LDj3SNuD@users.noreply.github.com>
* Remove useless return
* POH approach, but the sequel
* Revert "POH approach, but the sequel"
This reverts commit 5f5abaa24735726ff2db367dc74f98055d4f4cba.
The sequel got shelved
* Add extra documentation
Co-authored-by: gdkchan <gab.dark.100@gmail.com>
Co-authored-by: LDj3SNuD <35856442+LDj3SNuD@users.noreply.github.com>
Diffstat (limited to 'ARMeilleure/Instructions/NativeInterface.cs')
-rw-r--r-- | ARMeilleure/Instructions/NativeInterface.cs | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/ARMeilleure/Instructions/NativeInterface.cs b/ARMeilleure/Instructions/NativeInterface.cs index b8b7ff0e..fa17d334 100644 --- a/ARMeilleure/Instructions/NativeInterface.cs +++ b/ARMeilleure/Instructions/NativeInterface.cs @@ -220,6 +220,11 @@ namespace ARMeilleure.Instructions } #endregion + public static void EnqueueForRejit(ulong address) + { + Context.Translator.EnqueueForRejit(address, GetContext().ExecutionMode); + } + public static void SignalMemoryTracking(ulong address, ulong size, bool write) { GetMemoryManager().SignalMemoryTracking(address, size, write); @@ -232,24 +237,14 @@ namespace ARMeilleure.Instructions public static ulong GetFunctionAddress(ulong address) { - return GetFunctionAddressWithHint(address, true); - } - - public static ulong GetFunctionAddressWithoutRejit(ulong address) - { - return GetFunctionAddressWithHint(address, false); - } - - private static ulong GetFunctionAddressWithHint(ulong address, bool hintRejit) - { - TranslatedFunction function = Context.Translator.GetOrTranslate(address, GetContext().ExecutionMode, hintRejit); + TranslatedFunction function = Context.Translator.GetOrTranslate(address, GetContext().ExecutionMode); return (ulong)function.FuncPtr.ToInt64(); } public static ulong GetIndirectFunctionAddress(ulong address, ulong entryAddress) { - TranslatedFunction function = Context.Translator.GetOrTranslate(address, GetContext().ExecutionMode, hintRejit: true); + TranslatedFunction function = Context.Translator.GetOrTranslate(address, GetContext().ExecutionMode); ulong ptr = (ulong)function.FuncPtr.ToInt64(); |