Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(144)

Unified Diff: sandbox/linux/bpf_dsl/bpf_dsl.cc

Issue 1892783002: bpf_dsl: replace scoped_refptr with std::shared_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix asan build Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sandbox/linux/bpf_dsl/bpf_dsl.h ('k') | sandbox/linux/bpf_dsl/bpf_dsl_forward.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sandbox/linux/bpf_dsl/bpf_dsl.cc
diff --git a/sandbox/linux/bpf_dsl/bpf_dsl.cc b/sandbox/linux/bpf_dsl/bpf_dsl.cc
index 3330c4774052516f78329b036125c232825ad2da..fed6368db67955a3db7d8366a1ddd4f6e759db9f 100644
--- a/sandbox/linux/bpf_dsl/bpf_dsl.cc
+++ b/sandbox/linux/bpf_dsl/bpf_dsl.cc
@@ -11,7 +11,6 @@
#include "base/logging.h"
#include "base/macros.h"
-#include "base/memory/ref_counted.h"
#include "sandbox/linux/bpf_dsl/bpf_dsl_impl.h"
#include "sandbox/linux/bpf_dsl/errorcode.h"
#include "sandbox/linux/bpf_dsl/policy_compiler.h"
@@ -24,6 +23,7 @@ namespace {
class ReturnResultExprImpl : public internal::ResultExprImpl {
public:
explicit ReturnResultExprImpl(uint32_t ret) : ret_(ret) {}
+ ~ReturnResultExprImpl() override {}
CodeGen::Node Compile(PolicyCompiler* pc) const override {
return pc->Return(ret_);
@@ -36,8 +36,6 @@ class ReturnResultExprImpl : public internal::ResultExprImpl {
}
private:
- ~ReturnResultExprImpl() override {}
-
bool IsAction(uint32_t action) const {
return (ret_ & SECCOMP_RET_ACTION) == action;
}
@@ -53,6 +51,7 @@ class TrapResultExprImpl : public internal::ResultExprImpl {
: func_(func), arg_(arg), safe_(safe) {
DCHECK(func_);
}
+ ~TrapResultExprImpl() override {}
CodeGen::Node Compile(PolicyCompiler* pc) const override {
return pc->Trap(func_, arg_, safe_);
@@ -63,8 +62,6 @@ class TrapResultExprImpl : public internal::ResultExprImpl {
bool IsDeny() const override { return true; }
private:
- ~TrapResultExprImpl() override {}
-
TrapRegistry::TrapFnc func_;
const void* arg_;
bool safe_;
@@ -74,10 +71,13 @@ class TrapResultExprImpl : public internal::ResultExprImpl {
class IfThenResultExprImpl : public internal::ResultExprImpl {
public:
- IfThenResultExprImpl(const BoolExpr& cond,
- const ResultExpr& then_result,
- const ResultExpr& else_result)
- : cond_(cond), then_result_(then_result), else_result_(else_result) {}
+ IfThenResultExprImpl(BoolExpr cond,
+ ResultExpr then_result,
+ ResultExpr else_result)
+ : cond_(std::move(cond)),
+ then_result_(std::move(then_result)),
+ else_result_(std::move(else_result)) {}
+ ~IfThenResultExprImpl() override {}
CodeGen::Node Compile(PolicyCompiler* pc) const override {
// We compile the "then" and "else" expressions in separate statements so
@@ -92,8 +92,6 @@ class IfThenResultExprImpl : public internal::ResultExprImpl {
}
private:
- ~IfThenResultExprImpl() override {}
-
BoolExpr cond_;
ResultExpr then_result_;
ResultExpr else_result_;
@@ -104,6 +102,7 @@ class IfThenResultExprImpl : public internal::ResultExprImpl {
class ConstBoolExprImpl : public internal::BoolExprImpl {
public:
ConstBoolExprImpl(bool value) : value_(value) {}
+ ~ConstBoolExprImpl() override {}
CodeGen::Node Compile(PolicyCompiler* pc,
CodeGen::Node then_node,
@@ -112,8 +111,6 @@ class ConstBoolExprImpl : public internal::BoolExprImpl {
}
private:
- ~ConstBoolExprImpl() override {}
-
bool value_;
DISALLOW_COPY_AND_ASSIGN(ConstBoolExprImpl);
@@ -126,6 +123,7 @@ class MaskedEqualBoolExprImpl : public internal::BoolExprImpl {
uint64_t mask,
uint64_t value)
: argno_(argno), width_(width), mask_(mask), value_(value) {}
+ ~MaskedEqualBoolExprImpl() override {}
CodeGen::Node Compile(PolicyCompiler* pc,
CodeGen::Node then_node,
@@ -134,8 +132,6 @@ class MaskedEqualBoolExprImpl : public internal::BoolExprImpl {
}
private:
- ~MaskedEqualBoolExprImpl() override {}
-
int argno_;
size_t width_;
uint64_t mask_;
@@ -146,7 +142,8 @@ class MaskedEqualBoolExprImpl : public internal::BoolExprImpl {
class NegateBoolExprImpl : public internal::BoolExprImpl {
public:
- explicit NegateBoolExprImpl(const BoolExpr& cond) : cond_(cond) {}
+ explicit NegateBoolExprImpl(BoolExpr cond) : cond_(std::move(cond)) {}
+ ~NegateBoolExprImpl() override {}
CodeGen::Node Compile(PolicyCompiler* pc,
CodeGen::Node then_node,
@@ -155,8 +152,6 @@ class NegateBoolExprImpl : public internal::BoolExprImpl {
}
private:
- ~NegateBoolExprImpl() override {}
-
BoolExpr cond_;
DISALLOW_COPY_AND_ASSIGN(NegateBoolExprImpl);
@@ -164,8 +159,9 @@ class NegateBoolExprImpl : public internal::BoolExprImpl {
class AndBoolExprImpl : public internal::BoolExprImpl {
public:
- AndBoolExprImpl(const BoolExpr& lhs, const BoolExpr& rhs)
- : lhs_(lhs), rhs_(rhs) {}
+ AndBoolExprImpl(BoolExpr lhs, BoolExpr rhs)
+ : lhs_(std::move(lhs)), rhs_(std::move(rhs)) {}
+ ~AndBoolExprImpl() override {}
CodeGen::Node Compile(PolicyCompiler* pc,
CodeGen::Node then_node,
@@ -175,8 +171,6 @@ class AndBoolExprImpl : public internal::BoolExprImpl {
}
private:
- ~AndBoolExprImpl() override {}
-
BoolExpr lhs_;
BoolExpr rhs_;
@@ -185,8 +179,9 @@ class AndBoolExprImpl : public internal::BoolExprImpl {
class OrBoolExprImpl : public internal::BoolExprImpl {
public:
- OrBoolExprImpl(const BoolExpr& lhs, const BoolExpr& rhs)
- : lhs_(lhs), rhs_(rhs) {}
+ OrBoolExprImpl(BoolExpr lhs, BoolExpr rhs)
+ : lhs_(std::move(lhs)), rhs_(std::move(rhs)) {}
+ ~OrBoolExprImpl() override {}
CodeGen::Node Compile(PolicyCompiler* pc,
CodeGen::Node then_node,
@@ -196,8 +191,6 @@ class OrBoolExprImpl : public internal::BoolExprImpl {
}
private:
- ~OrBoolExprImpl() override {}
-
BoolExpr lhs_;
BoolExpr rhs_;
@@ -237,64 +230,63 @@ BoolExpr ArgEq(int num, size_t size, uint64_t mask, uint64_t val) {
// accordingly.
CHECK(size == 4 || size == 8);
- return BoolExpr(new const MaskedEqualBoolExprImpl(num, size, mask, val));
+ return std::make_shared<MaskedEqualBoolExprImpl>(num, size, mask, val);
}
} // namespace internal
ResultExpr Allow() {
- return ResultExpr(new const ReturnResultExprImpl(SECCOMP_RET_ALLOW));
+ return std::make_shared<ReturnResultExprImpl>(SECCOMP_RET_ALLOW);
}
ResultExpr Error(int err) {
CHECK(err >= ErrorCode::ERR_MIN_ERRNO && err <= ErrorCode::ERR_MAX_ERRNO);
- return ResultExpr(new const ReturnResultExprImpl(SECCOMP_RET_ERRNO + err));
+ return std::make_shared<ReturnResultExprImpl>(SECCOMP_RET_ERRNO + err);
}
ResultExpr Kill() {
- return ResultExpr(new const ReturnResultExprImpl(SECCOMP_RET_KILL));
+ return std::make_shared<ReturnResultExprImpl>(SECCOMP_RET_KILL);
}
ResultExpr Trace(uint16_t aux) {
- return ResultExpr(new const ReturnResultExprImpl(SECCOMP_RET_TRACE + aux));
+ return std::make_shared<ReturnResultExprImpl>(SECCOMP_RET_TRACE + aux);
}
ResultExpr Trap(TrapRegistry::TrapFnc trap_func, const void* aux) {
- return ResultExpr(
- new const TrapResultExprImpl(trap_func, aux, true /* safe */));
+ return std::make_shared<TrapResultExprImpl>(trap_func, aux, true /* safe */);
}
ResultExpr UnsafeTrap(TrapRegistry::TrapFnc trap_func, const void* aux) {
- return ResultExpr(
- new const TrapResultExprImpl(trap_func, aux, false /* unsafe */));
+ return std::make_shared<TrapResultExprImpl>(trap_func, aux,
+ false /* unsafe */);
}
BoolExpr BoolConst(bool value) {
- return BoolExpr(new const ConstBoolExprImpl(value));
+ return std::make_shared<ConstBoolExprImpl>(value);
}
-BoolExpr Not(const BoolExpr& cond) {
- return BoolExpr(new const NegateBoolExprImpl(cond));
+BoolExpr Not(BoolExpr cond) {
+ return std::make_shared<NegateBoolExprImpl>(std::move(cond));
}
BoolExpr AllOf() {
return BoolConst(true);
}
-BoolExpr AllOf(const BoolExpr& lhs, const BoolExpr& rhs) {
- return BoolExpr(new const AndBoolExprImpl(lhs, rhs));
+BoolExpr AllOf(BoolExpr lhs, BoolExpr rhs) {
+ return std::make_shared<AndBoolExprImpl>(std::move(lhs), std::move(rhs));
}
BoolExpr AnyOf() {
return BoolConst(false);
}
-BoolExpr AnyOf(const BoolExpr& lhs, const BoolExpr& rhs) {
- return BoolExpr(new const OrBoolExprImpl(lhs, rhs));
+BoolExpr AnyOf(BoolExpr lhs, BoolExpr rhs) {
+ return std::make_shared<OrBoolExprImpl>(std::move(lhs), std::move(rhs));
}
-Elser If(const BoolExpr& cond, const ResultExpr& then_result) {
- return Elser(nullptr).ElseIf(cond, then_result);
+Elser If(BoolExpr cond, ResultExpr then_result) {
+ return Elser(nullptr).ElseIf(std::move(cond), std::move(then_result));
}
Elser::Elser(cons::List<Clause> clause_list) : clause_list_(clause_list) {
@@ -306,11 +298,12 @@ Elser::Elser(const Elser& elser) : clause_list_(elser.clause_list_) {
Elser::~Elser() {
}
-Elser Elser::ElseIf(const BoolExpr& cond, const ResultExpr& then_result) const {
- return Elser(Cons(std::make_pair(cond, then_result), clause_list_));
+Elser Elser::ElseIf(BoolExpr cond, ResultExpr then_result) const {
+ return Elser(Cons(std::make_pair(std::move(cond), std::move(then_result)),
+ clause_list_));
}
-ResultExpr Elser::Else(const ResultExpr& else_result) const {
+ResultExpr Elser::Else(ResultExpr else_result) const {
// We finally have the default result expression for this
// if/then/else sequence. Also, we've already accumulated all
// if/then pairs into a list of reverse order (i.e., lower priority
@@ -333,10 +326,10 @@ ResultExpr Elser::Else(const ResultExpr& else_result) const {
//
// and end up with an appropriately chained tree.
- ResultExpr expr = else_result;
+ ResultExpr expr = std::move(else_result);
for (const Clause& clause : clause_list_) {
- expr = ResultExpr(
- new const IfThenResultExprImpl(clause.first, clause.second, expr));
+ expr = std::make_shared<IfThenResultExprImpl>(clause.first, clause.second,
+ std::move(expr));
}
return expr;
}
@@ -344,5 +337,7 @@ ResultExpr Elser::Else(const ResultExpr& else_result) const {
} // namespace bpf_dsl
} // namespace sandbox
-template class scoped_refptr<const sandbox::bpf_dsl::internal::BoolExprImpl>;
-template class scoped_refptr<const sandbox::bpf_dsl::internal::ResultExprImpl>;
+namespace std {
+template class shared_ptr<const sandbox::bpf_dsl::internal::BoolExprImpl>;
+template class shared_ptr<const sandbox::bpf_dsl::internal::ResultExprImpl>;
+} // namespace std
« no previous file with comments | « sandbox/linux/bpf_dsl/bpf_dsl.h ('k') | sandbox/linux/bpf_dsl/bpf_dsl_forward.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698