X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=folly%2FThreadCachedArena.cpp;h=57701a11c044dac89a70ea4de068a34e00596409;hb=a0c640e8e2ff45bc43b9f8d96cd108bb66635bee;hp=bcc2ff8e2677a8bc6c2a9ebe2caf82bd90be89fa;hpb=ce64f0f685111ac24c7a321ea56d0c3524621df1;p=folly.git diff --git a/folly/ThreadCachedArena.cpp b/folly/ThreadCachedArena.cpp index bcc2ff8e..57701a11 100644 --- a/folly/ThreadCachedArena.cpp +++ b/folly/ThreadCachedArena.cpp @@ -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. @@ -16,6 +16,8 @@ #include +#include + namespace folly { ThreadCachedArena::ThreadCachedArena(size_t minBlockSize, size_t maxAlign) @@ -36,9 +38,16 @@ SysArena* ThreadCachedArena::allocateThreadLocalArena() { } void ThreadCachedArena::zombify(SysArena&& arena) { - std::lock_guard 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