Ryan Houdek
476c242d7f
FEXCore: Moves SpinWaitLock and WritePriorityMutex to frontend visible includes
...
This will be used in a moment.
2026-03-31 19:02:51 -07:00
Tony Wasserka
fd6cea4698
CodeCache: Fix glibc debug mode assertion
...
If begin == end, the first vector::erase() call would invalidate the begin
iterator.
2026-03-22 10:11:53 +01:00
crueter
33a01f2773
Core: Use long commit hash instead of abbreviating
...
Fixes #5230
Basically just stores it as an array of `uint8_t`, and automatically
pads it out to 24 bytes. Hopefully FEX never reaches SHA1 collisions so
this should (TM) never collide.
Note: I have no idea how fmt will handle that format string with an
array of uint8_t.
Signed-off-by: crueter <crueter@eden-emu.dev >
2026-02-26 10:08:41 -05:00
Tony Wasserka
31d5805681
CodeCache: Ensure CodeBuffer is large enough for validation run
...
Previously, CodeBuffer regrowth would discard parts of the code compiled
during the reference run.
2026-02-20 18:49:58 +01:00
Tony Wasserka
fda087e24f
FEXCore: Add helper function to query available CodeBuffer size
2026-02-20 18:49:07 +01:00
Tony Wasserka
1d8935d0ab
CodeCache: Drop unnecessary CodeBuffer size check
...
The CodeBuffer is resized as required right below.
2026-02-20 18:49:07 +01:00
Tony Wasserka
49a37c7d6f
Merge pull request #5313 from neobrain/refactor_header_cleanup
...
Revert "CodeCache: Use defaulted dtor for ExecutableFileInfo"
2026-02-17 10:31:14 +00:00
Tony Wasserka
7bdf53291b
CodeCache: Avoid unnecessary copying of CodeBuffer contents
2026-02-16 11:07:32 +01:00
Tony Wasserka
44a6bfd874
Revert "CodeCache: Use defaulted dtor for ExecutableFileInfo"
...
CodeCache.h has no dependency on SourcecodeResolver.h.
This reverts commit f2bbc0eccd .
2026-02-16 10:29:58 +01:00
Ryan Houdek
3d989dbaff
FEXCore: Disable 48-bit VA optimization
...
This breaks relocations currently due to not handling negatives and also
an interesting overwriting problem.
Not that big of a deal, it's only a minor optimization anyway.
Fixes #5227
2026-02-02 15:17:28 -08:00
Ryan Houdek
9101e704ce
Merge pull request #5174 from lioncash/warn
...
CodeCache: Fix misparenthesized expression in SaveData()
2025-12-28 12:08:32 -08:00
Ryan Houdek
212a3f45f8
Merge pull request #5164 from bylaws/gmeo
...
ImageTracker: Track loaded PE images for LookupExecutableFileSection
2025-12-28 12:08:07 -08:00
Lioncache
0107338020
CodeCache: Fix misparenthesized expression in SaveData()
...
Fixes a -Wshift-op-parentheses warning, and what seems to be a
legitimate bug, based off some quick reading.
2025-12-28 09:42:50 -05:00
Billy Laws
f2bbc0eccd
CodeCache: Use defaulted dtor for ExecutableFileInfo
2025-12-28 00:30:47 +00:00
Billy Laws
0152f3adb2
CodeCache: Rebase block entrypoint info
...
Entrypoint information contains guest addresses that must be rebased for
correctness.
2025-12-28 00:25:56 +00:00
Billy Laws
064a48e965
CodeCache: Make LoadData Thread argument an optional pointer
...
Windows doesn't have access to Thread when loading the main image and
ntdll.
2025-12-23 23:45:07 +00:00
Billy Laws
86211e18d7
ALookupExecutableFileSection: Take thread argument as an optional pointer
2025-12-23 23:44:58 +00:00
Ryan Houdek
d2b9bfd6ee
Arm64Emitter: Changes LoadConstant to support Pad and byte width
...
Instead of just a trivial pad being on or off, support a tri-state
on/off/auto where on will always pad, off will never pad, and auto will
pad only if code caching is enabled.
Further augment this by allowing a byte-width to be passed in, which can
be used with pointers to force a 48-bit VA width to only ever pad to
three instructions, reducing the common worst-case situation from 4
instructions to 3. This works because we're not going to expose a VA
width larger than 47-bit to the guest.
Fixes the handful of use-cases that explicitly chose their NOP padding,
and a bug in Arm64Relocations.cpp where it was incorrectly asking to not
receive padding even though it requires it.
2025-12-22 14:14:58 -08:00
Tony Wasserka
8fcb84112b
CodeCache: Implement runtime cache validation
2025-12-22 17:52:43 +01:00
Tony Wasserka
70eff81f19
CodeCache: Implement cache loading
2025-12-15 16:12:43 +01:00
Tony Wasserka
602ecece50
CodeCache: Clean up OrderedContainer checks
2025-12-15 12:21:41 +01:00
Tony Wasserka
983802da61
CodeCache: Add offline compiler for generating caches
2025-12-04 19:16:51 +01:00
Tony Wasserka
49273e0d59
CodeCache: Add workaround for clang-15's broken std::piecewise_construct
2025-12-04 19:16:51 +01:00
Tony Wasserka
994613260c
CodeCache: Support reverse application of relocations
...
This allows code to be serialized consistently across runs.
2025-12-02 22:27:53 +01:00
Tony Wasserka
1430fa8220
CodeCache: Move ApplyCodeRelocations
2025-12-02 18:38:59 +01:00
Ryan Houdek
6d351ec47f
FEXCore/CodeCache: Moves spin-loop in to a WFE loop
...
Saves power and responds faster. Pass in the atomic to `WaitPred` with
the predicate checking if the buffer has been flushed yet. Same
behaviour as previous code but more efficient on our hardware.
2025-11-20 14:23:01 -08:00
Tony Wasserka
b34b711161
CodeCache: Add interfaces to describe and generate code maps
...
Code maps describe per-binary metadata used to generate caches. Currently,
this includes compiled block offsets and loaded shared libraries.
2025-11-20 19:13:18 +01:00
Tony Wasserka
b5b8ff01d5
CodeCache: Move LibraryJITNaming and GDBSymbols checks to Core
2025-09-11 17:03:50 +02:00
Tony Wasserka
70a1d92d9f
CodeCache: Drop ComputeCodeMapId member function
2025-09-11 17:03:50 +02:00
Tony Wasserka
0749477eb9
CodeCache: Introduce revamped interfaces
2025-09-11 17:03:50 +02:00
Tony Wasserka
db601d333b
Core: Rename and move AOTIR.cpp and AOTIR.h
...
The new names better reflect the contents after recent/upcoming API changes.
2025-09-11 10:49:07 +02:00
Tony Wasserka
af1c2cccac
Rename AOTIR.cpp to CodeCache.cpp
2025-09-11 10:49:07 +02:00