diff options
author | 2025-01-15 00:48:19 +1100 | |
---|---|---|
committer | 2025-01-15 00:48:19 +1100 | |
commit | 2ffd6a09aff19a677c64d0ad0feec87901a7209e (patch) | |
tree | f1ea921a03e41a0fa60b7c7c15aed39ba88a07a6 /src/lib/util/mfpresolve.h | |
parent | 96736e433eec420fb544a6983eaa2dd8098ac82b (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.h | 12 |
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 { |