You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by to...@apache.org on 2016/02/23 00:53:08 UTC
[3/3] incubator-kudu git commit: lock_manager: change from
emulated-move to C++11 move
lock_manager: change from emulated-move to C++11 move
Change-Id: I35b06fdfd52006731b5a20b1e15704ab9967385e
Reviewed-on: http://gerrit.cloudera.org:8080/2244
Tested-by: Kudu Jenkins
Reviewed-by: Dan Burkert <da...@cloudera.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kudu/commit/7b157c5c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kudu/tree/7b157c5c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kudu/diff/7b157c5c
Branch: refs/heads/master
Commit: 7b157c5c1b494de41cfbabd35f44eff2bf4bf8c8
Parents: 6737d78
Author: Todd Lipcon <to...@apache.org>
Authored: Thu Feb 18 21:19:44 2016 -0800
Committer: Todd Lipcon <to...@apache.org>
Committed: Mon Feb 22 23:52:16 2016 +0000
----------------------------------------------------------------------
src/kudu/tablet/lock_manager-test.cc | 2 +-
src/kudu/tablet/lock_manager.cc | 8 ++++----
src/kudu/tablet/lock_manager.h | 21 ++++++++++-----------
src/kudu/tablet/tablet.cc | 9 ++++-----
4 files changed, 19 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/7b157c5c/src/kudu/tablet/lock_manager-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/lock_manager-test.cc b/src/kudu/tablet/lock_manager-test.cc
index 28a7a35..4fa098c 100644
--- a/src/kudu/tablet/lock_manager-test.cc
+++ b/src/kudu/tablet/lock_manager-test.cc
@@ -99,7 +99,7 @@ TEST_F(LockManagerTest, TestMoveLock) {
ASSERT_TRUE(row_lock.acquired());
// Move it to a new instance.
- ScopedRowLock moved_lock(row_lock.Pass());
+ ScopedRowLock moved_lock(std::move(row_lock));
ASSERT_TRUE(moved_lock.acquired());
ASSERT_FALSE(row_lock.acquired());
}
http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/7b157c5c/src/kudu/tablet/lock_manager.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/lock_manager.cc b/src/kudu/tablet/lock_manager.cc
index 0f17dfc..d83005f 100644
--- a/src/kudu/tablet/lock_manager.cc
+++ b/src/kudu/tablet/lock_manager.cc
@@ -278,12 +278,12 @@ ScopedRowLock::ScopedRowLock(LockManager *manager,
}
}
-ScopedRowLock::ScopedRowLock(RValue other) {
- TakeState(other.object);
+ScopedRowLock::ScopedRowLock(ScopedRowLock&& other) {
+ TakeState(&other);
}
-ScopedRowLock& ScopedRowLock::operator=(RValue other) {
- TakeState(other.object);
+ScopedRowLock& ScopedRowLock::operator=(ScopedRowLock&& other) {
+ TakeState(&other);
return *this;
}
http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/7b157c5c/src/kudu/tablet/lock_manager.h
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/lock_manager.h b/src/kudu/tablet/lock_manager.h
index 6bfaa67..731a897 100644
--- a/src/kudu/tablet/lock_manager.h
+++ b/src/kudu/tablet/lock_manager.h
@@ -73,26 +73,25 @@ class LockManager {
// }
// // lock is released when the object exits its scope.
//
-// This class emulates C++11 move constructors and thus can be
-// copied by using the special '.Pass()' function. For example:
+// This class implements C++11 move constructors and thus can be
+// transferred around using std::move(). For example:
//
// void DoSomething(ScopedRowLock l) {
// // l owns the lock and will release at the end of this function
// }
// ScopedRowLock my_lock(&manager, ...);
-// DoSomething(l.Pass());
-// CHECK(!l.acquired()); // doesn't own lock anymore, since it Pass()ed
+// DoSomething(std::move(l);
+// CHECK(!l.acquired()); // doesn't own lock anymore, since it moved
class ScopedRowLock {
- MOVE_ONLY_TYPE_FOR_CPP_03(ScopedRowLock, RValue);
public:
// Construct an initially-unlocked lock holder.
// You can later assign this to actually hold a lock using
- // the emulated move-constructor:
+ // the move-constructor:
// ScopedRowLock l;
- // l = ScopedRowLock(...); // use the ctor below
+ // l = ScopedRowLock(...);
// or
- // l = other_row_lock.Pass();
+ // l = std::move(other_row_lock);
ScopedRowLock()
: manager_(NULL),
acquired_(false),
@@ -104,9 +103,9 @@ class ScopedRowLock {
ScopedRowLock(LockManager *manager, const TransactionState* ctx,
const Slice &key, LockManager::LockMode mode);
- // Emulated Move constructor
- ScopedRowLock(RValue other); // NOLINT(runtime/explicit)
- ScopedRowLock& operator=(RValue other);
+ // Move constructor and assignment.
+ ScopedRowLock(ScopedRowLock&& other);
+ ScopedRowLock& operator=(ScopedRowLock&& other);
void Release();
http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/7b157c5c/src/kudu/tablet/tablet.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/tablet.cc b/src/kudu/tablet/tablet.cc
index 88f8417..c2cb4a2 100644
--- a/src/kudu/tablet/tablet.cc
+++ b/src/kudu/tablet/tablet.cc
@@ -327,11 +327,10 @@ Status Tablet::AcquireLockForOp(WriteTransactionState* tx_state, RowOp* op) {
op->key_probe.reset(new tablet::RowSetKeyProbe(row_key));
RETURN_NOT_OK(CheckRowInTablet(row_key));
- ScopedRowLock row_lock(&lock_manager_,
- tx_state,
- op->key_probe->encoded_key_slice(),
- LockManager::LOCK_EXCLUSIVE);
- op->row_lock = row_lock.Pass();
+ op->row_lock = ScopedRowLock(&lock_manager_,
+ tx_state,
+ op->key_probe->encoded_key_slice(),
+ LockManager::LOCK_EXCLUSIVE);
return Status::OK();
}