Revert "[memprof] Fix frame deserialization on big endian systems."
authorSnehasish Kumar <snehasishk@google.com>
Thu, 17 Feb 2022 23:42:02 +0000 (15:42 -0800)
committerSnehasish Kumar <snehasishk@google.com>
Thu, 17 Feb 2022 23:51:04 +0000 (15:51 -0800)
This reverts commit c74389b4b58d8db3f8262ce15b9d514d62fe265c.

This broke the ml-opt-x86-64 build.
https://lab.llvm.org/buildbot#builders/9/builds/4127

llvm/include/llvm/ProfileData/MemProf.h
llvm/lib/ProfileData/MemProf.cpp

index 07bf629..dcc9b69 100644 (file)
@@ -161,7 +161,7 @@ struct MemProfRecord {
     bool operator!=(const Frame &Other) const { return !operator==(Other); }
 
     // Write the contents of the frame to the ostream \p OS.
-    void serialize(raw_ostream & OS) const {
+    void write(raw_ostream & OS) const {
       using namespace support;
 
       endian::Writer LE(OS, little);
@@ -176,22 +176,6 @@ struct MemProfRecord {
       LE.write<uint32_t>(Column);
       LE.write<bool>(IsInlineFrame);
     }
-
-    // Read a frame from char data which has been serialized as little endian.
-    static Frame deserialize(const unsigned char *Ptr) {
-      using namespace support;
-      return Frame(
-          /*Function=*/endian::readNext<uint64_t, little, unaligned>(Ptr),
-          /*LineOffset=*/endian::readNext<uint32_t, little, unaligned>(Ptr),
-          /*Column=*/endian::readNext<uint32_t, little, unaligned>(Ptr),
-          /*IsInlineFrame=*/endian::readNext<bool, little, unaligned>(Ptr));
-    }
-
-    // Returns the size of the frame information.
-    static constexpr size_t serializedSize() {
-      return sizeof(Frame::Function) + sizeof(Frame::LineOffset) +
-             sizeof(Frame::Column) + sizeof(Frame::IsInlineFrame);
-    }
   });
 
   // The dynamic calling context for the allocation.
index 48950d4..6a9b69f 100644 (file)
@@ -15,7 +15,7 @@ void serializeRecords(const ArrayRef<MemProfRecord> Records,
   for (const MemProfRecord &MR : Records) {
     LE.write<uint64_t>(MR.CallStack.size());
     for (const MemProfRecord::Frame &F : MR.CallStack) {
-      F.serialize(OS);
+      F.write(OS);
     }
     MR.Info.serialize(Schema, OS);
   }
@@ -33,8 +33,8 @@ SmallVector<MemProfRecord, 4> deserializeRecords(const MemProfSchema &Schema,
     const uint64_t NumFrames =
         endian::readNext<uint64_t, little, unaligned>(Ptr);
     for (uint64_t J = 0; J < NumFrames; J++) {
-      const auto F = MemProfRecord::Frame::deserialize(Ptr);
-      Ptr += MemProfRecord::Frame::serializedSize();
+      const auto F = *reinterpret_cast<const MemProfRecord::Frame *>(Ptr);
+      Ptr += sizeof(MemProfRecord::Frame);
       MR.CallStack.push_back(F);
     }
     MR.Info.deserialize(Schema, Ptr);