From: Yedidya Feldblum Date: Tue, 26 Dec 2017 21:34:14 +0000 (-0800) Subject: Remove folly/detail/UncaughtExceptionCounter.h X-Git-Tag: v2018.01.01.00~16 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=d0956208d06806377b05e4daef5450603ce4ad63;p=folly.git Remove folly/detail/UncaughtExceptionCounter.h Summary: [Folly] Remove `folly/detail/UncaughtExceptionCounter.h`. It's a thin and unnecessary shell around `folly/UncaughtExceptions.h`. Reviewed By: Orvid Differential Revision: D6636260 fbshipit-source-id: cdf6fa5fefc9fd69586c1c4c1a8443c5e8543b1c --- diff --git a/folly/Makefile.am b/folly/Makefile.am index 19f31af4..9bc83a13 100644 --- a/folly/Makefile.am +++ b/folly/Makefile.am @@ -86,7 +86,6 @@ nobase_follyinclude_HEADERS = \ detail/ThreadLocalDetail.h \ detail/TypeList.h \ detail/TurnSequencer.h \ - detail/UncaughtExceptionCounter.h \ executors/Async.h \ executors/CPUThreadPoolExecutor.h \ executors/Codel.h \ diff --git a/folly/ScopeGuard.h b/folly/ScopeGuard.h index a8c26914..68043c35 100644 --- a/folly/ScopeGuard.h +++ b/folly/ScopeGuard.h @@ -24,7 +24,7 @@ #include #include -#include +#include namespace folly { @@ -204,25 +204,19 @@ namespace detail { * * Used to implement SCOPE_FAIL and SCOPE_SUCCESS below. */ -template +template class ScopeGuardForNewException { public: - explicit ScopeGuardForNewException(const FunctionType& fn) - : function_(fn) { - } + explicit ScopeGuardForNewException(const FunctionType& fn) : function_(fn) {} explicit ScopeGuardForNewException(FunctionType&& fn) - : function_(std::move(fn)) { - } + : function_(std::move(fn)) {} - ScopeGuardForNewException(ScopeGuardForNewException&& other) - : function_(std::move(other.function_)) - , exceptionCounter_(std::move(other.exceptionCounter_)) { - } + ScopeGuardForNewException(ScopeGuardForNewException&& other) = default; - ~ScopeGuardForNewException() noexcept(executeOnException) { - if (executeOnException == exceptionCounter_.isNewUncaughtException()) { - if (executeOnException) { + ~ScopeGuardForNewException() noexcept(ExecuteOnException) { + if (ExecuteOnException == (exceptionCounter_ < uncaught_exceptions())) { + if (ExecuteOnException) { ScopeGuardImplBase::runAndWarnAboutToCrashOnException(function_); } else { function_(); @@ -236,7 +230,7 @@ class ScopeGuardForNewException { void* operator new(std::size_t) = delete; FunctionType function_; - UncaughtExceptionCounter exceptionCounter_; + int exceptionCounter_{uncaught_exceptions()}; }; /** diff --git a/folly/detail/UncaughtExceptionCounter.h b/folly/detail/UncaughtExceptionCounter.h deleted file mode 100644 index 4170c215..00000000 --- a/folly/detail/UncaughtExceptionCounter.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include - -#include - -namespace folly { namespace detail { - -/** - * Used to check if a new uncaught exception was thrown by monitoring the - * number of uncaught exceptions. - * - * Usage: - * - create a new UncaughtExceptionCounter object - * - call isNewUncaughtException() on the new object to check if a new - * uncaught exception was thrown since the object was created - */ -class UncaughtExceptionCounter { - public: - UncaughtExceptionCounter() noexcept - : exceptionCount_(folly::uncaught_exceptions()) {} - - UncaughtExceptionCounter(const UncaughtExceptionCounter& other) noexcept - : exceptionCount_(other.exceptionCount_) {} - - bool isNewUncaughtException() noexcept { - return folly::uncaught_exceptions() > exceptionCount_; - } - - private: - int exceptionCount_; -}; - -} // namespace detail -} // namespace folly