Reuse SIRT for C++ references
Change-Id: I8310e55da42f55f7ec60f6b17face436c77a979f
diff --git a/src/object_test.cc b/src/object_test.cc
index e5af663..c493126 100644
--- a/src/object_test.cc
+++ b/src/object_test.cc
@@ -27,7 +27,7 @@
utf16_expected[i] = ch;
}
- String* string = String::AllocFromModifiedUtf8(length, utf8_in);
+ SirtRef<String> string(String::AllocFromModifiedUtf8(length, utf8_in));
ASSERT_EQ(length, string->GetLength());
ASSERT_TRUE(string->GetCharArray() != NULL);
ASSERT_TRUE(string->GetCharArray()->GetData() != NULL);
@@ -42,20 +42,22 @@
TEST_F(ObjectTest, IsInSamePackage) {
// Matches
- EXPECT_TRUE(Class::IsInSamePackage(String::AllocFromModifiedUtf8("Ljava/lang/Object;"),
- String::AllocFromModifiedUtf8("Ljava/lang/Class")));
- EXPECT_TRUE(Class::IsInSamePackage(String::AllocFromModifiedUtf8("LFoo;"),
- String::AllocFromModifiedUtf8("LBar;")));
+ SirtRef<String> Object_descriptor(String::AllocFromModifiedUtf8("Ljava/lang/Object;"));
+ SirtRef<String> Class_descriptor(String::AllocFromModifiedUtf8("Ljava/lang/Class;"));
+ EXPECT_TRUE(Class::IsInSamePackage(Object_descriptor.get(), Class_descriptor.get()));
+ SirtRef<String> Foo_descriptor(String::AllocFromModifiedUtf8("LFoo;"));
+ SirtRef<String> Bar_descriptor(String::AllocFromModifiedUtf8("LBar;"));
+ EXPECT_TRUE(Class::IsInSamePackage(Foo_descriptor.get(), Bar_descriptor.get()));
// Mismatches
- EXPECT_FALSE(Class::IsInSamePackage(String::AllocFromModifiedUtf8("Ljava/lang/Object;"),
- String::AllocFromModifiedUtf8("Ljava/io/File;")));
- EXPECT_FALSE(Class::IsInSamePackage(String::AllocFromModifiedUtf8("Ljava/lang/Object;"),
- String::AllocFromModifiedUtf8("Ljava/lang/reflect/Method;")));
+ SirtRef<String> File_descriptor(String::AllocFromModifiedUtf8("Ljava/io/File;"));
+ EXPECT_FALSE(Class::IsInSamePackage(Object_descriptor.get(), File_descriptor.get()));
+ SirtRef<String> Method_descriptor(String::AllocFromModifiedUtf8("Ljava/lang/reflect/Method;"));
+ EXPECT_FALSE(Class::IsInSamePackage(Object_descriptor.get(), Method_descriptor.get()));
}
TEST_F(ObjectTest, Clone) {
- ObjectArray<Object>* a1 = class_linker_->AllocObjectArray<Object>(256);
+ SirtRef<ObjectArray<Object> > a1(class_linker_->AllocObjectArray<Object>(256));
size_t s1 = a1->SizeOf();
Object* clone = a1->Clone();
EXPECT_EQ(s1, clone->SizeOf());
@@ -63,16 +65,16 @@
}
TEST_F(ObjectTest, AllocObjectArray) {
- ObjectArray<Object>* oa = class_linker_->AllocObjectArray<Object>(2);
+ SirtRef<ObjectArray<Object> > oa(class_linker_->AllocObjectArray<Object>(2));
EXPECT_EQ(2, oa->GetLength());
EXPECT_TRUE(oa->Get(0) == NULL);
EXPECT_TRUE(oa->Get(1) == NULL);
- oa->Set(0, oa);
- EXPECT_TRUE(oa->Get(0) == oa);
+ oa->Set(0, oa.get());
+ EXPECT_TRUE(oa->Get(0) == oa.get());
EXPECT_TRUE(oa->Get(1) == NULL);
- oa->Set(1, oa);
- EXPECT_TRUE(oa->Get(0) == oa);
- EXPECT_TRUE(oa->Get(1) == oa);
+ oa->Set(1, oa.get());
+ EXPECT_TRUE(oa->Get(0) == oa.get());
+ EXPECT_TRUE(oa->Get(1) == oa.get());
Thread* self = Thread::Current();
Class* aioobe = class_linker_->FindSystemClass("Ljava/lang/ArrayIndexOutOfBoundsException;");
@@ -97,15 +99,15 @@
TEST_F(ObjectTest, AllocArray) {
Class* c = class_linker_->FindSystemClass("[I");
- Array* a = Array::Alloc(c, 1);
+ SirtRef<Array> a(Array::Alloc(c, 1));
ASSERT_TRUE(c == a->GetClass());
c = class_linker_->FindSystemClass("[Ljava/lang/Object;");
- a = Array::Alloc(c, 1);
+ a.reset(Array::Alloc(c, 1));
ASSERT_TRUE(c == a->GetClass());
c = class_linker_->FindSystemClass("[[Ljava/lang/Object;");
- a = Array::Alloc(c, 1);
+ a.reset(Array::Alloc(c, 1));
ASSERT_TRUE(c == a->GetClass());
}
@@ -177,20 +179,20 @@
TEST_F(ObjectTest, StaticFieldFromCode) {
// pretend we are trying to access 'Static.s0' from StaticsFromCode.<clinit>
- const ClassLoader* class_loader = LoadDex("StaticsFromCode");
- const DexFile* dex_file = ClassLoader::GetCompileTimeClassPath(class_loader)[0];
+ SirtRef<ClassLoader> class_loader(LoadDex("StaticsFromCode"));
+ const DexFile* dex_file = ClassLoader::GetCompileTimeClassPath(class_loader.get())[0];
CHECK(dex_file != NULL);
- Class* klass = class_linker_->FindClass("LStaticsFromCode;", class_loader);
+ Class* klass = class_linker_->FindClass("LStaticsFromCode;", class_loader.get());
Method* clinit = klass->FindDirectMethod("<clinit>", "()V");
uint32_t field_idx = FindFieldIdxByDescriptorAndName(*dex_file, "LStaticsFromCode;", "s0");
Field* field = FindFieldFromCode(field_idx, clinit, true);
Object* s0 = field->GetObj(NULL);
EXPECT_EQ(NULL, s0);
- CharArray* char_array = CharArray::Alloc(0);
- field->SetObj(NULL, char_array);
- EXPECT_EQ(char_array, field->GetObj(NULL));
+ SirtRef<CharArray> char_array(CharArray::Alloc(0));
+ field->SetObj(NULL, char_array.get());
+ EXPECT_EQ(char_array.get(), field->GetObj(NULL));
field->SetObj(NULL, NULL);
EXPECT_EQ(NULL, field->GetObj(NULL));
@@ -222,7 +224,7 @@
}
TEST_F(ObjectTest, StringEqualsUtf8) {
- String* string = String::AllocFromModifiedUtf8("android");
+ SirtRef<String> string(String::AllocFromModifiedUtf8("android"));
EXPECT_TRUE(string->Equals("android"));
EXPECT_FALSE(string->Equals("Android"));
EXPECT_FALSE(string->Equals("ANDROID"));
@@ -230,21 +232,22 @@
EXPECT_FALSE(string->Equals("and"));
EXPECT_FALSE(string->Equals("androids"));
- String* empty = String::AllocFromModifiedUtf8("");
+ SirtRef<String> empty(String::AllocFromModifiedUtf8(""));
EXPECT_TRUE(empty->Equals(""));
EXPECT_FALSE(empty->Equals("a"));
}
TEST_F(ObjectTest, StringEquals) {
- String* string = String::AllocFromModifiedUtf8("android");
- EXPECT_TRUE(string->Equals(String::AllocFromModifiedUtf8("android")));
+ SirtRef<String> string(String::AllocFromModifiedUtf8("android"));
+ SirtRef<String> string_2(String::AllocFromModifiedUtf8("android"));
+ EXPECT_TRUE(string->Equals(string_2.get()));
EXPECT_FALSE(string->Equals("Android"));
EXPECT_FALSE(string->Equals("ANDROID"));
EXPECT_FALSE(string->Equals(""));
EXPECT_FALSE(string->Equals("and"));
EXPECT_FALSE(string->Equals("androids"));
- String* empty = String::AllocFromModifiedUtf8("");
+ SirtRef<String> empty(String::AllocFromModifiedUtf8(""));
EXPECT_TRUE(empty->Equals(""));
EXPECT_FALSE(empty->Equals("a"));
}
@@ -252,12 +255,12 @@
TEST_F(ObjectTest, DescriptorCompare) {
ClassLinker* linker = class_linker_;
- const ClassLoader* class_loader_1 = LoadDex("ProtoCompare");
- const ClassLoader* class_loader_2 = LoadDex("ProtoCompare2");
+ SirtRef<ClassLoader> class_loader_1(LoadDex("ProtoCompare"));
+ SirtRef<ClassLoader> class_loader_2(LoadDex("ProtoCompare2"));
- Class* klass1 = linker->FindClass("LProtoCompare;", class_loader_1);
+ Class* klass1 = linker->FindClass("LProtoCompare;", class_loader_1.get());
ASSERT_TRUE(klass1 != NULL);
- Class* klass2 = linker->FindClass("LProtoCompare2;", class_loader_2);
+ Class* klass2 = linker->FindClass("LProtoCompare2;", class_loader_2.get());
ASSERT_TRUE(klass2 != NULL);
Method* m1_1 = klass1->GetVirtualMethod(0);
@@ -293,22 +296,26 @@
TEST_F(ObjectTest, StringHashCode) {
- EXPECT_EQ(0, String::AllocFromModifiedUtf8("")->GetHashCode());
- EXPECT_EQ(65, String::AllocFromModifiedUtf8("A")->GetHashCode());
- EXPECT_EQ(64578, String::AllocFromModifiedUtf8("ABC")->GetHashCode());
+ SirtRef<String> empty(String::AllocFromModifiedUtf8(""));
+ SirtRef<String> A(String::AllocFromModifiedUtf8("A"));
+ SirtRef<String> ABC(String::AllocFromModifiedUtf8("ABC"));
+
+ EXPECT_EQ(0, empty->GetHashCode());
+ EXPECT_EQ(65, A->GetHashCode());
+ EXPECT_EQ(64578, ABC->GetHashCode());
}
TEST_F(ObjectTest, InstanceOf) {
- const ClassLoader* class_loader = LoadDex("XandY");
- Class* X = class_linker_->FindClass("LX;", class_loader);
- Class* Y = class_linker_->FindClass("LY;", class_loader);
+ SirtRef<ClassLoader> class_loader(LoadDex("XandY"));
+ Class* X = class_linker_->FindClass("LX;", class_loader.get());
+ Class* Y = class_linker_->FindClass("LY;", class_loader.get());
ASSERT_TRUE(X != NULL);
ASSERT_TRUE(Y != NULL);
- Object* x = X->AllocObject();
- Object* y = Y->AllocObject();
- ASSERT_TRUE(x != NULL);
- ASSERT_TRUE(y != NULL);
+ SirtRef<Object> x(X->AllocObject());
+ SirtRef<Object> y(Y->AllocObject());
+ ASSERT_TRUE(x.get() != NULL);
+ ASSERT_TRUE(y.get() != NULL);
EXPECT_EQ(1U, IsAssignableFromCode(X, x->GetClass()));
EXPECT_EQ(0U, IsAssignableFromCode(Y, x->GetClass()));
@@ -335,9 +342,9 @@
}
TEST_F(ObjectTest, IsAssignableFrom) {
- const ClassLoader* class_loader = LoadDex("XandY");
- Class* X = class_linker_->FindClass("LX;", class_loader);
- Class* Y = class_linker_->FindClass("LY;", class_loader);
+ SirtRef<ClassLoader> class_loader(LoadDex("XandY"));
+ Class* X = class_linker_->FindClass("LX;", class_loader.get());
+ Class* Y = class_linker_->FindClass("LY;", class_loader.get());
EXPECT_TRUE(X->IsAssignableFrom(X));
EXPECT_TRUE(X->IsAssignableFrom(Y));
@@ -346,18 +353,18 @@
}
TEST_F(ObjectTest, IsAssignableFromArray) {
- const ClassLoader* class_loader = LoadDex("XandY");
- Class* X = class_linker_->FindClass("LX;", class_loader);
- Class* Y = class_linker_->FindClass("LY;", class_loader);
+ SirtRef<ClassLoader> class_loader(LoadDex("XandY"));
+ Class* X = class_linker_->FindClass("LX;", class_loader.get());
+ Class* Y = class_linker_->FindClass("LY;", class_loader.get());
ASSERT_TRUE(X != NULL);
ASSERT_TRUE(Y != NULL);
- Class* YA = class_linker_->FindClass("[LY;", class_loader);
- Class* YAA = class_linker_->FindClass("[[LY;", class_loader);
+ Class* YA = class_linker_->FindClass("[LY;", class_loader.get());
+ Class* YAA = class_linker_->FindClass("[[LY;", class_loader.get());
ASSERT_TRUE(YA != NULL);
ASSERT_TRUE(YAA != NULL);
- Class* XAA = class_linker_->FindClass("[[LX;", class_loader);
+ Class* XAA = class_linker_->FindClass("[[LX;", class_loader.get());
ASSERT_TRUE(XAA != NULL);
Class* O = class_linker_->FindSystemClass("Ljava/lang/Object;");
@@ -397,8 +404,8 @@
}
TEST_F(ObjectTest, FindInstanceField) {
- String* s = String::AllocFromModifiedUtf8("ABC");
- ASSERT_TRUE(s != NULL);
+ SirtRef<String> s(String::AllocFromModifiedUtf8("ABC"));
+ ASSERT_TRUE(s.get() != NULL);
Class* c = s->GetClass();
ASSERT_TRUE(c != NULL);
@@ -429,8 +436,8 @@
}
TEST_F(ObjectTest, FindStaticField) {
- String* s = String::AllocFromModifiedUtf8("ABC");
- ASSERT_TRUE(s != NULL);
+ SirtRef<String> s(String::AllocFromModifiedUtf8("ABC"));
+ ASSERT_TRUE(s.get() != NULL);
Class* c = s->GetClass();
ASSERT_TRUE(c != NULL);