Some more OpenSSL 1.1.0 compat APIs
[folly.git] / folly / ThreadCachedArena.cpp
index 107bf99db673b1eafadbf62fdddecc3981d167c6..57701a11c044dac89a70ea4de068a34e00596409 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014 Facebook, Inc.
+ * Copyright 2017 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,9 @@
  * limitations under the License.
  */
 
-#include "folly/ThreadCachedArena.h"
+#include <folly/ThreadCachedArena.h>
+
+#include <memory>
 
 namespace folly {
 
@@ -36,9 +38,16 @@ SysArena* ThreadCachedArena::allocateThreadLocalArena() {
 }
 
 void ThreadCachedArena::zombify(SysArena&& arena) {
-  std::lock_guard<std::mutex> lock(zombiesMutex_);
-  zombies_.merge(std::move(arena));
+  zombies_->merge(std::move(arena));
 }
 
-}  // namespace folly
+size_t ThreadCachedArena::totalSize() const {
+  size_t result = sizeof(ThreadCachedArena);
+  for (const auto& arena : arena_.accessAllThreads()) {
+    result += arena.totalSize();
+  }
+  result += zombies_->totalSize() - sizeof(SysArena);
+  return result;
+}
 
+}  // namespace folly