summaryrefslogtreecommitdiffstats
path: root/compiler-rt/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
commit0aba35710f1db0254f8b2ba3a726d87390ff15ad (patch)
treefee3db226d03dd7f4e1f64c7d2023bfc817d7969 /compiler-rt/lib/xray/xray_buffer_queue.cc
parent887894aaef8fe7b436d48dd825dbcf5dfd4cf3ad (diff)
downloadbcm5719-llvm-0aba35710f1db0254f8b2ba3a726d87390ff15ad.tar.gz
bcm5719-llvm-0aba35710f1db0254f8b2ba3a726d87390ff15ad.zip
Revert "[XRay][compiler-rt] XRay Flight Data Recorder Mode"
This reverts rL290852 as it breaks aarch64 and arm. llvm-svn: 290854
Diffstat (limited to 'compiler-rt/lib/xray/xray_buffer_queue.cc')
-rw-r--r--compiler-rt/lib/xray/xray_buffer_queue.cc31
1 files changed, 10 insertions, 21 deletions
diff --git a/compiler-rt/lib/xray/xray_buffer_queue.cc b/compiler-rt/lib/xray/xray_buffer_queue.cc
index bd8f4961e7a..7e5462fb8e1 100644
--- a/compiler-rt/lib/xray/xray_buffer_queue.cc
+++ b/compiler-rt/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;
}
}
OpenPOWER on IntegriCloud