diff options
| author | Chenj168 <62330325+Chenj168@users.noreply.github.com> | 2020-03-20 07:11:20 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-03-20 09:11:20 +1100 |
| commit | 561d64e5bfd549c05b65c7bad87362bc03607363 (patch) | |
| tree | 6f0aca92eb8697af903a1470ba0a76c368f0b7fd | |
| parent | 8226997bc7334ef2c29a1dadee72591f6d6037b1 (diff) | |
Modify TranslatedFunction.GetPointer () to optimize performance (#995)
* add local var to reduce calling Marshal.GetFunctionPointerForDelegate
* modify code style
| -rw-r--r-- | ARMeilleure/Translation/TranslatedFunction.cs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/ARMeilleure/Translation/TranslatedFunction.cs b/ARMeilleure/Translation/TranslatedFunction.cs index af01aaab..f1dc6dee 100644 --- a/ARMeilleure/Translation/TranslatedFunction.cs +++ b/ARMeilleure/Translation/TranslatedFunction.cs @@ -9,6 +9,7 @@ namespace ARMeilleure.Translation private const int MinCallsForRejit = 100; private GuestFunction _func; + private IntPtr _funcPtr; private bool _rejit; private int _callCount; @@ -33,7 +34,12 @@ namespace ARMeilleure.Translation public IntPtr GetPointer() { - return Marshal.GetFunctionPointerForDelegate(_func); + if (_funcPtr == IntPtr.Zero) + { + _funcPtr = Marshal.GetFunctionPointerForDelegate(_func); + } + + return _funcPtr; } } }
\ No newline at end of file |
