Tony Wasserka
0ac6b3e8f3
CodeCache: Mark executable memory as EC code on ARM64EC
...
See bd5b817c3a .
2026-07-07 15:55:27 +02:00
Ryan Houdek
5bf07c2e77
CodeCache: Resolve comment https://github.com/FEX-Emu/FEX/pull/5441#discussion_r3255384588
2026-05-21 18:04:29 -07:00
Tony Wasserka
a040740974
CodeCache: Ensure atomicity of code page finalization
2026-05-13 22:53:09 +02:00
Tony Wasserka
5be0dc9fc5
CodeCache: Implement lazy code loading
2026-05-13 21:25:47 +02:00
Tony Wasserka
d69d111bb6
CodeCache: Align code section within cache files
...
This allows mapping the code directly into memory for execution.
2026-05-13 21:25:47 +02:00
Tony Wasserka
60bc5944db
CodeCache: Slightly optimize cache file writing
...
ftruncate only requires one call (and one extra seek) instead up to 64 manual
zero writes.
2026-05-06 17:08:15 +02:00
Tony Wasserka
86e28c6d34
CodeCache: Move bounds check to FEXOfflineCompiler
...
The previous check site would easily fail when loading caches for binaries
with multiple executable sections.
It makes much more sense to refuse generating caches anyway: The condition
effectively checked for invalid code map entries, so FEXOfflineCompiler
should reject them as bad inputs.
2026-04-28 17:31:20 +02:00
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