From f08ed7d976b7df4bf9a5627ac33471be072ad89c Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 18 Nov 2023 07:58:39 -0500 Subject: [PATCH] HashCode optimization for enums with payloads --- BeefLibs/corlib/src/HashCode.bf | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/BeefLibs/corlib/src/HashCode.bf b/BeefLibs/corlib/src/HashCode.bf index f4a8ec43..5cc0b332 100644 --- a/BeefLibs/corlib/src/HashCode.bf +++ b/BeefLibs/corlib/src/HashCode.bf @@ -53,9 +53,14 @@ static class HashCode code.Append(":\n"); if (enumCaseCount > 0) - code.AppendF($"\t\thash = Mix(hash, {enumCaseCount});\n"); + code.AppendF($"\t\thash = {enumCaseCount};\n"); for (int tupleMemberIdx < tupleMemberCount) - code.AppendF($"\t\thash = Mix(hash, val{tupleMemberIdx});\n"); + { + if ((enumCaseCount == 0) && (tupleMemberIdx == 0)) + code.AppendF($"\t\thash = SelfOuter.Get(val{tupleMemberIdx});\n"); + else + code.AppendF($"\t\thash = Mix(hash, val{tupleMemberIdx});\n"); + } enumCaseCount++; }