aboutsummaryrefslogtreecommitdiffhomepage
path: root/absl/synchronization
diff options
context:
space:
mode:
authorGravatar Abseil Team <absl-team@google.com>2018-04-18 05:56:39 -0700
committerGravatar Jon Cohen <cohenjon@google.com>2018-04-19 10:19:32 -0400
commit5b535401665cc6aa96d54a5c9b0901153d97210f (patch)
tree8d45863656540c8ec81eb7d2742c9191c33ca935 /absl/synchronization
parenta7e522daf1ec9cda69b356472f662142dd0c1215 (diff)
- ed0ba496fe01eb8edfa86beade8a37768e7c12ef Updates the API for Exception Safety testing to use build... by Abseil Team <absl-team@google.com>
- c4b7a4e517c9404932c45f2f9f92eb7dc694e45d Internal change by Abseil Team <absl-team@google.com> - 76c78ed9385f65d881511645446e0bb8ababf6ec Add missing ABSL_PREDICT_FALSE to one of FixedArray::at()... by Abseil Team <absl-team@google.com> - 1204fb1c46f007dd9dfb7d9abf3e96c58835d193 Internal change. by Greg Falcon <gfalcon@google.com> - f1f47c98a026bc5e425ae83ff4a2eb391bbd3d9b Add internal-only functionality to examine the stack, to ... by Derek Mauro <dmauro@google.com> - 30d63097cd268d912f917526f6511005580465c4 fix typo by Abseil Team <absl-team@google.com> - 942d7efa6cf54cd248ca57dcaf3c245188b52a76 Remove unnecessary semicolons from comment examples. by Abseil Team <absl-team@google.com> - 7db0669cf23a06d934d3ed8c76aee4e4e23b7e04 Remove malloc_hook and malloc_extension from our internal... by Greg Falcon <gfalcon@google.com> - 0190f1063d101b1ded355019df2e1d325931f6c7 Make the maximum length of a string view equal difference... by Abseil Team <absl-team@google.com> - c8ae37cbce29449b02115a0ebd435ddc3d7ab062 Add namespace qualification. by Shaindel Schwartz <shaindel@google.com> - ff70afe2e6e3dd39f51ce9829e3e1f18231bf4d7 Fix internal/direct_mmap.h for non-linux builds. by Greg Falcon <gfalcon@google.com> GitOrigin-RevId: ed0ba496fe01eb8edfa86beade8a37768e7c12ef Change-Id: I7595ee3480d1d6724fd3797c15ba9d9be0d17e62
Diffstat (limited to 'absl/synchronization')
-rw-r--r--absl/synchronization/BUILD.bazel3
-rw-r--r--absl/synchronization/CMakeLists.txt2
-rw-r--r--absl/synchronization/internal/per_thread_sem.cc7
-rw-r--r--absl/synchronization/internal/per_thread_sem_test.cc74
-rw-r--r--absl/synchronization/internal/waiter.cc3
5 files changed, 1 insertions, 88 deletions
diff --git a/absl/synchronization/BUILD.bazel b/absl/synchronization/BUILD.bazel
index 354291f..69f9c81 100644
--- a/absl/synchronization/BUILD.bazel
+++ b/absl/synchronization/BUILD.bazel
@@ -75,7 +75,6 @@ cc_library(
"//absl/base:config",
"//absl/base:core_headers",
"//absl/base:dynamic_annotations",
- "//absl/base:malloc_extension",
"//absl/base:malloc_internal",
"//absl/debugging:stacktrace",
"//absl/time",
@@ -168,7 +167,6 @@ cc_library(
deps = [
":synchronization",
"//absl/base",
- "//absl/base:malloc_extension",
"//absl/strings",
"//absl/time",
"@com_google_googletest//:gtest",
@@ -184,7 +182,6 @@ cc_test(
":per_thread_sem_test_common",
":synchronization",
"//absl/base",
- "//absl/base:malloc_extension",
"//absl/strings",
"//absl/time",
"@com_google_googletest//:gtest_main",
diff --git a/absl/synchronization/CMakeLists.txt b/absl/synchronization/CMakeLists.txt
index c5c4c62..c8f84fa 100644
--- a/absl/synchronization/CMakeLists.txt
+++ b/absl/synchronization/CMakeLists.txt
@@ -44,7 +44,7 @@ list(APPEND SYNCHRONIZATION_SRC
"notification.cc"
"mutex.cc"
)
-set(SYNCHRONIZATION_PUBLIC_LIBRARIES absl::base absl_malloc_extension absl::time)
+set(SYNCHRONIZATION_PUBLIC_LIBRARIES absl::base absl::time)
absl_library(
TARGET
diff --git a/absl/synchronization/internal/per_thread_sem.cc b/absl/synchronization/internal/per_thread_sem.cc
index af87222..caa2baf 100644
--- a/absl/synchronization/internal/per_thread_sem.cc
+++ b/absl/synchronization/internal/per_thread_sem.cc
@@ -21,7 +21,6 @@
#include <atomic>
#include "absl/base/attributes.h"
-#include "absl/base/internal/malloc_extension.h"
#include "absl/base/internal/thread_identity.h"
#include "absl/synchronization/internal/waiter.h"
@@ -90,12 +89,6 @@ ABSL_ATTRIBUTE_WEAK bool AbslInternalPerThreadSemWait(
if (identity->blocked_count_ptr != nullptr) {
identity->blocked_count_ptr->fetch_sub(1, std::memory_order_relaxed);
}
-
- if (identity->is_idle.load(std::memory_order_relaxed)) {
- // We became idle during the wait; become non-idle again so that
- // performance of deallocations done from now on does not suffer.
- absl::base_internal::MallocExtension::instance()->MarkThreadBusy();
- }
identity->is_idle.store(false, std::memory_order_relaxed);
identity->wait_start.store(0, std::memory_order_relaxed);
return !timeout;
diff --git a/absl/synchronization/internal/per_thread_sem_test.cc b/absl/synchronization/internal/per_thread_sem_test.cc
index 61296cf..2b52ea7 100644
--- a/absl/synchronization/internal/per_thread_sem_test.cc
+++ b/absl/synchronization/internal/per_thread_sem_test.cc
@@ -24,7 +24,6 @@
#include "gtest/gtest.h"
#include "absl/base/internal/cycleclock.h"
-#include "absl/base/internal/malloc_extension.h"
#include "absl/base/internal/thread_identity.h"
#include "absl/strings/str_cat.h"
#include "absl/time/clock.h"
@@ -167,79 +166,6 @@ TEST_F(PerThreadSemTest, Timeouts) {
EXPECT_TRUE(Wait(negative_timeout));
}
-// Test that idle threads properly register themselves as such with malloc.
-TEST_F(PerThreadSemTest, Idle) {
- // We can't use gmock because it might use synch calls. So we do it
- // by hand, messily. I don't bother hitting every one of the
- // MallocExtension calls because most of them won't get made
- // anyway--if they do we can add them.
- class MockMallocExtension : public base_internal::MallocExtension {
- public:
- MockMallocExtension(base_internal::MallocExtension *real,
- base_internal::ThreadIdentity *id,
- std::atomic<int> *idles, std::atomic<int> *busies)
- : real_(real), id_(id), idles_(idles), busies_(busies) {}
- void MarkThreadIdle() override {
- if (base_internal::CurrentThreadIdentityIfPresent() != id_) {
- return;
- }
- idles_->fetch_add(1, std::memory_order_relaxed);
- }
-
- void MarkThreadBusy() override {
- if (base_internal::CurrentThreadIdentityIfPresent() != id_) {
- return;
- }
- busies_->fetch_add(1, std::memory_order_relaxed);
- }
- size_t GetAllocatedSize(const void* p) override {
- return real_->GetAllocatedSize(p);
- }
-
- private:
- MallocExtension *real_;
- base_internal::ThreadIdentity *id_;
- std::atomic<int>* idles_;
- std::atomic<int>* busies_;
- };
-
- base_internal::ThreadIdentity *id = GetOrCreateCurrentThreadIdentity();
- std::atomic<int> idles(0);
- std::atomic<int> busies(0);
- base_internal::MallocExtension *old =
- base_internal::MallocExtension::instance();
- MockMallocExtension mock(old, id, &idles, &busies);
- base_internal::MallocExtension::Register(&mock);
- std::atomic<int> sync(0);
-
- std::thread t([id, &idles, &sync]() {
- // Wait for the main thread to begin the wait process
- while (0 == sync.load(std::memory_order_relaxed)) {
- SleepFor(absl::Milliseconds(1));
- }
- // Wait for main thread to become idle, then wake it
- // pretend time is passing--enough of these should cause an idling.
- for (int i = 0; i < 100; ++i) {
- Tick(id);
- }
- while (0 == idles.load(std::memory_order_relaxed)) {
- // Keep ticking, just in case.
- Tick(id);
- SleepFor(absl::Milliseconds(1));
- }
- Post(id);
- });
-
- idles.store(0, std::memory_order_relaxed); // In case we slept earlier.
- sync.store(1, std::memory_order_relaxed);
- Wait(KernelTimeout::Never());
-
- // t will wake us once we become idle.
- EXPECT_LT(0, busies.load(std::memory_order_relaxed));
- t.join();
- base_internal::MallocExtension::Register(old);
-}
-
} // namespace
} // namespace synchronization_internal
diff --git a/absl/synchronization/internal/waiter.cc b/absl/synchronization/internal/waiter.cc
index db1b54f..768c520 100644
--- a/absl/synchronization/internal/waiter.cc
+++ b/absl/synchronization/internal/waiter.cc
@@ -40,8 +40,6 @@
#include <atomic>
#include <cassert>
#include <cstdint>
-
-#include "absl/base/internal/malloc_extension.h"
#include "absl/base/internal/raw_logging.h"
#include "absl/base/internal/thread_identity.h"
#include "absl/base/optimization.h"
@@ -59,7 +57,6 @@ static void MaybeBecomeIdle() {
const int wait_start = identity->wait_start.load(std::memory_order_relaxed);
if (!is_idle && ticker - wait_start > Waiter::kIdlePeriods) {
identity->is_idle.store(true, std::memory_order_relaxed);
- base_internal::MallocExtension::instance()->MarkThreadIdle();
}
}