diff --git a/src/backend/A64/devirtualize.h b/src/backend/A64/devirtualize.h index 7697ff8f..f98a4a57 100644 --- a/src/backend/A64/devirtualize.h +++ b/src/backend/A64/devirtualize.h @@ -42,28 +42,6 @@ ArgCallback DevirtualizeWindows(Common::mp::class_type_t* this_) return ArgCallback{Common::BitCast(mfp), reinterpret_cast(this_)}; } -template -ArgCallback DevirtualizeItanium(Common::mp::class_type_t* this_) { - struct MemberFunctionPointer { - /// For a non-virtual function, this is a simple function pointer. - /// For a virtual function, it is (1 + virtual table offset in bytes). - u64 ptr; - /// The required adjustment to `this`, prior to the call. - u64 adj; - } mfp_struct = Common::BitCast(mfp); - - static_assert(sizeof(MemberFunctionPointer) == 16); - static_assert(sizeof(MemberFunctionPointer) == sizeof(mfp)); - - u64 fn_ptr = mfp_struct.ptr; - u64 this_ptr = reinterpret_cast(this_) + mfp_struct.adj; - if (mfp_struct.ptr & 1) { - u64 vtable = Common::BitCastPointee(this_ptr); - fn_ptr = Common::BitCastPointee(vtable + fn_ptr - 1); - } - return ArgCallback{fn_ptr, this_ptr}; -} - template ArgCallback DevirtualizeAarch64(Common::mp::class_type_t* this_) { struct MemberFunctionPointer {