diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/compiler.h | 3 | ||||
-rw-r--r-- | compiler/compilers.h | 3 | ||||
-rw-r--r-- | compiler/image_writer.cc | 12 | ||||
-rw-r--r-- | compiler/image_writer.h | 13 | ||||
-rw-r--r-- | compiler/optimizing/code_generator_arm.cc | 2 | ||||
-rw-r--r-- | compiler/optimizing/code_generator_x86.cc | 2 |
6 files changed, 22 insertions, 13 deletions
diff --git a/compiler/compiler.h b/compiler/compiler.h index 1d5fc24e9..2357297b1 100644 --- a/compiler/compiler.h +++ b/compiler/compiler.h @@ -74,7 +74,8 @@ class Compiler { uint32_t method_idx, const DexFile& dex_file) const = 0; - virtual uintptr_t GetEntryPointOf(mirror::ArtMethod* method) const = 0; + virtual uintptr_t GetEntryPointOf(mirror::ArtMethod* method) const + SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) = 0; virtual bool WriteElf(art::File* file, OatWriter* oat_writer, diff --git a/compiler/compilers.h b/compiler/compilers.h index 892a6bd1d..255dd23f3 100644 --- a/compiler/compilers.h +++ b/compiler/compilers.h @@ -43,7 +43,8 @@ class QuickCompiler : public Compiler { uint32_t method_idx, const DexFile& dex_file) const OVERRIDE; - uintptr_t GetEntryPointOf(mirror::ArtMethod* method) const OVERRIDE; + uintptr_t GetEntryPointOf(mirror::ArtMethod* method) const OVERRIDE + SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); bool WriteElf(art::File* file, OatWriter* oat_writer, diff --git a/compiler/image_writer.cc b/compiler/image_writer.cc index c35d4007b..e6d983f58 100644 --- a/compiler/image_writer.cc +++ b/compiler/image_writer.cc @@ -45,6 +45,7 @@ #include "mirror/dex_cache-inl.h" #include "mirror/object-inl.h" #include "mirror/object_array-inl.h" +#include "mirror/string-inl.h" #include "oat.h" #include "oat_file.h" #include "object_utils.h" @@ -448,7 +449,7 @@ void ImageWriter::WalkInstanceFields(mirror::Object* obj, mirror::Class* klass) for (size_t i = 0; i < num_reference_fields; ++i) { mirror::ArtField* field = sirt_class->GetInstanceField(i); MemberOffset field_offset = field->GetOffset(); - mirror::Object* value = obj->GetFieldObject<mirror::Object>(field_offset, false); + mirror::Object* value = obj->GetFieldObject<mirror::Object>(field_offset); if (value != nullptr) { WalkFieldsInOrder(value); } @@ -471,7 +472,7 @@ void ImageWriter::WalkFieldsInOrder(mirror::Object* obj) { for (size_t i = 0; i < num_static_fields; ++i) { mirror::ArtField* field = klass->GetStaticField(i); MemberOffset field_offset = field->GetOffset(); - mirror::Object* value = sirt_obj->GetFieldObject<mirror::Object>(field_offset, false); + mirror::Object* value = sirt_obj->GetFieldObject<mirror::Object>(field_offset); if (value != nullptr) { WalkFieldsInOrder(value); } @@ -586,11 +587,11 @@ class FixupVisitor { void operator()(Object* obj, MemberOffset offset, bool /*is_static*/) const EXCLUSIVE_LOCKS_REQUIRED(Locks::mutator_lock_, Locks::heap_bitmap_lock_) { - Object* ref = obj->GetFieldObject<Object, kVerifyNone>(offset, false); + Object* ref = obj->GetFieldObject<Object, kVerifyNone, false>(offset); // Use SetFieldObjectWithoutWriteBarrier to avoid card marking since we are writing to the // image. copy_->SetFieldObjectWithoutWriteBarrier<false, true, kVerifyNone>( - offset, image_writer_->GetImageAddress(ref), false); + offset, image_writer_->GetImageAddress(ref)); } // java.lang.ref.Reference visitor. @@ -598,8 +599,7 @@ class FixupVisitor { SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) EXCLUSIVE_LOCKS_REQUIRED(Locks::heap_bitmap_lock_) { copy_->SetFieldObjectWithoutWriteBarrier<false, true, kVerifyNone>( - mirror::Reference::ReferentOffset(), image_writer_->GetImageAddress(ref->GetReferent()), - false); + mirror::Reference::ReferentOffset(), image_writer_->GetImageAddress(ref->GetReferent())); } private: diff --git a/compiler/image_writer.h b/compiler/image_writer.h index ee241cb02..7e22a960e 100644 --- a/compiler/image_writer.h +++ b/compiler/image_writer.h @@ -66,17 +66,20 @@ class ImageWriter { void AssignImageOffset(mirror::Object* object) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); void SetImageOffset(mirror::Object* object, size_t offset) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); - bool IsImageOffsetAssigned(mirror::Object* object) const; - size_t GetImageOffset(mirror::Object* object) const; + bool IsImageOffsetAssigned(mirror::Object* object) const + SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); + size_t GetImageOffset(mirror::Object* object) const SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); - mirror::Object* GetImageAddress(mirror::Object* object) const { + mirror::Object* GetImageAddress(mirror::Object* object) const + SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) { if (object == NULL) { return NULL; } return reinterpret_cast<mirror::Object*>(image_begin_ + GetImageOffset(object)); } - mirror::Object* GetLocalAddress(mirror::Object* object) const { + mirror::Object* GetLocalAddress(mirror::Object* object) const + SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) { size_t offset = GetImageOffset(object); byte* dst = image_->Begin() + offset; return reinterpret_cast<mirror::Object*>(dst); @@ -108,7 +111,7 @@ class ImageWriter { SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); // Wire dex cache resolved strings to strings in the image to avoid runtime resolution. - void ComputeEagerResolvedStrings(); + void ComputeEagerResolvedStrings() SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); static void ComputeEagerResolvedStringsCallback(mirror::Object* obj, void* arg) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); diff --git a/compiler/optimizing/code_generator_arm.cc b/compiler/optimizing/code_generator_arm.cc index a446701b3..be512323c 100644 --- a/compiler/optimizing/code_generator_arm.cc +++ b/compiler/optimizing/code_generator_arm.cc @@ -19,8 +19,10 @@ #include "utils/arm/assembler_arm.h" #include "utils/arm/managed_register_arm.h" +#include "entrypoints/quick/quick_entrypoints.h" #include "mirror/array.h" #include "mirror/art_method.h" +#include "thread.h" #define __ reinterpret_cast<ArmAssembler*>(GetAssembler())-> diff --git a/compiler/optimizing/code_generator_x86.cc b/compiler/optimizing/code_generator_x86.cc index fbb054ae8..e4f95c795 100644 --- a/compiler/optimizing/code_generator_x86.cc +++ b/compiler/optimizing/code_generator_x86.cc @@ -19,8 +19,10 @@ #include "utils/x86/assembler_x86.h" #include "utils/x86/managed_register_x86.h" +#include "entrypoints/quick/quick_entrypoints.h" #include "mirror/array.h" #include "mirror/art_method.h" +#include "thread.h" #define __ reinterpret_cast<X86Assembler*>(GetAssembler())-> |