Files
libretroadmin 77ed65af53 x86: the EE and IOP recompilers in C89
The EE and IOP recompilers, the register allocator, the block tables and
the CPU state are C now: twenty-four units under pcsx2/x86 and
pcsx2/x86/ix86-32, with declarations at block top and no C++ left in
them. Lambdas handed to the vtlb read generators become static
allocators, C++17 if-initialisers and declarations in conditions are
spelled out, alignas becomes PCSX2_ALIGN, the thread-local emitter
cursor uses a new PCSX2_THREAD_LOCAL that is plain __thread or
__declspec(thread) in either language, and every prototype says (void)
so a mismatched call is a compile error rather than an unchecked one.
The headers microVU and the VIF unpacker share with them -- iCore.h,
iR5900.h, iR3000A.h, BaseblockEx.h, iR5900Analysis.h -- give C linkage
under C++, xInvertCond is static in C so each unit no longer defines it,
and the dead include of the reference emitter's internals is gone.

A header both languages read can now be laid out two ways and still
link, so tests/xlayout compiles every header a C unit reaches with each
front end and compares the DWARF of every type both name: size, and each
member's name and offset. 464 types agree; a probe whose member is bool
in C++ and int in C is reported. The emitter compile gate covers C units
too, as gnu89 with late declarations an error.
2026-11-12 19:21:04 +01:00

8 lines
141 B
Perl

{
global: retro_*;
ps2_audit_*;
pcsx2_jithash_dump; /* JIT emission oracle; see pcsx2/x86/JitHash.c */
local: *;
};