mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-11 08:13:35 +00:00
b21e723d2e
This patch is in support of adding a variant of Static{Auto,Ref}Ptr for use as static locals, taking advantage of C++11 "magic statics" such that we can lazily initialize those variables in a thread-safe way. In support of those classes, this patch adds two new attributes: * `moz_static_local_class` to ensure that any instantiations of that class only occur as static local variables; * `moz_trivial_dtor` to ensure that these classes do not implicitly call `atexit` and add a whole bunch of shutdown crap. `moz_static_local_class` works similarly to `moz_global_class`, except that its object must only instantiate as static locals. `TrivialDtorChecker` is based on `TrivialCtorDtorChecker`, with the ctor-specific bits removed. Differential Revision: https://phabricator.services.mozilla.com/D39717 --HG-- rename : build/clang-plugin/TrivialCtorDtorChecker.cpp => build/clang-plugin/TrivialDtorChecker.cpp rename : build/clang-plugin/TrivialCtorDtorChecker.h => build/clang-plugin/TrivialDtorChecker.h extra : moz-landing-system : lando
19 lines
592 B
C++
19 lines
592 B
C++
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef TrivialDtorChecker_h__
|
|
#define TrivialDtorChecker_h__
|
|
|
|
#include "plugin.h"
|
|
|
|
class TrivialDtorChecker : public BaseCheck {
|
|
public:
|
|
TrivialDtorChecker(StringRef CheckName, ContextType *Context = nullptr)
|
|
: BaseCheck(CheckName, Context) {}
|
|
void registerMatchers(MatchFinder *AstMatcher) override;
|
|
void check(const MatchFinder::MatchResult &Result) override;
|
|
};
|
|
|
|
#endif
|