diff options
author | Dean Michael Berris <dberris@google.com> | 2017-01-03 04:04:00 +0000 |
---|---|---|
committer | Dean Michael Berris <dberris@google.com> | 2017-01-03 04:04:00 +0000 |
commit | b92697bddf3ec2631db9e850b6a885636748c08f (patch) | |
tree | 16767016ce288af227468909b9485cc28f5896ca /lib/xray/xray_buffer_queue.cc | |
parent | 8693dcf62e1544df517549d95443aa2164a245c5 (diff) |
Revert "[XRay][compiler-rt] XRay Flight Data Recorder Mode"
This reverts rL290852 as it breaks aarch64 and arm.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@290854 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/xray/xray_buffer_queue.cc')
-rw-r--r-- | lib/xray/xray_buffer_queue.cc | 31 |
1 files changed, 10 insertions, 21 deletions
diff --git a/lib/xray/xray_buffer_queue.cc b/lib/xray/xray_buffer_queue.cc index bd8f4961e..7e5462fb8 100644 --- a/lib/xray/xray_buffer_queue.cc +++ b/lib/xray/xray_buffer_queue.cc @@ -18,21 +18,15 @@ using namespace __xray; -BufferQueue::BufferQueue(std::size_t B, std::size_t N, bool &Success) +BufferQueue::BufferQueue(std::size_t B, std::size_t N) : BufferSize(B), Buffers(N), Mutex(), OwnedBuffers(), Finalizing(false) { - for (auto &T : Buffers) { + for (auto &Buf : Buffers) { void *Tmp = malloc(BufferSize); - if (Tmp == nullptr) { - Success = false; - return; - } - - auto &Buf = std::get<0>(T); Buf.Buffer = Tmp; Buf.Size = B; - OwnedBuffers.emplace(Tmp); + if (Tmp != 0) + OwnedBuffers.insert(Tmp); } - Success = true; } std::error_code BufferQueue::getBuffer(Buffer &Buf) { @@ -41,11 +35,7 @@ std::error_code BufferQueue::getBuffer(Buffer &Buf) { std::lock_guard<std::mutex> Guard(Mutex); if (Buffers.empty()) return std::make_error_code(std::errc::not_enough_memory); - auto &T = Buffers.front(); - auto &B = std::get<0>(T); - Buf = B; - B.Buffer = nullptr; - B.Size = 0; + Buf = Buffers.front(); Buffers.pop_front(); return {}; } @@ -54,11 +44,9 @@ std::error_code BufferQueue::releaseBuffer(Buffer &Buf) { if (OwnedBuffers.count(Buf.Buffer) == 0) return std::make_error_code(std::errc::argument_out_of_domain); std::lock_guard<std::mutex> Guard(Mutex); - - // Now that the buffer has been released, we mark it as "used". - Buffers.emplace(Buffers.end(), Buf, true /* used */); + Buffers.push_back(Buf); Buf.Buffer = nullptr; - Buf.Size = 0; + Buf.Size = BufferSize; return {}; } @@ -69,8 +57,9 @@ std::error_code BufferQueue::finalize() { } BufferQueue::~BufferQueue() { - for (auto &T : Buffers) { - auto &Buf = std::get<0>(T); + for (auto &Buf : Buffers) { free(Buf.Buffer); + Buf.Buffer = nullptr; + Buf.Size = 0; } } |