From 4a6023c63eca11af329a356e8231f9ec4bb647d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Drvo=C5=A1t=C4=9Bp?= Date: Fri, 21 Nov 2025 17:42:03 +0100 Subject: [PATCH 1/2] Check type hash as an early out in egal types --- src/builtins.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/builtins.c b/src/builtins.c index 6d32c439d5b6e..7cb62c2e06a97 100644 --- a/src/builtins.c +++ b/src/builtins.c @@ -147,6 +147,8 @@ static int egal_types(const jl_value_t *a, const jl_value_t *b, jl_typeenv_t *en { if (a == b) return 1; + if (a->hash && b->hash && a->hash != b->hash) + return 0; uintptr_t dtag = jl_typetagof(a); if (dtag != jl_typetagof(b)) return 0; From d56b71459458d76bd1c41d0f03cd81043b3a0c4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Drvo=C5=A1t=C4=9Bp?= Date: Tue, 25 Nov 2025 14:45:25 +0100 Subject: [PATCH 2/2] . --- src/builtins.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/builtins.c b/src/builtins.c index 7cb62c2e06a97..810e7904edee7 100644 --- a/src/builtins.c +++ b/src/builtins.c @@ -147,14 +147,14 @@ static int egal_types(const jl_value_t *a, const jl_value_t *b, jl_typeenv_t *en { if (a == b) return 1; - if (a->hash && b->hash && a->hash != b->hash) - return 0; uintptr_t dtag = jl_typetagof(a); if (dtag != jl_typetagof(b)) return 0; if (dtag == jl_datatype_tag << 4) { jl_datatype_t *dta = (jl_datatype_t*)a; jl_datatype_t *dtb = (jl_datatype_t*)b; + if (dta->hash && dtb->hash && dta->hash != dtb->hash) + return 0; if (dta->name != dtb->name) return 0; size_t i, l = jl_nparams(dta);