From bea4c5538e287cd3b5943c1e45e8b24c5b462cb4 Mon Sep 17 00:00:00 2001 From: Oxore Date: Sat, 1 Feb 2025 18:14:31 +0300 Subject: Turn ReferenceRecord chains into a simple linked list --- src/disasm.cpp | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) (limited to 'src/disasm.cpp') diff --git a/src/disasm.cpp b/src/disasm.cpp index a7dc07b..35c2351 100644 --- a/src/disasm.cpp +++ b/src/disasm.cpp @@ -11,29 +11,22 @@ void DisasmNode::AddReferencedBy(const uint32_t address_from, const ReferenceType ref_type) { - ReferenceNode *node{}; + ReferenceRecord *node = new ReferenceRecord{nullptr, ref_type, address_from}; + assert(node); if (this->last_ref_by) { - node = this->last_ref_by; + this->last_ref_by->next = node; } else { - node = new ReferenceNode{}; - assert(node); - this->ref_by = this->last_ref_by = node; - } - node->refs[node->refs_count] = ReferenceRecord{ref_type, address_from}; - node->refs_count++; - if (node->refs_count >= kRefsCountPerBuffer) { - ReferenceNode *new_node = new ReferenceNode{}; - assert(new_node); - node->next = new_node; - this->last_ref_by = new_node; + assert(nullptr == this->ref_by); + this->ref_by = node; } + this->last_ref_by = node; } DisasmNode::~DisasmNode() { - ReferenceNode *ref{this->ref_by}; + ReferenceRecord *ref{this->ref_by}; while (ref) { - ReferenceNode *prev = ref; + ReferenceRecord *prev = ref; ref = ref->next; delete prev; } -- cgit v1.2.3