diff options
| author | 2017-01-18 17:05:59 +0000 | |
|---|---|---|
| committer | 2017-01-18 17:08:57 +0000 | |
| commit | 9cd522b50a5f0209e97a2e6bcf8c9c350d3f3f83 (patch) | |
| tree | 503af07a0a6122d161a81dfed2d2e64f8e501d5a | |
| parent | c3b7bf3bcc55ec3c684210176ff6ddeb9d33ac19 (diff) | |
Remove now unused dex_cache_resolved_types_ from ArtMethod.
Test: test-art-host test-art-target
Change-Id: I004c040da165934f74eb8b8e85e99e7c6621c2df
| -rw-r--r-- | compiler/image_writer.cc | 2 | ||||
| -rw-r--r-- | patchoat/patchoat.cc | 2 | ||||
| -rw-r--r-- | runtime/art_method-inl.h | 28 | ||||
| -rw-r--r-- | runtime/art_method.h | 23 | ||||
| -rw-r--r-- | runtime/class_linker.cc | 18 | ||||
| -rw-r--r-- | runtime/class_linker_test.cc | 4 | ||||
| -rw-r--r-- | runtime/generated/asm_support_gen.h | 8 | ||||
| -rw-r--r-- | runtime/image.cc | 2 | ||||
| -rw-r--r-- | runtime/openjdkjvmti/ti_redefine.cc | 1 |
9 files changed, 5 insertions, 83 deletions
diff --git a/compiler/image_writer.cc b/compiler/image_writer.cc index 9c38445276..4109345f80 100644 --- a/compiler/image_writer.cc +++ b/compiler/image_writer.cc @@ -2346,8 +2346,6 @@ void ImageWriter::CopyAndFixupMethod(ArtMethod* orig, copy->SetDeclaringClass(GetImageAddress(orig->GetDeclaringClassUnchecked())); ArtMethod** orig_resolved_methods = orig->GetDexCacheResolvedMethods(target_ptr_size_); copy->SetDexCacheResolvedMethods(NativeLocationInImage(orig_resolved_methods), target_ptr_size_); - GcRoot<mirror::Class>* orig_resolved_types = orig->GetDexCacheResolvedTypes(target_ptr_size_); - copy->SetDexCacheResolvedTypes(NativeLocationInImage(orig_resolved_types), target_ptr_size_); // OatWriter replaces the code_ with an offset value. Here we re-adjust to a pointer relative to // oat_begin_ diff --git a/patchoat/patchoat.cc b/patchoat/patchoat.cc index 7ae13a574b..9a73830f99 100644 --- a/patchoat/patchoat.cc +++ b/patchoat/patchoat.cc @@ -790,8 +790,6 @@ void PatchOat::FixupMethod(ArtMethod* object, ArtMethod* copy) { copy->SetDeclaringClass(RelocatedAddressOfPointer(object->GetDeclaringClass())); copy->SetDexCacheResolvedMethods( RelocatedAddressOfPointer(object->GetDexCacheResolvedMethods(pointer_size)), pointer_size); - copy->SetDexCacheResolvedTypes( - RelocatedAddressOfPointer(object->GetDexCacheResolvedTypes(pointer_size)), pointer_size); copy->SetEntryPointFromQuickCompiledCodePtrSize(RelocatedAddressOfPointer( object->GetEntryPointFromQuickCompiledCodePtrSize(pointer_size)), pointer_size); // No special handling for IMT conflict table since all pointers are moved by the same offset. diff --git a/runtime/art_method-inl.h b/runtime/art_method-inl.h index 0fd891c9ec..15938c52be 100644 --- a/runtime/art_method-inl.h +++ b/runtime/art_method-inl.h @@ -175,24 +175,6 @@ inline bool ArtMethod::HasSameDexCacheResolvedMethods(ArtMethod* other, PointerS other->GetDexCacheResolvedMethods(pointer_size); } -inline GcRoot<mirror::Class>* ArtMethod::GetDexCacheResolvedTypes(PointerSize pointer_size) { - return GetNativePointer<GcRoot<mirror::Class>*>(DexCacheResolvedTypesOffset(pointer_size), - pointer_size); -} - -inline bool ArtMethod::HasDexCacheResolvedTypes(PointerSize pointer_size) { - return GetDexCacheResolvedTypes(pointer_size) != nullptr; -} - -inline bool ArtMethod::HasSameDexCacheResolvedTypes(GcRoot<mirror::Class>* other_cache, - PointerSize pointer_size) { - return GetDexCacheResolvedTypes(pointer_size) == other_cache; -} - -inline bool ArtMethod::HasSameDexCacheResolvedTypes(ArtMethod* other, PointerSize pointer_size) { - return GetDexCacheResolvedTypes(pointer_size) == other->GetDexCacheResolvedTypes(pointer_size); -} - inline mirror::Class* ArtMethod::GetClassFromTypeIndex(dex::TypeIndex type_idx, bool resolve) { ObjPtr<mirror::DexCache> dex_cache = GetDexCache(); ObjPtr<mirror::Class> type = dex_cache->GetResolvedType(type_idx); @@ -416,11 +398,6 @@ inline void ArtMethod::SetDexCacheResolvedMethods(ArtMethod** new_dex_cache_meth pointer_size); } -inline void ArtMethod::SetDexCacheResolvedTypes(GcRoot<mirror::Class>* new_dex_cache_types, - PointerSize pointer_size) { - SetNativePointer(DexCacheResolvedTypesOffset(pointer_size), new_dex_cache_types, pointer_size); -} - inline mirror::Class* ArtMethod::GetReturnType(bool resolve) { DCHECK(!IsProxyMethod()); const DexFile* dex_file = GetDexFile(); @@ -511,11 +488,6 @@ inline void ArtMethod::UpdateObjectsForImageRelocation(const Visitor& visitor, if (old_methods != new_methods) { SetDexCacheResolvedMethods(new_methods, pointer_size); } - GcRoot<mirror::Class>* old_types = GetDexCacheResolvedTypes(pointer_size); - GcRoot<mirror::Class>* new_types = visitor(old_types); - if (old_types != new_types) { - SetDexCacheResolvedTypes(new_types, pointer_size); - } } template <ReadBarrierOption kReadBarrierOption, typename Visitor> diff --git a/runtime/art_method.h b/runtime/art_method.h index 912df85815..f6fadf7665 100644 --- a/runtime/art_method.h +++ b/runtime/art_method.h @@ -351,15 +351,6 @@ class ArtMethod FINAL { bool HasSameDexCacheResolvedMethods(ArtMethod** other_cache, PointerSize pointer_size) REQUIRES_SHARED(Locks::mutator_lock_); - void SetDexCacheResolvedTypes(GcRoot<mirror::Class>* new_dex_cache_types, - PointerSize pointer_size) - REQUIRES_SHARED(Locks::mutator_lock_); - bool HasDexCacheResolvedTypes(PointerSize pointer_size) REQUIRES_SHARED(Locks::mutator_lock_); - bool HasSameDexCacheResolvedTypes(ArtMethod* other, PointerSize pointer_size) - REQUIRES_SHARED(Locks::mutator_lock_); - bool HasSameDexCacheResolvedTypes(GcRoot<mirror::Class>* other_cache, PointerSize pointer_size) - REQUIRES_SHARED(Locks::mutator_lock_); - // Get the Class* from the type index into this method's dex cache. mirror::Class* GetClassFromTypeIndex(dex::TypeIndex type_idx, bool resolve) REQUIRES_SHARED(Locks::mutator_lock_); @@ -412,12 +403,6 @@ class ArtMethod FINAL { * static_cast<size_t>(pointer_size)); } - static MemberOffset DexCacheResolvedTypesOffset(PointerSize pointer_size) { - return MemberOffset(PtrSizedFieldsOffset(pointer_size) + OFFSETOF_MEMBER( - PtrSizedFields, dex_cache_resolved_types_) / sizeof(void*) - * static_cast<size_t>(pointer_size)); - } - static MemberOffset DataOffset(PointerSize pointer_size) { return MemberOffset(PtrSizedFieldsOffset(pointer_size) + OFFSETOF_MEMBER( PtrSizedFields, data_) / sizeof(void*) * static_cast<size_t>(pointer_size)); @@ -604,9 +589,6 @@ class ArtMethod FINAL { void CopyFrom(ArtMethod* src, PointerSize image_pointer_size) REQUIRES_SHARED(Locks::mutator_lock_); - ALWAYS_INLINE GcRoot<mirror::Class>* GetDexCacheResolvedTypes(PointerSize pointer_size) - REQUIRES_SHARED(Locks::mutator_lock_); - // Note, hotness_counter_ updates are non-atomic but it doesn't need to be precise. Also, // given that the counter is only 16 bits wide we can expect wrap-around in some // situations. Consumers of hotness_count_ must be able to deal with that. @@ -653,8 +635,6 @@ class ArtMethod FINAL { std::string JniLongName() REQUIRES_SHARED(Locks::mutator_lock_); - - // Update heap objects and non-entrypoint pointers by the passed in visitor for image relocation. // Does not use read barrier. template <typename Visitor> @@ -703,9 +683,6 @@ class ArtMethod FINAL { // Short cuts to declaring_class_->dex_cache_ member for fast compiled code access. ArtMethod** dex_cache_resolved_methods_; - // Short cuts to declaring_class_->dex_cache_ member for fast compiled code access. - GcRoot<mirror::Class>* dex_cache_resolved_types_; - // Pointer to JNI function registered to this method, or a function to resolve the JNI function, // or the profiling data for non-native methods, or an ImtConflictTable. void* data_; diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc index 07c6eda03f..49cffed559 100644 --- a/runtime/class_linker.cc +++ b/runtime/class_linker.cc @@ -1099,23 +1099,7 @@ class FixupArtMethodArrayVisitor : public ArtMethodVisitor { explicit FixupArtMethodArrayVisitor(const ImageHeader& header) : header_(header) {} virtual void Visit(ArtMethod* method) REQUIRES_SHARED(Locks::mutator_lock_) { - GcRoot<mirror::Class>* resolved_types = method->GetDexCacheResolvedTypes(kRuntimePointerSize); const bool is_copied = method->IsCopied(); - if (resolved_types != nullptr) { - bool in_image_space = false; - if (kIsDebugBuild || is_copied) { - in_image_space = header_.GetImageSection(ImageHeader::kSectionDexCacheArrays).Contains( - reinterpret_cast<const uint8_t*>(resolved_types) - header_.GetImageBegin()); - } - // Must be in image space for non-miranda method. - DCHECK(is_copied || in_image_space) - << resolved_types << " is not in image starting at " - << reinterpret_cast<void*>(header_.GetImageBegin()); - if (!is_copied || in_image_space) { - method->SetDexCacheResolvedTypes(method->GetDexCache()->GetResolvedTypes(), - kRuntimePointerSize); - } - } ArtMethod** resolved_methods = method->GetDexCacheResolvedMethods(kRuntimePointerSize); if (resolved_methods != nullptr) { bool in_image_space = false; @@ -3207,7 +3191,6 @@ void ClassLinker::LoadMethod(const DexFile& dex_file, dst->SetCodeItemOffset(it.GetMethodCodeItemOffset()); dst->SetDexCacheResolvedMethods(klass->GetDexCache()->GetResolvedMethods(), image_pointer_size_); - dst->SetDexCacheResolvedTypes(klass->GetDexCache()->GetResolvedTypes(), image_pointer_size_); uint32_t access_flags = it.GetMethodAccessFlags(); @@ -4365,7 +4348,6 @@ void ClassLinker::CheckProxyMethod(ArtMethod* method, ArtMethod* prototype) cons // The proxy method doesn't have its own dex cache or dex file and so it steals those of its // interface prototype. The exception to this are Constructors and the Class of the Proxy itself. CHECK(prototype->HasSameDexCacheResolvedMethods(method, image_pointer_size_)); - CHECK(prototype->HasSameDexCacheResolvedTypes(method, image_pointer_size_)); auto* np = method->GetInterfaceMethodIfProxy(image_pointer_size_); CHECK_EQ(prototype->GetDeclaringClass()->GetDexCache(), np->GetDexCache()); CHECK_EQ(prototype->GetDexMethodIndex(), method->GetDexMethodIndex()); diff --git a/runtime/class_linker_test.cc b/runtime/class_linker_test.cc index bbe7280bb3..0341c64969 100644 --- a/runtime/class_linker_test.cc +++ b/runtime/class_linker_test.cc @@ -242,13 +242,9 @@ class ClassLinkerTest : public CommonRuntimeTest { EXPECT_TRUE(method->GetSignature() != Signature::NoSignature()); EXPECT_TRUE(method->HasDexCacheResolvedMethods(kRuntimePointerSize)); - EXPECT_TRUE(method->HasDexCacheResolvedTypes(kRuntimePointerSize)); EXPECT_TRUE(method->HasSameDexCacheResolvedMethods( method->GetDeclaringClass()->GetDexCache()->GetResolvedMethods(), kRuntimePointerSize)); - EXPECT_TRUE(method->HasSameDexCacheResolvedTypes( - method->GetDeclaringClass()->GetDexCache()->GetResolvedTypes(), - kRuntimePointerSize)); } void AssertField(ObjPtr<mirror::Class> klass, ArtField* field) diff --git a/runtime/generated/asm_support_gen.h b/runtime/generated/asm_support_gen.h index 9e7f52bfd3..af57397f96 100644 --- a/runtime/generated/asm_support_gen.h +++ b/runtime/generated/asm_support_gen.h @@ -60,13 +60,13 @@ DEFINE_CHECK_EQ(static_cast<uint32_t>(ACCESS_FLAGS_CLASS_IS_FINALIZABLE_BIT), (s DEFINE_CHECK_EQ(static_cast<int32_t>(ART_METHOD_DEX_CACHE_METHODS_OFFSET_32), (static_cast<int32_t>(art::ArtMethod:: DexCacheResolvedMethodsOffset(art::PointerSize::k32).Int32Value()))) #define ART_METHOD_DEX_CACHE_METHODS_OFFSET_64 24 DEFINE_CHECK_EQ(static_cast<int32_t>(ART_METHOD_DEX_CACHE_METHODS_OFFSET_64), (static_cast<int32_t>(art::ArtMethod:: DexCacheResolvedMethodsOffset(art::PointerSize::k64).Int32Value()))) -#define ART_METHOD_JNI_OFFSET_32 28 +#define ART_METHOD_JNI_OFFSET_32 24 DEFINE_CHECK_EQ(static_cast<int32_t>(ART_METHOD_JNI_OFFSET_32), (static_cast<int32_t>(art::ArtMethod:: EntryPointFromJniOffset(art::PointerSize::k32).Int32Value()))) -#define ART_METHOD_JNI_OFFSET_64 40 +#define ART_METHOD_JNI_OFFSET_64 32 DEFINE_CHECK_EQ(static_cast<int32_t>(ART_METHOD_JNI_OFFSET_64), (static_cast<int32_t>(art::ArtMethod:: EntryPointFromJniOffset(art::PointerSize::k64).Int32Value()))) -#define ART_METHOD_QUICK_CODE_OFFSET_32 32 +#define ART_METHOD_QUICK_CODE_OFFSET_32 28 DEFINE_CHECK_EQ(static_cast<int32_t>(ART_METHOD_QUICK_CODE_OFFSET_32), (static_cast<int32_t>(art::ArtMethod:: EntryPointFromQuickCompiledCodeOffset(art::PointerSize::k32).Int32Value()))) -#define ART_METHOD_QUICK_CODE_OFFSET_64 48 +#define ART_METHOD_QUICK_CODE_OFFSET_64 40 DEFINE_CHECK_EQ(static_cast<int32_t>(ART_METHOD_QUICK_CODE_OFFSET_64), (static_cast<int32_t>(art::ArtMethod:: EntryPointFromQuickCompiledCodeOffset(art::PointerSize::k64).Int32Value()))) #define ART_METHOD_DECLARING_CLASS_OFFSET 0 DEFINE_CHECK_EQ(static_cast<int32_t>(ART_METHOD_DECLARING_CLASS_OFFSET), (static_cast<int32_t>(art::ArtMethod:: DeclaringClassOffset().Int32Value()))) diff --git a/runtime/image.cc b/runtime/image.cc index 2ef60c3e07..6d8889532f 100644 --- a/runtime/image.cc +++ b/runtime/image.cc @@ -25,7 +25,7 @@ namespace art { const uint8_t ImageHeader::kImageMagic[] = { 'a', 'r', 't', '\n' }; -const uint8_t ImageHeader::kImageVersion[] = { '0', '3', '4', '\0' }; // mirror::Class update +const uint8_t ImageHeader::kImageVersion[] = { '0', '3', '5', '\0' }; // ArtMethod update ImageHeader::ImageHeader(uint32_t image_begin, uint32_t image_size, diff --git a/runtime/openjdkjvmti/ti_redefine.cc b/runtime/openjdkjvmti/ti_redefine.cc index 14477a1db9..6af51c4c6c 100644 --- a/runtime/openjdkjvmti/ti_redefine.cc +++ b/runtime/openjdkjvmti/ti_redefine.cc @@ -958,7 +958,6 @@ void Redefiner::ClassRedefinition::UpdateMethods(art::ObjPtr<art::mirror::Class> linker->SetEntryPointsToInterpreter(&method); method.SetCodeItemOffset(dex_file_->FindCodeItemOffset(class_def, dex_method_idx)); method.SetDexCacheResolvedMethods(new_dex_cache->GetResolvedMethods(), image_pointer_size); - method.SetDexCacheResolvedTypes(new_dex_cache->GetResolvedTypes(), image_pointer_size); // Notify the jit that this method is redefined. art::jit::Jit* jit = driver_->runtime_->GetJit(); if (jit != nullptr) { |