summaryrefslogtreecommitdiff
path: root/runtime/mirror/class-inl.h
diff options
context:
space:
mode:
author Mathieu Chartier <mathieuc@google.com> 2017-03-06 12:35:10 -0800
committer Mathieu Chartier <mathieuc@google.com> 2017-03-29 16:51:26 -0700
commit8c19d2431f45861ca11cf5ebc4fdaf10200f2458 (patch)
tree2d376ce322be680898d55fde929e67032d4c711c /runtime/mirror/class-inl.h
parent4e03442619834c56dbf79a3493eb8a2d91b93e7f (diff)
Refactor image writer
Aim to have common functions for copying references and pointers. Required for adding support for faster image fixups. Test: test-art-host -j32 Bug: 34927277 Bug: 34928633 Change-Id: Ia654efc483b332eea3535570496bfeccd7c635ee
Diffstat (limited to 'runtime/mirror/class-inl.h')
-rw-r--r--runtime/mirror/class-inl.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/runtime/mirror/class-inl.h b/runtime/mirror/class-inl.h
index 003b03b2f9..be3b937f3e 100644
--- a/runtime/mirror/class-inl.h
+++ b/runtime/mirror/class-inl.h
@@ -1097,7 +1097,9 @@ inline void Class::FixupNativePointers(Class* dest,
if (!IsTemp() && ShouldHaveEmbeddedVTable<kVerifyNone, kReadBarrierOption>()) {
for (int32_t i = 0, count = GetEmbeddedVTableLength(); i < count; ++i) {
ArtMethod* method = GetEmbeddedVTableEntry(i, pointer_size);
- ArtMethod* new_method = visitor(method);
+ void** dest_addr = reinterpret_cast<void**>(reinterpret_cast<uintptr_t>(dest) +
+ EmbeddedVTableEntryOffset(i, pointer_size).Uint32Value());
+ ArtMethod* new_method = visitor(method, dest_addr);
if (method != new_method) {
dest->SetEmbeddedVTableEntryUnchecked(i, new_method, pointer_size);
}