From 9c550a679522b9604c62319726d815aae0b64ca4 Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Thu, 22 Apr 2021 15:54:19 -0700 Subject: [PATCH] u3: shortcircuit direct atoms in u3i_chub() --- pkg/urbit/noun/imprison.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/pkg/urbit/noun/imprison.c b/pkg/urbit/noun/imprison.c index e3603812c7..77feae7f67 100644 --- a/pkg/urbit/noun/imprison.c +++ b/pkg/urbit/noun/imprison.c @@ -313,12 +313,17 @@ u3i_word(c3_w dat_w) u3_atom u3i_chub(c3_d dat_d) { - c3_w dat_w[2] = { - dat_d & 0xffffffffULL, - dat_d >> 32 - }; + if ( c3y == u3a_is_cat(dat_d) ) { + return (u3_atom)dat_d; + } + else { + c3_w dat_w[2] = { + dat_d & 0xffffffffULL, + dat_d >> 32 + }; - return u3i_words(2, dat_w); + return u3i_words(2, dat_w); + } } /* u3i_bytes(): Copy [a] bytes from [b] to an LSB first atom.