summaryrefslogtreecommitdiff
path: root/compiler/image_writer.h
diff options
context:
space:
mode:
author Mathieu Chartier <mathieuc@google.com> 2016-06-15 17:44:14 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2016-06-15 17:44:14 +0000
commitabdda2fb52eb7e9a6916899a913f78251d8ed277 (patch)
tree165a31831ae077827b1e7b973bd5602125b5b142 /compiler/image_writer.h
parent2b87a47c09823031c4fe336dcef0867605debfd7 (diff)
parentbadee9820fcf5dca5f8c46c3215ae1779ee7736e (diff)
Merge "Optimize IMT"
Diffstat (limited to 'compiler/image_writer.h')
-rw-r--r--compiler/image_writer.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler/image_writer.h b/compiler/image_writer.h
index 51976c511f..1efdc22c0a 100644
--- a/compiler/image_writer.h
+++ b/compiler/image_writer.h
@@ -169,6 +169,8 @@ class ImageWriter FINAL {
// ArtMethods may be dirty if the class has native methods or a declaring class that isn't
// initialized.
kBinArtMethodDirty,
+ // IMT (clean)
+ kBinImTable,
// Conflict tables (clean).
kBinIMTConflictTable,
// Runtime methods (always clean, do not have a length prefix array).
@@ -191,6 +193,7 @@ class ImageWriter FINAL {
kNativeObjectRelocationTypeArtMethodDirty,
kNativeObjectRelocationTypeArtMethodArrayDirty,
kNativeObjectRelocationTypeRuntimeMethod,
+ kNativeObjectRelocationTypeIMTable,
kNativeObjectRelocationTypeIMTConflictTable,
kNativeObjectRelocationTypeDexCacheArray,
};
@@ -401,6 +404,7 @@ class ImageWriter FINAL {
void CopyAndFixupObject(mirror::Object* obj) SHARED_REQUIRES(Locks::mutator_lock_);
void CopyAndFixupMethod(ArtMethod* orig, ArtMethod* copy, const ImageInfo& image_info)
SHARED_REQUIRES(Locks::mutator_lock_);
+ void CopyAndFixupImTable(ImTable* orig, ImTable* copy) SHARED_REQUIRES(Locks::mutator_lock_);
void CopyAndFixupImtConflictTable(ImtConflictTable* orig, ImtConflictTable* copy)
SHARED_REQUIRES(Locks::mutator_lock_);
void FixupClass(mirror::Class* orig, mirror::Class* copy)
@@ -433,6 +437,8 @@ class ImageWriter FINAL {
size_t oat_index)
SHARED_REQUIRES(Locks::mutator_lock_);
+ void TryAssignImTableOffset(ImTable* imt, size_t oat_index) SHARED_REQUIRES(Locks::mutator_lock_);
+
// Assign the offset for an IMT conflict table. Does nothing if the table already has a native
// relocation.
void TryAssignConflictTableOffset(ImtConflictTable* table, size_t oat_index)