aboutsummaryrefslogtreecommitdiff
path: root/src/exact_value.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-07-11 16:08:16 +0100
committergingerBill <bill@gingerbill.org>2021-07-11 16:08:16 +0100
commit460e14e5860a503b8e7716ce18a29eb99f517cf7 (patch)
tree058edb259fd5e6cab889f7b12156938c748509c0 /src/exact_value.cpp
parentebcabb8a27ace67c3cd869a573df62b260000ee8 (diff)
Change the compiler's big integer library to use libTomMath
This now replaces Bill's crappy big int implementation
Diffstat (limited to 'src/exact_value.cpp')
-rw-r--r--src/exact_value.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/exact_value.cpp b/src/exact_value.cpp
index 9bcaf76de..cd5ba6579 100644
--- a/src/exact_value.cpp
+++ b/src/exact_value.cpp
@@ -75,8 +75,8 @@ HashKey hash_exact_value(ExactValue v) {
}
case ExactValue_Integer:
{
- HashKey key = hashing_proc(big_int_ptr(&v.value_integer), v.value_integer.len * gb_size_of(u64));
- u8 last = (u8)v.value_integer.neg;
+ HashKey key = hashing_proc(v.value_integer.dp, gb_size_of(*v.value_integer.dp) * v.value_integer.used);
+ u8 last = (u8)v.value_integer.sign;
key.key = (key.key ^ last) * 0x100000001b3ll;
return key;
}
@@ -719,7 +719,6 @@ ExactValue exact_binary_operator_value(TokenKind op, ExactValue x, ExactValue y)
case Token_Shr: big_int_shr(&c, a, b); break;
default: goto error;
}
- big_int_normalize(&c);
ExactValue res = {ExactValue_Integer};
res.value_integer = c;
return res;