llvm-project/llvm/lib/ExecutionEngine
Keno Fischer 17433bd102 Fix performance problem in long-running SectionMemoryManagers
Summary:
Without this patch, the memory manager would call `mprotect` on every memory
region it ever allocated whenever it wanted to finalize memory (i.e. not just
the ones it just allocated). This caused terrible performance problems for
long running memory managers. In one particular compile heavy julia benchmark,
we were spending 50% of time in `mprotect` if running under MCJIT.

Fix this by splitting allocated memory blocks into those on which memory
permissions have been set and those on which they haven't and only running
`mprotect` on the latter.

Reviewers: lhames

Subscribers: reames, llvm-commits

Differential Revision: http://reviews.llvm.org/D13156

llvm-svn: 248981
2015-10-01 02:45:07 +00:00
..
IntelJITEvents Fix the -DBUILD_SHARED_LIBS=ON build. 2015-07-07 17:48:00 +00:00
Interpreter De-constify pointers to Type since they can't be modified. NFC 2015-08-01 22:20:21 +00:00
MCJIT Re-commit r247216: "Fix Clang-tidy misc-use-override warnings, other minor fixes" 2015-09-10 16:49:58 +00:00
OProfileJIT Fix the -DBUILD_SHARED_LIBS=ON build. 2015-07-07 17:48:00 +00:00
Orc Remove access to the DataLayout in the TargetMachine 2015-07-24 16:04:22 +00:00
RuntimeDyld [RuntimeDyld] Support non-zero addends for the MachO X86_64 SUBTRACTOR reloc. 2015-09-10 21:05:58 +00:00
CMakeLists.txt modules: Add explicit dependency on intrinsics_gen 2015-06-16 00:44:12 +00:00
ExecutionEngine.cpp Remove roundingMode argument in APFloat::mod 2015-09-21 19:29:25 +00:00
ExecutionEngineBindings.cpp Fix ODR violation. NFC. 2015-07-27 18:27:23 +00:00
GDBRegistrationListener.cpp Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
LLVMBuild.txt add missing dependency for ExecutionEngine lib 2015-06-01 21:56:56 +00:00
Makefile [Orc] New JIT APIs. 2015-01-23 21:25:00 +00:00
SectionMemoryManager.cpp Fix performance problem in long-running SectionMemoryManagers 2015-10-01 02:45:07 +00:00
TargetSelect.cpp Readdress r236990, use of static members on a non-static variable. 2015-05-11 22:20:48 +00:00