diff options
author | Oxore <oxore@protonmail.com> | 2025-02-01 18:14:31 +0300 |
---|---|---|
committer | Oxore <oxore@protonmail.com> | 2025-02-01 18:21:52 +0300 |
commit | bea4c5538e287cd3b5943c1e45e8b24c5b462cb4 (patch) | |
tree | dcbd39477f9482006aa566d315c9d25026b90e1e /src/disasm.cpp | |
parent | 07ff2ebf9b29084670fb3fa46f8427d3272117d5 (diff) |
Turn ReferenceRecord chains into a simple linked list
Diffstat (limited to 'src/disasm.cpp')
-rw-r--r-- | src/disasm.cpp | 23 |
1 files changed, 8 insertions, 15 deletions
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; } |