aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChenj168 <62330325+Chenj168@users.noreply.github.com>2020-03-20 07:11:20 +0900
committerGitHub <noreply@github.com>2020-03-20 09:11:20 +1100
commit561d64e5bfd549c05b65c7bad87362bc03607363 (patch)
tree6f0aca92eb8697af903a1470ba0a76c368f0b7fd
parent8226997bc7334ef2c29a1dadee72591f6d6037b1 (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.cs8
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