From 1cc62e4ea24828fdb3f3da0b8603f0b107d09a04 Mon Sep 17 00:00:00 2001 From: Mathieu Chartier Date: Mon, 3 Oct 2016 18:01:28 -0700 Subject: [PATCH] Rename ObjPtr::Decode to ObjPtr::Ptr Done to prevent ambiguity with ScopedObjectAccess::Decode. Bug: 31113334 Test: test-art-host Change-Id: I07a2497cc9cf66386311798933547471987fc316 --- benchmark/jobject-benchmark/jobject_benchmark.cc | 4 +-- compiler/driver/compiler_driver-inl.h | 6 ++--- compiler/image_writer.cc | 4 +-- compiler/jni/jni_compiler_test.cc | 2 +- compiler/oat_test.cc | 2 +- compiler/optimizing/reference_type_propagation.cc | 2 +- dex2oat/dex2oat.cc | 2 +- oatdump/oatdump.cc | 4 +-- patchoat/patchoat.cc | 2 +- runtime/art_field-inl.h | 6 ++--- runtime/check_jni.cc | 14 +++++----- runtime/class_linker.cc | 18 ++++++------- runtime/class_linker_test.cc | 2 +- runtime/common_runtime_test.cc | 4 +-- runtime/common_runtime_test.h | 8 +++--- runtime/debugger.cc | 2 +- runtime/dex_file_annotations.cc | 8 +++--- runtime/entrypoints/entrypoint_utils.cc | 4 +-- .../entrypoints/quick/quick_field_entrypoints.cc | 8 +++--- .../quick/quick_trampoline_entrypoints.cc | 4 +-- runtime/gc/heap.cc | 8 +++--- runtime/gc_root-inl.h | 2 +- runtime/handle.h | 2 +- runtime/handle_scope-inl.h | 4 +-- runtime/interpreter/interpreter.cc | 8 +++--- runtime/interpreter/interpreter_common.cc | 8 +++--- runtime/interpreter/unstarted_runtime.cc | 4 +-- runtime/java_vm_ext.cc | 8 +++--- runtime/jni_internal.cc | 30 +++++++++++----------- runtime/mirror/class-inl.h | 6 ++--- runtime/mirror/field-inl.h | 2 +- runtime/mirror/object_test.cc | 8 +++--- runtime/native/dalvik_system_DexFile.cc | 2 +- ...dalvik_system_InMemoryDexClassLoader_DexData.cc | 2 +- runtime/native/dalvik_system_VMDebug.cc | 2 +- runtime/native/dalvik_system_VMRuntime.cc | 6 ++--- runtime/native/java_lang_Class.cc | 12 ++++----- runtime/native/java_lang_DexCache.cc | 4 +-- runtime/native/java_lang_String.cc | 2 +- runtime/native/java_lang_System.cc | 4 +-- runtime/native/java_lang_Thread.cc | 4 +-- runtime/native/java_lang_VMClassLoader.cc | 2 +- runtime/native/java_lang_ref_FinalizerReference.cc | 2 +- runtime/native/java_lang_ref_Reference.cc | 2 +- runtime/native/java_lang_reflect_Array.cc | 4 +-- runtime/native/java_lang_reflect_Executable.cc | 2 +- runtime/native/java_lang_reflect_Field.cc | 14 +++++----- runtime/native/sun_misc_Unsafe.cc | 14 +++++----- runtime/obj_ptr-inl.h | 4 +-- runtime/obj_ptr.h | 24 ++++++++--------- runtime/openjdkjvm/OpenjdkJvm.cc | 4 +-- runtime/reflection-inl.h | 2 +- runtime/reflection.cc | 12 ++++----- runtime/runtime.cc | 2 +- runtime/scoped_thread_state_change-inl.h | 2 +- runtime/thread.cc | 8 +++--- runtime/verifier/method_verifier.cc | 6 ++--- runtime/verifier/verifier_deps_test.cc | 2 +- test/1337-gc-coverage/gc_coverage.cc | 2 +- test/148-multithread-gc-annotations/gc_coverage.cc | 2 +- test/454-get-vreg/get_vreg_jni.cc | 2 +- .../get_reference_vreg_jni.cc | 2 +- .../clear_dex_cache.cc | 2 +- test/543-env-long-ref/env_long_ref.cc | 2 +- test/596-app-images/app_images.cc | 2 +- 65 files changed, 177 insertions(+), 177 deletions(-) diff --git a/benchmark/jobject-benchmark/jobject_benchmark.cc b/benchmark/jobject-benchmark/jobject_benchmark.cc index 4b2c02462..de43f7380 100644 --- a/benchmark/jobject-benchmark/jobject_benchmark.cc +++ b/benchmark/jobject-benchmark/jobject_benchmark.cc @@ -29,7 +29,7 @@ extern "C" JNIEXPORT void JNICALL Java_JObjectBenchmark_timeAddRemoveLocal( ObjPtr obj = soa.Decode(jobj); CHECK(obj != nullptr); for (jint i = 0; i < reps; ++i) { - jobject ref = soa.Env()->AddLocalReference(obj.Decode()); + jobject ref = soa.Env()->AddLocalReference(obj.Ptr()); soa.Env()->DeleteLocalRef(ref); } } @@ -39,7 +39,7 @@ extern "C" JNIEXPORT void JNICALL Java_JObjectBenchmark_timeDecodeLocal( ScopedObjectAccess soa(env); ObjPtr obj = soa.Decode(jobj); CHECK(obj != nullptr); - jobject ref = soa.Env()->AddLocalReference(obj.Decode()); + jobject ref = soa.Env()->AddLocalReference(obj.Ptr()); for (jint i = 0; i < reps; ++i) { CHECK_EQ(soa.Decode(ref), obj); } diff --git a/compiler/driver/compiler_driver-inl.h b/compiler/driver/compiler_driver-inl.h index 9efd636d2..d807fcad9 100644 --- a/compiler/driver/compiler_driver-inl.h +++ b/compiler/driver/compiler_driver-inl.h @@ -33,7 +33,7 @@ namespace art { inline mirror::ClassLoader* CompilerDriver::GetClassLoader(const ScopedObjectAccess& soa, const DexCompilationUnit* mUnit) { - return soa.Decode(mUnit->GetClassLoader()).Decode(); + return soa.Decode(mUnit->GetClassLoader()).Ptr(); } inline mirror::Class* CompilerDriver::ResolveClass( @@ -98,7 +98,7 @@ inline std::pair CompilerDriver::IsFastInstanceField( DCHECK(!resolved_field->IsStatic()); ObjPtr fields_class = resolved_field->GetDeclaringClass(); bool fast_get = referrer_class != nullptr && - referrer_class->CanAccessResolvedField(fields_class.Decode(), + referrer_class->CanAccessResolvedField(fields_class.Ptr(), resolved_field, dex_cache, field_idx); @@ -150,7 +150,7 @@ inline std::pair CompilerDriver::IsClassOfStaticMemberAvailableToRef return std::make_pair(true, true); } if (CanAccessResolvedMember( - referrer_class, members_class.Decode(), resolved_member, dex_cache, member_idx)) { + referrer_class, members_class.Ptr(), resolved_member, dex_cache, member_idx)) { // We have the resolved member, we must make it into a index for the referrer // in its static storage (which may fail if it doesn't have a slot for it) // TODO: for images we can elide the static storage base null check diff --git a/compiler/image_writer.cc b/compiler/image_writer.cc index 210943c88..66938b2e0 100644 --- a/compiler/image_writer.cc +++ b/compiler/image_writer.cc @@ -908,7 +908,7 @@ void ImageWriter::PruneNonImageClasses() { ArtField** resolved_fields = dex_cache->GetResolvedFields(); for (size_t i = 0; i < dex_cache->NumResolvedFields(); i++) { ArtField* field = mirror::DexCache::GetElementPtrSize(resolved_fields, i, target_ptr_size_); - if (field != nullptr && !KeepClass(field->GetDeclaringClass().Decode())) { + if (field != nullptr && !KeepClass(field->GetDeclaringClass().Ptr())) { dex_cache->SetResolvedField(i, nullptr, target_ptr_size_); } } @@ -1742,7 +1742,7 @@ void ImageWriter::CopyAndFixupNativeData(size_t oat_index) { case kNativeObjectRelocationTypeArtField: { memcpy(dest, pair.first, sizeof(ArtField)); reinterpret_cast(dest)->SetDeclaringClass( - GetImageAddress(reinterpret_cast(pair.first)->GetDeclaringClass().Decode())); + GetImageAddress(reinterpret_cast(pair.first)->GetDeclaringClass().Ptr())); break; } case kNativeObjectRelocationTypeRuntimeMethod: diff --git a/compiler/jni/jni_compiler_test.cc b/compiler/jni/jni_compiler_test.cc index 19d55a384..dca290c56 100644 --- a/compiler/jni/jni_compiler_test.cc +++ b/compiler/jni/jni_compiler_test.cc @@ -1283,7 +1283,7 @@ jarray Java_MyClassNatives_GetSinkProperties(JNIEnv*, jobject thisObj, jstring s Thread* self = Thread::Current(); ScopedObjectAccess soa(self); - EXPECT_TRUE(self->HoldsLock(soa.Decode(thisObj).Decode())); + EXPECT_TRUE(self->HoldsLock(soa.Decode(thisObj).Ptr())); return nullptr; } diff --git a/compiler/oat_test.cc b/compiler/oat_test.cc index e8bc67d96..9f352ce09 100644 --- a/compiler/oat_test.cc +++ b/compiler/oat_test.cc @@ -498,7 +498,7 @@ TEST_F(OatTest, EmptyTextSection) { for (const DexFile* dex_file : dex_files) { ScopedObjectAccess soa(Thread::Current()); class_linker->RegisterDexFile(*dex_file, - soa.Decode(class_loader).Decode()); + soa.Decode(class_loader).Ptr()); } compiler_driver_->SetDexFilesForOatFile(dex_files); compiler_driver_->CompileAll(class_loader, dex_files, &timings); diff --git a/compiler/optimizing/reference_type_propagation.cc b/compiler/optimizing/reference_type_propagation.cc index 15cebfe71..45a3ce411 100644 --- a/compiler/optimizing/reference_type_propagation.cc +++ b/compiler/optimizing/reference_type_propagation.cc @@ -454,7 +454,7 @@ void ReferenceTypePropagation::RTPVisitor::SetClassAsTypeInfo(HInstruction* inst } instr->SetReferenceTypeInfo( ReferenceTypeInfo::Create(handle_cache_->GetStringClassHandle(), /* is_exact */ true)); - } else if (IsAdmissible(klass.Decode())) { + } else if (IsAdmissible(klass.Ptr())) { ReferenceTypeInfo::TypeHandle handle = handle_cache_->NewHandle(klass); is_exact = is_exact || handle->CannotBeAssignedFromOtherTypes(); instr->SetReferenceTypeInfo(ReferenceTypeInfo::Create(handle, is_exact)); diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc index 1ddf961ad..59c4681c0 100644 --- a/dex2oat/dex2oat.cc +++ b/dex2oat/dex2oat.cc @@ -1566,7 +1566,7 @@ class Dex2Oat FINAL { ScopedObjectAccess soa(self); dex_caches_.push_back(soa.AddLocalReference( class_linker->RegisterDexFile(*dex_file, - soa.Decode(class_loader_).Decode()))); + soa.Decode(class_loader_).Ptr()))); } return true; diff --git a/oatdump/oatdump.cc b/oatdump/oatdump.cc index 4d0dc5696..a5dc5930a 100644 --- a/oatdump/oatdump.cc +++ b/oatdump/oatdump.cc @@ -1702,7 +1702,7 @@ class ImageDumper { mirror::Class* klass = value->AsClass(); os << StringPrintf("%p Class: %s\n", klass, PrettyDescriptor(klass).c_str()); } else { - os << StringPrintf("%p %s\n", value.Decode(), PrettyDescriptor(type).c_str()); + os << StringPrintf("%p %s\n", value.Ptr(), PrettyDescriptor(type).c_str()); } } @@ -1748,7 +1748,7 @@ class ImageDumper { PrettyObjectValue(os, field_type, value); } else { os << StringPrintf("%p %s\n", - value.Decode(), + value.Ptr(), PrettyDescriptor(field->GetTypeDescriptor()).c_str()); } } diff --git a/patchoat/patchoat.cc b/patchoat/patchoat.cc index b259f64d1..f3eb663cb 100644 --- a/patchoat/patchoat.cc +++ b/patchoat/patchoat.cc @@ -505,7 +505,7 @@ class PatchOatArtFieldVisitor : public ArtFieldVisitor { void Visit(ArtField* field) OVERRIDE REQUIRES_SHARED(Locks::mutator_lock_) { ArtField* const dest = patch_oat_->RelocatedCopyOf(field); dest->SetDeclaringClass( - patch_oat_->RelocatedAddressOfPointer(field->GetDeclaringClass().Decode())); + patch_oat_->RelocatedAddressOfPointer(field->GetDeclaringClass().Ptr())); } private: diff --git a/runtime/art_field-inl.h b/runtime/art_field-inl.h index a52c71468..3b24aab6b 100644 --- a/runtime/art_field-inl.h +++ b/runtime/art_field-inl.h @@ -116,9 +116,9 @@ inline void ArtField::SetObj(ObjPtr object, ObjPtrIsStarted()); if (UNLIKELY(IsVolatile())) { - object->SetFieldObjectVolatile(GetOffset(), new_value.Decode()); + object->SetFieldObjectVolatile(GetOffset(), new_value.Ptr()); } else { - object->SetFieldObject(GetOffset(), new_value.Decode()); + object->SetFieldObject(GetOffset(), new_value.Ptr()); } } @@ -339,7 +339,7 @@ inline void ArtField::VisitRoots(RootVisitorType& visitor) { template inline void ArtField::UpdateObjects(const Visitor& visitor) { ObjPtr old_class = DeclaringClassRoot().Read(); - ObjPtr new_class = visitor(old_class.Decode()); + ObjPtr new_class = visitor(old_class.Ptr()); if (old_class != new_class) { SetDeclaringClass(new_class); } diff --git a/runtime/check_jni.cc b/runtime/check_jni.cc index c671b81db..4dc7b317c 100644 --- a/runtime/check_jni.cc +++ b/runtime/check_jni.cc @@ -608,7 +608,7 @@ class ScopedCheck { ObjPtr obj = soa.Decode(jobj); if (!obj->GetClass()->IsThrowableClass()) { AbortF("expected java.lang.Throwable but got object of type " - "%s: %p", PrettyTypeOf(obj).c_str(), obj.Decode()); + "%s: %p", PrettyTypeOf(obj).c_str(), obj.Ptr()); return false; } return true; @@ -619,7 +619,7 @@ class ScopedCheck { ObjPtr c = soa.Decode(jc); if (!c->IsThrowableClass()) { AbortF("expected java.lang.Throwable class but got object of " - "type %s: %p", PrettyDescriptor(c).c_str(), c.Decode()); + "type %s: %p", PrettyDescriptor(c).c_str(), c.Ptr()); return false; } return true; @@ -649,7 +649,7 @@ class ScopedCheck { REQUIRES_SHARED(Locks::mutator_lock_) { ObjPtr c = soa.Decode(jc); if (!c->IsInstantiableNonArray()) { - AbortF("can't make objects of type %s: %p", PrettyDescriptor(c).c_str(), c.Decode()); + AbortF("can't make objects of type %s: %p", PrettyDescriptor(c).c_str(), c.Ptr()); return false; } return true; @@ -772,12 +772,12 @@ class ScopedCheck { okay = false; } else { obj = soa.Vm()->DecodeWeakGlobal(soa.Self(), ref); - okay = Runtime::Current()->IsClearedJniWeakGlobal(obj.Decode()); + okay = Runtime::Current()->IsClearedJniWeakGlobal(obj.Ptr()); } if (!okay) { AbortF("%s is an invalid %s: %p (%p)", what, ToStr(GetIndirectRefKind(java_object)).c_str(), - java_object, obj.Decode()); + java_object, obj.Ptr()); return false; } } @@ -786,7 +786,7 @@ class ScopedCheck { Runtime::Current()->GetHeap()->DumpSpaces(LOG_STREAM(ERROR)); AbortF("%s is an invalid %s: %p (%p)", what, ToStr(GetIndirectRefKind(java_object)).c_str(), - java_object, obj.Decode()); + java_object, obj.Ptr()); return false; } @@ -1112,7 +1112,7 @@ class ScopedCheck { Runtime::Current()->GetHeap()->DumpSpaces(LOG_STREAM(ERROR)); AbortF("jarray is an invalid %s: %p (%p)", ToStr(GetIndirectRefKind(java_array)).c_str(), - java_array, a.Decode()); + java_array, a.Ptr()); return false; } else if (!a->IsArrayInstance()) { AbortF("jarray argument has non-array type: %s", PrettyTypeOf(a).c_str()); diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc index 0d3c0127d..d67e1118b 100644 --- a/runtime/class_linker.cc +++ b/runtime/class_linker.cc @@ -1152,7 +1152,7 @@ static bool FlattenPathClassLoader(mirror::ClassLoader* class_loader, *error_msg = StringPrintf("Null name for dex element at index %d", i); return false; } - out_dex_file_names->push_front(name.Decode()); + out_dex_file_names->push_front(name.Ptr()); } } } @@ -2545,7 +2545,7 @@ mirror::Class* ClassLinker::FindClass(Thread* self, return nullptr; } else { // success, return mirror::Class* - return soa.Decode(result.get()).Decode(); + return soa.Decode(result.get()).Ptr(); } } UNREACHABLE(); @@ -4268,9 +4268,9 @@ mirror::Class* ClassLinker::CreateProxyClass(ScopedObjectAccessAlreadyRunnable& // Set the class access flags incl. VerificationAttempted, so we do not try to set the flag on // the methods. klass->SetAccessFlags(kAccClassIsProxy | kAccPublic | kAccFinal | kAccVerificationAttempted); - klass->SetClassLoader(soa.Decode(loader).Decode()); + klass->SetClassLoader(soa.Decode(loader).Ptr()); DCHECK_EQ(klass->GetPrimitiveType(), Primitive::kPrimNot); - klass->SetName(soa.Decode(name).Decode()); + klass->SetName(soa.Decode(name).Ptr()); klass->SetDexCache(GetClassRoot(kJavaLangReflectProxy)->GetDexCache()); mirror::Class::SetStatus(klass, mirror::Class::kStatusIdx, self); std::string descriptor(GetDescriptorForProxy(klass.Get())); @@ -4363,11 +4363,11 @@ mirror::Class* ClassLinker::CreateProxyClass(ScopedObjectAccessAlreadyRunnable& CHECK_EQ(interfaces_sfield.GetDeclaringClass(), klass.Get()); interfaces_sfield.SetObject( klass.Get(), - soa.Decode>(interfaces).Decode()); + soa.Decode>(interfaces).Ptr()); CHECK_EQ(throws_sfield.GetDeclaringClass(), klass.Get()); throws_sfield.SetObject( klass.Get(), - soa.Decode>>(throws).Decode()); + soa.Decode>>(throws).Ptr()); { // Lock on klass is released. Lock new class object. @@ -4397,9 +4397,9 @@ mirror::Class* ClassLinker::CreateProxyClass(ScopedObjectAccessAlreadyRunnable& CHECK_EQ(PrettyField(klass->GetStaticField(1)), throws_field_name); CHECK_EQ(klass.Get()->GetInterfaces(), - soa.Decode>(interfaces).Decode()); + soa.Decode>(interfaces).Ptr()); CHECK_EQ(klass.Get()->GetThrows(), - soa.Decode>>(throws).Decode()); + soa.Decode>>(throws).Ptr()); } return klass.Get(); } @@ -7655,7 +7655,7 @@ ObjPtr ClassLinker::LookupResolvedType(const DexFile& dex_file, DCHECK(self != nullptr); const size_t hash = ComputeModifiedUtf8Hash(descriptor); // Find the class in the loaded classes table. - type = LookupClass(self, descriptor, hash, class_loader.Decode()); + type = LookupClass(self, descriptor, hash, class_loader.Ptr()); } } if (type != nullptr || type->IsResolved()) { diff --git a/runtime/class_linker_test.cc b/runtime/class_linker_test.cc index 4a926e761..546653960 100644 --- a/runtime/class_linker_test.cc +++ b/runtime/class_linker_test.cc @@ -875,7 +875,7 @@ TEST_F(ClassLinkerTest, LookupResolvedType) { uint32_t type_idx = klass->GetClassDef()->class_idx_; ObjPtr dex_cache = klass->GetDexCache(); const DexFile& dex_file = klass->GetDexFile(); - EXPECT_EQ(dex_cache->GetResolvedType(type_idx), klass.Decode()); + EXPECT_EQ(dex_cache->GetResolvedType(type_idx), klass.Ptr()); EXPECT_OBJ_PTR_EQ( class_linker_->LookupResolvedType(dex_file, type_idx, dex_cache, class_loader.Get()), klass); diff --git a/runtime/common_runtime_test.cc b/runtime/common_runtime_test.cc index ea0719502..84752f03c 100644 --- a/runtime/common_runtime_test.cc +++ b/runtime/common_runtime_test.cc @@ -514,9 +514,9 @@ std::vector CommonRuntimeTestImpl::GetDexFiles(jobject jclass_lo soa.Decode(jclass_loader)); DCHECK_EQ(class_loader->GetClass(), - soa.Decode(WellKnownClasses::dalvik_system_PathClassLoader).Decode()); + soa.Decode(WellKnownClasses::dalvik_system_PathClassLoader).Ptr()); DCHECK_EQ(class_loader->GetParent()->GetClass(), - soa.Decode(WellKnownClasses::java_lang_BootClassLoader).Decode()); + soa.Decode(WellKnownClasses::java_lang_BootClassLoader).Ptr()); // The class loader is a PathClassLoader which inherits from BaseDexClassLoader. // We need to get the DexPathList and loop through it. diff --git a/runtime/common_runtime_test.h b/runtime/common_runtime_test.h index 2158d81b4..92934c624 100644 --- a/runtime/common_runtime_test.h +++ b/runtime/common_runtime_test.h @@ -32,10 +32,10 @@ namespace art { // OBJ pointer helpers to avoid needing .Decode everywhere. -#define EXPECT_OBJ_PTR_EQ(a, b) EXPECT_EQ(MakeObjPtr(a).Decode(), MakeObjPtr(b).Decode()); -#define ASSERT_OBJ_PTR_EQ(a, b) ASSERT_EQ(MakeObjPtr(a).Decode(), MakeObjPtr(b).Decode()); -#define EXPECT_OBJ_PTR_NE(a, b) EXPECT_NE(MakeObjPtr(a).Decode(), MakeObjPtr(b).Decode()); -#define ASSERT_OBJ_PTR_NE(a, b) ASSERT_NE(MakeObjPtr(a).Decode(), MakeObjPtr(b).Decode()); +#define EXPECT_OBJ_PTR_EQ(a, b) EXPECT_EQ(MakeObjPtr(a).Ptr(), MakeObjPtr(b).Ptr()); +#define ASSERT_OBJ_PTR_EQ(a, b) ASSERT_EQ(MakeObjPtr(a).Ptr(), MakeObjPtr(b).Ptr()); +#define EXPECT_OBJ_PTR_NE(a, b) EXPECT_NE(MakeObjPtr(a).Ptr(), MakeObjPtr(b).Ptr()); +#define ASSERT_OBJ_PTR_NE(a, b) ASSERT_NE(MakeObjPtr(a).Ptr(), MakeObjPtr(b).Ptr()); class ClassLinker; class CompilerCallbacks; diff --git a/runtime/debugger.cc b/runtime/debugger.cc index 1bdb0fccd..a7feeef89 100644 --- a/runtime/debugger.cc +++ b/runtime/debugger.cc @@ -1743,7 +1743,7 @@ static JValue GetArtFieldValue(ArtField* f, mirror::Object* o) return field_value; case Primitive::kPrimNot: - field_value.SetL(f->GetObject(o).Decode()); + field_value.SetL(f->GetObject(o).Ptr()); return field_value; case Primitive::kPrimVoid: diff --git a/runtime/dex_file_annotations.cc b/runtime/dex_file_annotations.cc index feb75a829..367603e1f 100644 --- a/runtime/dex_file_annotations.cc +++ b/runtime/dex_file_annotations.cc @@ -255,7 +255,7 @@ mirror::Object* ProcessEncodedAnnotation(Handle klass, const uint } mirror::Class* annotation_member_class = - soa.Decode(WellKnownClasses::libcore_reflect_AnnotationMember).Decode(); + soa.Decode(WellKnownClasses::libcore_reflect_AnnotationMember).Ptr(); mirror::Class* annotation_member_array_class = class_linker->FindArrayClass(self, &annotation_member_class); if (annotation_member_array_class == nullptr) { @@ -572,12 +572,12 @@ bool ProcessAnnotationValue(Handle klass, *annotation_ptr = annotation; if (result_style == DexFile::kAllObjects && primitive_type != Primitive::kPrimVoid) { - element_object = BoxPrimitive(primitive_type, annotation_value->value_).Decode(); + element_object = BoxPrimitive(primitive_type, annotation_value->value_).Ptr(); set_object = true; } if (set_object) { - annotation_value->value_.SetL(element_object.Decode()); + annotation_value->value_.SetL(element_object.Ptr()); } return true; @@ -840,7 +840,7 @@ mirror::ObjectArray* ProcessAnnotationSetRefList( ScopedObjectAccessUnchecked soa(self); StackHandleScope<1> hs(self); mirror::Class* annotation_array_class = - soa.Decode(WellKnownClasses::java_lang_annotation_Annotation__array).Decode(); + soa.Decode(WellKnownClasses::java_lang_annotation_Annotation__array).Ptr(); mirror::Class* annotation_array_array_class = Runtime::Current()->GetClassLinker()->FindArrayClass(self, &annotation_array_class); if (annotation_array_array_class == nullptr) { diff --git a/runtime/entrypoints/entrypoint_utils.cc b/runtime/entrypoints/entrypoint_utils.cc index 38ee468f0..f8deb8f7a 100644 --- a/runtime/entrypoints/entrypoint_utils.cc +++ b/runtime/entrypoints/entrypoint_utils.cc @@ -160,7 +160,7 @@ JValue InvokeProxyInvocationHandler(ScopedObjectAccessAlreadyRunnable& soa, cons } else { JValue jv; jv.SetJ(args.at(i).j); - mirror::Object* val = BoxPrimitive(Primitive::GetType(shorty[i + 1]), jv).Decode(); + mirror::Object* val = BoxPrimitive(Primitive::GetType(shorty[i + 1]), jv).Ptr(); if (val == nullptr) { CHECK(soa.Self()->IsExceptionPending()); return zero; @@ -193,7 +193,7 @@ JValue InvokeProxyInvocationHandler(ScopedObjectAccessAlreadyRunnable& soa, cons mirror::Class* result_type = interface_method->GetReturnType(true /* resolve */, pointer_size); ObjPtr result_ref = soa.Decode(result); JValue result_unboxed; - if (!UnboxPrimitiveForResult(result_ref.Decode(), result_type, &result_unboxed)) { + if (!UnboxPrimitiveForResult(result_ref.Ptr(), result_type, &result_unboxed)) { DCHECK(soa.Self()->IsExceptionPending()); return zero; } diff --git a/runtime/entrypoints/quick/quick_field_entrypoints.cc b/runtime/entrypoints/quick/quick_field_entrypoints.cc index 70eb1de87..6d17000dd 100644 --- a/runtime/entrypoints/quick/quick_field_entrypoints.cc +++ b/runtime/entrypoints/quick/quick_field_entrypoints.cc @@ -151,14 +151,14 @@ extern "C" mirror::Object* artGetObjStaticFromCode(uint32_t field_idx, StaticObjectRead, sizeof(mirror::HeapReference)); if (LIKELY(field != nullptr)) { - return field->GetObj(field->GetDeclaringClass()).Decode(); + return field->GetObj(field->GetDeclaringClass()).Ptr(); } field = FindFieldFromCode(field_idx, referrer, self, sizeof(mirror::HeapReference)); if (LIKELY(field != nullptr)) { - return field->GetObj(field->GetDeclaringClass()).Decode(); + return field->GetObj(field->GetDeclaringClass()).Ptr(); } return nullptr; // Will throw exception by checking with Thread::Current. } @@ -299,7 +299,7 @@ extern "C" mirror::Object* artGetObjInstanceFromCode(uint32_t field_idx, InstanceObjectRead, sizeof(mirror::HeapReference)); if (LIKELY(field != nullptr && obj != nullptr)) { - return field->GetObj(obj).Decode(); + return field->GetObj(obj).Ptr(); } field = FindInstanceField(field_idx, referrer, @@ -307,7 +307,7 @@ extern "C" mirror::Object* artGetObjInstanceFromCode(uint32_t field_idx, sizeof(mirror::HeapReference), &obj); if (LIKELY(field != nullptr)) { - return field->GetObj(obj).Decode(); + return field->GetObj(obj).Ptr(); } return nullptr; // Will throw exception by checking with Thread::Current. } diff --git a/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc b/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc index c52bc8e26..81513eea4 100644 --- a/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc +++ b/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc @@ -834,7 +834,7 @@ void BuildQuickArgumentVisitor::Visit() { void BuildQuickArgumentVisitor::FixupReferences() { // Fixup any references which may have changed. for (const auto& pair : references_) { - pair.second->Assign(soa_->Decode(pair.first).Decode()); + pair.second->Assign(soa_->Decode(pair.first).Ptr()); soa_->Env()->DeleteLocalRef(pair.first); } } @@ -926,7 +926,7 @@ void RememberForGcArgumentVisitor::Visit() { void RememberForGcArgumentVisitor::FixupReferences() { // Fixup any references which may have changed. for (const auto& pair : references_) { - pair.second->Assign(soa_->Decode(pair.first).Decode()); + pair.second->Assign(soa_->Decode(pair.first).Ptr()); soa_->Env()->DeleteLocalRef(pair.first); } } diff --git a/runtime/gc/heap.cc b/runtime/gc/heap.cc index 88e46249b..01ad8d036 100644 --- a/runtime/gc/heap.cc +++ b/runtime/gc/heap.cc @@ -1514,8 +1514,8 @@ bool Heap::IsValidObjectAddress(ObjPtr obj) const { if (obj == nullptr) { return true; } - return IsAligned(obj.Decode()) && - FindSpaceFromObject(obj.Decode(), true) != nullptr; + return IsAligned(obj.Ptr()) && + FindSpaceFromObject(obj.Ptr(), true) != nullptr; } bool Heap::IsNonDiscontinuousSpaceHeapAddress(const mirror::Object* obj) const { @@ -3569,7 +3569,7 @@ void Heap::SetIdealFootprint(size_t max_allowed_footprint) { bool Heap::IsMovableObject(ObjPtr obj) const { if (kMovingCollector) { - space::Space* space = FindContinuousSpaceFromObject(obj.Decode(), true); + space::Space* space = FindContinuousSpaceFromObject(obj.Ptr(), true); if (space != nullptr) { // TODO: Check large object? return space->CanMoveObjects(); @@ -3729,7 +3729,7 @@ void Heap::AddFinalizerReference(Thread* self, mirror::Object** object) { args[0].l = arg.get(); InvokeWithJValues(soa, nullptr, WellKnownClasses::java_lang_ref_FinalizerReference_add, args); // Restore object in case it gets moved. - *object = soa.Decode(arg.get()).Decode(); + *object = soa.Decode(arg.get()).Ptr(); } void Heap::RequestConcurrentGCAndSaveObject(Thread* self, bool force_full, mirror::Object** obj) { diff --git a/runtime/gc_root-inl.h b/runtime/gc_root-inl.h index 11ccd33bc..390ed3c66 100644 --- a/runtime/gc_root-inl.h +++ b/runtime/gc_root-inl.h @@ -39,7 +39,7 @@ inline GcRoot::GcRoot(MirrorType* ref) template inline GcRoot::GcRoot(ObjPtr ref) - : GcRoot(ref.Decode()) { } + : GcRoot(ref.Ptr()) { } inline std::string RootInfo::ToString() const { std::ostringstream oss; diff --git a/runtime/handle.h b/runtime/handle.h index c41010af5..d33d4a638 100644 --- a/runtime/handle.h +++ b/runtime/handle.h @@ -134,7 +134,7 @@ class MutableHandle : public Handle { ALWAYS_INLINE T* Assign(ObjPtr reference) REQUIRES_SHARED(Locks::mutator_lock_) { StackReference* ref = Handle::GetReference(); T* old = down_cast(ref->AsMirrorPtr()); - ref->Assign(reference.Decode()); + ref->Assign(reference.Ptr()); return old; } diff --git a/runtime/handle_scope-inl.h b/runtime/handle_scope-inl.h index 1814746d7..cceb0072a 100644 --- a/runtime/handle_scope-inl.h +++ b/runtime/handle_scope-inl.h @@ -111,7 +111,7 @@ inline MutableHandle StackHandleScope::NewHandle(T* object) { template template inline MutableHandle StackHandleScope::NewHandle( ObjPtr object) { - return NewHandle(object.Decode()); + return NewHandle(object.Ptr()); } template template @@ -138,7 +138,7 @@ inline void StackHandleScope::SetReference(size_t i, mirror::Obj template inline MutableHandle StackHandleScopeCollection::NewHandle( ObjPtr ptr) { - return NewHandle(ptr.Decode()); + return NewHandle(ptr.Ptr()); } } // namespace art diff --git a/runtime/interpreter/interpreter.cc b/runtime/interpreter/interpreter.cc index c270df748..d283a5023 100644 --- a/runtime/interpreter/interpreter.cc +++ b/runtime/interpreter/interpreter.cc @@ -51,7 +51,7 @@ static void InterpreterJni(Thread* self, ArtMethod* method, const StringPiece& s ScopedThreadStateChange tsc(self, kNative); jresult = fn(soa.Env(), klass.get()); } - result->SetL(soa.Decode(jresult).Decode()); + result->SetL(soa.Decode(jresult).Ptr()); } else if (shorty == "V") { typedef void (fntype)(JNIEnv*, jclass); fntype* const fn = reinterpret_cast(method->GetEntryPointFromJni()); @@ -93,7 +93,7 @@ static void InterpreterJni(Thread* self, ArtMethod* method, const StringPiece& s ScopedThreadStateChange tsc(self, kNative); jresult = fn(soa.Env(), klass.get(), arg0.get()); } - result->SetL(soa.Decode(jresult).Decode()); + result->SetL(soa.Decode(jresult).Ptr()); } else if (shorty == "IIZ") { typedef jint (fntype)(JNIEnv*, jclass, jint, jboolean); fntype* const fn = reinterpret_cast(method->GetEntryPointFromJni()); @@ -191,7 +191,7 @@ static void InterpreterJni(Thread* self, ArtMethod* method, const StringPiece& s ScopedThreadStateChange tsc(self, kNative); jresult = fn(soa.Env(), rcvr.get()); } - result->SetL(soa.Decode(jresult).Decode()); + result->SetL(soa.Decode(jresult).Ptr()); } else if (shorty == "V") { typedef void (fntype)(JNIEnv*, jobject); fntype* const fn = reinterpret_cast(method->GetEntryPointFromJni()); @@ -212,7 +212,7 @@ static void InterpreterJni(Thread* self, ArtMethod* method, const StringPiece& s ScopedThreadStateChange tsc(self, kNative); jresult = fn(soa.Env(), rcvr.get(), arg0.get()); } - result->SetL(soa.Decode(jresult).Decode()); + result->SetL(soa.Decode(jresult).Ptr()); ScopedThreadStateChange tsc(self, kNative); } else if (shorty == "III") { typedef jint (fntype)(JNIEnv*, jobject, jint, jint); diff --git a/runtime/interpreter/interpreter_common.cc b/runtime/interpreter/interpreter_common.cc index 7a6162cd0..e677cfbfe 100644 --- a/runtime/interpreter/interpreter_common.cc +++ b/runtime/interpreter/interpreter_common.cc @@ -68,7 +68,7 @@ bool DoFieldGet(Thread* self, ShadowFrame& shadow_frame, const Instruction* inst this_object = obj; } instrumentation->FieldReadEvent(self, - this_object.Decode(), + this_object.Ptr(), shadow_frame.GetMethod(), shadow_frame.GetDexPC(), f); @@ -94,7 +94,7 @@ bool DoFieldGet(Thread* self, ShadowFrame& shadow_frame, const Instruction* inst shadow_frame.SetVRegLong(vregA, f->GetLong(obj)); break; case Primitive::kPrimNot: - shadow_frame.SetVRegReference(vregA, f->GetObject(obj).Decode()); + shadow_frame.SetVRegReference(vregA, f->GetObject(obj).Ptr()); break; default: LOG(FATAL) << "Unreachable: " << field_type; @@ -271,7 +271,7 @@ bool DoFieldPut(Thread* self, const ShadowFrame& shadow_frame, const Instruction HandleWrapperObjPtr h(hs.NewHandleWrapper(&obj)); JValue field_value = GetFieldValue(shadow_frame, vregA); ObjPtr this_object = f->IsStatic() ? nullptr : obj; - instrumentation->FieldWriteEvent(self, this_object.Decode(), + instrumentation->FieldWriteEvent(self, this_object.Ptr(), shadow_frame.GetMethod(), shadow_frame.GetDexPC(), f, @@ -308,7 +308,7 @@ bool DoFieldPut(Thread* self, const ShadowFrame& shadow_frame, const Instruction HandleWrapperObjPtr h_obj(hs.NewHandleWrapper(&obj)); field_class = f->GetType(); } - if (!reg->VerifierInstanceOf(field_class.Decode())) { + if (!reg->VerifierInstanceOf(field_class.Ptr())) { // This should never happen. std::string temp1, temp2, temp3; self->ThrowNewExceptionF("Ljava/lang/VirtualMachineError;", diff --git a/runtime/interpreter/unstarted_runtime.cc b/runtime/interpreter/unstarted_runtime.cc index eb8cdbc70..89cbbe6c0 100644 --- a/runtime/interpreter/unstarted_runtime.cc +++ b/runtime/interpreter/unstarted_runtime.cc @@ -1619,9 +1619,9 @@ void UnstartedRuntime::UnstartedJNIThrowableNativeFillInStackTrace( uint32_t* args ATTRIBUTE_UNUSED, JValue* result) { ScopedObjectAccessUnchecked soa(self); if (Runtime::Current()->IsActiveTransaction()) { - result->SetL(soa.Decode(self->CreateInternalStackTrace(soa)).Decode()); + result->SetL(soa.Decode(self->CreateInternalStackTrace(soa)).Ptr()); } else { - result->SetL(soa.Decode(self->CreateInternalStackTrace(soa)).Decode()); + result->SetL(soa.Decode(self->CreateInternalStackTrace(soa)).Ptr()); } } diff --git a/runtime/java_vm_ext.cc b/runtime/java_vm_ext.cc index 0c752ef4f..215f2b3dd 100644 --- a/runtime/java_vm_ext.cc +++ b/runtime/java_vm_ext.cc @@ -538,7 +538,7 @@ jobject JavaVMExt::AddGlobalRef(Thread* self, ObjPtr obj) { return nullptr; } WriterMutexLock mu(self, globals_lock_); - IndirectRef ref = globals_.Add(IRT_FIRST_SEGMENT, obj.Decode()); + IndirectRef ref = globals_.Add(IRT_FIRST_SEGMENT, obj.Ptr()); return reinterpret_cast(ref); } @@ -550,7 +550,7 @@ jweak JavaVMExt::AddWeakGlobalRef(Thread* self, ObjPtr obj) { while (UNLIKELY(!MayAccessWeakGlobals(self))) { weak_globals_add_condition_.WaitHoldingLocks(self); } - IndirectRef ref = weak_globals_.Add(IRT_FIRST_SEGMENT, obj.Decode()); + IndirectRef ref = weak_globals_.Add(IRT_FIRST_SEGMENT, obj.Ptr()); return reinterpret_cast(ref); } @@ -758,12 +758,12 @@ bool JavaVMExt::LoadNativeLibrary(JNIEnv* env, ObjPtr loader = soa.Decode(class_loader); ClassLinker* class_linker = Runtime::Current()->GetClassLinker(); - if (class_linker->IsBootClassLoader(soa, loader.Decode())) { + if (class_linker->IsBootClassLoader(soa, loader.Ptr())) { loader = nullptr; class_loader = nullptr; } - class_loader_allocator = class_linker->GetAllocatorForClassLoader(loader.Decode()); + class_loader_allocator = class_linker->GetAllocatorForClassLoader(loader.Ptr()); CHECK(class_loader_allocator != nullptr); } if (library != nullptr) { diff --git a/runtime/jni_internal.cc b/runtime/jni_internal.cc index 797781506..621e2df31 100644 --- a/runtime/jni_internal.cc +++ b/runtime/jni_internal.cc @@ -148,7 +148,7 @@ static jmethodID FindMethodID(ScopedObjectAccess& soa, jclass jni_class, } } if (method == nullptr || method->IsStatic() != is_static) { - ThrowNoSuchMethodError(soa, c.Decode(), name, sig, is_static ? "static" : "non-static"); + ThrowNoSuchMethodError(soa, c.Ptr(), name, sig, is_static ? "static" : "non-static"); return nullptr; } return soa.EncodeMethod(method); @@ -373,7 +373,7 @@ class JNI { // Not even a java.lang.reflect.Field, return null. TODO, is this check necessary? return nullptr; } - ObjPtr field = down_cast(obj_field.Decode()); + ObjPtr field = down_cast(obj_field.Ptr()); return soa.EncodeField(field->GetArtField()); } @@ -528,7 +528,7 @@ class JNI { static jobject NewGlobalRef(JNIEnv* env, jobject obj) { ScopedObjectAccess soa(env); ObjPtr decoded_obj = soa.Decode(obj); - return soa.Vm()->AddGlobalRef(soa.Self(), decoded_obj.Decode()); + return soa.Vm()->AddGlobalRef(soa.Self(), decoded_obj.Ptr()); } static void DeleteGlobalRef(JNIEnv* env, jobject obj) { @@ -540,7 +540,7 @@ class JNI { static jweak NewWeakGlobalRef(JNIEnv* env, jobject obj) { ScopedObjectAccess soa(env); ObjPtr decoded_obj = soa.Decode(obj); - return soa.Vm()->AddWeakGlobalRef(soa.Self(), decoded_obj.Decode()); + return soa.Vm()->AddWeakGlobalRef(soa.Self(), decoded_obj.Ptr()); } static void DeleteWeakGlobalRef(JNIEnv* env, jweak obj) { @@ -1857,7 +1857,7 @@ class JNI { ObjPtr> array = soa.Decode>(java_array); ObjPtr value = soa.Decode(java_value); - array->Set(index, value.Decode()); + array->Set(index, value.Ptr()); } static jbooleanArray NewBooleanArray(JNIEnv* env, jsize length) { @@ -1900,7 +1900,7 @@ class JNI { ScopedObjectAccess soa(env); mirror::Class* array_class; { - mirror::Class* element_class = soa.Decode(element_jclass).Decode(); + mirror::Class* element_class = soa.Decode(element_jclass).Ptr(); if (UNLIKELY(element_class->IsPrimitive())) { soa.Vm()->JniAbortF("NewObjectArray", "not an object type: %s", PrettyDescriptor(element_class).c_str()); @@ -1928,7 +1928,7 @@ class JNI { return nullptr; } else { for (jsize i = 0; i < length; ++i) { - result->SetWithoutChecks(i, initial_object.Decode()); + result->SetWithoutChecks(i, initial_object.Ptr()); } } } @@ -1978,7 +1978,7 @@ class JNI { return; } const size_t component_size = array->GetClass()->GetComponentSize(); - ReleasePrimitiveArray(soa, array.Decode(), component_size, elements, mode); + ReleasePrimitiveArray(soa, array.Ptr(), component_size, elements, mode); } static jboolean* GetBooleanArrayElements(JNIEnv* env, jbooleanArray array, jboolean* is_copy) { @@ -2217,13 +2217,13 @@ class JNI { current_class != nullptr; current_class = current_class->GetSuperClass()) { // Search first only comparing methods which are native. - m = FindMethod(current_class.Decode(), name, sig); + m = FindMethod(current_class.Ptr(), name, sig); if (m != nullptr) { break; } // Search again comparing to all methods, to find non-native methods that match. - m = FindMethod(current_class.Decode(), name, sig); + m = FindMethod(current_class.Ptr(), name, sig); if (m != nullptr) { break; } @@ -2245,14 +2245,14 @@ class JNI { << "Failed to register native method " << PrettyDescriptor(c) << "." << name << sig << " in " << c->GetDexCache()->GetLocation()->ToModifiedUtf8(); - ThrowNoSuchMethodError(soa, c.Decode(), name, sig, "static or non-static"); + ThrowNoSuchMethodError(soa, c.Ptr(), name, sig, "static or non-static"); return JNI_ERR; } else if (!m->IsNative()) { LOG(return_errors ? ::android::base::ERROR : ::android::base::FATAL) << "Failed to register non-native method " << PrettyDescriptor(c) << "." << name << sig << " as native"; - ThrowNoSuchMethodError(soa, c.Decode(), name, sig, "native"); + ThrowNoSuchMethodError(soa, c.Ptr(), name, sig, "native"); return JNI_ERR; } @@ -2295,7 +2295,7 @@ class JNI { if (soa.Self()->IsExceptionPending()) { return JNI_ERR; } - soa.Env()->monitors.Add(o.Decode()); + soa.Env()->monitors.Add(o.Ptr()); return JNI_OK; } @@ -2307,7 +2307,7 @@ class JNI { if (soa.Self()->IsExceptionPending()) { return JNI_ERR; } - soa.Env()->monitors.Remove(o.Decode()); + soa.Env()->monitors.Remove(o.Ptr()); return JNI_OK; } @@ -2426,7 +2426,7 @@ class JNI { return nullptr; } DCHECK_EQ(sizeof(ElementT), array->GetClass()->GetComponentSize()); - return array.Decode(); + return array.Ptr(); } template diff --git a/runtime/mirror/class-inl.h b/runtime/mirror/class-inl.h index 3cbd58b77..1cfed741e 100644 --- a/runtime/mirror/class-inl.h +++ b/runtime/mirror/class-inl.h @@ -384,7 +384,7 @@ inline bool Class::ResolvedFieldAccessTest(ObjPtr access_to, DCHECK(dex_access_to != nullptr); if (UNLIKELY(!this->CanAccess(dex_access_to))) { if (throw_on_failure) { - ThrowIllegalAccessErrorClass(this, dex_access_to.Decode()); + ThrowIllegalAccessErrorClass(this, dex_access_to.Ptr()); } return false; } @@ -422,7 +422,7 @@ inline bool Class::ResolvedMethodAccessTest(ObjPtr access_to, if (UNLIKELY(!this->CanAccess(dex_access_to))) { if (throw_on_failure) { ThrowIllegalAccessErrorClassForMethodDispatch(this, - dex_access_to.Decode(), + dex_access_to.Ptr(), method, throw_invoke_type); } @@ -448,7 +448,7 @@ inline bool Class::CanAccessResolvedField(ObjPtr access_to, inline bool Class::CheckResolvedFieldAccess(ObjPtr access_to, ArtField* field, uint32_t field_idx) { - return ResolvedFieldAccessTest(access_to.Decode(), field, field_idx, nullptr); + return ResolvedFieldAccessTest(access_to.Ptr(), field, field_idx, nullptr); } inline bool Class::CanAccessResolvedMethod(Class* access_to, ArtMethod* method, diff --git a/runtime/mirror/field-inl.h b/runtime/mirror/field-inl.h index ec32cb6e3..445f23fa0 100644 --- a/runtime/mirror/field-inl.h +++ b/runtime/mirror/field-inl.h @@ -80,7 +80,7 @@ inline mirror::Field* Field::CreateFromArtField(Thread* self, ArtField* field, b template void Field::SetDeclaringClass(ObjPtr c) { - SetFieldObject(OFFSET_OF_OBJECT_MEMBER(Field, declaring_class_), c.Decode()); + SetFieldObject(OFFSET_OF_OBJECT_MEMBER(Field, declaring_class_), c.Ptr()); } } // namespace mirror diff --git a/runtime/mirror/object_test.cc b/runtime/mirror/object_test.cc index a573ae631..062afd31e 100644 --- a/runtime/mirror/object_test.cc +++ b/runtime/mirror/object_test.cc @@ -746,7 +746,7 @@ TEST_F(ObjectTest, ObjectPointer) { ObjPtr null_ptr; EXPECT_TRUE(null_ptr.IsNull()); EXPECT_TRUE(null_ptr.IsValid()); - EXPECT_TRUE(null_ptr.Decode() == nullptr); + EXPECT_TRUE(null_ptr.Ptr() == nullptr); EXPECT_TRUE(null_ptr == nullptr); EXPECT_TRUE(null_ptr == null_ptr); EXPECT_FALSE(null_ptr != null_ptr); @@ -758,13 +758,13 @@ TEST_F(ObjectTest, ObjectPointer) { ObjPtr X(h_X.Get()); EXPECT_TRUE(!X.IsNull()); EXPECT_TRUE(X.IsValid()); - EXPECT_TRUE(X.Decode() != nullptr); + EXPECT_TRUE(X.Ptr() != nullptr); EXPECT_OBJ_PTR_EQ(h_X.Get(), X); // FindClass may cause thread suspension, it should invalidate X. ObjPtr Y(class_linker_->FindClass(soa.Self(), "LY;", class_loader)); EXPECT_TRUE(!Y.IsNull()); EXPECT_TRUE(Y.IsValid()); - EXPECT_TRUE(Y.Decode() != nullptr); + EXPECT_TRUE(Y.Ptr() != nullptr); // Should IsNull be safe to call on null ObjPtr? I'll allow it for now. EXPECT_TRUE(!X.IsNull()); @@ -784,7 +784,7 @@ TEST_F(ObjectTest, ObjectPointer) { ObjPtr unpoisoned; EXPECT_TRUE(unpoisoned.IsNull()); EXPECT_TRUE(unpoisoned.IsValid()); - EXPECT_TRUE(unpoisoned.Decode() == nullptr); + EXPECT_TRUE(unpoisoned.Ptr() == nullptr); EXPECT_TRUE(unpoisoned == nullptr); EXPECT_TRUE(unpoisoned == unpoisoned); EXPECT_FALSE(unpoisoned != unpoisoned); diff --git a/runtime/native/dalvik_system_DexFile.cc b/runtime/native/dalvik_system_DexFile.cc index 0677d5bf0..086da6072 100644 --- a/runtime/native/dalvik_system_DexFile.cc +++ b/runtime/native/dalvik_system_DexFile.cc @@ -287,7 +287,7 @@ static jclass DexFile_defineClassNative(JNIEnv* env, *dex_class_def); // Add the used dex file. This only required for the DexFile.loadClass API since normal // class loaders already keep their dex files live. - class_linker->InsertDexFileInToClassLoader(soa.Decode(dexFile).Decode(), + class_linker->InsertDexFileInToClassLoader(soa.Decode(dexFile).Ptr(), class_loader.Get()); if (result != nullptr) { VLOG(class_linker) << "DexFile_defineClassNative returning " << result diff --git a/runtime/native/dalvik_system_InMemoryDexClassLoader_DexData.cc b/runtime/native/dalvik_system_InMemoryDexClassLoader_DexData.cc index fdced2111..e32545bc2 100644 --- a/runtime/native/dalvik_system_InMemoryDexClassLoader_DexData.cc +++ b/runtime/native/dalvik_system_InMemoryDexClassLoader_DexData.cc @@ -157,7 +157,7 @@ static jclass InMemoryDexClassLoader_DexData_findClass( // InMemoryClassLoader/DexData instance now that a class has // been loaded. class_linker->InsertDexFileInToClassLoader( - soa.Decode(dexData).Decode(), class_loader.Get()); + soa.Decode(dexData).Ptr(), class_loader.Get()); return soa.AddLocalReference(result); } } diff --git a/runtime/native/dalvik_system_VMDebug.cc b/runtime/native/dalvik_system_VMDebug.cc index 73c466411..8e81bc98b 100644 --- a/runtime/native/dalvik_system_VMDebug.cc +++ b/runtime/native/dalvik_system_VMDebug.cc @@ -263,7 +263,7 @@ static jlong VMDebug_countInstancesOfClass(JNIEnv* env, jclass, jclass javaClass if (c == nullptr) { return 0; } - std::vector classes {c.Decode()}; + std::vector classes {c.Ptr()}; uint64_t count = 0; heap->CountInstances(classes, countAssignable, &count); return count; diff --git a/runtime/native/dalvik_system_VMRuntime.cc b/runtime/native/dalvik_system_VMRuntime.cc index c7fb44ece..e458e2d83 100644 --- a/runtime/native/dalvik_system_VMRuntime.cc +++ b/runtime/native/dalvik_system_VMRuntime.cc @@ -74,7 +74,7 @@ static jobject VMRuntime_newNonMovableArray(JNIEnv* env, jobject, jclass javaEle ThrowNegativeArraySizeException(length); return nullptr; } - mirror::Class* element_class = soa.Decode(javaElementClass).Decode(); + mirror::Class* element_class = soa.Decode(javaElementClass).Ptr(); if (UNLIKELY(element_class == nullptr)) { ThrowNullPointerException("element class == null"); return nullptr; @@ -99,7 +99,7 @@ static jobject VMRuntime_newUnpaddedArray(JNIEnv* env, jobject, jclass javaEleme ThrowNegativeArraySizeException(length); return nullptr; } - mirror::Class* element_class = soa.Decode(javaElementClass).Decode(); + mirror::Class* element_class = soa.Decode(javaElementClass).Ptr(); if (UNLIKELY(element_class == nullptr)) { ThrowNullPointerException("element class == null"); return nullptr; @@ -127,7 +127,7 @@ static jlong VMRuntime_addressOf(JNIEnv* env, jobject, jobject javaArray) { ThrowIllegalArgumentException("not an array"); return 0; } - if (Runtime::Current()->GetHeap()->IsMovableObject(array.Decode())) { + if (Runtime::Current()->GetHeap()->IsMovableObject(array.Ptr())) { ThrowRuntimeException("Trying to get address of movable array object"); return 0; } diff --git a/runtime/native/java_lang_Class.cc b/runtime/native/java_lang_Class.cc index 34bd57b09..87bff5ffc 100644 --- a/runtime/native/java_lang_Class.cc +++ b/runtime/native/java_lang_Class.cc @@ -354,8 +354,8 @@ static jobject Class_getDeclaredConstructorInternal( ObjPtr result = mirror::Class::GetDeclaredConstructorInternal( soa.Self(), - DecodeClass(soa, javaThis).Decode(), - soa.Decode>(args).Decode()); + DecodeClass(soa, javaThis).Ptr(), + soa.Decode>(args).Ptr()); return soa.AddLocalReference(result); } @@ -405,9 +405,9 @@ static jobject Class_getDeclaredMethodInternal(JNIEnv* env, jobject javaThis, DCHECK(!Runtime::Current()->IsActiveTransaction()); mirror::Method* result = mirror::Class::GetDeclaredMethodInternal( soa.Self(), - DecodeClass(soa, javaThis).Decode(), - soa.Decode(name).Decode(), - soa.Decode>(args).Decode()); + DecodeClass(soa, javaThis).Ptr(), + soa.Decode(name).Ptr(), + soa.Decode>(args).Ptr()); return soa.AddLocalReference(result); } @@ -475,7 +475,7 @@ static jobjectArray Class_getDeclaredAnnotations(JNIEnv* env, jobject javaThis) soa.Decode(WellKnownClasses::java_lang_annotation_Annotation__array); mirror::ObjectArray* empty_array = mirror::ObjectArray::Alloc(soa.Self(), - annotation_array_class.Decode(), + annotation_array_class.Ptr(), 0); return soa.AddLocalReference(empty_array); } diff --git a/runtime/native/java_lang_DexCache.cc b/runtime/native/java_lang_DexCache.cc index 5efafe79f..1fd7ed11e 100644 --- a/runtime/native/java_lang_DexCache.cc +++ b/runtime/native/java_lang_DexCache.cc @@ -68,7 +68,7 @@ static void DexCache_setResolvedType(JNIEnv* env, jobject javaDexCache, jint typ ScopedFastNativeObjectAccess soa(env); ObjPtr dex_cache = soa.Decode(javaDexCache); CHECK_LT(static_cast(type_index), dex_cache->NumResolvedTypes()); - dex_cache->SetResolvedType(type_index, soa.Decode(type).Decode()); + dex_cache->SetResolvedType(type_index, soa.Decode(type).Ptr()); } static void DexCache_setResolvedString(JNIEnv* env, jobject javaDexCache, jint string_index, @@ -76,7 +76,7 @@ static void DexCache_setResolvedString(JNIEnv* env, jobject javaDexCache, jint s ScopedFastNativeObjectAccess soa(env); ObjPtr dex_cache = soa.Decode(javaDexCache); CHECK_LT(static_cast(string_index), dex_cache->GetDexFile()->NumStringIds()); - dex_cache->SetResolvedString(string_index, soa.Decode(string).Decode()); + dex_cache->SetResolvedString(string_index, soa.Decode(string).Ptr()); } static JNINativeMethod gMethods[] = { diff --git a/runtime/native/java_lang_String.cc b/runtime/native/java_lang_String.cc index b3a967d16..5a49c203a 100644 --- a/runtime/native/java_lang_String.cc +++ b/runtime/native/java_lang_String.cc @@ -41,7 +41,7 @@ static jint String_compareTo(JNIEnv* env, jobject java_this, jobject java_rhs) { return -1; } else { return soa.Decode(java_this)->CompareTo( - soa.Decode(java_rhs).Decode()); + soa.Decode(java_rhs).Ptr()); } } diff --git a/runtime/native/java_lang_System.cc b/runtime/native/java_lang_System.cc index 8b9d0c757..f3756a23c 100644 --- a/runtime/native/java_lang_System.cc +++ b/runtime/native/java_lang_System.cc @@ -62,12 +62,12 @@ static void System_arraycopy(JNIEnv* env, jclass, jobject javaSrc, jint srcPos, // Make sure source and destination are both arrays. ObjPtr srcObject = soa.Decode(javaSrc); if (UNLIKELY(!srcObject->IsArrayInstance())) { - ThrowArrayStoreException_NotAnArray("source", srcObject.Decode()); + ThrowArrayStoreException_NotAnArray("source", srcObject.Ptr()); return; } ObjPtr dstObject = soa.Decode(javaDst); if (UNLIKELY(!dstObject->IsArrayInstance())) { - ThrowArrayStoreException_NotAnArray("destination", dstObject.Decode()); + ThrowArrayStoreException_NotAnArray("destination", dstObject.Ptr()); return; } mirror::Array* srcArray = srcObject->AsArray(); diff --git a/runtime/native/java_lang_Thread.cc b/runtime/native/java_lang_Thread.cc index 063526150..fcb017545 100644 --- a/runtime/native/java_lang_Thread.cc +++ b/runtime/native/java_lang_Thread.cc @@ -116,7 +116,7 @@ static jboolean Thread_nativeHoldsLock(JNIEnv* env, jobject java_thread, jobject } MutexLock mu(soa.Self(), *Locks::thread_list_lock_); Thread* thread = Thread::FromManagedThread(soa, java_thread); - return thread->HoldsLock(object.Decode()); + return thread->HoldsLock(object.Ptr()); } static void Thread_nativeInterrupt(JNIEnv* env, jobject java_thread) { @@ -173,7 +173,7 @@ static void Thread_nativeSetPriority(JNIEnv* env, jobject java_thread, jint new_ static void Thread_sleep(JNIEnv* env, jclass, jobject java_lock, jlong ms, jint ns) { ScopedFastNativeObjectAccess soa(env); ObjPtr lock = soa.Decode(java_lock); - Monitor::Wait(Thread::Current(), lock.Decode(), ms, ns, true, kSleeping); + Monitor::Wait(Thread::Current(), lock.Ptr(), ms, ns, true, kSleeping); } /* diff --git a/runtime/native/java_lang_VMClassLoader.cc b/runtime/native/java_lang_VMClassLoader.cc index 0694c4dd7..73d12f1a5 100644 --- a/runtime/native/java_lang_VMClassLoader.cc +++ b/runtime/native/java_lang_VMClassLoader.cc @@ -40,7 +40,7 @@ static jclass VMClassLoader_findLoadedClass(JNIEnv* env, jclass, jobject javaLoa mirror::Class* c = cl->LookupClass(soa.Self(), descriptor.c_str(), descriptor_hash, - loader.Decode()); + loader.Ptr()); if (c != nullptr && c->IsResolved()) { return soa.AddLocalReference(c); } diff --git a/runtime/native/java_lang_ref_FinalizerReference.cc b/runtime/native/java_lang_ref_FinalizerReference.cc index 08bcc3880..1f03c7cff 100644 --- a/runtime/native/java_lang_ref_FinalizerReference.cc +++ b/runtime/native/java_lang_ref_FinalizerReference.cc @@ -29,7 +29,7 @@ static jboolean FinalizerReference_makeCircularListIfUnenqueued(JNIEnv* env, job ScopedFastNativeObjectAccess soa(env); ObjPtr ref = soa.Decode(javaThis); return Runtime::Current()->GetHeap()->GetReferenceProcessor()->MakeCircularListIfUnenqueued( - ref.Decode()); + ref.Ptr()); } static JNINativeMethod gMethods[] = { diff --git a/runtime/native/java_lang_ref_Reference.cc b/runtime/native/java_lang_ref_Reference.cc index 9a088edc9..95f6d517e 100644 --- a/runtime/native/java_lang_ref_Reference.cc +++ b/runtime/native/java_lang_ref_Reference.cc @@ -29,7 +29,7 @@ static jobject Reference_getReferent(JNIEnv* env, jobject javaThis) { ScopedFastNativeObjectAccess soa(env); ObjPtr ref = soa.Decode(javaThis); mirror::Object* const referent = - Runtime::Current()->GetHeap()->GetReferenceProcessor()->GetReferent(soa.Self(), ref.Decode()); + Runtime::Current()->GetHeap()->GetReferenceProcessor()->GetReferent(soa.Self(), ref.Ptr()); return soa.AddLocalReference(referent); } diff --git a/runtime/native/java_lang_reflect_Array.cc b/runtime/native/java_lang_reflect_Array.cc index 3718ce83b..6f2da3329 100644 --- a/runtime/native/java_lang_reflect_Array.cc +++ b/runtime/native/java_lang_reflect_Array.cc @@ -40,7 +40,7 @@ static jobject Array_createMultiArray( DCHECK_EQ(dimensions_obj->GetClass()->GetComponentType()->GetPrimitiveType(), Primitive::kPrimInt); Handle dimensions_array( - hs.NewHandle(down_cast(dimensions_obj.Decode()))); + hs.NewHandle(down_cast(dimensions_obj.Ptr()))); mirror::Array* new_array = mirror::Array::CreateMultiArray(soa.Self(), element_class, dimensions_array); return soa.AddLocalReference(new_array); @@ -53,7 +53,7 @@ static jobject Array_createObjectArray(JNIEnv* env, jclass, jclass javaElementCl ThrowNegativeArraySizeException(length); return nullptr; } - mirror::Class* element_class = soa.Decode(javaElementClass).Decode(); + mirror::Class* element_class = soa.Decode(javaElementClass).Ptr(); Runtime* runtime = Runtime::Current(); ClassLinker* class_linker = runtime->GetClassLinker(); mirror::Class* array_class = class_linker->FindArrayClass(soa.Self(), &element_class); diff --git a/runtime/native/java_lang_reflect_Executable.cc b/runtime/native/java_lang_reflect_Executable.cc index c7c80080e..e317c25d8 100644 --- a/runtime/native/java_lang_reflect_Executable.cc +++ b/runtime/native/java_lang_reflect_Executable.cc @@ -38,7 +38,7 @@ static jobjectArray Executable_getDeclaredAnnotationsNative(JNIEnv* env, jobject ObjPtr annotation_array_class = soa.Decode(WellKnownClasses::java_lang_annotation_Annotation__array); ObjPtr> empty_array = - mirror::ObjectArray::Alloc(soa.Self(), annotation_array_class.Decode(), 0); + mirror::ObjectArray::Alloc(soa.Self(), annotation_array_class.Ptr(), 0); return soa.AddLocalReference(empty_array); } return soa.AddLocalReference(annotations::GetAnnotationsForMethod(method)); diff --git a/runtime/native/java_lang_reflect_Field.cc b/runtime/native/java_lang_reflect_Field.cc index 251922558..07b59dd90 100644 --- a/runtime/native/java_lang_reflect_Field.cc +++ b/runtime/native/java_lang_reflect_Field.cc @@ -127,7 +127,7 @@ ALWAYS_INLINE inline static bool CheckReceiver(const ScopedFastNativeObjectAcces *class_or_rcvr = declaringClass; return true; } - *class_or_rcvr = soa.Decode(j_rcvr).Decode(); + *class_or_rcvr = soa.Decode(j_rcvr).Ptr(); if (!VerifyObjectIsClass(MakeObjPtr(*class_or_rcvr), MakeObjPtr(declaringClass))) { DCHECK(soa.Self()->IsExceptionPending()); return false; @@ -137,7 +137,7 @@ ALWAYS_INLINE inline static bool CheckReceiver(const ScopedFastNativeObjectAcces static jobject Field_get(JNIEnv* env, jobject javaField, jobject javaObj) { ScopedFastNativeObjectAccess soa(env); - mirror::Field* f = soa.Decode(javaField).Decode(); + mirror::Field* f = soa.Decode(javaField).Ptr(); mirror::Object* o = nullptr; if (!CheckReceiver(soa, javaObj, &f, &o)) { DCHECK(soa.Self()->IsExceptionPending()); @@ -156,14 +156,14 @@ static jobject Field_get(JNIEnv* env, jobject javaField, jobject javaObj) { DCHECK(soa.Self()->IsExceptionPending()); return nullptr; } - return soa.AddLocalReference(BoxPrimitive(field_type, value).Decode()); + return soa.AddLocalReference(BoxPrimitive(field_type, value).Ptr()); } template ALWAYS_INLINE inline static JValue GetPrimitiveField(JNIEnv* env, jobject javaField, jobject javaObj) { ScopedFastNativeObjectAccess soa(env); - mirror::Field* f = soa.Decode(javaField).Decode(); + mirror::Field* f = soa.Decode(javaField).Ptr(); mirror::Object* o = nullptr; if (!CheckReceiver(soa, javaObj, &f, &o)) { DCHECK(soa.Self()->IsExceptionPending()); @@ -307,7 +307,7 @@ ALWAYS_INLINE inline static void SetFieldValue(mirror::Object* o, mirror::Field* static void Field_set(JNIEnv* env, jobject javaField, jobject javaObj, jobject javaValue) { ScopedFastNativeObjectAccess soa(env); - mirror::Field* f = soa.Decode(javaField).Decode(); + mirror::Field* f = soa.Decode(javaField).Ptr(); // Check that the receiver is non-null and an instance of the field's declaring class. mirror::Object* o = nullptr; if (!CheckReceiver(soa, javaObj, &f, &o)) { @@ -346,7 +346,7 @@ template static void SetPrimitiveField(JNIEnv* env, jobject javaField, jobject javaObj, const JValue& new_value) { ScopedFastNativeObjectAccess soa(env); - mirror::Field* f = soa.Decode(javaField).Decode(); + mirror::Field* f = soa.Decode(javaField).Ptr(); mirror::Object* o = nullptr; if (!CheckReceiver(soa, javaObj, &f, &o)) { return; @@ -441,7 +441,7 @@ static jobjectArray Field_getDeclaredAnnotations(JNIEnv* env, jobject javaField) // Return an empty array instead of a null pointer. mirror::Class* annotation_array_class = soa.Decode( - WellKnownClasses::java_lang_annotation_Annotation__array).Decode(); + WellKnownClasses::java_lang_annotation_Annotation__array).Ptr(); mirror::ObjectArray* empty_array = mirror::ObjectArray::Alloc(soa.Self(), annotation_array_class, 0); return soa.AddLocalReference(empty_array); diff --git a/runtime/native/sun_misc_Unsafe.cc b/runtime/native/sun_misc_Unsafe.cc index 2fae3cc8e..0bdb5a42a 100644 --- a/runtime/native/sun_misc_Unsafe.cc +++ b/runtime/native/sun_misc_Unsafe.cc @@ -64,15 +64,15 @@ static jboolean Unsafe_compareAndSwapObject(JNIEnv* env, jobject, jobject javaOb // CAS or the CAS could fail incorrectly. mirror::HeapReference* field_addr = reinterpret_cast*>( - reinterpret_cast(obj.Decode()) + static_cast(offset)); + reinterpret_cast(obj.Ptr()) + static_cast(offset)); ReadBarrier::Barrier( - obj.Decode(), + obj.Ptr(), MemberOffset(offset), field_addr); } bool success = obj->CasFieldStrongSequentiallyConsistentObject(MemberOffset(offset), - expectedValue.Decode(), - newValue.Decode()); + expectedValue.Ptr(), + newValue.Ptr()); return success ? JNI_TRUE : JNI_FALSE; } @@ -168,7 +168,7 @@ static void Unsafe_putObject(JNIEnv* env, jobject, jobject javaObj, jlong offset ObjPtr obj = soa.Decode(javaObj); ObjPtr newValue = soa.Decode(javaNewValue); // JNI must use non transactional mode. - obj->SetFieldObject(MemberOffset(offset), newValue.Decode()); + obj->SetFieldObject(MemberOffset(offset), newValue.Ptr()); } static void Unsafe_putObjectVolatile(JNIEnv* env, jobject, jobject javaObj, jlong offset, @@ -177,7 +177,7 @@ static void Unsafe_putObjectVolatile(JNIEnv* env, jobject, jobject javaObj, jlon ObjPtr obj = soa.Decode(javaObj); ObjPtr newValue = soa.Decode(javaNewValue); // JNI must use non transactional mode. - obj->SetFieldObjectVolatile(MemberOffset(offset), newValue.Decode()); + obj->SetFieldObjectVolatile(MemberOffset(offset), newValue.Ptr()); } static void Unsafe_putOrderedObject(JNIEnv* env, jobject, jobject javaObj, jlong offset, @@ -187,7 +187,7 @@ static void Unsafe_putOrderedObject(JNIEnv* env, jobject, jobject javaObj, jlong ObjPtr newValue = soa.Decode(javaNewValue); QuasiAtomic::ThreadFenceRelease(); // JNI must use non transactional mode. - obj->SetFieldObject(MemberOffset(offset), newValue.Decode()); + obj->SetFieldObject(MemberOffset(offset), newValue.Ptr()); } static jint Unsafe_getArrayBaseOffsetForComponentType(JNIEnv* env, jclass, jobject component_class) { diff --git a/runtime/obj_ptr-inl.h b/runtime/obj_ptr-inl.h index 1c698b5c4..f0a5f6f2e 100644 --- a/runtime/obj_ptr-inl.h +++ b/runtime/obj_ptr-inl.h @@ -33,7 +33,7 @@ inline bool ObjPtr::IsValid() const { template inline void ObjPtr::AssertValid() const { if (kPoison) { - CHECK(IsValid()) << "Stale object pointer " << DecodeUnchecked() << " , expected cookie " + CHECK(IsValid()) << "Stale object pointer " << Ptr() << " , expected cookie " << TrimCookie(Thread::Current()->GetPoisonObjectCookie()) << " but got " << GetCookie(); } } @@ -56,7 +56,7 @@ inline uintptr_t ObjPtr::Encode(MirrorType* ptr) { template inline std::ostream& operator<<(std::ostream& os, ObjPtr ptr) { // May be used for dumping bad pointers, do not use the checked version. - return os << ptr.DecodeUnchecked(); + return os << ptr.PtrUnchecked(); } } // namespace art diff --git a/runtime/obj_ptr.h b/runtime/obj_ptr.h index 7c0c9df7d..beb4d33a1 100644 --- a/runtime/obj_ptr.h +++ b/runtime/obj_ptr.h @@ -49,11 +49,11 @@ class ObjPtr { template ALWAYS_INLINE ObjPtr(const ObjPtr& other) REQUIRES_SHARED(Locks::mutator_lock_) - : reference_(Encode(static_cast(other.Decode()))) {} + : reference_(Encode(static_cast(other.Ptr()))) {} template ALWAYS_INLINE ObjPtr& operator=(const ObjPtr& other) { - reference_ = Encode(static_cast(other.Decode())); + reference_ = Encode(static_cast(other.Ptr())); return *this; } @@ -67,17 +67,17 @@ class ObjPtr { } ALWAYS_INLINE MirrorType* operator->() const REQUIRES_SHARED(Locks::mutator_lock_) { - return Decode(); + return Ptr(); } ALWAYS_INLINE bool IsNull() const { return reference_ == 0; } - // Decode makes sure that the object pointer is valid. - ALWAYS_INLINE MirrorType* Decode() const REQUIRES_SHARED(Locks::mutator_lock_) { + // Ptr makes sure that the object pointer is valid. + ALWAYS_INLINE MirrorType* Ptr() const REQUIRES_SHARED(Locks::mutator_lock_) { AssertValid(); - return DecodeUnchecked(); + return PtrUnchecked(); } ALWAYS_INLINE bool IsValid() const REQUIRES_SHARED(Locks::mutator_lock_); @@ -85,13 +85,13 @@ class ObjPtr { ALWAYS_INLINE void AssertValid() const REQUIRES_SHARED(Locks::mutator_lock_); ALWAYS_INLINE bool operator==(const ObjPtr& ptr) const REQUIRES_SHARED(Locks::mutator_lock_) { - return Decode() == ptr.Decode(); + return Ptr() == ptr.Ptr(); } template ALWAYS_INLINE bool operator==(const PointerType* ptr) const REQUIRES_SHARED(Locks::mutator_lock_) { - return Decode() == ptr; + return Ptr() == ptr; } ALWAYS_INLINE bool operator==(std::nullptr_t) const { @@ -99,21 +99,21 @@ class ObjPtr { } ALWAYS_INLINE bool operator!=(const ObjPtr& ptr) const REQUIRES_SHARED(Locks::mutator_lock_) { - return Decode() != ptr.Decode(); + return Ptr() != ptr.Ptr(); } template ALWAYS_INLINE bool operator!=(const PointerType* ptr) const REQUIRES_SHARED(Locks::mutator_lock_) { - return Decode() != ptr; + return Ptr() != ptr; } ALWAYS_INLINE bool operator!=(std::nullptr_t) const { return !IsNull(); } - // Decode unchecked does not check that object pointer is valid. Do not use if you can avoid it. - ALWAYS_INLINE MirrorType* DecodeUnchecked() const { + // Ptr unchecked does not check that object pointer is valid. Do not use if you can avoid it. + ALWAYS_INLINE MirrorType* PtrUnchecked() const { if (kPoison) { return reinterpret_cast( static_cast(static_cast(reference_ << kObjectAlignmentShift))); diff --git a/runtime/openjdkjvm/OpenjdkJvm.cc b/runtime/openjdkjvm/OpenjdkJvm.cc index d46d78c2f..2f51e27b2 100644 --- a/runtime/openjdkjvm/OpenjdkJvm.cc +++ b/runtime/openjdkjvm/OpenjdkJvm.cc @@ -364,7 +364,7 @@ JNIEXPORT void JVM_Sleep(JNIEnv* env, jclass threadClass ATTRIBUTE_UNUSED, jobject java_lock, jlong millis) { art::ScopedFastNativeObjectAccess soa(env); art::ObjPtr lock = soa.Decode(java_lock); - art::Monitor::Wait(art::Thread::Current(), lock.Decode(), millis, 0, true, art::kSleeping); + art::Monitor::Wait(art::Thread::Current(), lock.Ptr(), millis, 0, true, art::kSleeping); } JNIEXPORT jobject JVM_CurrentThread(JNIEnv* env, jclass unused ATTRIBUTE_UNUSED) { @@ -399,7 +399,7 @@ JNIEXPORT jboolean JVM_HoldsLock(JNIEnv* env, jclass unused ATTRIBUTE_UNUSED, jo art::ThrowNullPointerException("object == null"); return JNI_FALSE; } - return soa.Self()->HoldsLock(object.Decode()); + return soa.Self()->HoldsLock(object.Ptr()); } JNIEXPORT void JVM_SetNativeThreadName(JNIEnv* env, jobject jthread, jstring java_name) { diff --git a/runtime/reflection-inl.h b/runtime/reflection-inl.h index d7db8a4c5..52cdfb817 100644 --- a/runtime/reflection-inl.h +++ b/runtime/reflection-inl.h @@ -107,7 +107,7 @@ inline bool VerifyObjectIsClass(ObjPtr o, ObjPtr if (UNLIKELY(o == nullptr)) { ThrowNullPointerException("null receiver"); return false; - } else if (UNLIKELY(!o->InstanceOf(c.Decode()))) { + } else if (UNLIKELY(!o->InstanceOf(c.Ptr()))) { InvalidReceiverError(o, c); return false; } diff --git a/runtime/reflection.cc b/runtime/reflection.cc index 066bc1264..de003e525 100644 --- a/runtime/reflection.cc +++ b/runtime/reflection.cc @@ -73,7 +73,7 @@ class ArgArray { } void Append(ObjPtr obj) REQUIRES_SHARED(Locks::mutator_lock_) { - Append(StackReference::FromMirrorPtr(obj.Decode()).AsVRegValue()); + Append(StackReference::FromMirrorPtr(obj.Ptr()).AsVRegValue()); } void AppendWide(uint64_t value) { @@ -677,7 +677,7 @@ jobject InvokeMethod(const ScopedObjectAccessAlreadyRunnable& soa, jobject javaM // Box if necessary and return. return soa.AddLocalReference( - BoxPrimitive(Primitive::GetType(shorty[0]), result).Decode()); + BoxPrimitive(Primitive::GetType(shorty[0]), result).Ptr()); } ObjPtr BoxPrimitive(Primitive::Type src_class, const JValue& value) { @@ -773,7 +773,7 @@ static bool UnboxPrimitive(ObjPtr o, } return false; } - unboxed_value->SetL(o.Decode()); + unboxed_value->SetL(o.Ptr()); return true; } if (UNLIKELY(dst_class->GetPrimitiveType() == Primitive::kPrimVoid)) { @@ -911,14 +911,14 @@ void UpdateReference(Thread* self, jobject obj, ObjPtr result) { IndirectRef ref = reinterpret_cast(obj); IndirectRefKind kind = GetIndirectRefKind(ref); if (kind == kLocal) { - self->GetJniEnv()->locals.Update(obj, result.Decode()); + self->GetJniEnv()->locals.Update(obj, result.Ptr()); } else if (kind == kHandleScopeOrInvalid) { LOG(FATAL) << "Unsupported UpdateReference for kind kHandleScopeOrInvalid"; } else if (kind == kGlobal) { - self->GetJniEnv()->vm->UpdateGlobal(self, ref, result.Decode()); + self->GetJniEnv()->vm->UpdateGlobal(self, ref, result.Ptr()); } else { DCHECK_EQ(kind, kWeakGlobal); - self->GetJniEnv()->vm->UpdateWeakGlobal(self, ref, result.Decode()); + self->GetJniEnv()->vm->UpdateWeakGlobal(self, ref, result.Ptr()); } } diff --git a/runtime/runtime.cc b/runtime/runtime.cc index df0dca023..7032565da 100644 --- a/runtime/runtime.cc +++ b/runtime/runtime.cc @@ -555,7 +555,7 @@ static jobject CreateSystemClassLoader(Runtime* runtime) { // We can't run in a transaction yet. contextClassLoader->SetObject( soa.Self()->GetPeer(), - soa.Decode(system_class_loader.get()).Decode()); + soa.Decode(system_class_loader.get()).Ptr()); return env->NewGlobalRef(system_class_loader.get()); } diff --git a/runtime/scoped_thread_state_change-inl.h b/runtime/scoped_thread_state_change-inl.h index cf020d061..1d9f13246 100644 --- a/runtime/scoped_thread_state_change-inl.h +++ b/runtime/scoped_thread_state_change-inl.h @@ -82,7 +82,7 @@ inline T ScopedObjectAccessAlreadyRunnable::AddLocalReference(mirror::Object* ob template inline T ScopedObjectAccessAlreadyRunnable::AddLocalReference( ObjPtr obj) const { - return AddLocalReference(obj.Decode()); + return AddLocalReference(obj.Ptr()); } template diff --git a/runtime/thread.cc b/runtime/thread.cc index b8c709652..80542e8b5 100644 --- a/runtime/thread.cc +++ b/runtime/thread.cc @@ -407,7 +407,7 @@ void* Thread::CreateCallback(void* arg) { // Copy peer into self, deleting global reference when done. CHECK(self->tlsPtr_.jpeer != nullptr); - self->tlsPtr_.opeer = soa.Decode(self->tlsPtr_.jpeer).Decode(); + self->tlsPtr_.opeer = soa.Decode(self->tlsPtr_.jpeer).Ptr(); self->GetJniEnv()->DeleteGlobalRef(self->tlsPtr_.jpeer); self->tlsPtr_.jpeer = nullptr; self->SetThreadName(self->GetThreadName(soa)->ToModifiedUtf8().c_str()); @@ -445,7 +445,7 @@ Thread* Thread::FromManagedThread(const ScopedObjectAccessAlreadyRunnable& soa, Thread* Thread::FromManagedThread(const ScopedObjectAccessAlreadyRunnable& soa, jobject java_thread) { - return FromManagedThread(soa, soa.Decode(java_thread).Decode()); + return FromManagedThread(soa, soa.Decode(java_thread).Ptr()); } static size_t FixStackSize(size_t stack_size) { @@ -803,7 +803,7 @@ void Thread::CreatePeer(const char* name, bool as_daemon, jobject thread_group) } { ScopedObjectAccess soa(this); - tlsPtr_.opeer = soa.Decode(peer.get()).Decode(); + tlsPtr_.opeer = soa.Decode(peer.get()).Ptr(); } env->CallNonvirtualVoidMethod(peer.get(), WellKnownClasses::java_lang_Thread, @@ -3051,7 +3051,7 @@ void Thread::DeoptimizeWithDeoptimizationException(JValue* result) { void Thread::SetException(ObjPtr new_exception) { CHECK(new_exception != nullptr); // TODO: DCHECK(!IsExceptionPending()); - tlsPtr_.exception = new_exception.Decode(); + tlsPtr_.exception = new_exception.Ptr(); } } // namespace art diff --git a/runtime/verifier/method_verifier.cc b/runtime/verifier/method_verifier.cc index 50466edc1..374d825ce 100644 --- a/runtime/verifier/method_verifier.cc +++ b/runtime/verifier/method_verifier.cc @@ -4566,7 +4566,7 @@ ArtField* MethodVerifier::GetInstanceField(const RegType& obj_type, int field_id ObjPtr klass = field->GetDeclaringClass(); const RegType& field_klass = FromClass(klass->GetDescriptor(&temp), - klass.Decode(), + klass.Ptr(), klass->CannotBeAssignedFromOtherTypes()); if (obj_type.IsUninitializedTypes()) { // Field accesses through uninitialized references are only allowable for constructors where @@ -4668,7 +4668,7 @@ void MethodVerifier::VerifyISFieldAccess(const Instruction* inst, const RegType& can_load_classes_ ? field->GetType() : field->GetType(); if (field_type_class != nullptr) { field_type = &FromClass(field->GetTypeDescriptor(), - field_type_class.Decode(), + field_type_class.Ptr(), field_type_class->CannotBeAssignedFromOtherTypes()); } else { DCHECK(!can_load_classes_ || self_->IsExceptionPending()); @@ -4793,7 +4793,7 @@ void MethodVerifier::VerifyQuickFieldAccess(const Instruction* inst, const RegTy if (field_type_class != nullptr) { field_type = &FromClass(field->GetTypeDescriptor(), - field_type_class.Decode(), + field_type_class.Ptr(), field_type_class->CannotBeAssignedFromOtherTypes()); } else { Thread* self = Thread::Current(); diff --git a/runtime/verifier/verifier_deps_test.cc b/runtime/verifier/verifier_deps_test.cc index 4533464ba..71203e688 100644 --- a/runtime/verifier/verifier_deps_test.cc +++ b/runtime/verifier/verifier_deps_test.cc @@ -85,7 +85,7 @@ class VerifierDepsTest : public CommonRuntimeTest { SetVerifierDeps(dex_files); ObjPtr loader = soa->Decode(class_loader_); - class_linker_->RegisterDexFile(*dex_file_, loader.Decode()); + class_linker_->RegisterDexFile(*dex_file_, loader.Ptr()); klass_Main_ = FindClassByName("LMain;", soa); CHECK(klass_Main_ != nullptr); diff --git a/test/1337-gc-coverage/gc_coverage.cc b/test/1337-gc-coverage/gc_coverage.cc index 1e60bd9c8..1cb2fb097 100644 --- a/test/1337-gc-coverage/gc_coverage.cc +++ b/test/1337-gc-coverage/gc_coverage.cc @@ -43,7 +43,7 @@ extern "C" JNIEXPORT void JNICALL Java_Main_decrementDisableMovingGC(JNIEnv*, jc extern "C" JNIEXPORT jlong JNICALL Java_Main_objectAddress(JNIEnv* env, jclass, jobject object) { ScopedObjectAccess soa(env); - return reinterpret_cast(soa.Decode(object).Decode()); + return reinterpret_cast(soa.Decode(object).Ptr()); } extern "C" JNIEXPORT jboolean JNICALL Java_Main_supportCollectorTransition(JNIEnv*, jclass) { diff --git a/test/148-multithread-gc-annotations/gc_coverage.cc b/test/148-multithread-gc-annotations/gc_coverage.cc index cb12df4a8..4862b8705 100644 --- a/test/148-multithread-gc-annotations/gc_coverage.cc +++ b/test/148-multithread-gc-annotations/gc_coverage.cc @@ -35,7 +35,7 @@ extern "C" JNIEXPORT jboolean JNICALL Java_MovingGCThread_supportHomogeneousSpac extern "C" JNIEXPORT jlong JNICALL Java_MovingGCThread_objectAddress(JNIEnv* env, jclass, jobject object) { ScopedObjectAccess soa(env); - return reinterpret_cast(soa.Decode(object).Decode()); + return reinterpret_cast(soa.Decode(object).Ptr()); } } // namespace diff --git a/test/454-get-vreg/get_vreg_jni.cc b/test/454-get-vreg/get_vreg_jni.cc index 9058af43d..0360eda02 100644 --- a/test/454-get-vreg/get_vreg_jni.cc +++ b/test/454-get-vreg/get_vreg_jni.cc @@ -123,7 +123,7 @@ class TestVisitor : public StackVisitor { extern "C" JNIEXPORT jint JNICALL Java_Main_doNativeCall(JNIEnv*, jobject value) { ScopedObjectAccess soa(Thread::Current()); std::unique_ptr context(Context::Create()); - TestVisitor visitor(soa.Self(), context.get(), soa.Decode(value).Decode()); + TestVisitor visitor(soa.Self(), context.get(), soa.Decode(value).Ptr()); visitor.WalkStack(); return visitor.found_method_index_; } diff --git a/test/461-get-reference-vreg/get_reference_vreg_jni.cc b/test/461-get-reference-vreg/get_reference_vreg_jni.cc index 7b1ab9c5b..b2cad6782 100644 --- a/test/461-get-reference-vreg/get_reference_vreg_jni.cc +++ b/test/461-get-reference-vreg/get_reference_vreg_jni.cc @@ -70,7 +70,7 @@ class TestVisitor : public StackVisitor { extern "C" JNIEXPORT jint JNICALL Java_Main_doNativeCallRef(JNIEnv*, jobject value) { ScopedObjectAccess soa(Thread::Current()); std::unique_ptr context(Context::Create()); - TestVisitor visitor(soa.Self(), context.get(), soa.Decode(value).Decode()); + TestVisitor visitor(soa.Self(), context.get(), soa.Decode(value).Ptr()); visitor.WalkStack(); return visitor.found_method_index_; } diff --git a/test/497-inlining-and-class-loader/clear_dex_cache.cc b/test/497-inlining-and-class-loader/clear_dex_cache.cc index 3f2df2947..6c73d7d9b 100644 --- a/test/497-inlining-and-class-loader/clear_dex_cache.cc +++ b/test/497-inlining-and-class-loader/clear_dex_cache.cc @@ -43,7 +43,7 @@ extern "C" JNIEXPORT jobject JNICALL Java_Main_cloneResolvedMethods(JNIEnv* env, array = env->NewLongArray(num_methods); } CHECK(array != nullptr); - mirror::PointerArray* pointer_array = soa.Decode(array).Decode(); + mirror::PointerArray* pointer_array = soa.Decode(array).Ptr(); for (size_t i = 0; i != num_methods; ++i) { ArtMethod* method = mirror::DexCache::GetElementPtrSize(methods, i, kRuntimePointerSize); pointer_array->SetElementPtrSize(i, method, kRuntimePointerSize); diff --git a/test/543-env-long-ref/env_long_ref.cc b/test/543-env-long-ref/env_long_ref.cc index cd127ef3c..ce5602f6e 100644 --- a/test/543-env-long-ref/env_long_ref.cc +++ b/test/543-env-long-ref/env_long_ref.cc @@ -43,7 +43,7 @@ class TestVisitor : public StackVisitor { uint32_t value = 0; CHECK(GetVReg(m, 1, kReferenceVReg, &value)); CHECK_EQ(reinterpret_cast(value), - soa_.Decode(expected_value_).Decode()); + soa_.Decode(expected_value_).Ptr()); } return true; } diff --git a/test/596-app-images/app_images.cc b/test/596-app-images/app_images.cc index 78cc3fd11..42211f754 100644 --- a/test/596-app-images/app_images.cc +++ b/test/596-app-images/app_images.cc @@ -54,7 +54,7 @@ extern "C" JNIEXPORT jboolean JNICALL Java_Main_checkAppImageContains(JNIEnv*, j auto* image_space = space->AsImageSpace(); const auto& image_header = image_space->GetImageHeader(); if (image_header.IsAppImage()) { - if (image_space->HasAddress(klass_ptr.Decode())) { + if (image_space->HasAddress(klass_ptr.Ptr())) { return JNI_TRUE; } } -- 2.11.0