summaryrefslogtreecommitdiff
path: root/view/pe/coffview.cpp
diff options
context:
space:
mode:
authorXusheng <xusheng@vector35.com>2024-11-08 13:29:00 +0800
committerXusheng <xusheng@vector35.com>2024-11-13 18:45:59 +0800
commit8a00fb5b8c1b9c82db5528b288859227a7e35868 (patch)
tree8d240dcd729437064c0c9d254cde37dc2229dd07 /view/pe/coffview.cpp
parent30a0fbb5839b08dc58efe602a5cd19c90fbd4c50 (diff)
Bulk add segments in the binary view to improve performance
Diffstat (limited to 'view/pe/coffview.cpp')
-rw-r--r--view/pe/coffview.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/view/pe/coffview.cpp b/view/pe/coffview.cpp
index 28103a4a..814c8cf2 100644
--- a/view/pe/coffview.cpp
+++ b/view/pe/coffview.cpp
@@ -246,6 +246,7 @@ bool COFFView::Init()
// Read sections
reader.Seek(sectionHeadersOffset);
BinaryReader sectionNameReader(GetParentView(), LittleEndian);
+ BeginBulkAddSegments();
for (uint32_t i = 0; i < sectionCount; i++)
{
@@ -432,6 +433,8 @@ bool COFFView::Init()
}
}
+ EndBulkAddSegments();
+
// Apply architecture and platform
if (!m_arch)
{
@@ -1214,6 +1217,7 @@ bool COFFView::Init()
QualifiedName coffRelocTypeName = DefineType(coffRelocTypeId, coffRelocName, coffRelocStructType);
auto relocHandler = m_arch->GetRelocationHandler("COFF");
+ BeginBulkAddSegments();
for (uint32_t i = 0; i < sectionCount; i++)
{
@@ -1351,6 +1355,8 @@ bool COFFView::Init()
}
}
}
+
+ EndBulkAddSegments();
}
}
catch (std::exception& e)