mirror of
https://github.com/libretro/parallel-ps2.git
synced 2026-11-12 09:21:32 -10:00
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.
8 lines
141 B
Perl
8 lines
141 B
Perl
{
|
|
global: retro_*;
|
|
ps2_audit_*;
|
|
pcsx2_jithash_dump; /* JIT emission oracle; see pcsx2/x86/JitHash.c */
|
|
local: *;
|
|
};
|
|
|