summaryrefslogtreecommitdiff
path: root/lib/xray/xray_buffer_queue.cc
diff options
context:
space:
mode:
authorDean Michael Berris <dberris@google.com>2017-01-03 04:04:00 +0000
committerDean Michael Berris <dberris@google.com>2017-01-03 04:04:00 +0000
commitb92697bddf3ec2631db9e850b6a885636748c08f (patch)
tree16767016ce288af227468909b9485cc28f5896ca /lib/xray/xray_buffer_queue.cc
parent8693dcf62e1544df517549d95443aa2164a245c5 (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.cc31
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;
}
}