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_) {