diff --git a/Utilities/File.cpp b/Utilities/File.cpp index ec470f195d..0b96953182 100644 --- a/Utilities/File.cpp +++ b/Utilities/File.cpp @@ -172,7 +172,7 @@ std::shared_ptr fs::get_virtual_device(const std::string& path) std::shared_ptr fs::set_virtual_device(const std::string& name, const std::shared_ptr& device) { - EXPECTS(name.size() > 2 && name[0] == '/' && name[1] == '/' && name.find('/', 2) == -1); + verify(HERE), name.size() > 2, name[0] == '/', name[1] == '/', name.find('/', 2) == -1; return get_device_manager().set_device(name, device); } diff --git a/Utilities/JIT.cpp b/Utilities/JIT.cpp index 733a4c5002..f7858993ef 100644 --- a/Utilities/JIT.cpp +++ b/Utilities/JIT.cpp @@ -235,7 +235,7 @@ static EventListener s_listener; jit_compiler::jit_compiler(std::unique_ptr&& _module, std::unordered_map&& table) { - EXPECTS(s_memory); + verify(HERE), s_memory; std::string result; diff --git a/Utilities/types.h b/Utilities/types.h index 015f86aa4c..2a98a0ec15 100644 --- a/Utilities/types.h +++ b/Utilities/types.h @@ -62,8 +62,8 @@ #define WRAP_EXPR(...) [&] { return __VA_ARGS__; } // Ensure that the expression evaluates to true. Obsolete. -#define EXPECTS(...) do { if (!(__VA_ARGS__)) fmt::raw_error("Precondition failed: " #__VA_ARGS__ HERE); } while (0) -#define ENSURES(...) do { if (!(__VA_ARGS__)) fmt::raw_error("Postcondition failed: " #__VA_ARGS__ HERE); } while (0) +//#define EXPECTS(...) do { if (!(__VA_ARGS__)) fmt::raw_error("Precondition failed: " #__VA_ARGS__ HERE); } while (0) +//#define ENSURES(...) do { if (!(__VA_ARGS__)) fmt::raw_error("Postcondition failed: " #__VA_ARGS__ HERE); } while (0) #define DECLARE(...) decltype(__VA_ARGS__) __VA_ARGS__ diff --git a/rpcs3/Emu/Cell/Modules/cellGcmSys.cpp b/rpcs3/Emu/Cell/Modules/cellGcmSys.cpp index 96232fefab..6a8c3ad8bd 100644 --- a/rpcs3/Emu/Cell/Modules/cellGcmSys.cpp +++ b/rpcs3/Emu/Cell/Modules/cellGcmSys.cpp @@ -1263,7 +1263,7 @@ static std::pair getNextCommandBufferBeginEnd(u32 current) static u32 getOffsetFromAddress(u32 address) { const u32 upper = offsetTable.ioAddress[address >> 20]; // 12 bits - EXPECTS(upper != 0xFFFF); + verify(HERE), (upper != 0xFFFF); return (upper << 20) | (address & 0xFFFFF); } diff --git a/rpcs3/Emu/Cell/Modules/cellPamf.cpp b/rpcs3/Emu/Cell/Modules/cellPamf.cpp index a4a05d92f7..22784651a8 100644 --- a/rpcs3/Emu/Cell/Modules/cellPamf.cpp +++ b/rpcs3/Emu/Cell/Modules/cellPamf.cpp @@ -17,7 +17,7 @@ logs::channel cellPamf("cellPamf", logs::level::notice); s32 pamfStreamTypeToEsFilterId(u8 type, u8 ch, CellCodecEsFilterId& pEsFilterId) { // convert type and ch to EsFilterId - EXPECTS(ch < 16); + verify(HERE), (ch < 16); pEsFilterId.supplementalInfo1 = type == CELL_PAMF_STREAM_TYPE_AVC; pEsFilterId.supplementalInfo2 = 0; @@ -117,7 +117,7 @@ s32 pamfStreamTypeToEsFilterId(u8 type, u8 ch, CellCodecEsFilterId& pEsFilterId) u8 pamfGetStreamType(vm::ptr pSelf, u32 stream) { // TODO: get stream type correctly - EXPECTS(stream < (u32)pSelf->pAddr->stream_count); + verify(HERE), (stream < (u32)pSelf->pAddr->stream_count); auto& header = pSelf->pAddr->stream_headers[stream]; switch (header.type) @@ -138,7 +138,7 @@ u8 pamfGetStreamType(vm::ptr pSelf, u32 stream) u8 pamfGetStreamChannel(vm::ptr pSelf, u32 stream) { // TODO: get stream channel correctly - EXPECTS(stream < (u32)pSelf->pAddr->stream_count); + verify(HERE), (stream < (u32)pSelf->pAddr->stream_count); auto& header = pSelf->pAddr->stream_headers[stream]; switch (header.type) @@ -146,29 +146,29 @@ u8 pamfGetStreamChannel(vm::ptr pSelf, u32 stream) case 0x1b: // AVC case 0x02: // M2V { - EXPECTS((header.fid_major & 0xf0) == 0xe0 && header.fid_minor == 0); + verify(HERE), (header.fid_major & 0xf0) == 0xe0, header.fid_minor == 0; return header.fid_major % 16; } case 0xdc: // ATRAC3PLUS { - EXPECTS(header.fid_major == 0xbd && (header.fid_minor & 0xf0) == 0); + verify(HERE), header.fid_major == 0xbd, (header.fid_minor & 0xf0) == 0; return header.fid_minor % 16; } case 0x80: // LPCM { - EXPECTS(header.fid_major == 0xbd && (header.fid_minor & 0xf0) == 0x40); + verify(HERE), header.fid_major == 0xbd, (header.fid_minor & 0xf0) == 0x40; return header.fid_minor % 16; } case 0x81: // AC3 { - EXPECTS(header.fid_major == 0xbd && (header.fid_minor & 0xf0) == 0x30); + verify(HERE), header.fid_major == 0xbd, (header.fid_minor & 0xf0) == 0x30; return header.fid_minor % 16; } case 0xdd: { - EXPECTS(header.fid_major == 0xbd && (header.fid_minor & 0xf0) == 0x20); + verify(HERE), header.fid_major == 0xbd, (header.fid_minor & 0xf0) == 0x20; return header.fid_minor % 16; } } @@ -454,7 +454,7 @@ s32 cellPamfReaderGetEsFilterId(vm::ptr pSelf, vm::ptrstream < (u32)pSelf->pAddr->stream_count); + verify(HERE), (u32)pSelf->stream < pSelf->pAddr->stream_count; auto& header = pSelf->pAddr->stream_headers[pSelf->stream]; pEsFilterId->filterIdMajor = header.fid_major; pEsFilterId->filterIdMinor = header.fid_minor; @@ -467,7 +467,7 @@ s32 cellPamfReaderGetStreamInfo(vm::ptr pSelf, vm::ptr pIn { cellPamf.warning("cellPamfReaderGetStreamInfo(pSelf=*0x%x, pInfo=*0x%x, size=%d)", pSelf, pInfo, size); - EXPECTS((u32)pSelf->stream < (u32)pSelf->pAddr->stream_count); + verify(HERE), (u32)pSelf->stream < pSelf->pAddr->stream_count; auto& header = pSelf->pAddr->stream_headers[pSelf->stream]; const u8 type = pamfGetStreamType(pSelf, pSelf->stream); const u8 ch = pamfGetStreamChannel(pSelf, pSelf->stream); diff --git a/rpcs3/Emu/Cell/Modules/cellPamf.h b/rpcs3/Emu/Cell/Modules/cellPamf.h index 9135c73424..674b229710 100644 --- a/rpcs3/Emu/Cell/Modules/cellPamf.h +++ b/rpcs3/Emu/Cell/Modules/cellPamf.h @@ -462,8 +462,7 @@ public: while (u32 res = m_sync.atomic_op([&pos](squeue_sync_var_t& sync) -> u32 { - EXPECTS(sync.count <= sq_size); - EXPECTS(sync.position < sq_size); + verify(HERE), sync.count <= sq_size, sync.position < sq_size; if (sync.push_lock) { @@ -492,9 +491,7 @@ public: m_sync.atomic_op([](squeue_sync_var_t& sync) { - EXPECTS(sync.count <= sq_size); - EXPECTS(sync.position < sq_size); - EXPECTS(sync.push_lock); + verify(HERE), sync.count <= sq_size, sync.position < sq_size, !!sync.push_lock; sync.push_lock = 0; sync.count++; }); @@ -525,8 +522,7 @@ public: while (u32 res = m_sync.atomic_op([&pos](squeue_sync_var_t& sync) -> u32 { - EXPECTS(sync.count <= sq_size); - EXPECTS(sync.position < sq_size); + verify(HERE), sync.count <= sq_size, sync.position < sq_size; if (!sync.count) { @@ -555,9 +551,7 @@ public: m_sync.atomic_op([](squeue_sync_var_t& sync) { - EXPECTS(sync.count <= sq_size); - EXPECTS(sync.position < sq_size); - EXPECTS(sync.pop_lock); + verify(HERE), sync.count <= sq_size, sync.position < sq_size, !!sync.pop_lock; sync.pop_lock = 0; sync.position++; sync.count--; @@ -589,13 +583,12 @@ public: bool peek(T& data, u32 start_pos, const std::function& test_exit) { - EXPECTS(start_pos < sq_size); + verify(HERE), start_pos < sq_size; u32 pos = 0; while (u32 res = m_sync.atomic_op([&pos, start_pos](squeue_sync_var_t& sync) -> u32 { - EXPECTS(sync.count <= sq_size); - EXPECTS(sync.position < sq_size); + verify(HERE), sync.count <= sq_size, sync.position < sq_size; if (sync.count <= start_pos) { @@ -624,9 +617,7 @@ public: m_sync.atomic_op([](squeue_sync_var_t& sync) { - EXPECTS(sync.count <= sq_size); - EXPECTS(sync.position < sq_size); - EXPECTS(sync.pop_lock); + verify(HERE), sync.count <= sq_size, sync.position < sq_size, !!sync.pop_lock; sync.pop_lock = 0; }); @@ -665,7 +656,7 @@ public: public: T& operator [] (u32 index) { - EXPECTS(index < m_count); + verify(HERE), index < m_count; index += m_pos; index = index < sq_size ? index : index - sq_size; return m_data[index]; @@ -678,8 +669,7 @@ public: while (m_sync.atomic_op([&pos, &count](squeue_sync_var_t& sync) -> u32 { - EXPECTS(sync.count <= sq_size); - EXPECTS(sync.position < sq_size); + verify(HERE), sync.count <= sq_size, sync.position < sq_size; if (sync.pop_lock || sync.push_lock) { @@ -701,9 +691,7 @@ public: m_sync.atomic_op([](squeue_sync_var_t& sync) { - EXPECTS(sync.count <= sq_size); - EXPECTS(sync.position < sq_size); - EXPECTS(sync.pop_lock && sync.push_lock); + verify(HERE), sync.count <= sq_size, sync.position < sq_size, !!sync.pop_lock, !!sync.push_lock; sync.pop_lock = 0; sync.push_lock = 0; }); @@ -716,8 +704,7 @@ public: { while (m_sync.atomic_op([](squeue_sync_var_t& sync) -> u32 { - EXPECTS(sync.count <= sq_size); - EXPECTS(sync.position < sq_size); + verify(HERE), sync.count <= sq_size, sync.position < sq_size; if (sync.pop_lock || sync.push_lock) { diff --git a/rpcs3/Emu/Cell/PPUInterpreter.cpp b/rpcs3/Emu/Cell/PPUInterpreter.cpp index 6110873dff..d5f7671dfc 100644 --- a/rpcs3/Emu/Cell/PPUInterpreter.cpp +++ b/rpcs3/Emu/Cell/PPUInterpreter.cpp @@ -1319,7 +1319,7 @@ bool ppu_interpreter::VSPLTB(ppu_thread& ppu, ppu_opcode_t op) bool ppu_interpreter::VSPLTH(ppu_thread& ppu, ppu_opcode_t op) { auto& d = ppu.vr[op.vd]; - EXPECTS(op.vuimm < 8); + verify(HERE), (op.vuimm < 8); u16 hword = ppu.vr[op.vb]._u16[7 - op.vuimm]; @@ -1369,7 +1369,7 @@ bool ppu_interpreter::VSPLTISW(ppu_thread& ppu, ppu_opcode_t op) bool ppu_interpreter::VSPLTW(ppu_thread& ppu, ppu_opcode_t op) { auto& d = ppu.vr[op.vd]; - EXPECTS(op.vuimm < 4); + verify(HERE), (op.vuimm < 4); u32 word = ppu.vr[op.vb]._u32[3 - op.vuimm]; diff --git a/rpcs3/Emu/Cell/PPUTranslator.cpp b/rpcs3/Emu/Cell/PPUTranslator.cpp index 459ed31626..5f309092e2 100644 --- a/rpcs3/Emu/Cell/PPUTranslator.cpp +++ b/rpcs3/Emu/Cell/PPUTranslator.cpp @@ -282,7 +282,7 @@ Function* PPUTranslator::TranslateToIR(const ppu_function& info, be_t* bin, Type* PPUTranslator::ScaleType(Type* type, s32 pow2) { - EXPECTS(type->getScalarType()->isIntegerTy()); + verify(HERE), (type->getScalarType()->isIntegerTy()); const auto new_type = m_ir->getIntNTy(type->getScalarSizeInBits() * std::pow(2, pow2)); return type->isVectorTy() ? VectorType::get(new_type, type->getVectorNumElements()) : cast(new_type); diff --git a/rpcs3/Emu/Cell/lv2/sys_event.cpp b/rpcs3/Emu/Cell/lv2/sys_event.cpp index 234863480d..f847681685 100644 --- a/rpcs3/Emu/Cell/lv2/sys_event.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_event.cpp @@ -50,7 +50,7 @@ std::shared_ptr lv2_event_queue_t::find(u64 ipc_key) void lv2_event_queue_t::push(lv2_lock_t, u64 source, u64 data1, u64 data2, u64 data3) { - EXPECTS(m_sq.empty() || m_events.empty()); + verify(HERE), m_sq.empty() || m_events.empty(); // save event if no waiters if (m_sq.empty()) @@ -90,7 +90,7 @@ void lv2_event_queue_t::push(lv2_lock_t, u64 source, u64 data1, u64 data2, u64 d lv2_event_queue_t::event_type lv2_event_queue_t::pop(lv2_lock_t) { - EXPECTS(m_events.size()); + verify(HERE), m_events.size(); auto result = m_events.front(); m_events.pop_front(); return result; diff --git a/rpcs3/Emu/Cell/lv2/sys_sync.h b/rpcs3/Emu/Cell/lv2/sys_sync.h index dbe76cf817..efa12f4bdf 100644 --- a/rpcs3/Emu/Cell/lv2/sys_sync.h +++ b/rpcs3/Emu/Cell/lv2/sys_sync.h @@ -57,8 +57,7 @@ struct lv2_lock_t lv2_lock_t(type& lv2_lock) : ref(lv2_lock) { - EXPECTS(ref.owns_lock()); - EXPECTS(ref.mutex() == &mutex); + verify(HERE), ref.owns_lock(), ref.mutex() == &mutex; } operator type&() const diff --git a/rpcs3/Emu/Memory/Memory.cpp b/rpcs3/Emu/Memory/Memory.cpp index 975beb34e7..8b1015ebde 100644 --- a/rpcs3/Emu/Memory/Memory.cpp +++ b/rpcs3/Emu/Memory/Memory.cpp @@ -18,7 +18,7 @@ bool VirtualMemoryBlock::IsInMyRange(const u32 addr, const u32 size) u32 VirtualMemoryBlock::Map(u32 realaddr, u32 size) { - EXPECTS(size); + verify(HERE), (size); for (u32 addr = m_range_start; addr <= m_range_start + m_range_size - 1 - GetReservedAmount() - size;) { @@ -48,7 +48,7 @@ u32 VirtualMemoryBlock::Map(u32 realaddr, u32 size) bool VirtualMemoryBlock::Map(u32 realaddr, u32 size, u32 addr) { - EXPECTS(size); + verify(HERE), (size); if (!IsInMyRange(addr, size)) { diff --git a/rpcs3/Emu/Memory/wait_engine.cpp b/rpcs3/Emu/Memory/wait_engine.cpp index 9c616ec2f4..a16ed49bf5 100644 --- a/rpcs3/Emu/Memory/wait_engine.cpp +++ b/rpcs3/Emu/Memory/wait_engine.cpp @@ -16,7 +16,7 @@ namespace vm void waiter_base::initialize(u32 addr, u32 size) { - EXPECTS(addr && (size & (~size + 1)) == size && (addr & (size - 1)) == 0); + verify(HERE), addr, (size & (~size + 1)) == size, (addr & (size - 1)) == 0; this->addr = addr; this->mask = ~(size - 1); diff --git a/rpcs3/Emu/PSP2/ARMv7DisAsm.cpp b/rpcs3/Emu/PSP2/ARMv7DisAsm.cpp index 178fcb3ca2..b881d8b36b 100644 --- a/rpcs3/Emu/PSP2/ARMv7DisAsm.cpp +++ b/rpcs3/Emu/PSP2/ARMv7DisAsm.cpp @@ -99,8 +99,7 @@ static const char* fmt_reg(u32 reg) static std::string fmt_shift(u32 type, u32 amount) { - EXPECTS(type != arm_code::SRType_RRX || amount == 1); - EXPECTS(amount <= 32); + verify(HERE), type != arm_code::SRType_RRX || amount == 1, amount <= 32; if (amount) { diff --git a/rpcs3/Emu/PSP2/ARMv7Interpreter.h b/rpcs3/Emu/PSP2/ARMv7Interpreter.h index fd83ef267d..50ce71d636 100644 --- a/rpcs3/Emu/PSP2/ARMv7Interpreter.h +++ b/rpcs3/Emu/PSP2/ARMv7Interpreter.h @@ -48,46 +48,46 @@ struct arm_interpreter static u32 LSL_C(u32 x, s32 shift, bool& carry_out) { - EXPECTS(shift > 0); + verify(HERE), (shift > 0); carry_out = shift <= 32 ? (x & (1 << (32 - shift))) != 0 : false; return shift < 32 ? x << shift : 0; } static u32 LSL_(u32 x, s32 shift) { - EXPECTS(shift >= 0); + verify(HERE), (shift >= 0); return shift < 32 ? x << shift : 0; } static u32 LSR_C(u32 x, s32 shift, bool& carry_out) { - EXPECTS(shift > 0); + verify(HERE), (shift > 0); carry_out = shift <= 32 ? (x & (1 << (shift - 1))) != 0 : false; return shift < 32 ? x >> shift : 0; } static u32 LSR_(u32 x, s32 shift) { - EXPECTS(shift >= 0); + verify(HERE), (shift >= 0); return shift < 32 ? x >> shift : 0; } static s32 ASR_C(s32 x, s32 shift, bool& carry_out) { - EXPECTS(shift > 0); + verify(HERE), (shift > 0); carry_out = shift <= 32 ? (x & (1 << (shift - 1))) != 0 : x < 0; return shift < 32 ? x >> shift : x >> 31; } static s32 ASR_(s32 x, s32 shift) { - EXPECTS(shift >= 0); + verify(HERE), (shift >= 0); return shift < 32 ? x >> shift : x >> 31; } static u32 ROR_C(u32 x, s32 shift, bool& carry_out) { - EXPECTS(shift); + verify(HERE), (shift); const u32 result = x >> shift | x << (32 - shift); carry_out = (result >> 31) != 0; return result; @@ -111,7 +111,7 @@ struct arm_interpreter static u32 Shift_C(u32 value, u32 type, s32 amount, bool carry_in, bool& carry_out) { - EXPECTS(type != arm_code::SRType_RRX || amount == 1); + verify(HERE), (type != arm_code::SRType_RRX || amount == 1); if (amount) { diff --git a/rpcs3/Emu/PSP2/ARMv7Thread.h b/rpcs3/Emu/PSP2/ARMv7Thread.h index ad251572d5..d6ba10e7c8 100644 --- a/rpcs3/Emu/PSP2/ARMv7Thread.h +++ b/rpcs3/Emu/PSP2/ARMv7Thread.h @@ -157,7 +157,7 @@ public: void write_gpr(u32 n, u32 value, u32 size) { - EXPECTS(n < 16); + verify(HERE), n <= 15; if (n < 15) { @@ -171,7 +171,7 @@ public: u32 read_gpr(u32 n) { - EXPECTS(n < 16); + verify(HERE), n <= 15; if (n < 15) { diff --git a/rpcs3/Emu/RSX/CgBinaryFragmentProgram.cpp b/rpcs3/Emu/RSX/CgBinaryFragmentProgram.cpp index 4973a478c1..92ebdf4fc0 100644 --- a/rpcs3/Emu/RSX/CgBinaryFragmentProgram.cpp +++ b/rpcs3/Emu/RSX/CgBinaryFragmentProgram.cpp @@ -8,7 +8,7 @@ void CgBinaryDisasm::AddCodeAsm(const std::string& code) { - EXPECTS(m_opcode < 70); + verify(HERE), (m_opcode < 70); std::string op_name = ""; if (dst.dest_reg == 63) @@ -225,7 +225,7 @@ void CgBinaryDisasm::TaskFP() { m_size = 0; u32* data = (u32*)&m_buffer[m_offset]; - EXPECTS((m_buffer_size - m_offset) % sizeof(u32) == 0); + verify(HERE), ((m_buffer_size - m_offset) % sizeof(u32) == 0); for (u32 i = 0; i < (m_buffer_size - m_offset) / sizeof(u32); i++) { data[i] = se_storage::swap(data[i]); // WTF, cannot use be_t<> there? diff --git a/rpcs3/Emu/RSX/CgBinaryVertexProgram.cpp b/rpcs3/Emu/RSX/CgBinaryVertexProgram.cpp index a6f03ffffa..9a1e5a4a00 100644 --- a/rpcs3/Emu/RSX/CgBinaryVertexProgram.cpp +++ b/rpcs3/Emu/RSX/CgBinaryVertexProgram.cpp @@ -6,13 +6,13 @@ void CgBinaryDisasm::AddScaCodeDisasm(const std::string& code) { - EXPECTS(m_sca_opcode < 21); + verify(HERE), (m_sca_opcode < 21); m_arb_shader += rsx_vp_sca_op_names[m_sca_opcode] + code + " "; } void CgBinaryDisasm::AddVecCodeDisasm(const std::string& code) { - EXPECTS(m_vec_opcode < 26); + verify(HERE), (m_vec_opcode < 26); m_arb_shader += rsx_vp_vec_op_names[m_vec_opcode] + code + " "; } diff --git a/rpcs3/Emu/RSX/Common/BufferUtils.cpp b/rpcs3/Emu/RSX/Common/BufferUtils.cpp index fcfc976178..1e38b72f7a 100644 --- a/rpcs3/Emu/RSX/Common/BufferUtils.cpp +++ b/rpcs3/Emu/RSX/Common/BufferUtils.cpp @@ -48,7 +48,7 @@ namespace void write_vertex_array_data_to_buffer(gsl::span raw_dst_span, const gsl::byte *src_ptr, u32 first, u32 count, rsx::vertex_base_type type, u32 vector_element_count, u32 attribute_src_stride, u8 dst_stride) { - EXPECTS(vector_element_count > 0); + verify(HERE), (vector_element_count > 0); switch (type) { @@ -98,7 +98,7 @@ std::tuple upload_untouched(gsl::span> src, gsl::span T min_index = -1; T max_index = 0; - EXPECTS(dst.size_bytes() >= src.size_bytes()); + verify(HERE), (dst.size_bytes() >= src.size_bytes()); size_t dst_idx = 0; for (T index : src) @@ -124,7 +124,7 @@ std::tuple expand_indexed_triangle_fan(gsl::span> src, gs T min_index = -1; T max_index = 0; - EXPECTS(dst.size() >= 3 * (src.size() - 2)); + verify(HERE), (dst.size() >= 3 * (src.size() - 2)); const T index0 = src[0]; if (!is_primitive_restart_enabled || index0 != -1) // Cut @@ -174,7 +174,7 @@ std::tuple expand_indexed_quads(gsl::span> src, gsl::span T min_index = -1; T max_index = 0; - EXPECTS(4 * dst.size_bytes() >= 6 * src.size_bytes()); + verify(HERE), (4 * dst.size_bytes() >= 6 * src.size_bytes()); size_t dst_idx = 0; while (!src.empty()) diff --git a/rpcs3/Emu/RSX/Common/ProgramStateCache.h b/rpcs3/Emu/RSX/Common/ProgramStateCache.h index bdc70f33b9..1626abdaf3 100644 --- a/rpcs3/Emu/RSX/Common/ProgramStateCache.h +++ b/rpcs3/Emu/RSX/Common/ProgramStateCache.h @@ -227,7 +227,7 @@ public: 0x6, 0x7, 0x4, 0x5, 0x2, 0x3, 0x0, 0x1); - EXPECTS(dst_buffer.size_bytes() >= ::narrow(I->second.FragmentConstantOffsetCache.size()) * 16); + verify(HERE), (dst_buffer.size_bytes() >= ::narrow(I->second.FragmentConstantOffsetCache.size()) * 16); size_t offset = 0; for (size_t offset_in_fragment_program : I->second.FragmentConstantOffsetCache) diff --git a/rpcs3/Emu/RSX/Common/ShaderParam.h b/rpcs3/Emu/RSX/Common/ShaderParam.h index 4060a25bee..6ae251efb0 100644 --- a/rpcs3/Emu/RSX/Common/ShaderParam.h +++ b/rpcs3/Emu/RSX/Common/ShaderParam.h @@ -157,7 +157,7 @@ public: { auto var_blocks = fmt::split(var, { "." }); - EXPECTS(var_blocks.size() != 0); + verify(HERE), (var_blocks.size() != 0); name = var_blocks[0]; diff --git a/rpcs3/Emu/RSX/Common/TextureUtils.cpp b/rpcs3/Emu/RSX/Common/TextureUtils.cpp index 738968864b..20f1187629 100644 --- a/rpcs3/Emu/RSX/Common/TextureUtils.cpp +++ b/rpcs3/Emu/RSX/Common/TextureUtils.cpp @@ -21,7 +21,7 @@ namespace constexpr void copy(gsl::span dst, gsl::span src) { static_assert(std::is_convertible::value, "Cannot convert source and destination span type."); - EXPECTS(dst.size() == src.size()); + verify(HERE), (dst.size() == src.size()); std::copy(src.begin(), src.end(), dst.begin()); } diff --git a/rpcs3/Emu/RSX/D3D12/D3D12Buffer.cpp b/rpcs3/Emu/RSX/D3D12/D3D12Buffer.cpp index ed685c11eb..e560001945 100644 --- a/rpcs3/Emu/RSX/D3D12/D3D12Buffer.cpp +++ b/rpcs3/Emu/RSX/D3D12/D3D12Buffer.cpp @@ -91,7 +91,7 @@ std::vector D3D12GSRender::upload_vertex_attrib u32 vertex_count = get_vertex_count(vertex_ranges); size_t offset_in_vertex_buffers_buffer = 0; u32 input_mask = rsx::method_registers.vertex_attrib_input_mask(); - EXPECTS(rsx::method_registers.vertex_data_base_index() == 0); + verify(HERE), rsx::method_registers.vertex_data_base_index() == 0; for (int index = 0; index < rsx::limits::vertex_count; ++index) { @@ -364,7 +364,7 @@ std::tuple> D3D12GSRe return std::make_tuple(true, index_count, upload_vertex_attributes(rsx::method_registers.current_draw_clause.first_count_commands, command_list)); } - EXPECTS(rsx::method_registers.current_draw_clause.command == rsx::draw_command::indexed); + verify(HERE), rsx::method_registers.current_draw_clause.command == rsx::draw_command::indexed; // Index count size_t index_count = get_index_count(rsx::method_registers.current_draw_clause.primitive, ::narrow(get_vertex_count(rsx::method_registers.current_draw_clause.first_count_commands))); diff --git a/rpcs3/Emu/RSX/GL/gl_helpers.h b/rpcs3/Emu/RSX/GL/gl_helpers.h index 5fa8810a3b..a3d22aa096 100644 --- a/rpcs3/Emu/RSX/GL/gl_helpers.h +++ b/rpcs3/Emu/RSX/GL/gl_helpers.h @@ -653,14 +653,14 @@ namespace gl reserve_and_map((size > 4096) ? size : 4096); } - EXPECTS(m_mapped_bytes_available >= size); + verify(HERE), m_mapped_bytes_available >= size; void *ptr = (char*)m_mapped_base + m_mapped_reserve_offset; u32 offset = m_mapped_reserve_offset + m_mapped_block_offset; m_mapped_reserve_offset += size; m_mapped_bytes_available -= size; - EXPECTS((offset & (alignment - 1)) == 0); + verify(HERE), (offset & (alignment - 1)) == 0; return std::make_pair(ptr, offset); } diff --git a/rpcs3/Emu/RSX/GL/vertex_buffer.cpp b/rpcs3/Emu/RSX/GL/vertex_buffer.cpp index 79807cc3af..ccaaffcae7 100644 --- a/rpcs3/Emu/RSX/GL/vertex_buffer.cpp +++ b/rpcs3/Emu/RSX/GL/vertex_buffer.cpp @@ -131,7 +131,7 @@ namespace std::tuple get_index_array_for_emulated_non_indexed_draw(const std::vector> &first_count_commands, rsx::primitive_type primitive_mode, gl::ring_buffer &dst) { u32 vertex_draw_count = 0; - EXPECTS(!gl::is_primitive_native(primitive_mode)); + verify(HERE), !gl::is_primitive_native(primitive_mode); for (const auto &pair : first_count_commands) { diff --git a/rpcs3/Emu/RSX/RSXThread.cpp b/rpcs3/Emu/RSX/RSXThread.cpp index 31a4746547..b3b13a5bea 100644 --- a/rpcs3/Emu/RSX/RSXThread.cpp +++ b/rpcs3/Emu/RSX/RSXThread.cpp @@ -178,7 +178,7 @@ namespace rsx } fmt::throw_exception("Wrong vector size" HERE); case vertex_base_type::cmp: return sizeof(u16) * 4; - case vertex_base_type::ub256: EXPECTS(size == 4); return sizeof(u8) * 4; + case vertex_base_type::ub256: verify(HERE), (size == 4); return sizeof(u8) * 4; } fmt::throw_exception("RSXVertexData::GetTypeSize: Bad vertex data type (%d)!" HERE, (u8)type); } @@ -575,7 +575,7 @@ namespace rsx { const std::tuple &range = draw_indexed_clause[i]; const std::tuple &next_range = draw_indexed_clause[i + 1]; - EXPECTS(std::get<0>(range) + std::get<1>(range) == std::get<0>(next_range)); + verify(HERE), (std::get<0>(range) + std::get<1>(range) == std::get<0>(next_range)); } u32 first = std::get<0>(draw_indexed_clause.front()); u32 count = std::get<0>(draw_indexed_clause.back()) + std::get<1>(draw_indexed_clause.back()) - first; @@ -591,7 +591,7 @@ namespace rsx } else { - EXPECTS(0); + fmt::throw_exception("Disabled" HERE); //std::lock_guard lock{ m_mtx_task }; //internal_task_entry &front = m_internal_tasks.front(); diff --git a/rpcs3/Emu/RSX/VK/VKGSRender.cpp b/rpcs3/Emu/RSX/VK/VKGSRender.cpp index 388e889611..4a057dc58c 100644 --- a/rpcs3/Emu/RSX/VK/VKGSRender.cpp +++ b/rpcs3/Emu/RSX/VK/VKGSRender.cpp @@ -106,7 +106,7 @@ namespace vk size_t color_format_idx = 0; size_t depth_format_idx = 0; - EXPECTS(color_count < 5); + verify(HERE), color_count < 5; switch (color_format) { diff --git a/rpcs3/Loader/PSF.cpp b/rpcs3/Loader/PSF.cpp index 275fc18b11..a6f8325898 100644 --- a/rpcs3/Loader/PSF.cpp +++ b/rpcs3/Loader/PSF.cpp @@ -45,8 +45,7 @@ namespace psf , m_max_size(max_size) , m_value_string(value) { - EXPECTS(type == format::string || type == format::array); - EXPECTS(max_size); + verify(HERE), type == format::string || type == format::array, max_size; } entry::entry(u32 value) @@ -62,26 +61,26 @@ namespace psf const std::string& entry::as_string() const { - EXPECTS(m_type == format::string || m_type == format::array); + verify(HERE), m_type == format::string || m_type == format::array; return m_value_string; } u32 entry::as_integer() const { - EXPECTS(m_type == format::integer); + verify(HERE), m_type == format::integer; return m_value_integer; } entry& entry::operator =(const std::string& value) { - EXPECTS(m_type == format::string || m_type == format::array); + verify(HERE), m_type == format::string || m_type == format::array; m_value_string = value; return *this; } entry& entry::operator =(u32 value) { - EXPECTS(m_type == format::integer); + verify(HERE), m_type == format::integer; m_value_integer = value; return *this; } @@ -111,41 +110,41 @@ namespace psf return result; } - // Check size - EXPECTS(stream.size() >= sizeof(header_t)); - // Get header header_t header; - EXPECTS(stream.read(header)); + verify(HERE), stream.read(header); // Check magic and version - EXPECTS(header.magic == "\0PSF"_u32); - EXPECTS(header.version == 0x101); - EXPECTS(sizeof(header_t) + header.entries_num * sizeof(def_table_t) <= header.off_key_table); - EXPECTS(header.off_key_table <= header.off_data_table); - EXPECTS(header.off_data_table <= stream.size()); + verify(HERE), + header.magic == "\0PSF"_u32, + header.version == 0x101, + sizeof(header_t) + header.entries_num * sizeof(def_table_t) <= header.off_key_table, + header.off_key_table <= header.off_data_table, + header.off_data_table <= stream.size(); // Get indices std::vector indices; - EXPECTS(stream.read(indices, header.entries_num)); + verify(HERE), stream.read(indices, header.entries_num); // Get keys std::string keys; - EXPECTS(stream.seek(header.off_key_table) == header.off_key_table); - EXPECTS(stream.read(keys, header.off_data_table - header.off_key_table)); + verify(HERE), stream.seek(header.off_key_table) == header.off_key_table; + verify(HERE), stream.read(keys, header.off_data_table - header.off_key_table); // Load entries for (u32 i = 0; i < header.entries_num; ++i) { - EXPECTS(indices[i].key_off < header.off_data_table - header.off_key_table); + verify(HERE), indices[i].key_off < header.off_data_table - header.off_key_table; // Get key name (null-terminated string) std::string key(keys.data() + indices[i].key_off); - EXPECTS(result.count(key) == 0); - EXPECTS(indices[i].param_len <= indices[i].param_max); - EXPECTS(indices[i].data_off < stream.size() - header.off_data_table); - EXPECTS(indices[i].param_max < stream.size() - indices[i].data_off); + // Check entry + verify(HERE), + result.count(key) == 0, + indices[i].param_len <= indices[i].param_max, + indices[i].data_off < stream.size() - header.off_data_table, + indices[i].param_max < stream.size() - indices[i].data_off; // Seek data pointer stream.seek(header.off_data_table + indices[i].data_off); @@ -154,7 +153,7 @@ namespace psf { // Integer data le_t value; - EXPECTS(stream.read(value)); + verify(HERE), stream.read(value); result.emplace(std::piecewise_construct, std::forward_as_tuple(std::move(key)), @@ -164,7 +163,7 @@ namespace psf { // String/array data std::string value; - EXPECTS(stream.read(value, indices[i].param_len)); + verify(HERE), stream.read(value, indices[i].param_len); if (indices[i].param_fmt == format::string) {