r291156 - Move VariantMatcher's Payload to std::shared_ptr rather than IntrusiveRefCntPtr
David Blaikie via cfe-commits
cfe-commits at lists.llvm.org
Thu Jan 5 10:51:55 PST 2017
Author: dblaikie
Date: Thu Jan 5 12:51:54 2017
New Revision: 291156
URL: http://llvm.org/viewvc/llvm-project?rev=291156&view=rev
Log:
Move VariantMatcher's Payload to std::shared_ptr rather than IntrusiveRefCntPtr
Modified:
cfe/trunk/include/clang/ASTMatchers/Dynamic/VariantValue.h
cfe/trunk/lib/ASTMatchers/Dynamic/VariantValue.cpp
Modified: cfe/trunk/include/clang/ASTMatchers/Dynamic/VariantValue.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/Dynamic/VariantValue.h?rev=291156&r1=291155&r2=291156&view=diff
==============================================================================
--- cfe/trunk/include/clang/ASTMatchers/Dynamic/VariantValue.h (original)
+++ cfe/trunk/include/clang/ASTMatchers/Dynamic/VariantValue.h Thu Jan 5 12:51:54 2017
@@ -119,7 +119,7 @@ class VariantMatcher {
/// \brief Payload interface to be specialized by each matcher type.
///
/// It follows a similar interface as VariantMatcher itself.
- class Payload : public RefCountedBase<Payload> {
+ class Payload {
public:
virtual ~Payload();
virtual llvm::Optional<DynTypedMatcher> getSingleMatcher() const = 0;
@@ -208,7 +208,8 @@ public:
std::string getTypeAsString() const;
private:
- explicit VariantMatcher(Payload *Value) : Value(Value) {}
+ explicit VariantMatcher(std::shared_ptr<Payload> Value)
+ : Value(std::move(Value)) {}
template <typename T> struct TypedMatcherOps;
@@ -216,7 +217,7 @@ private:
class PolymorphicPayload;
class VariadicOpPayload;
- IntrusiveRefCntPtr<const Payload> Value;
+ std::shared_ptr<const Payload> Value;
};
template <typename T>
Modified: cfe/trunk/lib/ASTMatchers/Dynamic/VariantValue.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ASTMatchers/Dynamic/VariantValue.cpp?rev=291156&r1=291155&r2=291156&view=diff
==============================================================================
--- cfe/trunk/lib/ASTMatchers/Dynamic/VariantValue.cpp (original)
+++ cfe/trunk/lib/ASTMatchers/Dynamic/VariantValue.cpp Thu Jan 5 12:51:54 2017
@@ -216,18 +216,20 @@ private:
VariantMatcher::VariantMatcher() {}
VariantMatcher VariantMatcher::SingleMatcher(const DynTypedMatcher &Matcher) {
- return VariantMatcher(new SinglePayload(Matcher));
+ return VariantMatcher(std::make_shared<SinglePayload>(Matcher));
}
VariantMatcher
VariantMatcher::PolymorphicMatcher(std::vector<DynTypedMatcher> Matchers) {
- return VariantMatcher(new PolymorphicPayload(std::move(Matchers)));
+ return VariantMatcher(
+ std::make_shared<PolymorphicPayload>(std::move(Matchers)));
}
VariantMatcher VariantMatcher::VariadicOperatorMatcher(
DynTypedMatcher::VariadicOperator Op,
std::vector<VariantMatcher> Args) {
- return VariantMatcher(new VariadicOpPayload(Op, std::move(Args)));
+ return VariantMatcher(
+ std::make_shared<VariadicOpPayload>(Op, std::move(Args)));
}
llvm::Optional<DynTypedMatcher> VariantMatcher::getSingleMatcher() const {
More information about the cfe-commits
mailing list