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 | 0aba35710f1db0254f8b2ba3a726d87390ff15ad (patch) | |
| tree | fee3db226d03dd7f4e1f64c7d2023bfc817d7969 /compiler-rt/lib/xray/xray_buffer_queue.cc | |
| parent | 887894aaef8fe7b436d48dd825dbcf5dfd4cf3ad (diff) | |
| download | bcm5719-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.cc | 31 |
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; } } |

