From 7136b5a450111c570933d72434b083053b349a1d Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Fri, 23 Feb 2024 12:39:24 -0800 Subject: [PATCH] Save more instructions in getOrCreateChild Take advantage of the property that Node4 is a prefix of Node16 --- ConflictSet.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ConflictSet.cpp b/ConflictSet.cpp index 31247f8..3b0ce8a 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -408,9 +408,8 @@ Node *&getOrCreateChild(Node *&self, uint8_t index, if (self->numChildren == 4) { auto *newSelf = allocators->node16.allocate(); - memcpy((void *)newSelf, self, offsetof(Node, type)); - memcpy(newSelf->index, self4->index, 4); - memcpy(newSelf->children, self4->children, 4 * sizeof(void *)); + memcpy((void *)newSelf, self, sizeof(Node4)); + newSelf->type = Type::Node16; allocators->node4.release(self4); self = newSelf; setChildrenParents(self);