summaryrefslogtreecommitdiff
path: root/test/scudo/interface.cpp
diff options
context:
space:
mode:
authorDean Michael Berris <dberris@google.com>2017-12-14 02:51:20 +0000
committerDean Michael Berris <dberris@google.com>2017-12-14 02:51:20 +0000
commit089c958f36cf198c6e9ca431b5abd3ea1e597827 (patch)
treed9bdf564857e5bbe270d9fabd667391f1fe00417 /test/scudo/interface.cpp
parent993d9a6a013d6618bc9690a32a5a6a57a474d707 (diff)
[XRay][compiler-rt] Coalesce calls to mprotect to reduce patching overhead
Summary: Before this change, XRay would conservatively patch sections of the code one sled at a time. Upon testing/profiling, this turns out to take an inordinate amount of time and cycles. For an instrumented clang binary, the cycles spent both in the patching/unpatching routine constituted 4% of the cycles -- this didn't count the time spent in the kernel while performing the mprotect calls in quick succession. With this change, we're coalescing the number of calls to mprotect from being linear to the number of instrumentation points, to now being a lower constant when patching all the sleds through `__xray_patch()` or `__xray_unpatch()`. In the case of calling `__xray_patch_function()` or `__xray_unpatch_function()` we're now doing an mprotect call once for all the sleds for that function (reduction of at least 2x calls to mprotect). Reviewers: kpw, eizan Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D41153 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@320664 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/scudo/interface.cpp')
0 files changed, 0 insertions, 0 deletions