From 840308abb624880f5540238bd03bb4d24fa72a86 Mon Sep 17 00:00:00 2001 From: Alex Fischman Date: Thu, 10 Oct 2024 12:23:37 -0700 Subject: [PATCH] Fix eval_lit performance bug --- src/lib.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 3c76439ad..c7f54ecd7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -677,12 +677,13 @@ impl EGraph { } pub fn eval_lit(&self, lit: &Literal) -> Value { + let any_sort = self.type_info.infer_literal(lit).as_arc_any(); match lit { - Literal::Int(i) => i.store(&self.type_info.get_sort_nofail()).unwrap(), - Literal::F64(f) => f.store(&self.type_info.get_sort_nofail()).unwrap(), - Literal::String(s) => s.store(&self.type_info.get_sort_nofail()).unwrap(), - Literal::Unit => ().store(&self.type_info.get_sort_nofail()).unwrap(), - Literal::Bool(b) => b.store(&self.type_info.get_sort_nofail()).unwrap(), + Literal::Int(i) => i.store(&any_sort.downcast().unwrap()).unwrap(), + Literal::F64(f) => f.store(&any_sort.downcast().unwrap()).unwrap(), + Literal::String(s) => s.store(&any_sort.downcast().unwrap()).unwrap(), + Literal::Unit => ().store(&any_sort.downcast().unwrap()).unwrap(), + Literal::Bool(b) => b.store(&any_sort.downcast().unwrap()).unwrap(), } }