Remove ObjPtr from CalculateNewObjectOffsets
Causing failures for heap poisoning due to VisitObjects invalidation.
Fixes heap poisoning tests.
Test: test-art-host
Bug: 116059983
Change-Id: Ia6e27347d55964c300d9039378b4930d9019610b
diff --git a/dex2oat/linker/image_writer.cc b/dex2oat/linker/image_writer.cc
index 7733cb7..15ced72 100644
--- a/dex2oat/linker/image_writer.cc
+++ b/dex2oat/linker/image_writer.cc
@@ -2429,7 +2429,9 @@
size_t bin_offset = image_objects_offset_begin_;
// Need to visit the objects in bin order since alignment requirements might change the
// section sizes.
- using BinPair = std::pair<BinSlot, ObjPtr<mirror::Object>>;
+ // Avoid using ObjPtr since VisitObjects invalidates. This is safe since concurrent GC can not
+ // occur during image writing.
+ using BinPair = std::pair<BinSlot, mirror::Object*>;
std::vector<BinPair> objects;
heap->VisitObjects([&](mirror::Object* obj)
REQUIRES_SHARED(Locks::mutator_lock_) {