summaryrefslogtreecommitdiffstats
path: root/runtime/transaction_test.cc
diff options
context:
space:
mode:
authorHiroshi Yamauchi <yamauchi@google.com>2015-02-09 17:11:42 -0800
committerHiroshi Yamauchi <yamauchi@google.com>2015-03-03 17:33:18 -0800
commite15ea086439b41a805d164d2beb07b4ba96aaa97 (patch)
tree465ee3780acd8b7cb35c8a7f42a1f3c5df3d26ec /runtime/transaction_test.cc
parent0b25c71ac93fb10c484dbacb9e23db505a8e2353 (diff)
downloadart-e15ea086439b41a805d164d2beb07b4ba96aaa97.tar.gz
art-e15ea086439b41a805d164d2beb07b4ba96aaa97.tar.bz2
art-e15ea086439b41a805d164d2beb07b4ba96aaa97.zip
Reserve bits in the lock word for read barriers.
This prepares for the CC collector to use the standard object header model by storing the read barrier state in the lock word. Bug: 19355854 Bug: 12687968 Change-Id: Ia7585662dd2cebf0479a3e74f734afe5059fb70f
Diffstat (limited to 'runtime/transaction_test.cc')
-rw-r--r--runtime/transaction_test.cc16
1 files changed, 8 insertions, 8 deletions
diff --git a/runtime/transaction_test.cc b/runtime/transaction_test.cc
index b80fe22cd5..5db51c8e93 100644
--- a/runtime/transaction_test.cc
+++ b/runtime/transaction_test.cc
@@ -63,7 +63,7 @@ class TransactionTest : public CommonRuntimeTest {
ASSERT_TRUE(h_klass->IsVerified());
mirror::Class::Status old_status = h_klass->GetStatus();
- uint32_t old_lock_word = h_klass->GetLockWord(false).GetValue();
+ LockWord old_lock_word = h_klass->GetLockWord(false);
Transaction transaction;
Runtime::Current()->EnterTransactionMode(&transaction);
@@ -75,8 +75,8 @@ class TransactionTest : public CommonRuntimeTest {
ASSERT_TRUE(transaction.IsAborted());
// Check class's monitor get back to its original state without rolling back changes.
- uint32_t new_lock_word = h_klass->GetLockWord(false).GetValue();
- EXPECT_EQ(old_lock_word, new_lock_word);
+ LockWord new_lock_word = h_klass->GetLockWord(false);
+ EXPECT_TRUE(LockWord::Equal<false>(old_lock_word, new_lock_word));
// Check class status is rolled back properly.
soa.Self()->ClearException();
@@ -118,20 +118,20 @@ TEST_F(TransactionTest, Object_monitor) {
// Lock object's monitor outside the transaction.
h_obj->MonitorEnter(soa.Self());
- uint32_t old_lock_word = h_obj->GetLockWord(false).GetValue();
+ LockWord old_lock_word = h_obj->GetLockWord(false);
Transaction transaction;
Runtime::Current()->EnterTransactionMode(&transaction);
// Unlock object's monitor inside the transaction.
h_obj->MonitorExit(soa.Self());
- uint32_t new_lock_word = h_obj->GetLockWord(false).GetValue();
+ LockWord new_lock_word = h_obj->GetLockWord(false);
Runtime::Current()->ExitTransactionMode();
// Rolling back transaction's changes must not change monitor's state.
transaction.Rollback();
- uint32_t aborted_lock_word = h_obj->GetLockWord(false).GetValue();
- EXPECT_NE(old_lock_word, new_lock_word);
- EXPECT_EQ(aborted_lock_word, new_lock_word);
+ LockWord aborted_lock_word = h_obj->GetLockWord(false);
+ EXPECT_FALSE(LockWord::Equal<false>(old_lock_word, new_lock_word));
+ EXPECT_TRUE(LockWord::Equal<false>(aborted_lock_word, new_lock_word));
}
// Tests array's length is preserved after transaction rollback.