From 179b7c61ea6769b99f70c80a7a89cbb212423ec2 Mon Sep 17 00:00:00 2001 From: Vladimir Marko Date: Fri, 22 Mar 2019 13:38:57 +0000 Subject: ObjPtr<>-ify String allocations, fix stale refs. ObjPtr<>-ify String allocation functions and related code and remove some unnecessary calls to ObjPtr<>::Ptr(). Fix stale reference uses in reference_table_test and stub_test. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 31113334 Change-Id: I42927fb8b7240e5132188f73318b2ccb218748fd --- runtime/reference_table_test.cc | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'runtime/reference_table_test.cc') diff --git a/runtime/reference_table_test.cc b/runtime/reference_table_test.cc index 2acb2c7a82..e5c1e6aaae 100644 --- a/runtime/reference_table_test.cc +++ b/runtime/reference_table_test.cc @@ -42,7 +42,7 @@ using android::base::StringPrintf; class ReferenceTableTest : public CommonRuntimeTest {}; -static mirror::Object* CreateWeakReference(mirror::Object* referent) +static ObjPtr CreateWeakReference(ObjPtr referent) REQUIRES_SHARED(Locks::mutator_lock_) { Thread* self = Thread::Current(); ClassLinker* class_linker = Runtime::Current()->GetClassLinker(); @@ -77,7 +77,9 @@ static mirror::Object* CreateWeakReference(mirror::Object* referent) TEST_F(ReferenceTableTest, Basics) { ScopedObjectAccess soa(Thread::Current()); - mirror::Object* o1 = mirror::String::AllocFromModifiedUtf8(soa.Self(), "hello"); + StackHandleScope<5u> hs(soa.Self()); + Handle o1 = + hs.NewHandle(mirror::String::AllocFromModifiedUtf8(soa.Self(), "hello")); ReferenceTable rt("test", 0, 11); @@ -89,17 +91,17 @@ TEST_F(ReferenceTableTest, Basics) { EXPECT_EQ(0U, rt.Size()); } - // Check removal of all nullss in a empty table is a no-op. + // Check removal of all nulls in a empty table is a no-op. rt.Remove(nullptr); EXPECT_EQ(0U, rt.Size()); // Check removal of all o1 in a empty table is a no-op. - rt.Remove(o1); + rt.Remove(o1.Get()); EXPECT_EQ(0U, rt.Size()); // Add o1 and check we have 1 element and can dump. { - rt.Add(o1); + rt.Add(o1.Get()); EXPECT_EQ(1U, rt.Size()); std::ostringstream oss; rt.Dump(oss); @@ -108,9 +110,9 @@ TEST_F(ReferenceTableTest, Basics) { } // Add a second object 10 times and check dumping is sane. - ObjPtr o2 = mirror::ShortArray::Alloc(soa.Self(), 0); + Handle o2 = hs.NewHandle(mirror::ShortArray::Alloc(soa.Self(), 0)); for (size_t i = 0; i < 10; ++i) { - rt.Add(o2); + rt.Add(o2.Get()); EXPECT_EQ(i + 2, rt.Size()); std::ostringstream oss; rt.Dump(oss); @@ -129,7 +131,7 @@ TEST_F(ReferenceTableTest, Basics) { // Remove o1 (first element). { - rt.Remove(o1); + rt.Remove(o1.Get()); EXPECT_EQ(10U, rt.Size()); std::ostringstream oss; rt.Dump(oss); @@ -138,7 +140,7 @@ TEST_F(ReferenceTableTest, Basics) { // Remove o2 ten times. for (size_t i = 0; i < 10; ++i) { - rt.Remove(o2); + rt.Remove(o2.Get()); EXPECT_EQ(9 - i, rt.Size()); std::ostringstream oss; rt.Dump(oss); @@ -154,7 +156,7 @@ TEST_F(ReferenceTableTest, Basics) { // Add a reference and check that the type of the referent is dumped. { - mirror::Object* empty_reference = CreateWeakReference(nullptr); + ObjPtr empty_reference = CreateWeakReference(nullptr); ASSERT_TRUE(empty_reference->IsReferenceInstance()); rt.Add(empty_reference); std::ostringstream oss; @@ -165,8 +167,9 @@ TEST_F(ReferenceTableTest, Basics) { } { - mirror::Object* string_referent = mirror::String::AllocFromModifiedUtf8(Thread::Current(), "A"); - mirror::Object* non_empty_reference = CreateWeakReference(string_referent); + ObjPtr string_referent = + mirror::String::AllocFromModifiedUtf8(Thread::Current(), "A"); + ObjPtr non_empty_reference = CreateWeakReference(string_referent); ASSERT_TRUE(non_empty_reference->IsReferenceInstance()); rt.Add(non_empty_reference); std::ostringstream oss; @@ -179,7 +182,6 @@ TEST_F(ReferenceTableTest, Basics) { // Add two objects. Enable allocation tracking for the latter. { - StackHandleScope<3> hs(soa.Self()); Handle h_without_trace(hs.NewHandle( mirror::String::AllocFromModifiedUtf8(soa.Self(), "Without"))); -- cgit v1.2.3-59-g8ed1b