summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/util/mfpresolve.h
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2025-01-15 00:48:19 +1100
committer Vas Crabb <vas@vastheman.com>2025-01-15 00:48:19 +1100
commit2ffd6a09aff19a677c64d0ad0feec87901a7209e (patch)
treef1ea921a03e41a0fa60b7c7c15aed39ba88a07a6 /src/lib/util/mfpresolve.h
parent96736e433eec420fb544a6983eaa2dd8098ac82b (diff)
-cpu/drcbex64.cpp: Be nicer to the return address predictor.
-cpu/drcbex86.cpp: Give hints to use short displacements for jumps to local unbound labels. -util/mfpresolve.h: Use references for some things that must not be null pointers.
Diffstat (limited to 'src/lib/util/mfpresolve.h')
-rw-r--r--src/lib/util/mfpresolve.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/lib/util/mfpresolve.h b/src/lib/util/mfpresolve.h
index eee3711ebea..7661623572a 100644
--- a/src/lib/util/mfpresolve.h
+++ b/src/lib/util/mfpresolve.h
@@ -42,18 +42,18 @@ inline T bypass_member_function_thunks(T entrypoint, U const *object) noexcept
template <typename T, typename Ret, typename... Params>
-inline std::pair<std::uintptr_t, std::uintptr_t> resolve_member_function(Ret (T::*function)(Params...), T *object) noexcept
+inline std::pair<std::uintptr_t, std::uintptr_t> resolve_member_function(Ret (T::*function)(Params...), T &object) noexcept
{
if (MAME_ABI_CXX_TYPE == MAME_ABI_CXX_ITANIUM)
{
struct { std::uintptr_t ptr; std::ptrdiff_t adj; } equiv;
assert(sizeof(function) == sizeof(equiv));
*reinterpret_cast<decltype(function) *>(&equiv) = function;
- return detail::resolve_member_function_itanium(equiv.ptr, equiv.adj, object);
+ return detail::resolve_member_function_itanium(equiv.ptr, equiv.adj, &object);
}
else if (MAME_ABI_CXX_TYPE == MAME_ABI_CXX_MSVC)
{
- return detail::resolve_member_function_msvc(&function, sizeof(function), object);
+ return detail::resolve_member_function_msvc(&function, sizeof(function), &object);
}
else
{
@@ -63,18 +63,18 @@ inline std::pair<std::uintptr_t, std::uintptr_t> resolve_member_function(Ret (T:
template <typename T, typename Ret, typename... Params>
-inline std::pair<std::uintptr_t, std::uintptr_t> resolve_member_function(Ret (T::*function)(Params...) const, T const *object) noexcept
+inline std::pair<std::uintptr_t, std::uintptr_t> resolve_member_function(Ret (T::*function)(Params...) const, T const &object) noexcept
{
if (MAME_ABI_CXX_TYPE == MAME_ABI_CXX_ITANIUM)
{
struct { std::uintptr_t ptr; std::ptrdiff_t adj; } equiv;
assert(sizeof(function) == sizeof(equiv));
*reinterpret_cast<decltype(function) *>(&equiv) = function;
- return detail::resolve_member_function_itanium(equiv.ptr, equiv.adj, object);
+ return detail::resolve_member_function_itanium(equiv.ptr, equiv.adj, &object);
}
else if (MAME_ABI_CXX_TYPE == MAME_ABI_CXX_MSVC)
{
- return detail::resolve_member_function_msvc(&function, sizeof(function), object);
+ return detail::resolve_member_function_msvc(&function, sizeof(function), &object);
}
else
{