mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 10:00:16 +02:00
LinuxSyscalls: Skip reading ELF files when code caching is disabled
ELF headers were read unconditionally because doing so was assumed to be cheap (as the guest app would read them anyway shortly after). However, relocation parsing was added since then, which has less predictable performance due to crossing page boundaries and reading larger amounts of memory. It might be possible to make the underlying code more efficient, but until that's done it's better to skip this logic unless needed. Closes #5390
This commit is contained in:
1 parent
5149ebc70e
commit
1df1265ed1
1 file changed
+2
-2
@@ -541,9 +541,9 @@ SyscallHandler::TrackMmap(FEXCore::Core::InternalThreadState* Thread, uint64_t a
|
||||
Resource->MappedFile->Filename = fextl::string(Tmp, PathLength);
|
||||
Resource->MappedFile->FileId = CTX->GetCodeCache().ComputeCodeMapId(Resource->MappedFile->Filename, fd);
|
||||
|
||||
// Read ELF headers if applicable.
|
||||
// Read ELF headers if applicable and needed for code caching.
|
||||
// For performance, skip ELF checks if we're not mapping the file header
|
||||
bool CheckForElfFile = (offset == 0);
|
||||
bool CheckForElfFile = (offset == 0) && EnableCodeCaching;
|
||||
#if defined(ASSERTIONS_ENABLED) && ASSERTIONS_ENABLED
|
||||
CheckForElfFile = true;
|
||||
#endif
|
||||
|
||||
Reference in new issue
Block a user